diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 19c40a6..72141f4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -274,3 +274,131 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} prerelease: ${{ contains(github.ref, '-alpha') || contains(github.ref, '-beta') }} files: artifacts/* + + + deploy: + needs: [build-matrix] + runs-on: ubuntu-22.04 + permissions: + contents: read + env: + SYSTEMD_DIR: /etc/systemd/system + WORK_DIR: ${{vars.WORK_DIR}} + HOST_IP: ${{ secrets.HOST_IP }} + HOST_USER: ${{ secrets.HOST_USER }} + HOST_SSH: ${{ secrets.HOST_SSH }} + steps: + - name: Checkout repository + uses: actions/checkout@v6 + + - name: Determine deploy target + id: deploy_target + shell: bash + run: | + set -euo pipefail + + TAG_NAME="${GITHUB_REF_NAME}" + DEPLOY_VARIANT="main" + SERVICE_SUFFIX="" + + if [[ "$TAG_NAME" == *-alpha ]]; then + DEPLOY_VARIANT="alpha" + SERVICE_SUFFIX="-alpha" + elif [[ "$TAG_NAME" == *-beta ]]; then + DEPLOY_VARIANT="beta" + SERVICE_SUFFIX="-beta" + fi + + echo "deploy_variant=$DEPLOY_VARIANT" >> "$GITHUB_OUTPUT" + echo "remote_work_dir=${WORK_DIR}/${DEPLOY_VARIANT}" >> "$GITHUB_OUTPUT" + echo "service_suffix=$SERVICE_SUFFIX" >> "$GITHUB_OUTPUT" + echo "service_name=wp-editor${SERVICE_SUFFIX}.service" >> "$GITHUB_OUTPUT" + + - name: Download Linux amd64 artifact + uses: actions/download-artifact@v7 + with: + name: ${{ github.event.repository.name }}-${{ github.ref_name }}-x86_64-unknown-linux-gnu + path: deploy-artifact + + - name: Prepare deploy bundle + shell: bash + env: + DEPLOY_VARIANT: ${{ steps.deploy_target.outputs.deploy_variant }} + run: | + set -euo pipefail + + rm -rf deploy-bundle + mkdir -p deploy-bundle + + tar -xzf deploy-artifact/*.tar.gz -C deploy-artifact + cp -a "dev-ops/${DEPLOY_VARIANT}/." deploy-bundle/ + rm -f deploy-bundle/wp-editor.service + cp deploy-artifact/artifacts/wp-editor deploy-bundle/wp-editor + chmod +x deploy-bundle/wp-editor + + - name: Configure SSH + shell: bash + run: | + set -euo pipefail + + mkdir -p ~/.ssh + chmod 700 ~/.ssh + printf '%s\n' "$HOST_SSH" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + ssh-keyscan -H "$HOST_IP" >> ~/.ssh/known_hosts + chmod 644 ~/.ssh/known_hosts + + - name: Render service file + shell: bash + env: + REMOTE_WORK_DIR: ${{ steps.deploy_target.outputs.remote_work_dir }} + run: | + set -euo pipefail + + sed "s|\${WORK_DIR}|${REMOTE_WORK_DIR}|g" dev-ops/alpha/wp-editor.service > service.rendered + + - name: Stop service and clean remote directory + shell: bash + env: + SERVICE_NAME: ${{ steps.deploy_target.outputs.service_name }} + REMOTE_WORK_DIR: ${{ steps.deploy_target.outputs.remote_work_dir }} + run: | + set -euo pipefail + + ssh "$HOST_USER@$HOST_IP" "SERVICE_NAME='$SERVICE_NAME' WORK_DIR='$REMOTE_WORK_DIR' bash -s" <<'EOF' + set -euo pipefail + sudo systemctl stop "$SERVICE_NAME" || true + sudo mkdir -p "$WORK_DIR" + sudo chown -R "$USER":"$USER" "$WORK_DIR" + shopt -s dotglob nullglob + files=("$WORK_DIR"/*) + if [ ${#files[@]} -gt 0 ]; then + rm -rf "${files[@]}" + fi + EOF + + - name: Upload deploy bundle + shell: bash + env: + REMOTE_WORK_DIR: ${{ steps.deploy_target.outputs.remote_work_dir }} + run: | + set -euo pipefail + + tar -C deploy-bundle -cf - . | ssh "$HOST_USER@$HOST_IP" "tar -C '$REMOTE_WORK_DIR' -xf -" + scp service.rendered "$HOST_USER@$HOST_IP:/tmp/service.rendered" + + - name: Install service and restart + shell: bash + env: + SERVICE_NAME: ${{ steps.deploy_target.outputs.service_name }} + SYSTEMD_TARGET: ${{ env.SYSTEMD_DIR }}/${{ steps.deploy_target.outputs.service_name }} + run: | + set -euo pipefail + + ssh "$HOST_USER@$HOST_IP" "SERVICE_NAME='$SERVICE_NAME' SYSTEMD_TARGET='$SYSTEMD_TARGET' bash -s" <<'EOF' + set -euo pipefail + sudo install -m 0644 /tmp/service.rendered "$SYSTEMD_TARGET" + rm -f /tmp/service.rendered + sudo systemctl daemon-reload + sudo systemctl start "$SERVICE_NAME" + EOF diff --git a/CHANGELOG.en.md b/CHANGELOG.en.md index 0383667..5b56af4 100644 --- a/CHANGELOG.en.md +++ b/CHANGELOG.en.md @@ -5,6 +5,219 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.19.3] - 2026-05-07 + +### Changed + +- Refresh the logo assets by replacing the `favicon.png`, `home.png`, and `index.png` visuals. +- Synchronize the updated images in both `web/public/assets/images` and `web/dist/assets/images` so the source assets and built output stay aligned. + +## [1.19.2] - 2026-05-05 + +### Changed + +- Upgrade the error and WP dependency line: `orion-error 0.8`, `wp-motor v1.21.11`, and `wp-lang 0.3`. +- Update the alpha `systemd` service configuration so `ExecStart` and `WorkingDirectory` point directly to `${WORK_DIR}/wp-editor` and `${WORK_DIR}`, simplifying the deployment path layout + +## [1.17.2-alpha] - 2026-04-23 + +### Changed + +- Unified version identifiers to `1.17.2` / `v1.17.2-alpha` (synchronized in `Cargo.toml`, `Cargo.lock`, `version.txt`, and `dist/install-manifest-alpha.json`) +- Upgrade wp-motor-related dependencies to v1.21.4 +- Add the Chinese and English changelog entries for `1.17.2-alpha` + +## [1.17.0-alpha] - 2026-04-16 + +### Changed + +- Upgrade wp-motor dependency to v1.20.3 +- Synchronize wp-motor-related dependency versions and source references in `Cargo.lock` +- Bump the locked `wp-lang` version to `0.1.10` + +## [1.16.0-beta] - 2026-04-16 + +### Added + +- Add a Prometheus metrics endpoint at `/metrics` + +### Changed + +- Merge changes from the `alpha` branch into `beta` +- Upgrade wp-motor dependency to v1.19.16 +- Restore `Cargo.lock` and synchronize the dependency lock state for the beta release +- Update beta release manifest `dist/install-manifest-beta.json`, changing the release version to `v1.16.0-beta` +- Update WPL Tree-sitter highlight queries and `tree-sitter-wpl.wasm` assets to support the new syntax nodes +- Convert the OML transformation and example loading pipeline to async implementations, covering `debug_transform`, `debug_examples`, `oml_examples`, and `convert_record` + +### Fixed + +- Adapt to upstream API changes for `OMLCodeError`, `WparseReason`, `FieldQueryCache`, and related interfaces +- Fix recursive OML example loading and error propagation issues +- Fix `/metrics` log filtering to avoid polluting normal request logs + +## [1.15.4-alpha] - 2026-04-08 + +### Changed + +- Unified version identifiers to `1.15.4` / `v1.15.4-alpha` (synchronized in `Cargo.toml`, `version.txt`, and `dist/install-manifest-alpha.json`) +- Restore `web/package-lock.json` and adjust ignore rules so frontend dependency lock results are shipped with the release + +## [1.15.3-alpha] - 2026-04-08 + +### Added + +- Add a Prometheus metrics endpoint at `/metrics` + +### Changed + +- Assign stable metric names for Actix HTTP metrics +- Update access log filtering rules to exclude `/metrics` +- Adjust lockfile commit strategy by removing `Cargo.lock` and `web/package-lock.json` + +## [1.15.2-alpha] - 2026-04-07 + +### Changed + +- Unified version identifiers to `1.15.2` / `v1.15.2-alpha` (synchronized in `Cargo.toml`, `Cargo.lock`, `version.txt`, and `dist/install-manifest-alpha.json`) +- Refactor the README and update release process documentation, consolidating into a single bilingual document +- Optimize frontend chunk splitting and dev-time dependency pre-bundling to reduce fragmented requests during refresh +- Add tiered caching rules for static assets, distinguishing the entry page, hashed assets, and other static files + +### Fixed + +- Make unmatched `/api/*` routes return JSON 404 responses instead of falling back to the frontend page + +### Performance + +- Enable gzip/deflate compression by default to reduce frontend asset transfer size + +### Removed + +- Remove the standalone `README.en.md` + +## [1.15.1-alpha] - 2026-04-03 + +### Changed + +- Unified version identifiers to `1.15.1` / `v1.15.1-alpha` (synchronized in `Cargo.toml`, `Cargo.lock`, `version.txt`, and `dist/install-manifest-alpha.json`) + +### Fixed + +- Update `Cargo.lock` to synchronize the dependency lock state + +## [1.15.0-alpha] - 2026-04-03 + +### Changed + +- Unified version identifiers to `1.15.0` / `v1.15.0-alpha` (synchronized in `Cargo.toml`, `Cargo.lock`, `version.txt`, and `dist/install-manifest-alpha.json`) +- Upgrade wp-motor dependency to v1.19.16 +- Switch `wp-lang` and `wp-knowledge` to standalone versioned dependencies to adapt to upstream package splitting +- Convert the OML transformation and example loading pipeline to async implementations, covering `debug_transform`, `debug_examples`, `oml_examples`, and `convert_record` + +### Fixed + +- Fix error propagation and `Future` handling in recursive OML example loading +- Adapt to import path changes for `OMLCodeError`, `WparseReason`, and related types +- Convert related integration tests and example tests to async and add the missing `await` + +## [1.14.2] - 2026-04-07 + +### Changed + +- Version update to 1.14.2 +- Refactor the README and update release process documentation, consolidating into a single bilingual document +- Optimize frontend chunk splitting and dev-time dependency pre-bundling to reduce fragmented requests during refresh +- Add tiered caching rules for static assets, distinguishing the entry page, hashed assets, and other static files + +### Fixed + +- Make unmatched `/api/*` routes return JSON 404 responses instead of falling back to the frontend page + +### Performance + +- Enable gzip/deflate compression by default to reduce frontend asset transfer size + +### Removed + +- Remove the standalone `README.en.md` + +## [1.14.2-beta] - 2026-04-07 + +### Changed + +- Unified version identifiers to `1.14.2` / `v1.14.2-beta` (synchronized in `Cargo.toml`, `Cargo.lock`, `version.txt`, and `dist/install-manifest-beta.json`) +- Refactor the README and update release process documentation, consolidating into a single bilingual document +- Optimize frontend chunk splitting and dev-time dependency pre-bundling to reduce fragmented requests during refresh +- Add tiered caching rules for static assets, distinguishing the entry page, hashed assets, and other static files + +### Fixed + +- Make unmatched `/api/*` routes return JSON 404 responses instead of falling back to the frontend page + +### Performance + +- Enable gzip/deflate compression by default to reduce frontend asset transfer size + +### Removed + +- Remove the standalone `README.en.md` + +## [1.14.1] - 2026-04-03 + +### Changed + +- Version update to 1.14.1 +- Fine-tune copy in `README.md` and `README.en.md` +- Update the stable release manifest `dist/install-manifest.json` + +### Fixed + +- Update `Cargo.lock` to synchronize the dependency lock state + +## [1.14.1-beta] - 2026-04-03 + +### Changed + +- Unified version identifiers to `1.14.1` / `v1.14.1-beta` (synchronized in `Cargo.toml`, `Cargo.lock`, `version.txt`, and `dist/install-manifest-beta.json`) + +### Fixed + +- Update `Cargo.lock` to synchronize the dependency lock state + +## [1.14.0] - 2026-04-03 + +### Added + +- Add `CONTRIBUTING.md` with contribution guidelines and collaboration instructions + +### Changed + +- Version update to 1.14.0 +- Change the license from Elastic License 2.0 to Apache 2.0 +- Refactor the README, add bilingual documentation, and align Chinese and English content +- Update the stable release manifest `dist/install-manifest.json` + +### Removed + +- Remove the Test Coverage badge and the usage guide and API documentation sections from the README + +## [1.14.0-beta] - 2026-04-01 + +### Added + +- Add one-click copy/paste support to the code editor + +### Changed + +- Unified version identifiers to `1.14.0` / `v1.14.0-beta` (synchronized in `Cargo.toml`, `Cargo.lock`, `version.txt`, and `dist/install-manifest-beta.json`) +- Upgrade wp-motor dependency to v1.18.3 + +### Fixed + +- Fix abnormal `Tab` key behavior in the editor +- Add `Shift+Tab` support for reverse indentation + ## [1.13.0-alpha] - 2026-03-12 ### Changed diff --git a/CHANGELOG.md b/CHANGELOG.md index 93c39e3..315b828 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,220 @@ 本文件记录所有重要变更,格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/), 版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。 +## [1.19.3] - 2026-05-07 + +### Changed + +- 更新logo资源,替换 `favicon.png`、`home.png`、`index.png` 的展示素材。 +- 同步刷新 `web/public/assets/images` 与 `web/dist/assets/images` 中对应图片,确保源码资源与构建产物保持一致。 + +## [1.19.2] - 2026-05-05 + +### Changed + +- 升级错误与 WP 依赖主线:`orion-error 0.8`、`wp-motor v1.21.11`、`wp-lang 0.3`。 +- 调整 alpha 环境 `systemd` 服务配置,`ExecStart` 与 `WorkingDirectory` 改为直接指向 `${WORK_DIR}` 下的 `wp-editor` 与工作目录,简化部署路径约束 + + +## [1.17.2-alpha] - 2026-04-23 + +### Changed + +- 版本号统一为 `1.17.2` / `v1.17.2-alpha`(同步更新 `Cargo.toml`、`Cargo.lock`、`version.txt`、`dist/install-manifest-alpha.json`) +- 升级 wp-motor 相关依赖至 v1.21.4 +- 补齐 `1.17.2-alpha` 的中英文变更记录 + +## [1.17.0-alpha] - 2026-04-16 + +### Changed + +- 升级 wp-motor 依赖至 v1.20.3 +- 同步 `Cargo.lock` 中 wp-motor 相关依赖的版本与源码引用 +- 同步 `wp-lang` 锁定版本至 `0.1.10` + +## [1.16.0-beta] - 2026-04-16 + +### Added + +- 新增 `/metrics` Prometheus 指标暴露端点 + +### Changed + +- 合并 `alpha` 分支变更到 `beta` +- 升级 wp-motor 依赖至 v1.19.16 +- 恢复 `Cargo.lock` 并同步 beta 版本的依赖锁定结果 +- 更新 beta 发布清单 `dist/install-manifest-beta.json`,发布版本调整为 `v1.16.0-beta` +- 更新 WPL Tree-sitter 高亮查询与 `tree-sitter-wpl.wasm` 资源,适配新的语法节点 +- 将 OML 转换与示例加载链路调整为异步实现,覆盖 `debug_transform`、`debug_examples`、`oml_examples` 与 `convert_record` + +### Fixed + +- 适配 `OMLCodeError`、`WparseReason`、`FieldQueryCache` 等上游 API 变更 +- 修复 OML 示例目录递归加载与错误透传问题 +- 修复 `/metrics` 请求日志过滤,避免干扰常规接口日志 + +## [1.15.4-alpha] - 2026-04-08 + +### Changed + +- 版本号统一为 `1.15.4` / `v1.15.4-alpha`(同步更新 `Cargo.toml`、`version.txt`、`dist/install-manifest-alpha.json`) +- 恢复 `web/package-lock.json` 并调整忽略规则,确保前端依赖锁定结果随版本发布 + +## [1.15.3-alpha] - 2026-04-08 + +### Added + +- 新增 `/metrics` Prometheus 指标暴露端点 + +### Changed + +- 为 Actix HTTP 指标设置稳定的指标名称 +- 调整访问日志过滤规则,排除 `/metrics` +- 调整锁文件提交策略,移除 `Cargo.lock` 与 `web/package-lock.json` + +## [1.15.2-alpha] - 2026-04-07 + +### Changed + +- 版本号统一为 `1.15.2` / `v1.15.2-alpha`(同步更新 `Cargo.toml`、`Cargo.lock`、`version.txt`、`dist/install-manifest-alpha.json`) +- 重构 README 并更新发布流程说明,收敛为单文件双语文档 +- 优化前端构建拆包与开发态依赖预构建策略,减少刷新时碎片化请求 +- 为静态资源补充分级缓存策略,区分入口页、哈希资源与其他静态文件 + +### Fixed + +- `/api/*` 未匹配路由改为返回 JSON 404,避免回退到前端页面 + +### Performance + +- 自动启用 gzip/deflate 压缩,降低前端资源传输体积 + +### Removed + +- 移除独立 `README.en.md` + +## [1.15.1-alpha] - 2026-04-03 + +### Changed + +- 版本号统一为 `1.15.1` / `v1.15.1-alpha`(同步更新 `Cargo.toml`、`Cargo.lock`、`version.txt`、`dist/install-manifest-alpha.json`) + +### Fixed + +- 更新 `Cargo.lock`,同步依赖锁定结果 + +## [1.15.0-alpha] - 2026-04-03 + +### Changed + +- 版本号统一为 `1.15.0` / `v1.15.0-alpha`(同步更新 `Cargo.toml`、`Cargo.lock`、`version.txt`、`dist/install-manifest-alpha.json`) +- 升级 wp-motor 依赖至 v1.19.16 +- `wp-lang`、`wp-knowledge` 改为独立版本依赖,适配上游包拆分 +- 将 OML 转换与示例加载链路调整为异步实现,覆盖 `debug_transform`、`debug_examples`、`oml_examples` 与 `convert_record` + +### Fixed + +- 修复 OML 示例目录递归加载时的错误透传与 `Future` 处理问题 +- 适配 `OMLCodeError`、`WparseReason` 等导入路径变化 +- 将相关集成测试与示例测试切换为异步用例并补齐 `await` + +## [1.14.2] - 2026-04-07 + +### Changed + +- 版本更新至 1.14.2 +- 重构 README 并更新发布流程说明,收敛为单文件双语文档 +- 优化前端构建拆包与开发态依赖预构建策略,减少刷新时碎片化请求 +- 为静态资源补充分级缓存策略,区分入口页、哈希资源与其他静态文件 + +### Fixed + +- `/api/*` 未匹配路由改为返回 JSON 404,避免回退到前端页面 + +### Performance + +- 自动启用 gzip/deflate 压缩,降低前端资源传输体积 + +### Removed + +- 移除独立 `README.en.md` + +## [1.14.2-beta] - 2026-04-07 + +### Changed + +- 版本号统一为 `1.14.2` / `v1.14.2-beta`(同步更新 `Cargo.toml`、`Cargo.lock`、`version.txt`、`dist/install-manifest-beta.json`) +- 重构 README 并更新发布流程说明,收敛为单文件双语文档 +- 优化前端构建拆包与开发态依赖预构建策略,减少刷新时碎片化请求 +- 为静态资源补充分级缓存策略,区分入口页、哈希资源与其他静态文件 + +### Fixed + +- `/api/*` 未匹配路由改为返回 JSON 404,避免回退到前端页面 + +### Performance + +- 自动启用 gzip/deflate 压缩,降低前端资源传输体积 + +### Removed + +- 移除独立 `README.en.md` + +## [1.14.1] - 2026-04-03 + +### Changed + +- 版本更新至 1.14.1 +- 微调 `README.md` 与 `README.en.md` 文案 +- 更新正式发布清单 `dist/install-manifest.json` + +### Fixed + +- 更新 `Cargo.lock`,同步依赖锁定结果 + +## [1.14.1-beta] - 2026-04-03 + +### Changed + +- 版本号统一为 `1.14.1` / `v1.14.1-beta`(同步更新 `Cargo.toml`、`Cargo.lock`、`version.txt`、`dist/install-manifest-beta.json`) + +### Fixed + +- 更新 `Cargo.lock`,同步依赖锁定结果 + +## [1.14.0] - 2026-04-03 + +### Added + +- 新增 `CONTRIBUTING.md`,补充贡献指南与协作说明 + +### Changed + +- 版本更新至 1.14.0 +- 许可证由 Elastic License 2.0 调整为 Apache 2.0 +- 重构 README,补充双语说明并对齐中英文内容 +- 更新正式发布清单 `dist/install-manifest.json` + +### Removed + +- 删除 README 中的 Test Coverage badge、使用指南与 API 文档章节 + +## [1.14.0-beta] - 2026-04-01 + +### Added + +- 代码编辑器新增一键复制/粘贴能力 + +### Changed + +- 版本号统一为 `1.14.0` / `v1.14.0-beta`(同步更新 `Cargo.toml`、`Cargo.lock`、`version.txt`、`dist/install-manifest-beta.json`) +- 升级 wp-motor 依赖至 v1.18.3 + +### Fixed + +- 修复编辑器 `Tab` 键行为异常 +- 新增 `Shift+Tab` 反向缩进支持 + ## [1.13.0-alpha] - 2026-03-12 ### Changed diff --git a/Cargo.lock b/Cargo.lock index b8dfb5a..5937844 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,7 +8,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "bytes", "futures-core", "futures-sink", @@ -19,48 +19,25 @@ dependencies = [ "tracing", ] -[[package]] -name = "actix-files" -version = "0.6.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8c4f30e3272d7c345f88ae0aac3848507ef5ba871f9cc2a41c8085a0f0523b" -dependencies = [ - "actix-http", - "actix-service", - "actix-utils", - "actix-web", - "bitflags 2.11.1", - "bytes", - "derive_more 2.1.1", - "futures-core", - "http-range", - "log", - "mime", - "mime_guess", - "percent-encoding", - "pin-project-lite", - "v_htmlescape", -] - [[package]] name = "actix-http" -version = "3.12.0" +version = "3.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f860ee6746d0c5b682147b2f7f8ef036d4f92fe518251a3a35ffa3650eafdf0e" +checksum = "48e2faa3e7418ed780cca54829d32782a4008a077230f67457caa063415e99c2" dependencies = [ "actix-codec", "actix-rt", "actix-service", "actix-utils", "base64 0.22.1", - "bitflags 2.11.1", + "bitflags 2.13.0", "brotli", "bytes", "bytestring", - "derive_more 2.1.1", + "derive_more", "encoding_rs", "flate2", - "foldhash 0.1.5", + "foldhash 0.2.0", "futures-core", "h2", "http", @@ -72,13 +49,13 @@ dependencies = [ "mime", "percent-encoding", "pin-project-lite", - "rand 0.9.4", - "sha1", + "rand 0.10.2", + "sha1 0.11.0", "smallvec", "tokio", "tokio-util", "tracing", - "zstd 0.13.3", + "zstd", ] [[package]] @@ -88,45 +65,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.117", -] - -[[package]] -name = "actix-multipart" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5118a26dee7e34e894f7e85aa0ee5080ae4c18bf03c0e30d49a80e418f00a53" -dependencies = [ - "actix-multipart-derive", - "actix-utils", - "actix-web", - "derive_more 0.99.20", - "futures-core", - "futures-util", - "httparse", - "local-waker", - "log", - "memchr", - "mime", - "rand 0.8.5", - "serde", - "serde_json", - "serde_plain", - "tempfile", - "tokio", -] - -[[package]] -name = "actix-multipart-derive" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e11eb847f49a700678ea2fa73daeb3208061afa2b9d1a8527c03390f4c4a1c6b" -dependencies = [ - "darling", - "parse-size", - "proc-macro2", - "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -193,9 +132,9 @@ dependencies = [ [[package]] name = "actix-web" -version = "4.13.0" +version = "4.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff87453bc3b56e9b2b23c1cc0b1be8797184accf51d2abe0f8a33ec275d316bf" +checksum = "df09e2d9239703dd64056359c920c7f3fba6535ec61a0059e0f44e095ffe02b4" dependencies = [ "actix-codec", "actix-http", @@ -210,9 +149,9 @@ dependencies = [ "bytestring", "cfg-if", "cookie", - "derive_more 2.1.1", + "derive_more", "encoding_rs", - "foldhash 0.1.5", + "foldhash 0.2.0", "futures-core", "futures-util", "impl-more", @@ -228,7 +167,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "smallvec", - "socket2 0.6.3", + "socket2 0.6.5", "time", "tracing", "url", @@ -243,7 +182,7 @@ dependencies = [ "actix-router", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -273,17 +212,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures 0.2.17", -] - [[package]] name = "ahash" version = "0.7.8" @@ -332,9 +260,9 @@ checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" [[package]] name = "alloc-stdlib" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +checksum = "0e76a019e91224d279006ff972f1e984179a6e9feb050adba6ce8274aef23195" dependencies = [ "alloc-no-stdlib", ] @@ -406,15 +334,15 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" [[package]] name = "arc-swap" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207" +checksum = "c049c0be4daef0b145cb3555416b3b8ef5b7888a38aea1a3a155801fe7b0810b" dependencies = [ "rustversion", ] @@ -433,9 +361,9 @@ checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "arrow" @@ -443,17 +371,38 @@ version = "54.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5ec52ba94edeed950e4a41f75d35376df196e8cb04437f7280a5aa49f20f796" dependencies = [ - "arrow-arith", - "arrow-array", - "arrow-buffer", - "arrow-cast", - "arrow-data", - "arrow-ipc", - "arrow-ord", - "arrow-row", - "arrow-schema", - "arrow-select", - "arrow-string", + "arrow-arith 54.3.1", + "arrow-array 54.3.1", + "arrow-buffer 54.3.1", + "arrow-cast 54.3.1", + "arrow-data 54.3.1", + "arrow-ipc 54.3.1", + "arrow-ord 54.3.1", + "arrow-row 54.3.1", + "arrow-schema 54.3.1", + "arrow-select 54.3.1", + "arrow-string 54.3.1", +] + +[[package]] +name = "arrow" +version = "59.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b952ca5a8046ad741b60f142d6eca4aeebcad615694202bc64c5341f23e32c5b" +dependencies = [ + "arrow-arith 59.1.0", + "arrow-array 59.1.0", + "arrow-buffer 59.1.0", + "arrow-cast 59.1.0", + "arrow-csv", + "arrow-data 59.1.0", + "arrow-ipc 59.1.0", + "arrow-json", + "arrow-ord 59.1.0", + "arrow-row 59.1.0", + "arrow-schema 59.1.0", + "arrow-select 59.1.0", + "arrow-string 59.1.0", ] [[package]] @@ -462,14 +411,28 @@ version = "54.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc766fdacaf804cb10c7c70580254fcdb5d55cdfda2bc57b02baf5223a3af9e" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-array 54.3.1", + "arrow-buffer 54.3.1", + "arrow-data 54.3.1", + "arrow-schema 54.3.1", "chrono", "num", ] +[[package]] +name = "arrow-arith" +version = "59.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a13b8d3008c4e9063c597a08f46446fe3fd5789277127672d6c0bdbb43b1ff" +dependencies = [ + "arrow-array 59.1.0", + "arrow-buffer 59.1.0", + "arrow-data 59.1.0", + "arrow-schema 59.1.0", + "chrono", + "num-traits", +] + [[package]] name = "arrow-array" version = "54.3.1" @@ -477,15 +440,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a12fcdb3f1d03f69d3ec26ac67645a8fe3f878d77b5ebb0b15d64a116c212985" dependencies = [ "ahash 0.8.12", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-buffer 54.3.1", + "arrow-data 54.3.1", + "arrow-schema 54.3.1", "chrono", "half", "hashbrown 0.15.5", "num", ] +[[package]] +name = "arrow-array" +version = "59.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9486151b2f0785bafc6fa04fc5c99fcb4495455662e58787ea32eaaed33c4192" +dependencies = [ + "ahash 0.8.12", + "arrow-buffer 59.1.0", + "arrow-data 59.1.0", + "arrow-schema 59.1.0", + "chrono", + "half", + "hashbrown 0.17.1", + "num-complex", + "num-integer", + "num-traits", +] + [[package]] name = "arrow-buffer" version = "54.3.1" @@ -497,17 +478,29 @@ dependencies = [ "num", ] +[[package]] +name = "arrow-buffer" +version = "59.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4776577a87794bfdf0b4e90e2ea12454fa7738ea2823c4be5b9d1851da7b434" +dependencies = [ + "bytes", + "half", + "num-bigint", + "num-traits", +] + [[package]] name = "arrow-cast" version = "54.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ede6175fbc039dfc946a61c1b6d42fd682fcecf5ab5d148fbe7667705798cac9" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", - "arrow-select", + "arrow-array 54.3.1", + "arrow-buffer 54.3.1", + "arrow-data 54.3.1", + "arrow-schema 54.3.1", + "arrow-select 54.3.1", "atoi", "base64 0.22.1", "chrono", @@ -517,29 +510,117 @@ dependencies = [ "ryu", ] +[[package]] +name = "arrow-cast" +version = "59.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9ad451ce4f98710828a455b96991b8f031deb2e67f5fcad6773f017e4a69c3a" +dependencies = [ + "arrow-array 59.1.0", + "arrow-buffer 59.1.0", + "arrow-data 59.1.0", + "arrow-ord 59.1.0", + "arrow-schema 59.1.0", + "arrow-select 59.1.0", + "atoi", + "base64 0.22.1", + "chrono", + "half", + "lexical-core", + "num-traits", + "ryu", +] + +[[package]] +name = "arrow-csv" +version = "59.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8aa7bf96d6141a7bcca2eed57c7c9767d2a2175281857b8a7b68308992864784" +dependencies = [ + "arrow-array 59.1.0", + "arrow-cast 59.1.0", + "arrow-schema 59.1.0", + "chrono", + "csv", + "csv-core", + "regex", +] + [[package]] name = "arrow-data" version = "54.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61cfdd7d99b4ff618f167e548b2411e5dd2c98c0ddebedd7df433d34c20a4429" dependencies = [ - "arrow-buffer", - "arrow-schema", + "arrow-buffer 54.3.1", + "arrow-schema 54.3.1", "half", "num", ] +[[package]] +name = "arrow-data" +version = "59.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b38fe43e2e8704360f1464e6e8cc4fc381ef02cc4fb0192afa8df1aaa0115c66" +dependencies = [ + "arrow-buffer 59.1.0", + "arrow-schema 59.1.0", + "half", + "num-integer", + "num-traits", +] + [[package]] name = "arrow-ipc" version = "54.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62ff528658b521e33905334723b795ee56b393dbe9cf76c8b1f64b648c65a60c" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", - "flatbuffers", + "arrow-array 54.3.1", + "arrow-buffer 54.3.1", + "arrow-data 54.3.1", + "arrow-schema 54.3.1", + "flatbuffers 24.12.23", +] + +[[package]] +name = "arrow-ipc" +version = "59.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29dac499fcbc6ba74ee0324057821d381929a48526a3966bd9dffb44aa06d98c" +dependencies = [ + "arrow-array 59.1.0", + "arrow-buffer 59.1.0", + "arrow-data 59.1.0", + "arrow-schema 59.1.0", + "arrow-select 59.1.0", + "flatbuffers 25.12.19", +] + +[[package]] +name = "arrow-json" +version = "59.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fe05e916ddc50f4c7a363cd69c0ef5894fcee063517e9a0b8582f0c56746af6" +dependencies = [ + "arrow-array 59.1.0", + "arrow-buffer 59.1.0", + "arrow-cast 59.1.0", + "arrow-ord 59.1.0", + "arrow-schema 59.1.0", + "arrow-select 59.1.0", + "chrono", + "half", + "indexmap", + "itoa", + "lexical-core", + "memchr", + "num-traits", + "ryu", + "serde_core", + "serde_json", + "simdutf8", ] [[package]] @@ -548,11 +629,24 @@ version = "54.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0a3334a743bd2a1479dbc635540617a3923b4b2f6870f37357339e6b5363c21" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", - "arrow-select", + "arrow-array 54.3.1", + "arrow-buffer 54.3.1", + "arrow-data 54.3.1", + "arrow-schema 54.3.1", + "arrow-select 54.3.1", +] + +[[package]] +name = "arrow-ord" +version = "59.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e13dbdc2a9c053c10c7baa6e30faee04a180aa7ce88e471835850ce37abd20b" +dependencies = [ + "arrow-array 59.1.0", + "arrow-buffer 59.1.0", + "arrow-data 59.1.0", + "arrow-schema 59.1.0", + "arrow-select 59.1.0", ] [[package]] @@ -561,10 +655,23 @@ version = "54.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d1d7a7291d2c5107e92140f75257a99343956871f3d3ab33a7b41532f79cb68" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-array 54.3.1", + "arrow-buffer 54.3.1", + "arrow-data 54.3.1", + "arrow-schema 54.3.1", + "half", +] + +[[package]] +name = "arrow-row" +version = "59.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d5a1f8c733d15260b305683472ee8ad89c62cbd706703ca873b90d051b41592" +dependencies = [ + "arrow-array 59.1.0", + "arrow-buffer 59.1.0", + "arrow-data 59.1.0", + "arrow-schema 59.1.0", "half", ] @@ -574,6 +681,12 @@ version = "54.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cfaf5e440be44db5413b75b72c2a87c1f8f0627117d110264048f2969b99e9" +[[package]] +name = "arrow-schema" +version = "59.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9e4969dc350d571766247143ab36a5187d095d3d3690970408bc630d47c69e5" + [[package]] name = "arrow-select" version = "54.3.1" @@ -581,30 +694,61 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69efcd706420e52cd44f5c4358d279801993846d1c2a8e52111853d61d55a619" dependencies = [ "ahash 0.8.12", - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-array 54.3.1", + "arrow-buffer 54.3.1", + "arrow-data 54.3.1", + "arrow-schema 54.3.1", "num", ] +[[package]] +name = "arrow-select" +version = "59.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402770dba90865359d98d1ef92ef16e23d75c0cca9c2c880c8a05468b7743bf9" +dependencies = [ + "ahash 0.8.12", + "arrow-array 59.1.0", + "arrow-buffer 59.1.0", + "arrow-data 59.1.0", + "arrow-schema 59.1.0", + "num-traits", +] + [[package]] name = "arrow-string" version = "54.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a21546b337ab304a32cfc0770f671db7411787586b45b78b4593ae78e64e2b03" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", - "arrow-select", + "arrow-array 54.3.1", + "arrow-buffer 54.3.1", + "arrow-data 54.3.1", + "arrow-schema 54.3.1", + "arrow-select 54.3.1", "memchr", "num", "regex", "regex-syntax", ] +[[package]] +name = "arrow-string" +version = "59.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2b0afbb8b9016700938291123df30838b89decc3213dba00852021988b170d3" +dependencies = [ + "arrow-array 59.1.0", + "arrow-buffer 59.1.0", + "arrow-data 59.1.0", + "arrow-schema 59.1.0", + "arrow-select 59.1.0", + "memchr", + "num-traits", + "regex", + "regex-syntax", +] + [[package]] name = "ascii_utils" version = "0.9.3" @@ -689,7 +833,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -700,7 +844,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -720,9 +864,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base64" @@ -764,18 +908,18 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.1" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] [[package]] name = "bitvec" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +checksum = "ddcec3d12c579d40898fe0a9a358a803c23e9c52ca3c425707f81c9436211837" dependencies = [ "funty", "radium", @@ -794,9 +938,9 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ "hybrid-array", ] @@ -812,9 +956,9 @@ dependencies = [ [[package]] name = "borsh" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" +checksum = "2f3f6da4992df95bbcd9af42a6c7dcb994498fc9048230405f3b36ff7cd3f145" dependencies = [ "borsh-derive", "bytes", @@ -823,22 +967,22 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfcfdc083699101d5a7965e49925975f2f55060f94f9a05e7187be95d530ca59" +checksum = "3ae8fb4fb5740e4b2c4884ff95f5f32f5e8479db1e8fd8eb49ddbe09eb09bb7c" dependencies = [ "once_cell", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] name = "brotli" -version = "8.0.2" +version = "8.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +checksum = "5cc91aac060a7a1e25823bdccbfb6af1875b88f17c6daac97894eed8207166b3" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -847,43 +991,19 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "5.0.0" +version = "5.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +checksum = "3a32acac15fe1967bc3986b2a6347dffc965602354ea6f450ad07e8bfd253583" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", ] -[[package]] -name = "btoi" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd6407f73a9b8b6162d8a2ef999fe6afd7cc15902ebf42c5cd296addf17e0ad" -dependencies = [ - "num-traits", -] - -[[package]] -name = "btoi" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b5ab9db53bcda568284df0fd39f6eac24ad6f7ba7ff1168b9e76eba6576b976" -dependencies = [ - "num-traits", -] - -[[package]] -name = "bufstream" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40e38929add23cdf8a366df9b0e088953150724bcbe5fc330b0d8eb3b328eec8" - [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytecheck" @@ -907,6 +1027,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "bytecount" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" + [[package]] name = "byteorder" version = "1.5.0" @@ -915,93 +1041,24 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.11.1" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" [[package]] name = "bytestring" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "113b4343b5f6617e7ad401ced8de3cc8b012e73a594347c307b90db3e9271289" +checksum = "86566c496f2f47d9b8147a4c8b02ffdb69c919fe0c2b2e7195d22cbba0e635c9" dependencies = [ "bytes", ] -[[package]] -name = "bzip2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" -dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.13+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" -dependencies = [ - "cc", - "pkg-config", -] - -[[package]] -name = "camino" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" -dependencies = [ - "serde_core", -] - -[[package]] -name = "cargo-platform" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84982c6c0ae343635a3a4ee6dedef965513735c8b183caa7289fa6e27399ebd4" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-util-schemas" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e63d2780ac94487eb9f1fea7b0d56300abc9eb488800854ca217f102f5caccca" -dependencies = [ - "semver", - "serde", - "serde-untagged", - "serde-value", - "thiserror 1.0.69", - "toml 0.8.23", - "unicode-xid", - "url", -] - -[[package]] -name = "cargo_metadata" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f7835cfc6135093070e95eb2b53e5d9b5c403dc3a6be6040ee026270aa82502" -dependencies = [ - "camino", - "cargo-platform", - "cargo-util-schemas", - "semver", - "serde", - "serde_json", - "thiserror 2.0.18", -] - [[package]] name = "cc" -version = "1.2.60" +version = "1.2.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43c5703da9466b66a946814e1adf53ea2c90f10063b86290cc9eb67ce3478a20" +checksum = "e17dd265a7d0f31ef544e1b20e03add05d3b45b491b633b10d67145d2acc1a38" dependencies = [ "find-msvc-tools", "jobserver", @@ -1011,9 +1068,9 @@ dependencies = [ [[package]] name = "cedarwood" -version = "0.4.6" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d910bedd62c24733263d0bed247460853c9d22e8956bd4cd964302095e04e90" +checksum = "c0524a528a6a0288df1863c3c20fe92c301875b4941e7b6c4b394ab08c5a4c55" dependencies = [ "smallvec", ] @@ -1032,9 +1089,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chacha20" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cpufeatures 0.3.0", @@ -1043,9 +1100,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ "iana-time-zone", "js-sys", @@ -1055,16 +1112,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common 0.1.7", - "inout", -] - [[package]] name = "clap" version = "4.6.1" @@ -1096,7 +1143,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1105,18 +1152,26 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" -[[package]] -name = "cmov" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f88a43d011fc4a6876cb7344703e297c71dda42494fee094d5f7c76bf13f746" - [[package]] name = "colorchoice" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", + "tokio-util", +] + [[package]] name = "comfy-table" version = "7.2.2" @@ -1190,11 +1245,12 @@ dependencies = [ [[package]] name = "const_format" -version = "0.2.35" +version = "0.2.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" +checksum = "4481a617ad9a412be3b97c5d403fef8ed023103368908b9c50af598ff467cc1e" dependencies = [ "const_format_proc_macros", + "konst", ] [[package]] @@ -1208,12 +1264,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "constant_time_eq" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" - [[package]] name = "contracts" version = "0.6.7" @@ -1222,15 +1272,9 @@ checksum = "008eb94d541da40512913ef5e0707c3fb0e7280ba1af13f062461e46dd96ef7e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] -[[package]] -name = "convert_case" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - [[package]] name = "convert_case" version = "0.6.0" @@ -1295,9 +1339,9 @@ dependencies = [ [[package]] name = "crc-catalog" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" +checksum = "217698eaf96b4a3f0bc4f3662aaa55bdf913cd54d7204591faa790070c6d0853" [[package]] name = "crc32fast" @@ -1310,18 +1354,18 @@ dependencies = [ [[package]] name = "crossbeam-queue" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +checksum = "803d13fb3b09d88be9f4dbc29062c66b19bf7170867ceb746d2a8689bf6c7a26" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" [[package]] name = "crossterm" @@ -1329,7 +1373,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "crossterm_winapi", "document-features", "parking_lot", @@ -1364,9 +1408,9 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77727bb15fa921304124b128af125e7e3b968275d1b108b379190264f4423710" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ "hybrid-array", ] @@ -1394,28 +1438,20 @@ dependencies = [ [[package]] name = "ctor" -version = "0.8.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "352d39c2f7bef1d6ad73db6f5160efcaed66d94ef8c6c573a8410c00bf909a98" +checksum = "83cf0d42651b16c6dfe68685716d18480d18a9c39c62d76e8cf3eb6ed5d8bcbf" dependencies = [ "ctor-proc-macro", "dtor", + "link-section", ] [[package]] name = "ctor-proc-macro" -version = "0.0.7" +version = "0.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52560adf09603e58c9a7ee1fe1dcb95a16927b17c127f0ac02d6e768a0e25bc1" - -[[package]] -name = "ctutils" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" -dependencies = [ - "cmov", -] +checksum = "7a949c44fcacbbbb7ada007dc7acb34603dd97cd47de5d054f2b6493ecebb483" [[package]] name = "darling" @@ -1438,7 +1474,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1449,14 +1485,45 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] name = "dary_heap" -version = "0.3.8" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b1e3a325bc115f096c8b77bbf027a7c2592230e70be2d985be950d3d5e60ebe" + +[[package]] +name = "defmt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" +dependencies = [ + "bitflags 1.3.2", + "defmt-macros", +] + +[[package]] +name = "defmt-macros" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06d2e3287df1c007e74221c49ca10a95d557349e54b3a75dc2fb14712c751f04" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" +dependencies = [ + "defmt-parser", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "defmt-parser" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" +dependencies = [ + "thiserror 2.0.18", +] [[package]] name = "der" @@ -1475,7 +1542,6 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ - "powerfmt", "serde_core", ] @@ -1487,7 +1553,7 @@ checksum = "74ef43543e701c01ad77d3a5922755c6a1d71b22d942cb8042be4994b380caff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1508,7 +1574,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1518,20 +1584,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.117", -] - -[[package]] -name = "derive_more" -version = "0.99.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" -dependencies = [ - "convert_case 0.4.0", - "proc-macro2", - "quote", - "rustc_version", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1553,21 +1606,10 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.117", + "syn 2.0.119", "unicode-xid", ] -[[package]] -name = "derive_utils" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "362f47930db19fe7735f527e6595e4900316b893ebf6d48ad3d31be928d57dd6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "destructure_traitobject" version = "0.2.0" @@ -1588,14 +1630,13 @@ dependencies = [ [[package]] name = "digest" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4850db49bf08e663084f7fb5c87d202ef91a3907271aff24a94eb97ff039153c" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ - "block-buffer 0.12.0", + "block-buffer 0.12.1", "const-oid 0.10.2", - "crypto-common 0.2.1", - "ctutils", + "crypto-common 0.2.2", ] [[package]] @@ -1604,19 +1645,19 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "objc2", ] [[package]] name = "displaydoc" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1651,18 +1692,18 @@ checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" [[package]] name = "dtor" -version = "0.3.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1057d6c64987086ff8ed0fd3fbf377a6b7d205cc7715868cd401705f715cbe4" +checksum = "edf234dd1594d6dd434a8fb8cada51ddbbc593e40e4a01556a0b31c62da2775b" dependencies = [ "dtor-proc-macro", ] [[package]] name = "dtor-proc-macro" -version = "0.0.6" +version = "0.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f678cf4a922c215c63e0de95eb1ff08a958a81d47e485cf9da1e27bf6305cfa5" +checksum = "2647271c92754afcb174e758003cfd1cbf1e43e5a7853d7b1813e63e19e39a73" [[package]] name = "dyn-clone" @@ -1679,14 +1720,14 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" dependencies = [ "serde", ] @@ -1702,22 +1743,22 @@ dependencies = [ [[package]] name = "enum-ordinalize" -version = "4.3.2" +version = "4.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" +checksum = "07f808d588c10e464ea6f7d3eaed500049eff30aaac103460f61828c2d65b3eb" dependencies = [ "enum-ordinalize-derive", ] [[package]] name = "enum-ordinalize-derive" -version = "4.3.2" +version = "4.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" +checksum = "42e528e2d34ba8a67a1a650b86beae8ef69fc5fdb638016f386b973226590432" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1729,7 +1770,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1738,17 +1779,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" -[[package]] -name = "erased-serde" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" -dependencies = [ - "serde", - "serde_core", - "typeid", -] - [[package]] name = "errno" version = "0.3.14" @@ -1797,12 +1827,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "fallible-iterator" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" - [[package]] name = "fallible-iterator" version = "0.3.0" @@ -1846,6 +1870,16 @@ dependencies = [ "rustc_version", ] +[[package]] +name = "flatbuffers" +version = "25.12.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35f6839d7b3b98adde531effaf34f0c2badc6f4735d26fe74709d8e513a96ef3" +dependencies = [ + "bitflags 2.13.0", + "rustc_version", +] + [[package]] name = "flate2" version = "1.1.9" @@ -1853,7 +1887,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" dependencies = [ "crc32fast", - "libz-sys", "miniz_oxide", ] @@ -1924,6 +1957,7 @@ checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" dependencies = [ "futures-channel", "futures-core", + "futures-executor", "futures-io", "futures-sink", "futures-task", @@ -1995,7 +2029,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -2016,6 +2050,7 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ + "futures-channel", "futures-core", "futures-io", "futures-macro", @@ -2044,7 +2079,7 @@ checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", ] [[package]] @@ -2061,28 +2096,25 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", "libc", "r-efi 6.0.0", "rand_core 0.10.1", - "wasip2", - "wasip3", ] [[package]] name = "getset" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf0fc11e47561d47397154977bc219f4cf809b2974facc3ccb3b89e2436f912" +checksum = "6cf442baaabe4213ce7d1239afc26c039180b6456da2cededa316ae2c8a77a77" dependencies = [ - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -2091,7 +2123,7 @@ version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b88256088d75a56f8ecfa070513a775dd9107f6530ef14919dac831af9cfe2b" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "libc", "libgit2-sys", "log", @@ -2178,9 +2210,14 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.17.0" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] [[package]] name = "hashlink" @@ -2239,7 +2276,7 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" dependencies = [ - "hmac 0.12.1", + "hmac", ] [[package]] @@ -2251,15 +2288,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "hmac" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" -dependencies = [ - "digest 0.11.2", -] - [[package]] name = "home" version = "0.5.12" @@ -2282,12 +2310,9 @@ dependencies = [ [[package]] name = "html-escape" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d1ad449764d627e22bfd7cd5e8868264fc9236e07c752972b4080cd351cb476" -dependencies = [ - "utf8-width", -] +checksum = "46c1ff2d1cbf39efe5af0900ced8a069b5e61557a17544eb0c4a50239937389e" [[package]] name = "http" @@ -2300,12 +2325,6 @@ dependencies = [ "itoa", ] -[[package]] -name = "http-range" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" - [[package]] name = "httparse" version = "1.10.1" @@ -2320,15 +2339,15 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" +checksum = "15cdd26707701c53297e2fa6afb323d55fbc1d0810c3aec078ae3ef0424c3c15" [[package]] name = "hybrid-array" -version = "0.4.10" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3944cf8cf766b40e2a1a333ee5e9b563f854d5fa49d6a8ca2764e97c6eddb214" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" dependencies = [ "typenum", ] @@ -2439,12 +2458,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - [[package]] name = "ident_case" version = "1.0.1" @@ -2464,9 +2477,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" dependencies = [ "icu_normalizer", "icu_properties", @@ -2485,15 +2498,15 @@ dependencies = [ [[package]] name = "impl-more" -version = "0.1.9" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2" +checksum = "35a84fd5aa25fae5c0f4a33d9cac2ca017fc622cbd089be2229993514990f870" [[package]] name = "include-flate" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23e233413926ef735f7d87024466cfda5a4b87467730846bd82ea7d504121347" +checksum = "48f173716febb1ad596c16ea5637b5f1790ea32de8e627493ff82bc73b0876ce" dependencies = [ "include-flate-codegen", "include-flate-compress", @@ -2501,25 +2514,25 @@ dependencies = [ [[package]] name = "include-flate-codegen" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e7148f24ef8922cc0e5574ebb908729ccdd3a110c440a45165733fedadd9969" +checksum = "4a7875b62a72ad3f3203cdd8950d4cf9947db036030b974b8b37ceae90c8d8c0" dependencies = [ "include-flate-compress", - "proc-macro-error2", + "proc-macro-error3", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] name = "include-flate-compress" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74783a9ed407e844e99d5e7a57bd650acbfa124cf6e97ffd790ba59d8ab8e7ff" +checksum = "44fbb9c5ccb9a5b67b4afa2974c27e5507ea1bf6d22828cef418e4dfaeca51dd" dependencies = [ "libflate", - "zstd 0.13.3", + "zstd", ] [[package]] @@ -2529,7 +2542,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.17.0", + "hashbrown 0.17.1", "serde", "serde_core", ] @@ -2542,25 +2555,7 @@ checksum = "c727f80bfa4a6c6e2508d2f05b6f4bfce242030bd88ed15ae5331c5b5d30fba7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", -] - -[[package]] -name = "inout" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" -dependencies = [ - "generic-array", -] - -[[package]] -name = "io-enum" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7de9008599afe8527a8c9d70423437363b321649161e98473f433de802d76107" -dependencies = [ - "derive_utils", + "syn 2.0.119", ] [[package]] @@ -2593,19 +2588,20 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jieba-macros" -version = "0.8.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "348294e44ee7e3c42685da656490f8febc7359632544019621588902216da95c" +checksum = "38fc0f3831de71556de69643b80a08a5c8cd260a23c6b8dbeb7cd923c779cac5" dependencies = [ "phf_codegen", ] [[package]] name = "jieba-rs" -version = "0.8.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "766bd7012aa5ba49411ebdf4e93bddd59b182d2918e085d58dec5bb9b54b7105" +checksum = "a813bbf185c8c62eb6fcf54a223177b644824d91612045dfd80bb779acd080eb" dependencies = [ + "bytecount", "cedarwood", "include-flate", "jieba-macros", @@ -2614,23 +2610,66 @@ dependencies = [ "rustc-hash", ] +[[package]] +name = "jiff" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "961d16382652bfdd8c6f68b223b26a8c93e0d475c672f414411db31c6c5c900e" +dependencies = [ + "defmt", + "jiff-static", + "jiff-tzdb-platform", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", + "windows-link", +] + +[[package]] +name = "jiff-static" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0879bd39df99c4c5e2c6615ccc026391a423dde10532c573e6086eb94a802cc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "jiff-tzdb" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "142bd39932ad231f10513df9ab62661fead8719872150b7ad02a2df79f4e141e" + +[[package]] +name = "jiff-tzdb-platform" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8" +dependencies = [ + "jiff-tzdb", +] + [[package]] name = "jobserver" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.4.3", "libc", ] [[package]] name = "js-sys" -version = "0.3.95" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -2646,14 +2685,20 @@ dependencies = [ ] [[package]] -name = "keyed_priority_queue" -version = "0.4.2" +name = "konst" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee7893dab2e44ae5f9d0173f26ff4aa327c10b01b06a72b52dd9405b628640d" +checksum = "128133ed7824fcd73d6e7b17957c5eb7bacb885649bd8c69708b2331a10bcefb" dependencies = [ - "indexmap", + "konst_macro_rules", ] +[[package]] +name = "konst_macro_rules" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4933f3f57a8e9d9da04db23fb153356ecaf00cbd14aee46279c33dc80925c37" + [[package]] name = "language-tags" version = "0.3.2" @@ -2669,12 +2714,6 @@ dependencies = [ "spin", ] -[[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - [[package]] name = "lexical-core" version = "1.0.6" @@ -2734,9 +2773,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.185" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ff2c0fe9bc6cb6b14a0592c2ff4fa9ceb83eea9db979b0487cd054946a2b8f" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libflate" @@ -2764,9 +2803,9 @@ dependencies = [ [[package]] name = "libgit2-sys" -version = "0.18.3+1.9.2" +version = "0.18.5+1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9b3acc4b91781bb0b3386669d325163746af5f6e4f73e6d2d630e09a35f3487" +checksum = "005d6ae6eac1912906073e069f7db60b1fa98e052a68227824afe3e3a1c59ca2" dependencies = [ "cc", "libc", @@ -2782,14 +2821,14 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.16" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" +checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "libc", "plain", - "redox_syscall 0.7.4", + "redox_syscall 0.9.0", ] [[package]] @@ -2804,9 +2843,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.28" +version = "1.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc3a226e576f50782b3305c5ccf458698f92798987f551c6a02efe8276721e22" +checksum = "85bc9657773828b90eeb625adff10eeac83cc21bbfd8e23a03eaa8a33c9e28d9" dependencies = [ "cc", "libc", @@ -2814,6 +2853,12 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "link-section" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b685d66585d646efe09fec763d796c291049c8b6bf84e04954bffc8748341f0d" + [[package]] name = "linux-raw-sys" version = "0.12.1" @@ -2860,9 +2905,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" dependencies = [ "serde_core", ] @@ -2882,7 +2927,7 @@ dependencies = [ "anyhow", "arc-swap", "chrono", - "derive_more 2.1.1", + "derive_more", "flate2", "fnv", "humantime", @@ -2891,7 +2936,7 @@ dependencies = [ "log-mdc", "mock_instant", "parking_lot", - "rand 0.9.4", + "rand 0.9.5", "serde", "serde-value", "serde_json", @@ -2912,6 +2957,15 @@ dependencies = [ "hashbrown 0.16.1", ] +[[package]] +name = "lru" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e0b564323a0fb6d54b864f625ae139de9612e27edb944dda37c109f05aac531" +dependencies = [ + "hashbrown 0.17.1", +] + [[package]] name = "mac_address" version = "1.1.8" @@ -2952,27 +3006,17 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "md-5" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69b6441f590336821bb897fb28fc622898ccceb1d6cea3fde5ea86b090c4de98" -dependencies = [ - "cfg-if", - "digest 0.11.2", -] - [[package]] name = "md5" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae960838283323069879657ca3de837e9f7bbb4c7bf6ea7f1b290d5e9476d2e0" +checksum = "7ebb8d8732c6a6df3d8f032a82911cfc747e00efb95cc46e8d0acd5b5b88570c" [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "memoffset" @@ -3017,21 +3061,21 @@ dependencies = [ [[package]] name = "mio" -version = "1.2.0" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" +checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427" dependencies = [ "libc", "log", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "windows-sys 0.61.2", ] [[package]] name = "mock_instant" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce6dd36094cac388f119d2e9dc82dc730ef91c32a6222170d630e5414b956e6" +checksum = "9bb517913cfcfb9eeda59f36020269075a152701a01606c612f547e4890be399" [[package]] name = "mockall" @@ -3056,139 +3100,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.117", -] - -[[package]] -name = "mysql" -version = "28.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a732193888328fc060ab901c0ed1355521267a51ffbfd9a0b3786434c6b8e7f" -dependencies = [ - "bufstream", - "bytes", - "crossbeam-queue", - "crossbeam-utils", - "flate2", - "io-enum", - "libc", - "lru", - "mysql_common 0.37.1", - "named_pipe", - "pem", - "percent-encoding", - "socket2 0.6.3", - "twox-hash", - "url", -] - -[[package]] -name = "mysql-common-derive" -version = "0.32.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66f62cad7623a9cb6f8f64037f0c4f69c8db8e82914334a83c9788201c2c1bfa" -dependencies = [ - "darling", - "heck 0.5.0", - "num-bigint", - "proc-macro-crate", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.117", - "termcolor", - "thiserror 2.0.18", -] - -[[package]] -name = "mysql_async" -version = "0.36.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1d9585dc9058886ff3a1f48a23024dd1d054264dee7c5ae0e4bd640c953bee5" -dependencies = [ - "bytes", - "crossbeam-queue", - "flate2", - "futures-core", - "futures-sink", - "futures-util", - "keyed_priority_queue", - "lru", - "mysql_common 0.35.5", - "pem", - "percent-encoding", - "rand 0.9.4", - "serde", - "serde_json", - "socket2 0.5.10", - "thiserror 2.0.18", - "tokio", - "tokio-util", - "twox-hash", - "url", -] - -[[package]] -name = "mysql_common" -version = "0.35.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbb9f371618ce723f095c61fbcdc36e8936956d2b62832f9c7648689b338e052" -dependencies = [ - "base64 0.22.1", - "bitflags 2.11.1", - "btoi 0.4.3", - "byteorder", - "bytes", - "crc32fast", - "flate2", - "getrandom 0.3.4", - "mysql-common-derive", - "num-bigint", - "num-traits", - "regex", - "saturating", - "serde", - "serde_json", - "sha1", - "sha2 0.10.9", - "thiserror 2.0.18", - "uuid", -] - -[[package]] -name = "mysql_common" -version = "0.37.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bffc2127d4035fa5a614935c663a15a4468e64e798473e0cc21c8df40a607588" -dependencies = [ - "base64 0.22.1", - "bitflags 2.11.1", - "btoi 0.5.0", - "byteorder", - "bytes", - "crc32fast", - "flate2", - "getrandom 0.3.4", - "mysql-common-derive", - "num-bigint", - "num-traits", - "regex", - "saturating", - "serde", - "serde_json", - "sha1", - "sha2 0.10.9", - "thiserror 2.0.18", - "uuid", -] - -[[package]] -name = "named_pipe" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad9c443cce91fc3e12f017290db75dde490d685cdaaf508d7159d7cf41f0eb2b" -dependencies = [ - "winapi", + "syn 2.0.119", ] [[package]] @@ -3197,7 +3109,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "cfg-if", "cfg_aliases", "libc", @@ -3206,11 +3118,11 @@ dependencies = [ [[package]] name = "nix" -version = "0.30.1" +version = "0.31.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "cfg-if", "cfg_aliases", "libc", @@ -3218,9 +3130,9 @@ dependencies = [ [[package]] name = "no_std_io2" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b51ed7824b6e07d354605f4abb3d9d300350701299da96642ee084f5ce631550" +checksum = "418abd1b6d34fbf6cae440dc874771b0525a604428704c76e48b29a5e67b8003" dependencies = [ "memchr", ] @@ -3260,9 +3172,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" dependencies = [ "num-integer", "num-traits", @@ -3279,7 +3191,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand 0.8.5", + "rand 0.8.7", "smallvec", "zeroize", ] @@ -3295,9 +3207,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" [[package]] name = "num-integer" @@ -3310,11 +3222,10 @@ dependencies = [ [[package]] name = "num-iter" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +checksum = "c92800bd69a1eac91786bcfe9da64a897eb72911b8dc3095decbd07429e8048b" dependencies = [ - "autocfg", "num-integer", "num-traits", ] @@ -3340,15 +3251,6 @@ dependencies = [ "libm", ] -[[package]] -name = "num_threads" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" -dependencies = [ - "libc", -] - [[package]] name = "objc2" version = "0.6.4" @@ -3364,7 +3266,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "objc2", "objc2-foundation", ] @@ -3385,7 +3287,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "dispatch2", "objc2", ] @@ -3396,7 +3298,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "dispatch2", "objc2", "objc2-core-foundation", @@ -3429,7 +3331,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "objc2", "objc2-core-foundation", "objc2-core-graphics", @@ -3447,7 +3349,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2", "libc", "objc2", @@ -3470,30 +3372,32 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "objc2", "objc2-core-foundation", ] [[package]] -name = "objc2-quartz-core" +name = "objc2-open-directory" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" +checksum = "bb82bed227edf5201dfedf072bba4015a33d3d4a98519837295a90f0a23f676d" dependencies = [ - "bitflags 2.11.1", "objc2", "objc2-core-foundation", "objc2-foundation", ] [[package]] -name = "objc2-system-configuration" +name = "objc2-quartz-core" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7216bd11cbda54ccabcab84d523dc93b858ec75ecfb3a7d89513fa22464da396" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" dependencies = [ + "bitflags 2.13.0", + "objc2", "objc2-core-foundation", + "objc2-foundation", ] [[package]] @@ -3502,7 +3406,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2", "objc2", "objc2-cloud-kit", @@ -3569,25 +3473,40 @@ dependencies = [ [[package]] name = "orion-error" -version = "0.6.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef458e2a9e42afdf025deffffa2ecfa2619a8242be4c9e02cdb60b868a6d945f" +checksum = "d6fb344e4055f4f9507d475314c22e085ee3e6cc68643d48e3657f76abf88d01" dependencies = [ - "derive_more 2.1.1", + "anyhow", "log", + "orion-error-derive", "serde", + "serde_json", + "smol_str", "thiserror 2.0.18", + "toml 1.1.3+spec-1.1.0", +] + +[[package]] +name = "orion-error-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a191ed7c746d0bf64a6400b3e37b4c4bdd7a2ad82d260693424dd92a5d4d3eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", ] [[package]] name = "orion-sec" -version = "0.4.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfcff2ede38d9e802abc3c998cc73a353ea1022702d3892f4ed55b97eb4c1ed2" +checksum = "cb5aec268fc9385600b5f7995fc01eb2cb421a8cc9c5788db9ebf9d0fc8bbf2e" dependencies = [ "chrono", "contracts", - "derive_more 2.1.1", + "derive_more", "fs_extra", "getset", "indexmap", @@ -3606,13 +3525,12 @@ dependencies = [ [[package]] name = "orion-variate" -version = "0.11.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd80ca6e997116f470d139f90437a1c6dc090dfeb78eb9360439ada5c36e0c03" +checksum = "03645f3e8e91eaf412d288f5806c4208ae9e98d0820f677973cb52aed5a6a1a5" dependencies = [ - "contracts", "derive-getters", - "derive_more 2.1.1", + "derive_more", "getset", "indexmap", "log", @@ -3620,36 +3538,30 @@ dependencies = [ "os_info", "serde", "serde_derive", - "serde_ini", - "serde_json", - "serde_yaml", - "thiserror 2.0.18", - "toml 1.1.2+spec-1.1.0", - "winnow 1.0.1", + "winnow 1.0.4", ] [[package]] name = "orion_conf" -version = "0.5.1" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61f9daa1383db51b6620614bfb3c462b535fcc7e5ac033826fae2b732e35db35" +checksum = "088ee58d7784c683ca4b73f0c2f1c2c32f884b8cd5fddb49644fe4f1667a7145" dependencies = [ "derive-getters", - "derive_more 2.1.1", + "derive_more", "log", "orion-error", "orion-variate", "serde", "serde_derive", "serde_yaml", - "thiserror 2.0.18", - "toml 1.1.2+spec-1.1.0", + "toml 1.1.3+spec-1.1.0", ] [[package]] name = "orion_exp" -version = "1.19.16" -source = "git+https://github.com/wp-labs/wp-motor?tag=v1.19.16#aaac2f8c607316f2d5e15216ee27810c5019c0b9" +version = "1.23.7" +source = "git+https://github.com/wp-labs/wp-motor?tag=v1.23.7#707599c9f1053f16a8198123cfcc1b18f8deeb14" dependencies = [ "arcstr", "chrono", @@ -3661,25 +3573,25 @@ dependencies = [ [[package]] name = "orion_overload" -version = "1.19.16" -source = "git+https://github.com/wp-labs/wp-motor?tag=v1.19.16#aaac2f8c607316f2d5e15216ee27810c5019c0b9" +version = "1.23.7" +source = "git+https://github.com/wp-labs/wp-motor?tag=v1.23.7#707599c9f1053f16a8198123cfcc1b18f8deeb14" dependencies = [ "anyhow", "derive-getters", "serde", "thiserror 2.0.18", - "toml 1.1.2+spec-1.1.0", + "toml 1.1.3+spec-1.1.0", ] [[package]] name = "os_info" -version = "3.14.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4022a17595a00d6a369236fdae483f0de7f0a339960a53118b818238e132224" +checksum = "9cf20a545b305cf1da722b236b5155c9bb35f1d5ceb28c048bd96ca842f41b5b" dependencies = [ "android_system_properties", "log", - "nix 0.30.1", + "nix 0.31.3", "objc2", "objc2-foundation", "objc2-ui-kit", @@ -3708,7 +3620,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -3746,7 +3658,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "287d8d3ebdce117b8539f59411e4ed9ec226e0a4153c7f55495c6070d68e6f72" dependencies = [ - "parse-display-derive", + "parse-display-derive 0.10.0", "regex", "regex-syntax", ] @@ -3761,54 +3673,29 @@ dependencies = [ "quote", "regex", "regex-syntax", - "structmeta", - "syn 2.0.117", -] - -[[package]] -name = "parse-size" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "487f2ccd1e17ce8c1bfab3a65c89525af41cfad4c8659021a1e9a2aacd73b89b" - -[[package]] -name = "password-hash" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" -dependencies = [ - "base64ct", - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "pathdiff" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + "structmeta", + "syn 2.0.119", +] [[package]] -name = "pbkdf2" +name = "parse-display-derive" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +checksum = "8e95a50d1084dab562913062c4c34bb204b68fc6ec38a1395909ff5aaaf4f10a" dependencies = [ - "digest 0.10.7", - "hmac 0.12.1", - "password-hash", - "sha2 0.10.9", + "proc-macro2", + "quote", + "regex", + "regex-syntax", + "structmeta", + "syn 2.0.119", ] [[package]] -name = "pem" -version = "3.0.6" +name = "pathdiff" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" -dependencies = [ - "base64 0.22.1", - "serde_core", -] +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pem-rfc7468" @@ -3827,9 +3714,9 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "47627dd7305c6a2d6c8c6bcd24c5a4c17dbbf425f4f9c5313e724b38fc9782e9" dependencies = [ "memchr", "ucd-trie", @@ -3837,9 +3724,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "4b4254325ecad416ab689e27ba51da03ba01a9632bc6e108f5fe7c3c4ad29d58" dependencies = [ "pest", "pest_generator", @@ -3847,32 +3734,31 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "6c4c0e91ead7a8f7acecbca6f003fc2e8282b1dbe2dd9c9d2f16aba42995e0a7" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "f9744bc48116fee06334924bb5f2bad41eed5e89bd26e29b0b799f9a3f82c210" dependencies = [ "pest", - "sha2 0.10.9", ] [[package]] name = "pgvector" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc58e2d255979a31caa7cabfa7aac654af0354220719ab7a68520ae7a91e8c0b" +checksum = "3673cba5b9a124916096a423b806a9f29620972c6c97b08db5f2053e9428b481" dependencies = [ "serde", ] @@ -3976,35 +3862,18 @@ dependencies = [ ] [[package]] -name = "postgres-protocol" -version = "0.6.11" +name = "portable-atomic" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56201207dac53e2f38e848e31b4b91616a6bb6e0c7205b77718994a7f49e70fc" -dependencies = [ - "base64 0.22.1", - "byteorder", - "bytes", - "fallible-iterator 0.2.0", - "hmac 0.13.0", - "md-5 0.11.0", - "memchr", - "rand 0.10.1", - "sha2 0.11.0", - "stringprep", -] +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] -name = "postgres-types" -version = "0.2.13" +name = "portable-atomic-util" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dc729a129e682e8d24170cd30ae1aa01b336b096cbb56df6d534ffec133d186" +checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" dependencies = [ - "bytes", - "chrono", - "fallible-iterator 0.2.0", - "postgres-protocol", - "serde_core", - "serde_json", + "portable-atomic", ] [[package]] @@ -4057,23 +3926,13 @@ dependencies = [ "termtree", ] -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn 2.0.117", -] - [[package]] name = "proc-macro-crate" version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ - "toml_edit 0.25.11+spec-1.1.0", + "toml_edit 0.25.13+spec-1.1.0", ] [[package]] @@ -4086,6 +3945,16 @@ dependencies = [ "quote", ] +[[package]] +name = "proc-macro-error-attr3" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34e4dd828515431dd6c4a030d26f7eaed7dd4778226e9d2bb968d65ca4ec3d4d" +dependencies = [ + "proc-macro2", + "quote", +] + [[package]] name = "proc-macro-error2" version = "2.0.1" @@ -4095,7 +3964,19 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", +] + +[[package]] +name = "proc-macro-error3" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee475e440453418ff1335189eddf7101ba502cd818ab7ae04209bc83aa925aa" +dependencies = [ + "proc-macro-error-attr3", + "proc-macro2", + "quote", + "syn 2.0.119", ] [[package]] @@ -4115,7 +3996,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", "version_check", "yansi", ] @@ -4156,9 +4037,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.45" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] @@ -4205,9 +4086,9 @@ checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] name = "rand" -version = "0.8.5" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "22f6172bdec972074665ed81ed53b71da00bfc44b65a753cfde883ec4c702a1a" dependencies = [ "libc", "rand_chacha 0.3.1", @@ -4216,9 +4097,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" +checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.5", @@ -4226,12 +4107,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ "chacha20", - "getrandom 0.4.2", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -4279,29 +4160,53 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" +[[package]] +name = "redis" +version = "0.25.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e46922bd01fefcfdcf58d9cd626da082bb2cde27211920dacfde6b2ecf9a35b" +dependencies = [ + "arc-swap", + "async-trait", + "bytes", + "combine", + "futures", + "futures-util", + "itoa", + "percent-encoding", + "pin-project-lite", + "ryu", + "sha1_smol", + "socket2 0.5.10", + "tokio", + "tokio-retry", + "tokio-util", + "url", +] + [[package]] name = "redox_syscall" version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", ] [[package]] name = "redox_syscall" -version = "0.7.4" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f450ad9c3b1da563fb6948a8e0fb0fb9269711c9c73d9ea1de5058c79c8d643a" +checksum = "c5102a6aaa05aa011a238e178e6bca86d2cb56fc9f586d37cb80f5bca6e07759" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", ] [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -4311,9 +4216,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -4328,9 +4233,9 @@ checksum = "cab834c73d247e67f4fae452806d17d3c7501756d98c8808d7c9c7aa7d18f973" [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rend" @@ -4341,12 +4246,6 @@ dependencies = [ "bytecheck", ] -[[package]] -name = "result" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194d8e591e405d1eecf28819740abed6d719d1a2db87fc0bcdedee9a26d55560" - [[package]] name = "ring" version = "0.17.14" @@ -4403,7 +4302,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ "base64 0.21.7", - "bitflags 2.11.1", + "bitflags 2.13.0", "serde", "serde_derive", ] @@ -4434,8 +4333,8 @@ version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e" dependencies = [ - "bitflags 2.11.1", - "fallible-iterator 0.3.0", + "bitflags 2.13.0", + "fallible-iterator", "fallible-streaming-iterator", "hashlink 0.9.1", "libsqlite3-sys", @@ -4444,9 +4343,9 @@ dependencies = [ [[package]] name = "rust-embed" -version = "8.11.0" +version = "8.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04113cb9355a377d83f06ef1f0a45b8ab8cd7d8b1288160717d66df5c7988d27" +checksum = "e9e7760e252aaba7b09f4be00e36476cf585bdb68a53552ac954cdf504ab4bc9" dependencies = [ "rust-embed-impl", "rust-embed-utils", @@ -4455,24 +4354,25 @@ dependencies = [ [[package]] name = "rust-embed-impl" -version = "8.11.0" +version = "8.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0902e4c7c8e997159ab384e6d0fc91c221375f6894346ae107f47dd0f3ccaa" +checksum = "3bcfc4d6f53af43755f7a723e4b6b8794fcce052a178dd8c6c1dadc5f5343097" dependencies = [ + "mime_guess", "proc-macro2", "quote", "rust-embed-utils", - "syn 2.0.117", + "syn 2.0.119", "walkdir", ] [[package]] name = "rust-embed-utils" -version = "8.11.0" +version = "8.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bcdef0be6fe7f6fa333b1073c949729274b05f123a0ad7efcb8efd878e5c3b1" +checksum = "42ffa149f6aa81b58a5b3011d01a857c4ed12c7a732d2c51947a4c7c692185f0" dependencies = [ - "sha2 0.10.9", + "sha2 0.11.0", "walkdir", ] @@ -4488,15 +4388,15 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.41.0" +version = "1.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ce901f9a19d251159075a4c37af514c3b8ef99c22e02dd8c19161cf397ee94a" +checksum = "be2a24f50780bc85f09cc6ac299bdf1424302742d77221106859c9d8b102126a" dependencies = [ "arrayvec", "borsh", "bytes", "num-traits", - "rand 0.8.5", + "rand 0.8.7", "rkyv", "serde", "serde_json", @@ -4505,9 +4405,9 @@ dependencies = [ [[package]] name = "rustc-hash" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustc_version" @@ -4524,7 +4424,7 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "errno", "libc", "linux-raw-sys", @@ -4533,9 +4433,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.38" +version = "0.23.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69f9466fb2c14ea04357e91413efb882e2a6d4a406e625449bc0a5d360d53a21" +checksum = "3c54fcab019b409d04215d3a17cb438fd7fbf192ee61461f20f4fe18704bc138" dependencies = [ "once_cell", "ring", @@ -4547,18 +4447,18 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +checksum = "764899a24af3980067ee14bc143654f297b22eaebfe3c7b6b211920a5a59b046" dependencies = [ "zeroize", ] [[package]] name = "rustls-webpki" -version = "0.103.12" +version = "0.103.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8279bb85272c9f10811ae6a6c547ff594d6a7f3c6c6b02ee9726d1d0dcfcdd06" +checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" dependencies = [ "ring", "rustls-pki-types", @@ -4567,9 +4467,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "ryu" @@ -4586,12 +4486,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "saturating" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ece8e78b2f38ec51c51f5d475df0a7187ba5111b2a28bdc761ee05b075d40a71" - [[package]] name = "scheduled-thread-pool" version = "0.2.7" @@ -4628,7 +4522,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -4641,7 +4535,7 @@ dependencies = [ "async-trait", "bigdecimal", "chrono", - "derive_more 2.1.1", + "derive_more", "futures-util", "log", "mac_address", @@ -4689,7 +4583,7 @@ dependencies = [ "proc-macro2", "quote", "sea-bae", - "syn 2.0.117", + "syn 2.0.119", "unicode-ident", ] @@ -4750,7 +4644,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", "thiserror 2.0.18", ] @@ -4776,7 +4670,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -4790,10 +4684,6 @@ name = "semver" version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" -dependencies = [ - "serde", - "serde_core", -] [[package]] name = "serde" @@ -4805,18 +4695,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-untagged" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058" -dependencies = [ - "erased-serde", - "serde", - "serde_core", - "typeid", -] - [[package]] name = "serde-value" version = "0.7.0" @@ -4844,25 +4722,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", -] - -[[package]] -name = "serde_ini" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb236687e2bb073a7521c021949be944641e671b8505a94069ca37b656c81139" -dependencies = [ - "result", - "serde", - "void", + "syn 2.0.119", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "indexmap", "itoa", @@ -4872,15 +4739,6 @@ dependencies = [ "zmij", ] -[[package]] -name = "serde_plain" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1fc6db65a611022b23a0dec6975d63fb80a302cb3388835ff02c097258d50" -dependencies = [ - "serde", -] - [[package]] name = "serde_spanned" version = "0.6.9" @@ -4926,15 +4784,32 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +checksum = "a978451301f4db1d02937a4ab3ccce137717b81826e79b7d49ffe3244a13c3b8" dependencies = [ "cfg-if", "cpufeatures 0.2.17", "digest 0.10.7", ] +[[package]] +name = "sha1" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aacc4cc499359472b4abe1bf11d0b12e688af9a805fa5e3016f9a386dc2d0214" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "digest 0.11.3", +] + +[[package]] +name = "sha1_smol" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" + [[package]] name = "sha2" version = "0.10.9" @@ -4954,20 +4829,19 @@ checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", "cpufeatures 0.3.0", - "digest 0.11.2", + "digest 0.11.3", ] [[package]] name = "shadow-rs" -version = "1.7.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c798acfc78a69c7b038adde44084d8df875555b091da42c90ae46257cdcc41a" +checksum = "1dd39b4b2077bd36e60ca28c31d494046e747759cb9b507a7d177bb64787c39e" dependencies = [ "const_format", "git2", "is_debug", - "time", - "tzdb", + "jiff", ] [[package]] @@ -4981,9 +4855,9 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signal-hook-registry" @@ -5007,9 +4881,9 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" +checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" [[package]] name = "simdutf8" @@ -5032,9 +4906,9 @@ dependencies = [ [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" [[package]] name = "slab" @@ -5042,17 +4916,11 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" -[[package]] -name = "small_ctor" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88414a5ca1f85d82cc34471e975f0f74f6aa54c40f062efa42c0080e7f763f81" - [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" dependencies = [ "serde", ] @@ -5079,9 +4947,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" dependencies = [ "libc", "windows-sys 0.61.2", @@ -5089,9 +4957,9 @@ dependencies = [ [[package]] name = "spin" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +checksum = "3763264f6b73151db08c50ff20d7d8a0b8796e021cdea7ceedad07b80155fa0e" dependencies = [ "lock_api", ] @@ -5140,6 +5008,7 @@ dependencies = [ "hashbrown 0.15.5", "hashlink 0.10.0", "indexmap", + "ipnet", "log", "memchr", "once_cell", @@ -5170,7 +5039,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -5193,7 +5062,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.117", + "syn 2.0.119", "tokio", "url", ] @@ -5207,7 +5076,7 @@ dependencies = [ "atoi", "base64 0.22.1", "bigdecimal", - "bitflags 2.11.1", + "bitflags 2.13.0", "byteorder", "bytes", "chrono", @@ -5222,18 +5091,18 @@ dependencies = [ "generic-array", "hex", "hkdf", - "hmac 0.12.1", + "hmac", "itoa", "log", - "md-5 0.10.6", + "md-5", "memchr", "once_cell", "percent-encoding", - "rand 0.8.5", + "rand 0.8.7", "rsa", "rust_decimal", "serde", - "sha1", + "sha1 0.10.7", "sha2 0.10.9", "smallvec", "sqlx-core", @@ -5242,7 +5111,7 @@ dependencies = [ "time", "tracing", "uuid", - "whoami 1.6.1", + "whoami", ] [[package]] @@ -5254,7 +5123,7 @@ dependencies = [ "atoi", "base64 0.22.1", "bigdecimal", - "bitflags 2.11.1", + "bitflags 2.13.0", "byteorder", "chrono", "crc", @@ -5265,15 +5134,16 @@ dependencies = [ "futures-util", "hex", "hkdf", - "hmac 0.12.1", + "hmac", "home", + "ipnet", "itoa", "log", - "md-5 0.10.6", + "md-5", "memchr", "num-bigint", "once_cell", - "rand 0.8.5", + "rand 0.8.7", "rust_decimal", "serde", "serde_json", @@ -5285,7 +5155,7 @@ dependencies = [ "time", "tracing", "uuid", - "whoami 1.6.1", + "whoami", ] [[package]] @@ -5365,7 +5235,7 @@ dependencies = [ "proc-macro2", "quote", "structmeta-derive", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -5376,7 +5246,7 @@ checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -5384,28 +5254,12 @@ name = "strum" version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" -dependencies = [ - "strum_macros 0.26.4", -] [[package]] name = "strum" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" - -[[package]] -name = "strum_macros" -version = "0.26.4" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.117", -] +checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd" [[package]] name = "strum_macros" @@ -5416,7 +5270,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -5438,9 +5292,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.119" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" dependencies = [ "proc-macro2", "quote", @@ -5455,20 +5309,21 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] name = "sysinfo" -version = "0.38.4" +version = "0.39.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ab6a2f8bfe508deb3c6406578252e491d299cbbf3bc0529ecc3313aee4a52f" +checksum = "d2071df9448915b71c4fe6d25deaf1c22f12bd234f01540b77312bb8e41361e6" dependencies = [ "libc", "memchr", "ntapi", "objc2-core-foundation", "objc2-io-kit", + "objc2-open-directory", "windows", ] @@ -5485,21 +5340,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.2", + "getrandom 0.4.3", "once_cell", "rustix", "windows-sys 0.61.2", ] -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - [[package]] name = "termtree" version = "0.5.1" @@ -5532,7 +5378,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -5543,7 +5389,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -5558,24 +5404,21 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" dependencies = [ "cfg-if", ] [[package]] name = "time" -version = "0.3.47" +version = "0.3.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +checksum = "18dfaaeddcb932337b5e7866ee7d0ce9b76d2fd092997146f187ec09b4558a50" dependencies = [ "deranged", - "itoa", - "libc", "num-conv", - "num_threads", "powerfmt", "serde_core", "time-core", @@ -5584,15 +5427,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" [[package]] name = "time-macros" -version = "0.2.27" +version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" +checksum = "c431b87111666e491a90baa837f914fb45cd5dc3c268591b0220ff5057f2085f" dependencies = [ "num-conv", "time-core", @@ -5619,9 +5462,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" +checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f" dependencies = [ "tinyvec_macros", ] @@ -5634,9 +5477,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.52.0" +version = "1.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a91135f59b1cbf38c91e73cf3386fca9bb77915c45ce2771460c9d92f0f3d776" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" dependencies = [ "bytes", "libc", @@ -5644,7 +5487,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.6.3", + "socket2 0.6.5", "tokio-macros", "windows-sys 0.61.2", ] @@ -5663,33 +5506,18 @@ checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] -name = "tokio-postgres" -version = "0.7.17" +name = "tokio-retry" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dd8df5ef180f6364759a6f00f7aadda4fbbac86cdee37480826a6ff9f3574ce" +checksum = "4a129d95275ebf4c493ec53bf0f8cd95f5ac161bc4f381700809a54f595d4470" dependencies = [ - "async-trait", - "byteorder", - "bytes", - "fallible-iterator 0.2.0", - "futures-channel", - "futures-util", - "log", - "parking_lot", - "percent-encoding", - "phf", "pin-project-lite", - "postgres-protocol", - "postgres-types", - "rand 0.10.1", - "socket2 0.6.3", + "rand 0.10.2", "tokio", - "tokio-util", - "whoami 2.1.1", ] [[package]] @@ -5705,16 +5533,15 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] @@ -5731,24 +5558,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "indexmap", - "serde_core", - "serde_spanned 1.1.1", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "toml_writer", - "winnow 0.7.15", -] - -[[package]] -name = "toml" -version = "1.1.2+spec-1.1.0" +version = "1.1.3+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" +checksum = "53c96ecdfa941c8fc4fcaed14f99ada8ebed502eef533015095a07e3301d4c3c" dependencies = [ "indexmap", "serde_core", @@ -5756,7 +5568,7 @@ dependencies = [ "toml_datetime 1.1.1+spec-1.1.0", "toml_parser", "toml_writer", - "winnow 1.0.1", + "winnow 1.0.4", ] [[package]] @@ -5768,15 +5580,6 @@ dependencies = [ "serde", ] -[[package]] -name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - [[package]] name = "toml_datetime" version = "1.1.1+spec-1.1.0" @@ -5802,14 +5605,14 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.25.11+spec-1.1.0" +version = "0.25.13+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" +checksum = "6975367e4d2ef766d86af01ffad14b622fecc8d4357a998fbc4deb6e9bacaf9b" dependencies = [ "indexmap", "toml_datetime 1.1.1+spec-1.1.0", "toml_parser", - "winnow 1.0.1", + "winnow 1.0.4", ] [[package]] @@ -5818,7 +5621,7 @@ version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow 1.0.1", + "winnow 1.0.4", ] [[package]] @@ -5829,9 +5632,9 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "toml_writer" -version = "1.1.1+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" +checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" [[package]] name = "tracing" @@ -5853,7 +5656,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -5882,9 +5685,9 @@ dependencies = [ [[package]] name = "tree-sitter" -version = "0.26.8" +version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "887bd495d0582c5e3e0d8ece2233666169fa56a9644d172fc22ad179ab2d0538" +checksum = "af1c71c1c4cc0920b20d6b0f6572e7682cd07a6a2faec71067a31fa394c586df" dependencies = [ "cc", "regex", @@ -5903,24 +5706,12 @@ checksum = "009994f150cc0cd50ff54917d5bc8bffe8cad10ca10d81c34da2ec421ae61782" [[package]] name = "tree-sitter-wpl" version = "0.0.1" -source = "git+https://github.com/wp-labs/tree-sitter-wpl.git?branch=main#44689663cd7e5d8a783baa2d405080cc47331cb0" +source = "git+https://github.com/wp-labs/tree-sitter-wpl.git?branch=main#5876eece39cc5c9a619a92ca36901fd688452c70" dependencies = [ "cc", "tree-sitter", ] -[[package]] -name = "twox-hash" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" - -[[package]] -name = "typeid" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" - [[package]] name = "typemap-ors" version = "1.0.0" @@ -5932,35 +5723,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" - -[[package]] -name = "tz-rs" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fc6c929ffa10fb34f4a3c7e9a73620a83ef2e85e47f9ec3381b8289e6762f42" - -[[package]] -name = "tzdb" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56d4e985b6dda743ae7fd4140c28105316ffd75bc58258ee6cc12934e3eb7a0c" -dependencies = [ - "iana-time-zone", - "tz-rs", - "tzdb_data", -] - -[[package]] -name = "tzdb_data" -version = "0.2.4" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "125a0a63c4bd75c73f61863463cb400db4b1aa5039b203b0ee1d628a7e3dabb2" -dependencies = [ - "tz-rs", -] +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -6003,9 +5768,9 @@ checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" [[package]] name = "unicode-segmentation" -version = "1.13.2" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-width" @@ -6052,12 +5817,6 @@ dependencies = [ "serde", ] -[[package]] -name = "utf8-width" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1292c0d970b54115d14f2492fe0170adf21d68a1de108eebc51c1df4f346a091" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -6072,23 +5831,17 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.23.1" +version = "1.23.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" +checksum = "ea5fab0d6c3c01ae70085a09cb03d4c7a1d6314e2b3e075392783396d724ca0a" dependencies = [ - "getrandom 0.4.2", + "getrandom 0.4.3", "js-sys", - "rand 0.10.1", + "rand 0.10.2", "serde_core", "wasm-bindgen", ] -[[package]] -name = "v_htmlescape" -version = "0.15.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e8257fbc510f0a46eb602c10215901938b5c2a7d5e70fc11483b1d3c9b5b18c" - [[package]] name = "vcpkg" version = "0.2.15" @@ -6101,12 +5854,6 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - [[package]] name = "walkdir" version = "2.5.0" @@ -6118,34 +5865,16 @@ dependencies = [ ] [[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasi" -version = "0.14.7+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" -dependencies = [ - "wasip2", -] - -[[package]] -name = "wasip2" -version = "1.0.2+wasi-0.2.9" +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" -dependencies = [ - "wit-bindgen", -] +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +name = "wasip2" +version = "1.0.4+wasi-0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" dependencies = [ "wit-bindgen", ] @@ -6156,20 +5885,11 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" -[[package]] -name = "wasite" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66fe902b4a6b8028a753d5424909b764ccf79b7a209eac9bf97e59cda9f71a42" -dependencies = [ - "wasi 0.14.7+wasi-0.2.4", -] - [[package]] name = "wasm-bindgen" -version = "0.2.118" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -6181,9 +5901,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.118" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6191,109 +5911,63 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.118" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.118" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] -[[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap", - "wasm-encoder", - "wasmparser", -] - -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags 2.11.1", - "hashbrown 0.15.5", - "indexmap", - "semver", -] - -[[package]] -name = "web-sys" -version = "0.3.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2dfbb17949fa2088e5d39408c48368947b86f7834484e87b73de55bc14d97d" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - [[package]] name = "webpki-roots" version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "webpki-roots 1.0.6", + "webpki-roots 1.0.8", ] [[package]] name = "webpki-roots" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cfaf3c063993ff62e73cb4311efde4db1efb31ab78a3e5c457939ad5cc0bed" +checksum = "bf85cb06032201fa7c6f829d7db5a7e5aa45bcc0655327713065f6f0576731bf" dependencies = [ "rustls-pki-types", ] [[package]] -name = "whoami" -version = "1.6.1" +name = "wf-connector-api" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" +checksum = "24d3514f6060253fe1db956f4641abd27f4f2c040a36aeba296bdb88af658917" dependencies = [ - "libredox", - "wasite 0.1.0", + "arrow 59.1.0", + "async-trait", + "orion-error", ] [[package]] name = "whoami" -version = "2.1.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6a5b12f9df4f978d2cfdb1bd3bac52433f44393342d7ee9c25f5a1c14c0f45d" +checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" dependencies = [ - "libc", "libredox", - "objc2-system-configuration", - "wasite 1.0.2", - "web-sys", + "wasite", ] [[package]] @@ -6389,7 +6063,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -6400,7 +6074,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -6605,100 +6279,18 @@ dependencies = [ [[package]] name = "winnow" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5" +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" dependencies = [ "memchr", ] [[package]] name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] - -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck 0.5.0", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck 0.5.0", - "indexmap", - "prettyplease", - "syn 2.0.117", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn 2.0.117", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags 2.11.1", - "indexmap", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" +version = "0.57.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap", - "log", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", -] +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" [[package]] name = "wp-arrow" @@ -6706,66 +6298,50 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f91eca86bceecc5704ed916f6e2d42e46070688908564449392d325c409c244" dependencies = [ - "arrow", + "arrow 54.3.1", "chrono", "wp-model-core", ] -[[package]] -name = "wp-cli-core" -version = "1.19.16" -source = "git+https://github.com/wp-labs/wp-motor?tag=v1.19.16#aaac2f8c607316f2d5e15216ee27810c5019c0b9" -dependencies = [ - "anyhow", - "chrono", - "comfy-table", - "glob", - "orion-error", - "orion-variate", - "orion_conf", - "serde", - "serde_json", - "toml 1.1.2+spec-1.1.0", - "walkdir", - "wp-config", - "wp-knowledge", -] - [[package]] name = "wp-condition" -version = "1.19.16" -source = "git+https://github.com/wp-labs/wp-motor?tag=v1.19.16#aaac2f8c607316f2d5e15216ee27810c5019c0b9" +version = "1.23.7" +source = "git+https://github.com/wp-labs/wp-motor?tag=v1.23.7#707599c9f1053f16a8198123cfcc1b18f8deeb14" dependencies = [ "orion_exp", - "winnow 1.0.1", + "winnow 1.0.4", "wp-primitives", ] [[package]] name = "wp-conf-base" -version = "0.2.2" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34b3728590c8546e8212f659145b07f064bde39ca74ee240cbf1ff69ab11f8fd" +checksum = "986422571fa73ccef4a929a447aa3460961f6dd7f4cb973cf4ceaeb4ac0ac6a9" dependencies = [ "anyhow", + "derive_more", "log", + "orion-error", "orion-variate", "orion_conf", "serde", - "wp-connector-api", + "toml 1.1.3+spec-1.1.0", + "winnow 1.0.4", + "wp-connector-api 0.10.1", "wp-model-core", ] [[package]] name = "wp-config" -version = "1.19.16" -source = "git+https://github.com/wp-labs/wp-motor?tag=v1.19.16#aaac2f8c607316f2d5e15216ee27810c5019c0b9" +version = "1.23.7" +source = "git+https://github.com/wp-labs/wp-motor?tag=v1.23.7#707599c9f1053f16a8198123cfcc1b18f8deeb14" dependencies = [ "anyhow", "async-trait", "chrono", "derive-getters", - "derive_more 2.1.1", + "derive_more", "educe", "getset", "glob", @@ -6780,12 +6356,12 @@ dependencies = [ "serde_derive", "serde_json", "thiserror 2.0.18", - "toml 1.1.2+spec-1.1.0", + "toml 1.1.3+spec-1.1.0", "wildmatch", - "winnow 1.0.1", + "winnow 1.0.4", "wp-condition", "wp-conf-base", - "wp-connector-api", + "wp-connector-api 0.11.2", "wp-data-utils", "wp-error", "wp-knowledge", @@ -6798,34 +6374,65 @@ dependencies = [ [[package]] name = "wp-connector-api" -version = "0.8.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4392f7c4de3e59c9e385d2e83f262713dcc34547a66654369ff3468560d357e9" +checksum = "7679ff66d428626c693b1f58d644215b421506e1a8610250a862335e25596bf9" dependencies = [ - "anyhow", "async-broadcast", "async-trait", - "derive_more 2.1.1", - "once_cell", + "derive_more", "orion-error", "serde", "serde_derive", "serde_json", "smallvec", "smol_str", - "thiserror 2.0.18", - "toml 1.1.2+spec-1.1.0", + "toml 1.1.3+spec-1.1.0", + "wp-model-core", +] + +[[package]] +name = "wp-connector-api" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89a3690372dd54afccbe7d3cb8f4809ecca80c9510c93682f9acbba09b0fb6dc" +dependencies = [ + "async-broadcast", + "async-trait", + "derive_more", + "orion-error", + "serde", + "serde_derive", + "serde_json", + "smallvec", + "smol_str", + "toml 1.1.3+spec-1.1.0", + "wp-model-core", + "wp-source-types", +] + +[[package]] +name = "wp-connector-utils" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b73f02f9ffbdb284b8372db72fcb42f4775177e01cd2a462eaa38c304dee3e1" +dependencies = [ + "arrow 59.1.0", + "chrono", + "orion-error", + "serde_json", + "wp-connector-api 0.11.2", "wp-model-core", ] [[package]] name = "wp-core-connectors" -version = "0.1.3" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90b77ee4f1645e451a1a09fb482fe5177f9bba5df6ad48a77b4d20fa2e8c60b4" +checksum = "c84c6b430f256dcd98fdd554bf0ab07262901f98b3c024bdd8790130978bfe12" dependencies = [ "anyhow", - "arrow", + "arrow 59.1.0", "async-trait", "base64 0.22.1", "bytes", @@ -6840,26 +6447,19 @@ dependencies = [ "orion-error", "orion_conf", "serde_json", - "socket2 0.6.3", + "socket2 0.6.5", "thiserror 2.0.18", "tokio", - "toml 1.1.2+spec-1.1.0", - "wp-arrow", + "toml 1.1.3+spec-1.1.0", + "wf-connector-api", "wp-conf-base", - "wp-connector-api", + "wp-connector-api 0.11.2", + "wp-connector-utils", "wp-data-fmt", "wp-log", "wp-model-core", ] -[[package]] -name = "wp-ctrl-api" -version = "0.1.0" -source = "git+https://github.com/wp-labs/wp-advanced-api?tag=v0.1.0#9ed1d5c9f7c5fde300e6d9b6306bf0607095181b" -dependencies = [ - "serde", -] - [[package]] name = "wp-data-fmt" version = "0.2.4" @@ -6875,13 +6475,13 @@ dependencies = [ [[package]] name = "wp-data-utils" -version = "1.19.16" -source = "git+https://github.com/wp-labs/wp-motor?tag=v1.19.16#aaac2f8c607316f2d5e15216ee27810c5019c0b9" +version = "1.23.7" +source = "git+https://github.com/wp-labs/wp-motor?tag=v1.23.7#707599c9f1053f16a8198123cfcc1b18f8deeb14" dependencies = [ "arcstr", "chrono", "derive_builder", - "lru", + "lru 0.17.0", "orion-error", "orion_exp", "serde", @@ -6893,18 +6493,14 @@ dependencies = [ [[package]] name = "wp-editor" -version = "1.16.0" +version = "1.19.9" dependencies = [ - "actix-files", - "actix-multipart", "actix-web", "actix-web-prom", "base64 0.22.1", - "cargo_metadata", "chrono", "clap", "config", - "futures-util", "mime_guess", "orion-error", "regex", @@ -6914,19 +6510,13 @@ dependencies = [ "serde", "serde_json", "simple-log", - "small_ctor", - "strum 0.26.3", "tempfile", "thiserror 2.0.18", "tokio", - "tokio-util", - "toml 0.9.12+spec-1.1.0", + "toml 1.1.3+spec-1.1.0", "tracing", "tree-sitter", "tree-sitter-wpl", - "wp-conf-base", - "wp-config", - "wp-connector-api", "wp-data-fmt", "wp-data-utils", "wp-editor-migrations", @@ -6934,13 +6524,9 @@ dependencies = [ "wp-error", "wp-knowledge", "wp-lang", - "wp-log", "wp-model-core", "wp-oml", - "wp-proj", "wp-specs", - "zip", - "zip-extract", ] [[package]] @@ -6955,8 +6541,8 @@ dependencies = [ [[package]] name = "wp-engine" -version = "1.19.16" -source = "git+https://github.com/wp-labs/wp-motor?tag=v1.19.16#aaac2f8c607316f2d5e15216ee27810c5019c0b9" +version = "1.23.7" +source = "git+https://github.com/wp-labs/wp-motor?tag=v1.23.7#707599c9f1053f16a8198123cfcc1b18f8deeb14" dependencies = [ "anyhow", "async-broadcast", @@ -6971,7 +6557,7 @@ dependencies = [ "ctor", "derive-getters", "derive_builder", - "derive_more 2.1.1", + "derive_more", "educe", "enum_dispatch", "futures-lite", @@ -6983,7 +6569,7 @@ dependencies = [ "lazy_static", "libc", "log", - "lru", + "lru 0.17.0", "memchr", "mockall", "once_cell", @@ -6993,35 +6579,32 @@ dependencies = [ "orion_conf", "orion_exp", "orion_overload", - "rand 0.10.1", + "rand 0.10.2", "regex", "serde", "serde_derive", "serde_json", "shadow-rs", "smol_str", - "socket2 0.6.3", + "socket2 0.6.5", "strfmt", "sysinfo", "thiserror 2.0.18", "time", "tokio", "tokio-async-drop", - "toml 1.1.2+spec-1.1.0", + "toml 1.1.3+spec-1.1.0", "uuid", "walkdir", "wildmatch", - "winnow 1.0.1", + "winnow 1.0.4", "wp-arrow", - "wp-cli-core", "wp-conf-base", "wp-config", - "wp-connector-api", + "wp-connector-api 0.11.2", "wp-core-connectors", - "wp-ctrl-api", "wp-data-fmt", "wp-data-utils", - "wp-enrich-api", "wp-error", "wp-knowledge", "wp-lang", @@ -7030,25 +6613,18 @@ dependencies = [ "wp-oml", "wp-parse-api", "wp-primitives", + "wp-source-types", "wp-specs", "wp-stats", ] -[[package]] -name = "wp-enrich-api" -version = "0.1.0" -source = "git+https://github.com/wp-labs/wp-advanced-api?tag=v0.1.0#9ed1d5c9f7c5fde300e6d9b6306bf0607095181b" -dependencies = [ - "wp-model-core", -] - [[package]] name = "wp-error" -version = "0.8.3" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80f1cc521f4ea17d26679d355d5da35278559dc4a1358575f7a0d21639284980" +checksum = "a09d058cbc360fc0b27e225ea7f01cc831c90173fa721eebcd0c661b7af023ff" dependencies = [ - "derive_more 2.1.1", + "derive_more", "orion-error", "orion-sec", "orion_conf", @@ -7056,55 +6632,54 @@ dependencies = [ "serde_json", "thiserror 2.0.18", "unicode-segmentation", - "wp-connector-api", + "wp-connector-api 0.10.1", "wp-log", ] [[package]] name = "wp-knowledge" -version = "0.11.4" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4377c50ff485c70740ce1a93d95c041f31fc8ebd56e576f2209c2dbd584afab1" +checksum = "566e5979a8a1b7f1f2178bf6bcf6277d1c1ac12f522c75f4854be329a7988bee" dependencies = [ "anyhow", "async-trait", "chrono", "csv", + "derive_more", "enum_dispatch", + "futures", "lazy_static", "log", - "lru", - "mysql", - "mysql_async", + "lru 0.16.4", "orion-error", "orion-variate", "orion_conf", "r2d2", "r2d2_sqlite", + "redis", "rusqlite", "serde", "serde_json", + "sqlx", "tokio", - "tokio-postgres", - "wp-error", "wp-log", "wp-model-core", ] [[package]] name = "wp-lang" -version = "0.1.9" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3f3705f22626950b7d0aaf7d3206b9a9363eea98ce45146788e0376ea427aea" +checksum = "6da872cd962f34fafaf52f56a53dca613aa620fd24f935e2eb08b6a12521579f" dependencies = [ "ahash 0.8.12", - "anyhow", "base64 0.22.1", "bytes", "chrono", "contracts", "derive-getters", - "derive_more 2.1.1", + "derive_more", "glob", "hex", "ipnet", @@ -7113,37 +6688,37 @@ dependencies = [ "once_cell", "orion-error", "phone", - "rand 0.10.1", + "rand 0.10.2", "regex", "serde", "serde_json", "smol_str", "strfmt", "thiserror 2.0.18", - "toml 1.1.2+spec-1.1.0", + "toml 1.1.3+spec-1.1.0", "unicode-segmentation", "url", "wildmatch", - "winnow 1.0.1", - "wp-connector-api", + "winnow 1.0.4", "wp-data-fmt", "wp-error", "wp-log", "wp-model-core", "wp-parse-api", "wp-primitives", + "wp-source-types", "wp-specs", ] [[package]] name = "wp-log" -version = "0.2.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e867a8c80d4b365bf772e6f693bc5de71ce976a493d9bc5bdccb64108761586c" +checksum = "28c6bc038604182c1cff7a9837ba48fbde0c7a5d2be64f1f29c97a85d8aa1897" dependencies = [ "anyhow", "chrono", - "derive_more 2.1.1", + "derive_more", "getset", "log", "log4rs", @@ -7152,34 +6727,30 @@ dependencies = [ "orion_conf", "serde", "serde_json", - "strum_macros 0.27.2", + "strum_macros", "thiserror 2.0.18", - "toml 1.1.2+spec-1.1.0", + "toml 1.1.3+spec-1.1.0", "unicode-segmentation", ] [[package]] name = "wp-model-core" -version = "0.8.6" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c0c153df58a2c0e1cf0ec9023608ca30dcf932c5e0a262b365f7e00d643ade" +checksum = "5f83b80e35ad6c94ef72fea7f4f59e4cf3271f2946539d95b755aeea3446c589" dependencies = [ "bytes", "chrono", - "ipnet", "serde", "serde_derive", - "serde_json", - "smallvec", "smol_str", "thiserror 2.0.18", - "wildmatch", ] [[package]] name = "wp-oml" -version = "1.19.16" -source = "git+https://github.com/wp-labs/wp-motor?tag=v1.19.16#aaac2f8c607316f2d5e15216ee27810c5019c0b9" +version = "1.23.7" +source = "git+https://github.com/wp-labs/wp-motor?tag=v1.23.7#707599c9f1053f16a8198123cfcc1b18f8deeb14" dependencies = [ "anyhow", "arcstr", @@ -7189,6 +6760,7 @@ dependencies = [ "contracts", "derive-getters", "derive_builder", + "derive_more", "encoding_rs", "enum_dispatch", "escape8259", @@ -7204,21 +6776,21 @@ dependencies = [ "orion_conf", "orion_exp", "parse-display", - "parse-display-derive", + "parse-display-derive 0.11.0", "regex", "serde", "serde_derive", "serde_json", "smallvec", "strfmt", - "strum 0.27.2", - "strum_macros 0.27.2", + "strum 0.28.0", + "strum_macros", "thiserror 2.0.18", "tokio", - "toml 1.1.2+spec-1.1.0", + "toml 1.1.3+spec-1.1.0", "url", "wildmatch", - "winnow 1.0.1", + "winnow 1.0.4", "wp-condition", "wp-data-fmt", "wp-data-utils", @@ -7233,12 +6805,12 @@ dependencies = [ [[package]] name = "wp-parse-api" -version = "0.8.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9108cdcb3f90e5b4f986ec7a1403f85e967916a21e660089b12690e5ecf72c32" +checksum = "b0f2b84c367dc690a0859402cdcb553338942cf4badb40028cbf76efb735131b" dependencies = [ "bytes", - "derive_more 2.1.1", + "derive_more", "orion-error", "serde", "serde_derive", @@ -7252,52 +6824,36 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1baa39359b6c063ff60bf4d3c866636b890e0077aedc6fd14963b3bd7673fab9" dependencies = [ - "winnow 1.0.1", + "winnow 1.0.4", ] [[package]] -name = "wp-proj" -version = "1.19.16" -source = "git+https://github.com/wp-labs/wp-motor?tag=v1.19.16#aaac2f8c607316f2d5e15216ee27810c5019c0b9" +name = "wp-source-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c146480ccaeedaa5340f60dcb0a5b7a3b2e77c9c30b0c8e0f6ef5acfaa9e9e68" dependencies = [ - "anyhow", - "comfy-table", - "glob", - "orion-error", - "orion-variate", - "orion_conf", "serde", - "serde_json", - "toml 1.1.2+spec-1.1.0", - "wildmatch", - "wp-cli-core", - "wp-config", - "wp-connector-api", - "wp-core-connectors", - "wp-data-utils", - "wp-engine", - "wp-error", - "wp-knowledge", - "wp-lang", - "wp-log", - "wp-oml", + "smallvec", + "smol_str", + "wp-model-core", ] [[package]] name = "wp-specs" -version = "0.8.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efaa11920f7fd004e99ecaedab1d87261dadfb24129bccb4385885d0ff4c209b" +checksum = "4f18c33a4568a8400cca073df1e981214eded9cbe61b6b68fa5c331d9d8535c8" dependencies = [ "serde", "wildmatch", - "wp-connector-api", + "wp-connector-api 0.10.1", ] [[package]] name = "wp-stats" -version = "1.19.16" -source = "git+https://github.com/wp-labs/wp-motor?tag=v1.19.16#aaac2f8c607316f2d5e15216ee27810c5019c0b9" +version = "1.23.7" +source = "git+https://github.com/wp-labs/wp-motor?tag=v1.23.7#707599c9f1053f16a8198123cfcc1b18f8deeb14" dependencies = [ "anyhow", "chrono", @@ -7306,7 +6862,7 @@ dependencies = [ "derive_builder", "ipnet", "log", - "lru", + "lru 0.17.0", "mockall", "orion_overload", "serde", @@ -7314,9 +6870,9 @@ dependencies = [ "serde_json", "smallvec", "smol_str", - "strum_macros 0.27.2", + "strum_macros", "thiserror 2.0.18", - "toml 1.1.2+spec-1.1.0", + "toml 1.1.3+spec-1.1.0", "wildmatch", "wp-log", "wp-model-core", @@ -7356,9 +6912,9 @@ checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "yoke" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -7373,35 +6929,35 @@ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.48" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.48" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] name = "zerofrom" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" dependencies = [ "zerofrom-derive", ] @@ -7414,15 +6970,15 @@ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", "synstructure", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zerotrie" @@ -7454,54 +7010,14 @@ checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", -] - -[[package]] -name = "zip" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" -dependencies = [ - "aes", - "byteorder", - "bzip2", - "constant_time_eq", - "crc32fast", - "crossbeam-utils", - "flate2", - "hmac 0.12.1", - "pbkdf2", - "sha1", - "time", - "zstd 0.11.2+zstd.1.5.2", -] - -[[package]] -name = "zip-extract" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e109e5a291403b4c1e514d39f8a22d3f98d257e691a52bb1f16051bb1ffed63e" -dependencies = [ - "log", - "thiserror 1.0.69", - "zip", + "syn 2.0.119", ] [[package]] name = "zmij" -version = "1.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" - -[[package]] -name = "zstd" -version = "0.11.2+zstd.1.5.2" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" -dependencies = [ - "zstd-safe 5.0.2+zstd.1.5.2", -] +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" [[package]] name = "zstd" @@ -7509,17 +7025,7 @@ version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" dependencies = [ - "zstd-safe 7.2.4", -] - -[[package]] -name = "zstd-safe" -version = "5.0.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" -dependencies = [ - "libc", - "zstd-sys", + "zstd-safe", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 5de0e8b..0e84d09 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,11 @@ [package] name = "wp-editor" -version = "1.16.0" +version = "1.19.9" edition = "2024" build = "build.rs" [build-dependencies] -serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -16,29 +15,27 @@ serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" actix-web = "4.12" actix-web-prom = "0.10" -actix-files = "0.6" + tracing = "0.1" simple-log = "2.4" -small_ctor = "0.1" -cargo_metadata = "0.20" + + tokio = { version = "1.48", features = ["full"] } -tokio-util = "=0.7.10" + rust-embed = "8.9" -zip = "0.6" -zip-extract = "0.1" -actix-multipart = "0.7" -futures-util = "0.3" + + mime_guess = "2" config = "0.14" -toml = "0.9" +toml = "1.1" chrono = { version = "0.4", features = ["serde"] } thiserror = "2.0" -strum = { version = "0.26", features = ["derive"] } + regex = "1.12" base64 = "0.22" -orion-error = "0.6" +orion-error = "0.8" tempfile = "3.24" -tree-sitter = "0.26.6" +tree-sitter = "0.26" tree-sitter-wpl = { package = "tree-sitter-wpl", git = "https://github.com/wp-labs/tree-sitter-wpl.git", branch = "main" } # PostgreSQL 数据库支持 - SeaORM @@ -49,34 +46,32 @@ sea-orm = { version = "1.1", features = [ "with-chrono", ] }# --- External: Open API (Public Interfaces) --- -wp-connector-api = "0.8" #wp-parse-api = "0.8" wp-model-core = "0.8" # --- External: Infrastructure Libraries --- -wp-log = "0.2" -wp-error = "0.8" -wp-specs = "0.8" -wp-conf-base = "0.2" + +wp-error = "0.10" +wp-specs = "0.10" + wp-data-fmt = "0.2" wp-editor-migrations = { path = "crates/migrations" } -wp-lang = "0.1" -wp_knowledge = { package = "wp-knowledge", version = "0.11"} - -wp-engine = { git = "https://github.com/wp-labs/wp-motor", tag = "v1.19.16" } -wp-config = { package = "wp-config", git = "https://github.com/wp-labs/wp-motor", tag = "v1.19.16" } -wp_oml = { package = "wp-oml", git = "https://github.com/wp-labs/wp-motor", tag = "v1.19.16" } -wp_data_utils = { package = "wp-data-utils", git = "https://github.com/wp-labs/wp-motor", tag = "v1.19.16" } -wp-proj = { package = "wp-proj", git = "https://github.com/wp-labs/wp-motor", tag = "v1.19.16" } - -#wp-engine = { path = "../wp-motor" } -#wp-config = { path = "../wp-motor/crates/wp-config" } -#wp-oml = { package = "wp-oml", path = "../wp-motor/crates/wp-oml" } -#wp-lang = { package = "wp-lang", path = "../wp-motor/crates/wp-lang" } -#wp-knowledge = { path = "../wp-motor/crates/wp-knowledge" } -##wp-cli-core = { path = "../wp-motor/crates/wp-cli-core" } -#wp-data-utils = { path = "../wp-motor/crates/wp-data-utils" } -#wp-proj = { path = "../wp-motor/crates/wp-proj" } +wp-lang = "0.4" + +wp_knowledge = { package = "wp-knowledge", version = "0.14"} + +wp-engine = { git = "https://github.com/wp-labs/wp-motor", tag = "v1.23.7" } +wp_oml = { package = "wp-oml", git = "https://github.com/wp-labs/wp-motor", tag = "v1.23.7" } +wp_data_utils = { package = "wp-data-utils", git = "https://github.com/wp-labs/wp-motor", tag = "v1.23.7" } + + +# wp-engine = { path = "../wp-motor" } +# wp-oml = { package = "wp-oml", path = "../wp-motor/crates/wp-oml" } +# wp-data-utils = { path = "../wp-motor/crates/wp-data-utils" } + +# wp-lang = {path = "../wp-lang"} +# wp-knowledge = { path = "../wp-motor/crates/wp-knowledge" } +##wp-cli-core = { path = "../wp-motor/crates/wp-cli-core" } semver = "1.0.27" diff --git a/dev-ops/alpha/config/config.toml b/dev-ops/alpha/config/config.toml new file mode 100644 index 0000000..1cd71bf --- /dev/null +++ b/dev-ops/alpha/config/config.toml @@ -0,0 +1,12 @@ +[log] +level = "debug" +output = "Console" +output_path = "./logs/" + +[web] +host = "0.0.0.0" +port = 8081 + +[repo] +wpl_rule_repo = "wp-rule/models/wpl" +oml_rule_repo = "wp-rule/models/oml" diff --git a/dev-ops/alpha/wp-editor.service b/dev-ops/alpha/wp-editor.service new file mode 100644 index 0000000..a6c2bd7 --- /dev/null +++ b/dev-ops/alpha/wp-editor.service @@ -0,0 +1,15 @@ +[Unit] +Description=wp-editor +After=network.target + +[Service] +Type=simple +ExecStart=${WORK_DIR}/wp-editor +WorkingDirectory=${WORK_DIR} +Restart=on-failure +User=root +Environment=PATH=/usr/bin:/usr/local/bin + + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/dev-ops/alpha/wp-rule b/dev-ops/alpha/wp-rule new file mode 160000 index 0000000..fcfc9e5 --- /dev/null +++ b/dev-ops/alpha/wp-rule @@ -0,0 +1 @@ +Subproject commit fcfc9e5e1f2b28c6988ec151a8ead7bcc4c68f97 diff --git a/dev-ops/beta/config/config.toml b/dev-ops/beta/config/config.toml new file mode 100644 index 0000000..7885893 --- /dev/null +++ b/dev-ops/beta/config/config.toml @@ -0,0 +1,12 @@ +[log] +level = "debug" +output = "Console" +output_path = "./logs/" + +[web] +host = "0.0.0.0" +port = 8082 + +[repo] +wpl_rule_repo = "wp-rule/models/wpl" +oml_rule_repo = "wp-rule/models/oml" diff --git a/dev-ops/beta/wp-editor.service b/dev-ops/beta/wp-editor.service new file mode 100644 index 0000000..a6c2bd7 --- /dev/null +++ b/dev-ops/beta/wp-editor.service @@ -0,0 +1,15 @@ +[Unit] +Description=wp-editor +After=network.target + +[Service] +Type=simple +ExecStart=${WORK_DIR}/wp-editor +WorkingDirectory=${WORK_DIR} +Restart=on-failure +User=root +Environment=PATH=/usr/bin:/usr/local/bin + + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/dev-ops/beta/wp-rule b/dev-ops/beta/wp-rule new file mode 160000 index 0000000..fcfc9e5 --- /dev/null +++ b/dev-ops/beta/wp-rule @@ -0,0 +1 @@ +Subproject commit fcfc9e5e1f2b28c6988ec151a8ead7bcc4c68f97 diff --git a/dev-ops/main/config/config.toml b/dev-ops/main/config/config.toml new file mode 100644 index 0000000..64b55b9 --- /dev/null +++ b/dev-ops/main/config/config.toml @@ -0,0 +1,12 @@ +[log] +level = "debug" +output = "Console" +output_path = "./logs/" + +[web] +host = "0.0.0.0" +port = 8083 + +[repo] +wpl_rule_repo = "wp-rule/models/wpl" +oml_rule_repo = "wp-rule/models/oml" diff --git a/dev-ops/main/wp-editor.service b/dev-ops/main/wp-editor.service new file mode 100644 index 0000000..a6c2bd7 --- /dev/null +++ b/dev-ops/main/wp-editor.service @@ -0,0 +1,15 @@ +[Unit] +Description=wp-editor +After=network.target + +[Service] +Type=simple +ExecStart=${WORK_DIR}/wp-editor +WorkingDirectory=${WORK_DIR} +Restart=on-failure +User=root +Environment=PATH=/usr/bin:/usr/local/bin + + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/dev-ops/main/wp-rule b/dev-ops/main/wp-rule new file mode 160000 index 0000000..fcfc9e5 --- /dev/null +++ b/dev-ops/main/wp-rule @@ -0,0 +1 @@ +Subproject commit fcfc9e5e1f2b28c6988ec151a8ead7bcc4c68f97 diff --git a/dist/install-manifest-alpha.json b/dist/install-manifest-alpha.json index 703ff8d..0ed1a44 100644 --- a/dist/install-manifest-alpha.json +++ b/dist/install-manifest-alpha.json @@ -1,11 +1,11 @@ { "releases": [ { - "version": "v1.15.4-alpha", + "version": "v1.19.9-alpha", "artifacts": { - "darwin-arm64": "wp-editor-v1.15.4-alpha-aarch64-apple-darwin.tar.gz", - "linux-arm64": "wp-editor-v1.15.4-alpha-aarch64-unknown-linux-gnu.tar.gz", - "linux-x86_64": "wp-editor-v1.15.4-alpha-x86_64-unknown-linux-gnu.tar.gz" + "darwin-arm64": "wp-editor-v1.19.9-alpha-aarch64-apple-darwin.tar.gz", + "linux-arm64": "wp-editor-v1.19.9-alpha-aarch64-unknown-linux-gnu.tar.gz", + "linux-x86_64": "wp-editor-v1.19.9-alpha-x86_64-unknown-linux-gnu.tar.gz" } } ] diff --git a/install/k8s/alpha/.helmignore b/install/k8s/alpha/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/install/k8s/alpha/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/install/k8s/alpha/Chart.yaml b/install/k8s/alpha/Chart.yaml new file mode 100644 index 0000000..7b79a01 --- /dev/null +++ b/install/k8s/alpha/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: wp-editor +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.19.3-alpha" diff --git a/install/k8s/alpha/README.md b/install/k8s/alpha/README.md new file mode 100644 index 0000000..b1e0b64 --- /dev/null +++ b/install/k8s/alpha/README.md @@ -0,0 +1,200 @@ +# wp-editor alpha Helm Chart + +该 chart 用于将 alpha 环境的 `wp-editor` 部署到 Kubernetes。它对齐 `dev-ops/alpha` 的运行布局:容器工作目录为 `/app`,应用配置挂载到 `/app/config/config.toml`,规则目录挂载到 `/app/wp-rule/models`。 + +## 前置条件 + +- 已配置可访问目标集群的 `kubectl` +- Helm 3 +- 可拉取镜像 `ghcr.io/wp-labs/wp-editor:1.19.3-alpha` + +## 安装 + +安装 release: + +```bash +helm install editor ./install/k8s/alpha +``` + +升级已有 release: + +```bash +helm upgrade editor ./install/k8s/alpha +``` + +本地渲染 Kubernetes manifests: + +```bash +helm template editor ./install/k8s/alpha --debug +``` + +校验 chart: + +```bash +helm lint ./install/k8s/alpha +``` + +## 运行时目录 + +该 chart 将容器工作目录设置为 `/app`。 + +生成的应用配置挂载到: + +```text +/app/config/config.toml +``` + +规则目录挂载到: + +```text +/app/wp-rule/models +``` + +这与应用配置中的相对路径匹配: + +```toml +[repo] +wpl_rule_repo = "wp-rule/models/wpl" +oml_rule_repo = "wp-rule/models/oml" +``` + +`wpl_rule_repo` 由 chart 固定生成,不对外暴露为 value。其他配置字段可以通过 `values.yaml` 调整。 + +## 配置项 + +默认镜像: + +```yaml +image: + repository: ghcr.io/wp-labs/wp-editor + tag: "1.19.3-alpha" + pullPolicy: IfNotPresent +``` + +默认 Service: + +```yaml +service: + type: NodePort + nodePort: 30428 + port: 8081 +``` + +默认生成的 `config.toml` 来源于以下 values: + +```yaml +config: + mountPath: /app/config/config.toml + subPath: config.toml + log: + level: debug + output: Console + outputPath: ./logs/ + web: + host: 0.0.0.0 + port: 8081 + repo: + omlRuleRepo: wp-rule/models/oml +``` + +覆盖示例: + +```bash +helm upgrade --install editor ./install/k8s/alpha \ + --set config.log.level=info \ + --set config.web.port=8081 \ + --set service.port=8081 +``` + +除非明确需要拆分容器内部监听端口和 Service 暴露端口,否则应保持 `config.web.port`、`service.port` 以及探针端口语义一致。 + +## 内置规则 + +默认情况下,chart 会从以下路径收集规则文件并生成 ConfigMap: + +```text +wp-rule/models/** +``` + +模板使用 `.Files.Glob` 动态收集规则文件。只要在 `wp-rule/models` 下新增或删除规则文件,渲染出的 ConfigMap 就会随之变化,不需要手动维护文件清单。 + +由于 ConfigMap 的 key 是扁平字符串,chart 会把每个规则文件路径转换为扁平 key。例如: + +```text +wp-rule/models/wpl/raw/nginx/parse.wpl +``` + +会转换为: + +```text +wpl__raw__nginx__parse.wpl +``` + +Deployment 再通过 `configMap.items` 将该 key 映射回原始目录结构。因此容器内最终看到的是: + +```text +/app/wp-rule/models/wpl/raw/nginx/parse.wpl +``` + +如果没有找到内置规则文件,Helm 渲染会直接失败,避免创建空的规则 ConfigMap。 + +## 外部规则 ConfigMap + +如果规则由 chart 外部管理,可以使用 `rules.existingConfigMap`。 + +从本地规则目录创建 ConfigMap: + +```bash +kubectl create configmap wp-editor-rules \ + --from-file=dev-ops/alpha/wp-rule/models \ + --dry-run=client -o yaml | kubectl apply -f - +``` + +安装或升级时引用外部 ConfigMap: + +```bash +helm upgrade --install editor ./install/k8s/alpha \ + --set rules.existingConfigMap=wp-editor-rules +``` + +设置 `rules.existingConfigMap` 后,chart 不会创建内置规则 ConfigMap,也不会根据规则内容生成 `checksum/rules`。如果外部 ConfigMap 内容变化,而集群没有按预期刷新挂载文件,需要手动重启 Deployment。 + +## 配置更新与滚动发布 + +对于 chart 管理的配置和内置规则,Deployment 会带有 checksum 注解: + +```yaml +checksum/config: ... +checksum/rules: ... +``` + +当生成的配置或内置规则文件变化时,checksum 会变化,从而触发 Deployment 滚动更新。 + +## 验证 + +查看本地渲染结果: + +```bash +helm template editor ./install/k8s/alpha --debug +``` + +查看已安装资源: + +```bash +kubectl get deploy editor-wp-editor +kubectl get svc editor-wp-editor +kubectl get cm editor-wp-editor-config -o yaml +kubectl get cm editor-wp-editor-rules -o yaml +``` + +查看滚动发布状态: + +```bash +kubectl rollout status deploy/editor-wp-editor +``` + +未使用 NodePort 或 Ingress 时,可以通过端口转发本地访问: + +```bash +kubectl port-forward deploy/editor-wp-editor 8081:8081 +``` diff --git a/install/k8s/alpha/templates/NOTES.txt b/install/k8s/alpha/templates/NOTES.txt new file mode 100644 index 0000000..6d496c6 --- /dev/null +++ b/install/k8s/alpha/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "wp-editor.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch its status by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "wp-editor.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "wp-editor.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "wp-editor.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/install/k8s/alpha/templates/_helpers.tpl b/install/k8s/alpha/templates/_helpers.tpl new file mode 100644 index 0000000..d707fa4 --- /dev/null +++ b/install/k8s/alpha/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "wp-editor.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "wp-editor.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "wp-editor.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "wp-editor.labels" -}} +helm.sh/chart: {{ include "wp-editor.chart" . }} +{{ include "wp-editor.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "wp-editor.selectorLabels" -}} +app.kubernetes.io/name: {{ include "wp-editor.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "wp-editor.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "wp-editor.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/install/k8s/alpha/templates/configmap.yaml b/install/k8s/alpha/templates/configmap.yaml new file mode 100644 index 0000000..170a051 --- /dev/null +++ b/install/k8s/alpha/templates/configmap.yaml @@ -0,0 +1,22 @@ +{{- if not .Values.config.existingConfigMap }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "wp-editor.fullname" . }}-config + labels: + {{- include "wp-editor.labels" . | nindent 4 }} +data: + config.toml: |- + [log] + level = {{ .Values.config.log.level | quote }} + output = {{ .Values.config.log.output | quote }} + output_path = {{ .Values.config.log.outputPath | quote }} + + [web] + host = {{ .Values.config.web.host | quote }} + port = {{ .Values.config.web.port }} + + [repo] + wpl_rule_repo = "wp-rule/models/wpl" + oml_rule_repo = {{ .Values.config.repo.omlRuleRepo | quote }} +{{- end }} diff --git a/install/k8s/alpha/templates/deployment.yaml b/install/k8s/alpha/templates/deployment.yaml new file mode 100644 index 0000000..5e36095 --- /dev/null +++ b/install/k8s/alpha/templates/deployment.yaml @@ -0,0 +1,107 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "wp-editor.fullname" . }} + labels: + {{- include "wp-editor.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "wp-editor.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- if or (not .Values.config.existingConfigMap) (not .Values.rules.existingConfigMap) .Values.podAnnotations }} + annotations: + {{- if not .Values.config.existingConfigMap }} + checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} + {{- end }} + {{- if not .Values.rules.existingConfigMap }} + checksum/rules: {{ include (print $.Template.BasePath "/rules-configmap.yaml") . | sha256sum }} + {{- end }} + {{- with .Values.podAnnotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- end }} + labels: + {{- include "wp-editor.labels" . | nindent 8 }} + {{- with .Values.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "wp-editor.serviceAccountName" . }} + {{- with .Values.podSecurityContext }} + securityContext: + {{- toYaml . | nindent 8 }} + {{- end }} + containers: + - name: {{ .Chart.Name }} + {{- with .Values.securityContext }} + securityContext: + {{- toYaml . | nindent 12 }} + {{- end }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + workingDir: /app + ports: + - name: http + containerPort: {{ .Values.service.port }} + protocol: TCP + {{- with .Values.livenessProbe }} + livenessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.readinessProbe }} + readinessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.resources }} + resources: + {{- toYaml . | nindent 12 }} + {{- end }} + volumeMounts: + - name: config + mountPath: {{ .Values.config.mountPath }} + subPath: {{ .Values.config.subPath }} + readOnly: true + - name: rules + mountPath: {{ .Values.rules.mountPath }} + readOnly: true + {{- with .Values.volumeMounts }} + {{- toYaml . | nindent 12 }} + {{- end }} + volumes: + - name: config + configMap: + name: {{ default (printf "%s-config" (include "wp-editor.fullname" .)) .Values.config.existingConfigMap }} + - name: rules + configMap: + name: {{ default (printf "%s-rules" (include "wp-editor.fullname" .)) .Values.rules.existingConfigMap }} + {{- if not .Values.rules.existingConfigMap }} + items: + {{- range $path, $_ := .Files.Glob "wp-rule/models/**" }} + - key: {{ trimPrefix "wp-rule/models/" $path | replace "/" "__" }} + path: {{ trimPrefix "wp-rule/models/" $path }} + {{- end }} + {{- end }} + {{- with .Values.volumes }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/install/k8s/alpha/templates/hpa.yaml b/install/k8s/alpha/templates/hpa.yaml new file mode 100644 index 0000000..ec3566b --- /dev/null +++ b/install/k8s/alpha/templates/hpa.yaml @@ -0,0 +1,32 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "wp-editor.fullname" . }} + labels: + {{- include "wp-editor.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "wp-editor.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/install/k8s/alpha/templates/ingress.yaml b/install/k8s/alpha/templates/ingress.yaml new file mode 100644 index 0000000..0292e9d --- /dev/null +++ b/install/k8s/alpha/templates/ingress.yaml @@ -0,0 +1,43 @@ +{{- if .Values.ingress.enabled -}} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ include "wp-editor.fullname" . }} + labels: + {{- include "wp-editor.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- with .Values.ingress.className }} + ingressClassName: {{ . }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- with .pathType }} + pathType: {{ . }} + {{- end }} + backend: + service: + name: {{ include "wp-editor.fullname" $ }} + port: + number: {{ $.Values.service.port }} + {{- end }} + {{- end }} +{{- end }} diff --git a/install/k8s/alpha/templates/rules-configmap.yaml b/install/k8s/alpha/templates/rules-configmap.yaml new file mode 100644 index 0000000..4a4e7ac --- /dev/null +++ b/install/k8s/alpha/templates/rules-configmap.yaml @@ -0,0 +1,17 @@ +{{- if not .Values.rules.existingConfigMap }} +{{- $ruleFiles := .Files.Glob "wp-rule/models/**" }} +{{- if not $ruleFiles }} +{{- fail "no built-in rule files found under wp-rule/models; add rule files or set rules.existingConfigMap" }} +{{- end }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "wp-editor.fullname" . }}-rules + labels: + {{- include "wp-editor.labels" . | nindent 4 }} +data: +{{- range $path, $_ := $ruleFiles }} + {{ trimPrefix "wp-rule/models/" $path | replace "/" "__" }}: |- +{{ $.Files.Get $path | indent 4 }} +{{- end }} +{{- end }} diff --git a/install/k8s/alpha/templates/service.yaml b/install/k8s/alpha/templates/service.yaml new file mode 100644 index 0000000..990b50e --- /dev/null +++ b/install/k8s/alpha/templates/service.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "wp-editor.fullname" . }} + labels: + {{- include "wp-editor.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + {{- if and (eq .Values.service.type "NodePort") .Values.service.nodePort }} + nodePort: {{ .Values.service.nodePort }} + {{- end }} + selector: + {{- include "wp-editor.selectorLabels" . | nindent 4 }} diff --git a/install/k8s/alpha/templates/serviceaccount.yaml b/install/k8s/alpha/templates/serviceaccount.yaml new file mode 100644 index 0000000..0a20450 --- /dev/null +++ b/install/k8s/alpha/templates/serviceaccount.yaml @@ -0,0 +1,13 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "wp-editor.serviceAccountName" . }} + labels: + {{- include "wp-editor.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.serviceAccount.automount }} +{{- end }} diff --git a/install/k8s/alpha/templates/tests/test-connection.yaml b/install/k8s/alpha/templates/tests/test-connection.yaml new file mode 100644 index 0000000..74664fa --- /dev/null +++ b/install/k8s/alpha/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "wp-editor.fullname" . }}-test-connection" + labels: + {{- include "wp-editor.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "wp-editor.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/install/k8s/alpha/values.yaml b/install/k8s/alpha/values.yaml new file mode 100644 index 0000000..9037f09 --- /dev/null +++ b/install/k8s/alpha/values.yaml @@ -0,0 +1,141 @@ +# Default values for wp-editor. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +# This will set the replicaset count more information can be found here: https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/ +replicaCount: 1 + +# This sets the container image more information can be found here: https://kubernetes.io/docs/concepts/containers/images/ +image: + repository: ghcr.io/wp-labs/wp-editor + # This sets the pull policy for images. + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "1.19.3-alpha" + +# This is for the secrets for pulling an image from a private repository more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ +imagePullSecrets: [] +# This is to override the chart name. +nameOverride: "" +fullnameOverride: "" + +# This section builds out the service account more information can be found here: https://kubernetes.io/docs/concepts/security/service-accounts/ +serviceAccount: + # Specifies whether a service account should be created + create: true + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +# This is for setting Kubernetes Annotations to a Pod. +# For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ +podAnnotations: {} +# This is for setting Kubernetes Labels to a Pod. +# For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ +podLabels: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +# This is for setting up a service more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/ +service: + # This sets the service type more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + type: NodePort + nodePort: 30428 + # This sets the ports more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports + port: 8081 + +config: + mountPath: /app/config/config.toml + subPath: config.toml + log: + level: debug + output: Console + outputPath: ./logs/ + web: + host: 0.0.0.0 + port: 8081 + repo: + omlRuleRepo: wp-rule/models/oml + +rules: + existingConfigMap: "" + mountPath: /app/wp-rule/models + +# This block is for setting up the ingress for more information can be found here: https://kubernetes.io/docs/concepts/services-networking/ingress/ +ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +# This is to setup the liveness and readiness probes more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ +livenessProbe: + httpGet: + path: / + port: http +readinessProbe: + httpGet: + path: / + port: http + +# This section is for setting up autoscaling more information can be found here: https://kubernetes.io/docs/concepts/workloads/autoscaling/ +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +# Additional volumes on the output Deployment definition. +volumes: [] +# - name: foo +# secret: +# secretName: mysecret +# optional: false + +# Additional volumeMounts on the output Deployment definition. +volumeMounts: [] +# - name: foo +# mountPath: "/etc/foo" +# readOnly: true + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/install/k8s/alpha/wp-rule/models/oml/example.oml b/install/k8s/alpha/wp-rule/models/oml/example.oml new file mode 100644 index 0000000..e63f384 --- /dev/null +++ b/install/k8s/alpha/wp-rule/models/oml/example.oml @@ -0,0 +1,4 @@ +name : nginx +rule : /fb/web/* +--- +* : auto = take() ; diff --git a/install/k8s/alpha/wp-rule/models/oml/json-nginx.oml b/install/k8s/alpha/wp-rule/models/oml/json-nginx.oml new file mode 100644 index 0000000..318961f --- /dev/null +++ b/install/k8s/alpha/wp-rule/models/oml/json-nginx.oml @@ -0,0 +1,5 @@ +name : /fb/web +rule : /fb/web/* +--- + +* = take(); \ No newline at end of file diff --git a/install/k8s/alpha/wp-rule/models/oml/json.oml b/install/k8s/alpha/wp-rule/models/oml/json.oml new file mode 100644 index 0000000..70e5fa6 --- /dev/null +++ b/install/k8s/alpha/wp-rule/models/oml/json.oml @@ -0,0 +1,6 @@ +name : /lean/json +rule : /learn/json/* +--- +time_int = pipe take(date) | Time::to_ts_ms ; +ip_int = pipe take(src_ip) | ip4_to_int ; +* = take(); diff --git a/install/k8s/alpha/wp-rule/models/oml/learn/time.oml b/install/k8s/alpha/wp-rule/models/oml/learn/time.oml new file mode 100644 index 0000000..64cd3e1 --- /dev/null +++ b/install/k8s/alpha/wp-rule/models/oml/learn/time.oml @@ -0,0 +1,5 @@ +name : /learn/time +rule : /learn/time/* +--- + +* = take(); \ No newline at end of file diff --git a/install/k8s/alpha/wp-rule/models/wpl/fluent-bit/nginx/parse.wpl b/install/k8s/alpha/wp-rule/models/wpl/fluent-bit/nginx/parse.wpl new file mode 100644 index 0000000..0acb141 --- /dev/null +++ b/install/k8s/alpha/wp-rule/models/wpl/fluent-bit/nginx/parse.wpl @@ -0,0 +1,6 @@ +package /fb/web { + + rule nginx { + (json | take(log) | json_unescape() | (ip:sip,2*_,time:recv_time<[,]>,http/request",http/status,digit,chars",http/agent",_") ) + } +} diff --git a/install/k8s/alpha/wp-rule/models/wpl/fluent-bit/nginx/sample.dat b/install/k8s/alpha/wp-rule/models/wpl/fluent-bit/nginx/sample.dat new file mode 100644 index 0000000..5ba9b89 --- /dev/null +++ b/install/k8s/alpha/wp-rule/models/wpl/fluent-bit/nginx/sample.dat @@ -0,0 +1 @@ +{"date":1767006286.778936,"log":"180.57.30.149 - - [21/Jan/2025:01:40:02 +0800] \"GET /nginx-logo.png HTTP/1.1\" 500 368 \"http://207.131.38.110/\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36\" \"-\""} diff --git a/install/k8s/alpha/wp-rule/models/wpl/learn/json/parse.wpl b/install/k8s/alpha/wp-rule/models/wpl/learn/json/parse.wpl new file mode 100644 index 0000000..a308bd2 --- /dev/null +++ b/install/k8s/alpha/wp-rule/models/wpl/learn/json/parse.wpl @@ -0,0 +1,5 @@ +package /learn/json { + rule json_1 { + (json(time@date ,ip@ip:src_ip )) + } +} diff --git a/install/k8s/alpha/wp-rule/models/wpl/learn/json/sample.dat b/install/k8s/alpha/wp-rule/models/wpl/learn/json/sample.dat new file mode 100644 index 0000000..8f00df1 --- /dev/null +++ b/install/k8s/alpha/wp-rule/models/wpl/learn/json/sample.dat @@ -0,0 +1 @@ +{"date":"21/Jan/2025:01:40:02 +0800","ip":"180.57.30.149 "} diff --git a/install/k8s/alpha/wp-rule/models/wpl/learn/kvarr/parse.wpl b/install/k8s/alpha/wp-rule/models/wpl/learn/kvarr/parse.wpl new file mode 100644 index 0000000..25c2a14 --- /dev/null +++ b/install/k8s/alpha/wp-rule/models/wpl/learn/kvarr/parse.wpl @@ -0,0 +1,8 @@ +package /learn/kvarr { + rule kvarr_1 { + ( + kvarr(ip@d)<[,]>, + kvarr(_@*,ip@d:d2)<{,}> + ) + } +} diff --git a/install/k8s/alpha/wp-rule/models/wpl/learn/kvarr/sample.dat b/install/k8s/alpha/wp-rule/models/wpl/learn/kvarr/sample.dat new file mode 100644 index 0000000..9871464 --- /dev/null +++ b/install/k8s/alpha/wp-rule/models/wpl/learn/kvarr/sample.dat @@ -0,0 +1 @@ +[a="x",b="y",d = 127.0.0.1 ] { a="x" b="y" d = 127.0.0.1 } diff --git a/install/k8s/alpha/wp-rule/models/wpl/learn/time/parse.wpl b/install/k8s/alpha/wp-rule/models/wpl/learn/time/parse.wpl new file mode 100644 index 0000000..7eba230 --- /dev/null +++ b/install/k8s/alpha/wp-rule/models/wpl/learn/time/parse.wpl @@ -0,0 +1,5 @@ +package /learn/time { + rule time { + (time:timestamp<[,]>) + } +} diff --git a/install/k8s/alpha/wp-rule/models/wpl/learn/time/sample.dat b/install/k8s/alpha/wp-rule/models/wpl/learn/time/sample.dat new file mode 100644 index 0000000..0233357 --- /dev/null +++ b/install/k8s/alpha/wp-rule/models/wpl/learn/time/sample.dat @@ -0,0 +1 @@ +[21/Jan/2025:01:40:02 +0800] diff --git a/install/k8s/alpha/wp-rule/models/wpl/raw/aws/parse.wpl b/install/k8s/alpha/wp-rule/models/wpl/raw/aws/parse.wpl new file mode 100644 index 0000000..1fe16bc --- /dev/null +++ b/install/k8s/alpha/wp-rule/models/wpl/raw/aws/parse.wpl @@ -0,0 +1,36 @@ +package /raw/cloud { + rule aws { + ( + symbol(http), + chars:Timestamp, + chars:elb, + chars:client_host, + chars:target_host, + chars:request_processing_time, + chars:target_processing_time, + chars:response_processing_time, + chars:elb_status_code, + chars:target_status_code, + chars:received_bytes, + chars:sent_bytes, + chars:request | (chars:request_method, chars:request_url, chars:request_protocol), + chars:user_agent, + chars:ssl_cipher, + chars:ssl_protocol, + chars:target_group_arn, + chars:trace_id, + chars:domain_name, + chars:chosen_cert_arn, + chars:matched_rule_priority, + chars:request_creation_time, + chars:actions_executed, + chars:redirect_url, + chars:error_reason, + chars:target_port_list, + chars:target_status_code_list, + chars:classification, + chars:classification_reason, + chars:traceability_id, + ) + } + } diff --git a/install/k8s/alpha/wp-rule/models/wpl/raw/aws/sample.dat b/install/k8s/alpha/wp-rule/models/wpl/raw/aws/sample.dat new file mode 100644 index 0000000..dbcac27 --- /dev/null +++ b/install/k8s/alpha/wp-rule/models/wpl/raw/aws/sample.dat @@ -0,0 +1 @@ +http 2018-11-30T22:23:00.186641Z app/my-lb 192.168.1.10:2000 10.0.0.15:8080 0.01 0.02 0.01 200 200 100 200 "POST https://api.example.com/u?p=1&sid=2&t=3 HTTP/1.1" "Mozilla/5.0 (Win) Chrome/90" "ECDHE" "TLSv1.3" arn:aws:elb:us:123:tg "Root=1-test" "api.example.com" "arn:aws:acm:us:123:cert/short" 1 2018-11-30T22:22:48.364000Z "forward" "https://auth.example.com/r" "err" "10.0.0.1:80" "200" "cls" "rsn" TID_x1 diff --git a/install/k8s/alpha/wp-rule/models/wpl/raw/nginx/parse.wpl b/install/k8s/alpha/wp-rule/models/wpl/raw/nginx/parse.wpl new file mode 100644 index 0000000..55dfac0 --- /dev/null +++ b/install/k8s/alpha/wp-rule/models/wpl/raw/nginx/parse.wpl @@ -0,0 +1,5 @@ +package /raw/web { + rule nginx { + (ip:sip,_^2,chars:timestamp<[,]>,http/request",chars:status,chars:size,chars:referer",http/agent",_") + } +} diff --git a/install/k8s/alpha/wp-rule/models/wpl/raw/nginx/sample.dat b/install/k8s/alpha/wp-rule/models/wpl/raw/nginx/sample.dat new file mode 100644 index 0000000..7267276 --- /dev/null +++ b/install/k8s/alpha/wp-rule/models/wpl/raw/nginx/sample.dat @@ -0,0 +1 @@ +180.57.30.148 - - [21/Jan/2025:01:40:02 +0800] "GET /nginx-logo.png HTTP/1.1" 500 368 "http://207.131.38.110/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" "-" diff --git a/install/k8s/alpha/wp-rule/models/wpl/raw/sysmon/parse.wpl b/install/k8s/alpha/wp-rule/models/wpl/raw/sysmon/parse.wpl new file mode 100644 index 0000000..cd50cc4 --- /dev/null +++ b/install/k8s/alpha/wp-rule/models/wpl/raw/sysmon/parse.wpl @@ -0,0 +1,39 @@ +package /raw/sys { + rule sysmon { + (_:pri<<,>>,3*_,_),(_\S\y\s\m\o\n\:, + json( + @Id:id, + @Description/ProcessId:process_id, + @Level:severity, + @Opcode:Opcode, + @ProcessId:ProcessId, + @Task:Task, + @ThreadId:ThreadId + @Version:Version, + @Description/CommandLine:cmd_line, + @Description/ParentCommandLine:parent_cmd_line, + @Description/LogonGuid:logon_guid, + @Description/LogonId:logon_id, + @Description/Image:process_path, + @Description/ParentImage:parent_process_path, + @Description/ParentProcessGuid:parent_process_guid, + @Description/ParentProcessId:parent_process_id, + @Description/ParentUser:parent_process_user, + @Description/ProcessGuid:process_guid, + @Description/Company:product_company, + @Description/Description:process_desc, + @Description/FileVersion:file_version, + chars@Description/Hashes:Hashes + @Description/IntegrityLevel:integrity_level, + @Description/OriginalFileName:origin_file_name, + @Description/Product:product_name, + @Description/RuleName:rule_name, + @Description/User:user_name, + chars@Description/UtcTime:occur_time, + @Description/TerminalSessionId:terminal_session_id, + @Description/CurrentDirectory:current_dir, + @Keywords:keywords + ) + ) + } + } diff --git a/install/k8s/alpha/wp-rule/models/wpl/raw/sysmon/sample.dat b/install/k8s/alpha/wp-rule/models/wpl/raw/sysmon/sample.dat new file mode 100644 index 0000000..5865e04 --- /dev/null +++ b/install/k8s/alpha/wp-rule/models/wpl/raw/sysmon/sample.dat @@ -0,0 +1 @@ +<14>Apr 09 18:37:27 10.77.32.19 Microsoft-Windows-Sysmon:{"Id":1,"Version":1,"Level":4,"Task":1,"Opcode":0,"Keywords":0,"RecordId":null,"ProviderName":"P","ProviderId":"PID","LogName":"L","ProcessId":1,"ThreadId":1,"MachineName":"A","TimeCreated":"2025-04-10T14:17:28.693228+08:00","ActivityId":null,"RelatedActivityId":null,"Qualifiers":null,"LevelDisplayName":"信息","OpcodeDisplayName":"信息","TaskDisplayName":"Process Create","Description":{"RuleName":"R","UtcTime":"2025-04-10 06:17:28.503","ProcessGuid":"{G}","ProcessId":"1","Image":"C:\\Windows\\a.exe","FileVersion":"1","Description":"D","Product":"P","Company":"C","OriginalFileName":"a.exe","CommandLine":"a.exe","CurrentDirectory":"C:\\","User":"U","LogonGuid":"{LG}","LogonId":"1","TerminalSessionId":"1","IntegrityLevel":"M","Hashes":"H","ParentProcessGuid":"{PG}","ParentProcessId":"1","ParentImage":"C:\\Windows\\b.exe","ParentCommandLine":"b.exe","ParentUser":"U"},"DescriptionRawMessage":"Process Create\r\nRuleName: R"} diff --git a/src/error.rs b/src/error.rs index c898b3b..f52dfe8 100644 --- a/src/error.rs +++ b/src/error.rs @@ -1,196 +1,287 @@ use actix_web::{HttpResponse, ResponseError}; +use orion_error::{OrionError, StructError, UnifiedReason, reason::ErrorIdentityProvider}; use serde::Serialize; -use std::fmt::Display; -use wp_error::parse_error::OMLCodeError; +use std::fmt; +use wp_error::parse_error::OMLCodeReason; use wpl::WparseReason; +use wpl::parser::error::WplCodeReason; -#[derive(Debug, Serialize)] -pub struct ErrorBody { - pub success: bool, - pub error: ErrorDetail, -} +// ── Domain Reason ────────────────────────────────────────────────────────── -#[derive(Debug, Serialize)] -pub struct ErrorDetail { - pub code: &'static str, - pub message: String, - #[serde(skip_serializing_if = "Option::is_none")] - pub details: Option, -} - -#[derive(Debug, thiserror::Error)] -pub enum AppError { - #[error("连接 ID {connection_id} 不存在或已删除")] +#[derive(Debug, Clone, PartialEq, OrionError)] +pub enum AppReason { + #[orion_error( + identity = "biz.invalid_connection", + message = "连接 ID 不存在或已删除" + )] InvalidConnection { connection_id: i32 }, - #[error("该资源不属于指定连接")] + #[orion_error(identity = "biz.connection_mismatch", message = "该资源不属于指定连接")] ConnectionMismatch { resource_id: i32, resource_connection_id: i32, requested_connection_id: i32, }, - #[error("资源不存在: {0}")] + #[orion_error(identity = "biz.not_found", message = "资源不存在")] NotFound(String), - #[error("参数验证失败: {0}")] + #[orion_error(identity = "biz.validation_error", message = "参数验证失败")] Validation(String), - #[error("服务器内部错误: {0}")] + #[orion_error(identity = "sys.internal_error", message = "服务器内部错误")] Internal(String), - // Git/Gitea 相关错误 - #[error("Git 操作失败: {0}")] + #[orion_error(identity = "sys.git_error", message = "Git 操作失败")] Git(String), - // WPL 解析相关错误 - #[error("WPL 解析失败: {0}")] + #[orion_error(identity = "biz.wpl_parse_error", message = "WPL 解析失败")] WplParse(String), - #[error("Wpl 解析失败: {0}")] - WplParseOrion(#[from] orion_error::StructError), - - // OML 转换相关错误 - #[error("OML 转换失败: {0}")] + #[orion_error(identity = "biz.oml_transform_error", message = "OML 转换失败")] OmlTransform(String), - //OmlTransform(anyhow::Error), - #[error("OML 解析失败: {0}")] - OmlParseOrion(#[from] OMLCodeError), - // 调试相关错误 - #[error("未找到解析结果,请先执行日志解析")] + #[orion_error(identity = "biz.no_parse_result", message = "未找到解析结果")] NoParseResult, - // 连接测试相关错误 - #[error("端口 {addr} 不可达: {reason}")] + #[orion_error(identity = "sys.port_unreachable", message = "端口不可达")] PortUnreachable { addr: String, reason: String }, - #[error("Git Token 无效: {reason}")] - InvalidGitToken { reason: String }, + #[orion_error(identity = "biz.invalid_git_token", message = "Git Token 无效")] + InvalidGitToken(String), - #[error("Base64 解码失败: {0}")] + #[orion_error(identity = "biz.invalid_base64", message = "Base64 解码失败")] InvalidBase64(String), + + #[orion_error(transparent)] + Uvs(UnifiedReason), +} + +// ── From for AppReason ───────────────────────────────────── + +impl From for AppReason { + fn from(r: WplCodeReason) -> Self { + match r { + WplCodeReason::Plugin + | WplCodeReason::Syntax + | WplCodeReason::Empty + | WplCodeReason::UnSupport => AppReason::WplParse(String::new()), + WplCodeReason::Uvs(uvs) => AppReason::Uvs(uvs), + } + } } +impl From for AppReason { + fn from(r: WparseReason) -> Self { + match r { + WparseReason::Plugin(s) => AppReason::WplParse(s), + WparseReason::NotMatch => AppReason::WplParse("规则不匹配".into()), + WparseReason::LineProc(s) => AppReason::WplParse(s), + WparseReason::Uvs(uvs) => AppReason::Uvs(uvs), + } + } +} + +impl From for AppReason { + fn from(r: OMLCodeReason) -> Self { + match r { + OMLCodeReason::Syntax(s) => AppReason::OmlTransform(s), + OMLCodeReason::NotFound(s) => AppReason::NotFound(s), + OMLCodeReason::Uvs(uvs) => AppReason::Uvs(uvs), + } + } +} + +// ── AppError newtype ─────────────────────────────────────────────────────── + +#[derive(Debug)] +pub struct AppError(StructError); + impl AppError { pub fn invalid_connection(connection_id: i32) -> Self { - AppError::InvalidConnection { connection_id } + AppError(StructError::from(AppReason::InvalidConnection { + connection_id, + })) } - pub fn internal(e: E) -> Self { - AppError::Internal(e.to_string()) + pub fn internal(e: E) -> Self { + AppError( + StructError::builder(AppReason::Internal(e.to_string())) + .source(e) + .finish(), + ) } - pub fn git(e: E) -> Self { - AppError::Git(e.to_string()) + pub fn internal_msg(msg: impl Into) -> Self { + let msg = msg.into(); + AppError(StructError::from(AppReason::Internal(msg.clone())).with_detail(msg)) } - pub fn wpl_parse(e: E) -> Self - where - E: Display, - { - AppError::WplParse(e.to_string()) + pub fn git(msg: impl Into) -> Self { + let msg = msg.into(); + AppError(StructError::from(AppReason::Git(msg.clone())).with_detail(msg)) + } + + pub fn wpl_parse_msg(msg: impl Into) -> Self { + let msg = msg.into(); + AppError(StructError::from(AppReason::WplParse(msg.clone())).with_detail(msg)) } pub fn wpl_best_error(depth: usize, hint: impl Into) -> Self { let hint_str = hint.into(); let err_msg = format!("解析深度: {depth}\n{hint_str}"); - AppError::WplParse(err_msg) - } - - pub fn wpl_parse_msg(msg: impl Into) -> Self { - AppError::WplParse(msg.into()) + AppError(StructError::from(AppReason::WplParse(err_msg.clone())).with_detail(err_msg)) } - pub fn oml_transform(e: E) -> Self - where - E: std::error::Error + Send + Sync + Display + 'static, - { - AppError::OmlTransform(e.to_string()) + pub fn oml_transform(e: E) -> Self { + AppError( + StructError::builder(AppReason::OmlTransform(e.to_string())) + .source(e) + .finish(), + ) } pub fn oml_transform_msg(msg: impl Into) -> Self { - AppError::OmlTransform(msg.into()) + let msg = msg.into(); + AppError(StructError::from(AppReason::OmlTransform(msg.clone())).with_detail(msg)) } - /// 创建 NotFound 错误 + pub fn not_found(msg: impl Into) -> Self { - AppError::NotFound(msg.into()) + let msg = msg.into(); + AppError(StructError::from(AppReason::NotFound(msg.clone())).with_detail(msg)) } - /// 创建 Validation 错误 pub fn validation(msg: impl Into) -> Self { - AppError::Validation(msg.into()) + let msg = msg.into(); + AppError(StructError::from(AppReason::Validation(msg.clone())).with_detail(msg)) } - /// 创建 PortUnreachable 错误 - pub fn port_unreachable(addr: impl Into, reason: impl Display) -> Self { - AppError::PortUnreachable { + pub fn port_unreachable(addr: impl Into, reason: impl fmt::Display) -> Self { + AppError(StructError::from(AppReason::PortUnreachable { addr: addr.into(), reason: reason.to_string(), - } + })) } - /// 创建 InvalidGitToken 错误 pub fn invalid_git_token(reason: impl Into) -> Self { - AppError::InvalidGitToken { - reason: reason.into(), - } + AppError(StructError::from(AppReason::InvalidGitToken(reason.into()))) + } + + pub fn reason(&self) -> &AppReason { + self.0.reason() } - fn code(&self) -> &'static str { - match self { - AppError::InvalidConnection { .. } => "INVALID_CONNECTION", - AppError::ConnectionMismatch { .. } => "CONNECTION_MISMATCH", - AppError::NotFound(_) => "NOT_FOUND", - AppError::Validation(_) => "VALIDATION_ERROR", - AppError::Internal(_) => "INTERNAL_ERROR", - AppError::Git(_) => "GIT_ERROR", - AppError::WplParse(_) => "WPL_PARSE_ERROR", - AppError::OmlTransform(_) => "OML_TRANSFORM_ERROR", - AppError::NoParseResult => "NO_PARSE_RESULT", - AppError::PortUnreachable { .. } => "PORT_UNREACHABLE", - AppError::InvalidGitToken { .. } => "INVALID_GIT_TOKEN", - AppError::InvalidBase64(_) => "INVALID_BASE64", - AppError::WplParseOrion(_) => "WPL_PARSE_ORION_ERROR", - AppError::OmlParseOrion(_) => "OML_PARSE_ORION_ERROR", + pub fn stable_code(&self) -> &'static str { + self.0.stable_code() + } + + pub fn display_chain(&self) -> String { + self.0.display_chain() + } +} + +impl fmt::Display for AppError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + fmt::Display::fmt(&self.0, f) + } +} + +// ── From impls ───────────────────────────────────────────────────────────── + +impl From for AppError { + fn from(reason: AppReason) -> Self { + let detail = match &reason { + AppReason::NotFound(s) + | AppReason::Validation(s) + | AppReason::Internal(s) + | AppReason::Git(s) + | AppReason::WplParse(s) + | AppReason::OmlTransform(s) + | AppReason::InvalidGitToken(s) + | AppReason::InvalidBase64(s) => s.clone(), + _ => String::new(), + }; + let mut err = StructError::from(reason); + if !detail.is_empty() { + err = err.with_detail(detail); } + AppError(err) } } +impl From> for AppError { + fn from(e: StructError) -> Self { + let reason: AppReason = e.reason().clone().into(); + AppError(StructError::builder(reason).source(e).finish()) + } +} + +impl From> for AppError { + fn from(e: StructError) -> Self { + let reason: AppReason = e.reason().clone().into(); + AppError(StructError::builder(reason).source(e).finish()) + } +} + +impl From> for AppError { + fn from(e: StructError) -> Self { + let reason: AppReason = e.reason().clone().into(); + AppError(StructError::builder(reason).source(e).finish()) + } +} + +// ── ResponseError ────────────────────────────────────────────────────────── + +#[derive(Debug, Serialize)] +pub struct ErrorBody { + pub success: bool, + pub error: ErrorDetail, +} + +#[derive(Debug, Serialize)] +pub struct ErrorDetail { + pub code: &'static str, + pub message: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub details: Option, +} + impl ResponseError for AppError { fn error_response(&self) -> HttpResponse { use actix_web::http::StatusCode; - let status = match self { - // 400 Bad Request - 客户端输入错误 - AppError::InvalidConnection { .. } - | AppError::Validation(_) - | AppError::WplParse(_) - | AppError::OmlTransform(_) - | AppError::NoParseResult - | AppError::PortUnreachable { .. } - | AppError::OmlParseOrion(_) - | AppError::WplParseOrion(_) - | AppError::InvalidGitToken { .. } => StatusCode::BAD_REQUEST, - - // 403 Forbidden - 权限/关联错误 - AppError::ConnectionMismatch { .. } => StatusCode::FORBIDDEN, - - // 404 Not Found - 资源不存在 - AppError::NotFound(_) => StatusCode::NOT_FOUND, - - // 500 Internal Server Error - 服务器内部错误 - AppError::Internal(_) | AppError::Git(_) => StatusCode::INTERNAL_SERVER_ERROR, - - // 500 Bad Request - Base64 解码错误 - AppError::InvalidBase64(_) => StatusCode::INTERNAL_SERVER_ERROR, + let reason = self.reason(); + + let status = match reason { + AppReason::InvalidConnection { .. } + | AppReason::Validation(_) + | AppReason::WplParse(_) + | AppReason::OmlTransform(_) + | AppReason::NoParseResult + | AppReason::PortUnreachable { .. } + | AppReason::InvalidGitToken(_) => StatusCode::BAD_REQUEST, + + AppReason::ConnectionMismatch { .. } => StatusCode::FORBIDDEN, + + AppReason::NotFound(_) => StatusCode::NOT_FOUND, + + AppReason::Internal(_) | AppReason::Git(_) | AppReason::InvalidBase64(_) => { + StatusCode::INTERNAL_SERVER_ERROR + } + + AppReason::Uvs(uvs) => match uvs { + UnifiedReason::NotFoundError => StatusCode::NOT_FOUND, + UnifiedReason::ValidationError => StatusCode::BAD_REQUEST, + UnifiedReason::PermissionError => StatusCode::FORBIDDEN, + _ => StatusCode::INTERNAL_SERVER_ERROR, + }, }; - let details = match self { - AppError::InvalidConnection { connection_id } => { + let details = match reason { + AppReason::InvalidConnection { connection_id } => { Some(serde_json::json!({ "connection_id": connection_id })) } - AppError::ConnectionMismatch { + AppReason::ConnectionMismatch { resource_id, resource_connection_id, requested_connection_id, @@ -199,18 +290,18 @@ impl ResponseError for AppError { "resource_connection_id": resource_connection_id, "requested_connection_id": requested_connection_id, })), - AppError::PortUnreachable { addr, reason } => { - Some(serde_json::json!({ "addr": addr, "reason": reason })) + AppReason::PortUnreachable { addr, reason: msg } => { + Some(serde_json::json!({ "addr": addr, "reason": msg })) } - AppError::InvalidGitToken { reason } => Some(serde_json::json!({ "reason": reason })), + AppReason::InvalidGitToken(reason) => Some(serde_json::json!({ "reason": reason })), _ => None, }; let body = ErrorBody { success: false, error: ErrorDetail { - code: self.code(), - message: self.to_string(), + code: self.stable_code(), + message: self.display_chain(), details, }, }; @@ -219,7 +310,8 @@ impl ResponseError for AppError { } } -/// 通用数据库错误,供所有仓储层复用 +// ── DbError ──────────────────────────────────────────────────────────────── + #[derive(Debug, thiserror::Error)] pub enum DbError { #[error("{entity} 不存在")] @@ -237,12 +329,11 @@ impl DbError { } } -/// 自动转换 DbError 为 AppError impl From for AppError { fn from(e: DbError) -> Self { match e { DbError::NotFound { entity } => { - AppError::NotFound(format!("{} 不存在或已删除", entity)) + AppError::not_found(format!("{} 不存在或已删除", entity)) } DbError::Db(db_err) => AppError::internal(db_err), } diff --git a/src/server/examples.rs b/src/server/examples.rs index c495322..6661490 100644 --- a/src/server/examples.rs +++ b/src/server/examples.rs @@ -41,9 +41,9 @@ pub fn wpl_examples( } example.sample_data = sample_data.clone(); - let code = WplCode::build(wpl_path.clone(), &contents)?; + let code = WplCode::build(wpl_path.clone(), &contents).map_err(|e| e.into_std())?; - let pkg = code.parse_pkg()?; + let pkg = code.parse_pkg().map_err(|e| e.into_std())?; let pkg_name_raw = pkg.name().to_string(); let mut pkg_name = pkg_name_raw.trim(); pkg_name = pkg_name.strip_suffix('/').unwrap_or(pkg_name); @@ -95,7 +95,9 @@ pub async fn oml_examples( // 去除注释 contents = remove_annotations(&contents); let mut parse_input = contents.as_str(); - let code = oml_parse(&mut parse_input, "").await?; + let code = oml_parse(&mut parse_input, "") + .await + .map_err(|e| e.into_std())?; results.push((code.rules().clone(), oml_fmt)); return Ok(results); } diff --git a/src/utils/knowledge.rs b/src/utils/knowledge.rs index 75efddd..f5487b0 100644 --- a/src/utils/knowledge.rs +++ b/src/utils/knowledge.rs @@ -50,7 +50,7 @@ pub fn sql_knowdb_list(_connection_id: i32) -> AnyResult> { pub fn load_knowledge(project_dir: &str) -> AnyResult<()> { let root = PathBuf::from(&project_dir).canonicalize().map_err(|e| { error!("无法解析项目目录路径: {}", e); - AppError::internal(e) + AppError::internal(e).into_std() })?; let knowdb_path = root.join("models/knowledge/knowdb.toml"); @@ -66,7 +66,7 @@ pub fn load_knowledge(project_dir: &str) -> AnyResult<()> { ); if let Err(e) = facade::init_thread_cloned_from_knowdb(&root, &knowdb_path, &auth_uri) { error!("初始化知识库失败:{:?}", e); - return Err(AppError::internal(e).into()); + return Err(AppError::internal(e).into_std().into()); } Ok(()) } diff --git a/src/utils/oml_formatter.rs b/src/utils/oml_formatter.rs index 63a13d7..a1dce2d 100644 --- a/src/utils/oml_formatter.rs +++ b/src/utils/oml_formatter.rs @@ -21,7 +21,6 @@ impl OmlFormatter { let tokens = tokenize(content)?; Ok(format_tokens(&tokens, self.indent)) } - /// 兼容旧行为:格式化失败时回退为原内容,保证调用方不崩溃。 pub fn format_content_or_original(&self, content: &str) -> String { self.format_content(content) @@ -58,6 +57,7 @@ enum TokenKind { Word, StringLiteral, Comment, + BlankLine, Symbol(Symbol), } @@ -73,14 +73,24 @@ fn tokenize(input: &str) -> Result, OmlFormatError> { let mut tokens = Vec::new(); let input_len = input.len(); + let mut consecutive_newlines = 0u32; while let Some((idx, ch)) = iter.next() { if ch.is_whitespace() { if ch == '\n' { line = line.saturating_add(1); + consecutive_newlines += 1; } continue; } + if consecutive_newlines >= 2 { + tokens.push(Token { + kind: TokenKind::BlankLine, + text: String::new(), + }); + } + consecutive_newlines = 0; + if ch == '#' { let start = idx; let mut end = input_len; @@ -273,7 +283,6 @@ fn format_tokens(tokens: &[Token], indent_spaces: usize) -> String { let mut paren_level = 0usize; let mut bracket_level = 0usize; let mut brace_level = 0usize; - let mut i = 0usize; while i < tokens.len() { let token = &tokens[i]; @@ -312,6 +321,10 @@ fn format_tokens(tokens: &[Token], indent_spaces: usize) -> String { i += 1; continue; } + TokenKind::BlankLine => { + i += 1; + continue; + } _ => {} } @@ -340,8 +353,7 @@ fn format_tokens(tokens: &[Token], indent_spaces: usize) -> String { next.map(|t| &t.kind), Some(TokenKind::Symbol(Symbol::Semicolon)) ) { - write_raw(&mut out, &mut line_empty, " "); - write_raw(&mut out, &mut line_empty, ";"); + write_raw(&mut out, &mut line_empty, " ;"); newline(&mut out, &mut line_empty); i += 1; } else { @@ -349,10 +361,7 @@ fn format_tokens(tokens: &[Token], indent_spaces: usize) -> String { } } TokenKind::Symbol(Symbol::Semicolon) => { - if !out.ends_with(' ') && !out.ends_with('\n') { - write_raw(&mut out, &mut line_empty, " "); - } - write_raw(&mut out, &mut line_empty, ";"); + write_raw(&mut out, &mut line_empty, " ;"); newline(&mut out, &mut line_empty); } TokenKind::Symbol(Symbol::Comma) => { @@ -434,7 +443,7 @@ fn format_tokens(tokens: &[Token], indent_spaces: usize) -> String { &token.text, ); } - TokenKind::Symbol(Symbol::Separator) | TokenKind::Comment => {} + TokenKind::Symbol(Symbol::Separator) | TokenKind::Comment | TokenKind::BlankLine => {} } i += 1; diff --git a/src/utils/wpl.rs b/src/utils/wpl.rs index 831836d..570fbf2 100644 --- a/src/utils/wpl.rs +++ b/src/utils/wpl.rs @@ -1,7 +1,7 @@ use std::path::PathBuf; use crate::error::AppError; -use orion_error::UvsReason; +use orion_error::UnifiedReason; use serde::{Deserialize, Serialize}; use wp_engine::sources::event_id::next_event_id; use wp_model_core::model::{DataField, DataRecord, DataType}; @@ -38,8 +38,8 @@ pub fn record_to_fields(record: &DataRecord) -> Vec { // 内部/其他模块使用:返回原始 DataRecord,供 OML 等后续处理 pub fn warp_check_record(wpl: &str, data: &str) -> Result { // 保留解析错误中的换行与指示符,避免转义 - let code = WplCode::build(PathBuf::from(""), wpl).map_err(AppError::wpl_parse)?; - let wpl_package = code.parse_pkg().map_err(AppError::wpl_parse)?; + let code = WplCode::build(PathBuf::from(""), wpl)?; + let wpl_package = code.parse_pkg()?; // let wpl_package = parse_wpl_package(wpl)?; let rule_items = extract_rule_items(&wpl_package); @@ -54,7 +54,7 @@ fn try_parse_with_rules(rule_items: Vec, data: &str) -> Result { @@ -71,8 +71,8 @@ fn try_parse_with_rules(rule_items: Vec, data: &str) -> Result { // 记录解析深度最高的错误 best_wpl = index + 1; - if matches!(e.reason(), WparseReason::Uvs(UvsReason::DataError)) { - // 新版 UvsReason::DataError 不再携带位置参数,保底记为 1 表示已进入规则解析。 + if matches!(e.reason(), WparseReason::Uvs(UnifiedReason::DataError)) { + // UnifiedReason::DataError 不再携带位置参数,保底记为 1 表示已进入规则解析。 if max_depth == 0 { max_depth = 1; } diff --git a/tests/error_test.rs b/tests/error_test.rs index 40c49b7..83fb0ba 100644 --- a/tests/error_test.rs +++ b/tests/error_test.rs @@ -1,76 +1,92 @@ use actix_web::{ResponseError, http::StatusCode}; use serde_json::Value; -use wp_editor::error::AppError; +use wp_editor::error::{AppError, AppReason, DbError}; -/// 测试AppError的各种创建方法 -/// 验证所有错误类型都能正确创建,包括参数传递和类型匹配 #[actix_web::test] async fn test_app_error_creation() { - // 测试各种错误创建方法 let conn_err = AppError::invalid_connection(123); - assert!(matches!( - conn_err, - AppError::InvalidConnection { connection_id: 123 } - )); + assert_eq!( + conn_err.reason(), + &AppReason::InvalidConnection { connection_id: 123 } + ); - let internal_err = AppError::internal("test error"); - assert!(matches!(internal_err, AppError::Internal(_))); + let internal_err = AppError::internal_msg("test error"); + assert_eq!( + internal_err.reason(), + &AppReason::Internal("test error".into()) + ); let git_err = AppError::git("git failed"); - assert!(matches!(git_err, AppError::Git(_))); + assert_eq!(git_err.reason(), &AppReason::Git("git failed".into())); - let wpl_err = AppError::wpl_parse("parse failed"); - assert!(matches!(wpl_err, AppError::WplParse(_))); + let wpl_msg_err = AppError::wpl_parse_msg("parse failed"); + assert_eq!( + wpl_msg_err.reason(), + &AppReason::WplParse("parse failed".into()) + ); let oml_err = AppError::oml_transform_msg("transform failed"); - assert!(matches!(oml_err, AppError::OmlTransform(_))); + assert_eq!( + oml_err.reason(), + &AppReason::OmlTransform("transform failed".into()) + ); let not_found_err = AppError::not_found("resource not found"); - assert!(matches!(not_found_err, AppError::NotFound(_))); + assert_eq!( + not_found_err.reason(), + &AppReason::NotFound("resource not found".into()) + ); let validation_err = AppError::validation("invalid input"); - assert!(matches!(validation_err, AppError::Validation(_))); + assert_eq!( + validation_err.reason(), + &AppReason::Validation("invalid input".into()) + ); let port_err = AppError::port_unreachable("localhost:8080", "connection refused"); - assert!(matches!(port_err, AppError::PortUnreachable { .. })); + assert_eq!( + port_err.reason(), + &AppReason::PortUnreachable { + addr: "localhost:8080".into(), + reason: "connection refused".into() + } + ); let token_err = AppError::invalid_git_token("invalid token"); - assert!(matches!(token_err, AppError::InvalidGitToken { .. })); + assert_eq!( + token_err.reason(), + &AppReason::InvalidGitToken("invalid token".into()) + ); } -/// 测试AppError的Display trait实现 -/// 验证错误消息能够正确格式化和显示,包含必要的上下文信息 #[actix_web::test] async fn test_app_error_display() { let conn_err = AppError::invalid_connection(123); let display_str = format!("{}", conn_err); - assert!(display_str.contains("123")); - assert!(display_str.contains("连接 ID")); + assert!(display_str.contains("连接 ID 不存在或已删除")); let validation_err = AppError::validation("test validation"); let display_str = format!("{}", validation_err); + assert!(display_str.contains("参数验证失败")); assert!(display_str.contains("test validation")); } -/// 测试AppError的HTTP响应错误转换 -/// 验证错误能够正确转换为HTTP响应,包括状态码和响应体格式 #[actix_web::test] async fn test_app_error_response_error() { - // 测试不同错误的HTTP响应 let test_cases = vec![ (AppError::invalid_connection(123), StatusCode::BAD_REQUEST), (AppError::validation("test"), StatusCode::BAD_REQUEST), (AppError::not_found("test"), StatusCode::NOT_FOUND), ( - AppError::internal("test"), + AppError::internal_msg("test"), StatusCode::INTERNAL_SERVER_ERROR, ), ( - AppError::ConnectionMismatch { + AppError::from(AppReason::ConnectionMismatch { resource_id: 1, resource_connection_id: 2, requested_connection_id: 3, - }, + }), StatusCode::FORBIDDEN, ), ]; @@ -79,7 +95,6 @@ async fn test_app_error_response_error() { let response = error.error_response(); assert_eq!(response.status(), expected_status); - // 验证响应体结构 let body = actix_web::body::to_bytes(response.into_body()) .await .unwrap(); @@ -91,58 +106,57 @@ async fn test_app_error_response_error() { } } -/// 测试DbError的完整功能 -/// 验证DbError的创建、显示和到AppError的转换功能 #[actix_web::test] async fn test_db_error_complete() { - use wp_editor::error::DbError; - - // 测试DbError创建和显示 let not_found_err = DbError::not_found("user"); - assert!(matches!( - not_found_err, - DbError::NotFound { entity: "user" } - )); - let display_str = format!("{}", not_found_err); assert!(display_str.contains("user")); assert!(display_str.contains("不存在")); - // 测试DbError到AppError的转换 let db_not_found = DbError::not_found("connection"); let app_error: AppError = db_not_found.into(); - - assert!(matches!(app_error, AppError::NotFound(_))); - let display_str = format!("{}", app_error); - assert!(display_str.contains("connection")); + assert_eq!( + app_error.reason(), + &AppReason::NotFound("connection 不存在或已删除".into()) + ); + assert_eq!(app_error.stable_code(), "biz.not_found"); } -/// 测试错误代码映射的完整性 -/// 验证所有错误类型都有正确的错误代码映射,用于API响应 #[actix_web::test] async fn test_error_codes() { - // 测试错误代码映射 - let test_cases = vec![ - (AppError::invalid_connection(1), "INVALID_CONNECTION"), - (AppError::not_found("test"), "NOT_FOUND"), - (AppError::validation("test"), "VALIDATION_ERROR"), - (AppError::internal("test"), "INTERNAL_ERROR"), - (AppError::git("test"), "GIT_ERROR"), - (AppError::wpl_parse("test"), "WPL_PARSE_ERROR"), - (AppError::oml_transform_msg("test"), "OML_TRANSFORM_ERROR"), - (AppError::NoParseResult, "NO_PARSE_RESULT"), + let test_cases: Vec<(AppError, &str)> = vec![ + (AppError::invalid_connection(1), "biz.invalid_connection"), + (AppError::not_found("test"), "biz.not_found"), + (AppError::validation("test"), "biz.validation_error"), + (AppError::internal_msg("test"), "sys.internal_error"), + (AppError::git("test"), "sys.git_error"), + (AppError::wpl_parse_msg("test"), "biz.wpl_parse_error"), + ( + AppError::oml_transform_msg("test"), + "biz.oml_transform_error", + ), + ( + AppError::from(AppReason::NoParseResult), + "biz.no_parse_result", + ), ( AppError::port_unreachable("addr", "reason"), - "PORT_UNREACHABLE", + "sys.port_unreachable", ), - (AppError::invalid_git_token("reason"), "INVALID_GIT_TOKEN"), ( - AppError::InvalidBase64("test".to_string()), - "INVALID_BASE64", + AppError::invalid_git_token("reason"), + "biz.invalid_git_token", ), ]; for (error, expected_code) in test_cases { + assert_eq!( + error.stable_code(), + expected_code, + "expected code '{expected_code}' but got '{}'", + error.stable_code() + ); + let response = error.error_response(); let body = actix_web::body::to_bytes(response.into_body()) .await diff --git a/version.txt b/version.txt index 71bd5d9..ec58196 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.16.0 \ No newline at end of file +1.19.9 \ No newline at end of file diff --git a/web/dist/assets/images/favicon.png b/web/dist/assets/images/favicon.png index e37599b..364839b 100644 Binary files a/web/dist/assets/images/favicon.png and b/web/dist/assets/images/favicon.png differ diff --git a/web/dist/assets/images/home.png b/web/dist/assets/images/home.png index 69f4cf8..8c68bc9 100644 Binary files a/web/dist/assets/images/home.png and b/web/dist/assets/images/home.png differ diff --git a/web/dist/assets/images/index.png b/web/dist/assets/images/index.png index ba21c08..163d5a0 100644 Binary files a/web/dist/assets/images/index.png and b/web/dist/assets/images/index.png differ diff --git a/web/public/assets/images/favicon.png b/web/public/assets/images/favicon.png index e37599b..364839b 100644 Binary files a/web/public/assets/images/favicon.png and b/web/public/assets/images/favicon.png differ diff --git a/web/public/assets/images/home.png b/web/public/assets/images/home.png index 69f4cf8..8c68bc9 100644 Binary files a/web/public/assets/images/home.png and b/web/public/assets/images/home.png differ diff --git a/web/public/assets/images/index.png b/web/public/assets/images/index.png index ba21c08..163d5a0 100644 Binary files a/web/public/assets/images/index.png and b/web/public/assets/images/index.png differ