diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..110071e0d --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Start9 Labs, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/LICENSE.md b/LICENSE.md deleted file mode 100644 index bacd53575..000000000 --- a/LICENSE.md +++ /dev/null @@ -1,42 +0,0 @@ -# START9 NON-COMMERCIAL LICENSE v1 -Version 1, 22 September 2022 - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -### 1.Definitions - -"License" means version 1 of the Start9 Non-Commercial License. - -"Licensor" means the Start9 Labs, Inc, or its successor(s) in interest, or a future assignee of the copyright. - -"You" (or "Your") means an individual or organization exercising permissions granted by this License. - -"Source Code" for a work means the preferred form of the work for making modifications to it. - -"Object Code" means any non-source form of a work, including the machine-language output by a compiler or assembler. - -"Work" means any work of authorship, whether in Source or Object form, made available under this License. - -"Derivative Work" means any work, whether in Source or Object form, that is based on (or derived from) the Work. - -"Distribute" means to convey or to publish and generally has the same meaning here as under U.S. Copyright law. - -"Sell" means practicing any or all of the rights granted to you under the License to provide to third parties, for a fee or other consideration (including, without limitation, fees for hosting, consulting, or support services), a product or service whose value derives, entirely or substantially, from the functionality of the Work or Derivative Work. - -### 2. Grant of Rights - -Subject to the terms of this license, the Licensor grants you, the licensee, a non-exclusive, worldwide, royalty-free copyright license to access, audit, copy, modify, compile, run, test, distribute, or otherwise use the Software. - -### 3. Limitations - -1. The grant of rights under the License does NOT include, and the License does NOT grant You the right to Sell the Work or Derivative Work. -2. If you Distribute the Work or Derivative Work, you expressly undertake not to remove or modify, in any manner, the copyright notices attached to the Work or displayed in any output of the Work when run, and to reproduce these notices, in an identical manner, in any distributed copies of the Work or Derivative Work together with a copy of this License. -3. If you Distribute a Derivative Work, it must carry prominent notices stating that it has been modified from the Work, providing a relevant date. - -### 4. Contributions - -You hereby grant to Licensor a perpetual, irrevocable, worldwide, non-exclusive, royalty-free license to use and exploit any Derivative Work of which you are the author. - -### 5. Disclaimer - -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. LICENSOR HAS NO OBLIGATION TO SUPPORT RECIPIENTS OF THE SOFTWARE. diff --git a/Makefile b/Makefile index ed6f2b011..fed830c69 100644 --- a/Makefile +++ b/Makefile @@ -19,7 +19,7 @@ FRONTEND_INSTALL_WIZARD_SRC := $(shell find frontend/projects/install-wizard) PATCH_DB_CLIENT_SRC := $(shell find patch-db/client -not -path patch-db/client/dist -and -not -path patch-db/client/node_modules) GZIP_BIN := $(shell which pigz || which gzip) TAR_BIN := $(shell which gtar || which tar) -ALL_TARGETS := $(EMBASSY_BINS) system-images/compat/docker-images/$(ARCH).tar system-images/utils/docker-images/$(ARCH).tar system-images/binfmt/docker-images/$(ARCH).tar $(EMBASSY_SRC) $(shell if [ "$(OS_ARCH)" = "raspberrypi" ]; then echo cargo-deps/aarch64-unknown-linux-gnu/release/pi-beep; fi) $(ENVIRONMENT_FILE) $(GIT_HASH_FILE) $(VERSION_FILE) +ALL_TARGETS := $(EMBASSY_BINS) system-images/compat/docker-images/$(ARCH).tar system-images/utils/docker-images/$(ARCH).tar system-images/binfmt/docker-images/$(ARCH).tar $(EMBASSY_SRC) $(shell if [ "$(OS_ARCH)" = "raspberrypi" ]; then echo cargo-deps/aarch64-unknown-linux-gnu/release/pi-beep; fi) $(shell /bin/bash -c 'if [[ "${ENVIRONMENT}" =~ (^|-)unstable($$|-) ]]; then echo cargo-deps/$(ARCH)-unknown-linux-gnu/release/tokio-console; fi') $(ENVIRONMENT_FILE) $(GIT_HASH_FILE) $(VERSION_FILE) ifeq ($(REMOTE),) mkdir = mkdir -p $1 @@ -75,7 +75,7 @@ format: sdk: cd backend/ && ./install-sdk.sh -startos_raspberrypi.img: $(BUILD_SRC) startos.raspberrypi.squashfs $(VERSION_FILE) $(ENVIRONMENT_FILE) $(GIT_HASH_FILE) cargo-deps/aarch64-unknown-linux-gnu/release/pi-beep | sudo +startos_raspberrypi.img: $(BUILD_SRC) startos.raspberrypi.squashfs $(VERSION_FILE) $(ENVIRONMENT_FILE) $(GIT_HASH_FILE) | sudo ./build/raspberrypi/make-image.sh # For creating os images. DO NOT USE @@ -85,9 +85,11 @@ install: $(ALL_TARGETS) $(call ln,/usr/bin/startbox,$(DESTDIR)/usr/bin/startd) $(call ln,/usr/bin/startbox,$(DESTDIR)/usr/bin/start-cli) $(call ln,/usr/bin/startbox,$(DESTDIR)/usr/bin/start-sdk) + $(call ln,/usr/bin/startbox,$(DESTDIR)/usr/bin/start-deno) $(call ln,/usr/bin/startbox,$(DESTDIR)/usr/bin/avahi-alias) $(call ln,/usr/bin/startbox,$(DESTDIR)/usr/bin/embassy-cli) if [ "$(OS_ARCH)" = "raspberrypi" ]; then $(call cp,cargo-deps/aarch64-unknown-linux-gnu/release/pi-beep,$(DESTDIR)/usr/bin/pi-beep); fi + if /bin/bash -c '[[ "${ENVIRONMENT}" =~ (^|-)unstable($$|-) ]]'; then $(call cp,cargo-deps/$(ARCH)-unknown-linux-gnu/release/tokio-console,$(DESTDIR)/usr/bin/tokio-console); fi $(call mkdir,$(DESTDIR)/usr/lib) $(call rm,$(DESTDIR)/usr/lib/embassy) @@ -122,7 +124,7 @@ update: @if [ -z "$(REMOTE)" ]; then >&2 echo "Must specify REMOTE" && false; fi $(call ssh,"sudo rsync -a --delete --force --info=progress2 /media/embassy/embassyfs/current/ /media/embassy/next/") $(MAKE) install REMOTE=$(REMOTE) SSHPASS=$(SSHPASS) DESTDIR=/media/embassy/next OS_ARCH=$(OS_ARCH) - $(call ssh,"sudo touch /media/embassy/config/upgrade && sudo sync && sudo reboot") + $(call ssh,'sudo NO_SYNC=1 /media/embassy/next/usr/lib/embassy/scripts/chroot-and-upgrade "apt-get install -y $(shell cat ./build/lib/depends)"') emulate-reflash: @if [ -z "$(REMOTE)" ]; then >&2 echo "Must specify REMOTE" && false; fi @@ -130,14 +132,14 @@ emulate-reflash: $(MAKE) install REMOTE=$(REMOTE) SSHPASS=$(SSHPASS) DESTDIR=/media/embassy/next OS_ARCH=$(OS_ARCH) $(call ssh,"sudo touch /media/embassy/config/upgrade && sudo rm -f /media/embassy/config/disk.guid && sudo sync && sudo reboot") -system-images/compat/docker-images/aarch64.tar system-images/compat/docker-images/x86_64.tar: $(COMPAT_SRC) | sudo - cd system-images/compat && make +system-images/compat/docker-images/aarch64.tar system-images/compat/docker-images/x86_64.tar: $(COMPAT_SRC) backend/Cargo.lock | sudo + cd system-images/compat && make && touch docker-images/*.tar system-images/utils/docker-images/aarch64.tar system-images/utils/docker-images/x86_64.tar: $(UTILS_SRC) | sudo - cd system-images/utils && make + cd system-images/utils && make && touch docker-images/*.tar system-images/binfmt/docker-images/aarch64.tar system-images/binfmt/docker-images/x86_64.tar: $(BINFMT_SRC) | sudo - cd system-images/binfmt && make + cd system-images/binfmt && make && touch docker-images/*.tar snapshots: libs/snapshot_creator/Cargo.toml cd libs/ && ./build-v8-snapshot.sh @@ -198,3 +200,6 @@ backend: $(EMBASSY_BINS) cargo-deps/aarch64-unknown-linux-gnu/release/pi-beep: | sudo ARCH=aarch64 ./build-cargo-dep.sh pi-beep + +cargo-deps/$(ARCH)-unknown-linux-gnu/release/tokio-console: | sudo + ARCH=$(ARCH) ./build-cargo-dep.sh tokio-console diff --git a/README.md b/README.md index 125a956a4..db3c24e73 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,35 @@
- StartOS Logo + StartOS Logo

StartOS

- + GitHub release (with filter) - - + + Static Badge - + + X (formerly Twitter) Follow + + - + Static Badge - + Static Badge - + Static Badge - + Static Badge - + Website

@@ -35,7 +38,7 @@ Welcome to the era of Sovereign Computing

- StartOS is a Debian-based Linux distro optimized for running a personal server. It facilitates the discovery, installation, network configuration, service configuration, data backup, dependency management, and health monitoring of self-hosted software services. + StartOS is an open source Linux distribution optimized for running a personal server. It facilitates the discovery, installation, network configuration, service configuration, data backup, dependency management, and health monitoring of self-hosted software services.


@@ -65,7 +68,7 @@ There are multiple ways to contribute: work directly on StartOS, package a servi To report security issues, please email our security team - security@start9.com. ## 🌎 Marketplace -There are dozens of service available for StartOS, and new ones are being added all the time. Check out the full list of available services [here](https://marketplace.start9.com/marketplace). To read more about the Marketplace ecosystem, check out this [blog post](https://blog.start9.com/start9-marketplace-strategy/) +There are dozens of services available for StartOS, and new ones are being added all the time. Check out the full list of available services [here](https://marketplace.start9.com/marketplace). To read more about the Marketplace ecosystem, check out this [blog post](https://blog.start9.com/start9-marketplace-strategy/) ## 🖥️ User Interface Screenshots diff --git a/backend/.sqlx/query-1ce5254f27de971fd87f5ab66d300f2b22433c86617a0dbf796bf2170186dd2e.json b/backend/.sqlx/query-1ce5254f27de971fd87f5ab66d300f2b22433c86617a0dbf796bf2170186dd2e.json new file mode 100644 index 000000000..d36100fef --- /dev/null +++ b/backend/.sqlx/query-1ce5254f27de971fd87f5ab66d300f2b22433c86617a0dbf796bf2170186dd2e.json @@ -0,0 +1,16 @@ +{ + "db_name": "PostgreSQL", + "query": "INSERT INTO network_keys (package, interface, key) VALUES ($1, $2, $3) ON CONFLICT (package, interface) DO NOTHING", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Text", + "Text", + "Bytea" + ] + }, + "nullable": [] + }, + "hash": "1ce5254f27de971fd87f5ab66d300f2b22433c86617a0dbf796bf2170186dd2e" +} diff --git a/backend/.sqlx/query-21471490cdc3adb206274cc68e1ea745ffa5da4479478c1fd2158a45324b1930.json b/backend/.sqlx/query-21471490cdc3adb206274cc68e1ea745ffa5da4479478c1fd2158a45324b1930.json new file mode 100644 index 000000000..e0b1d7cf2 --- /dev/null +++ b/backend/.sqlx/query-21471490cdc3adb206274cc68e1ea745ffa5da4479478c1fd2158a45324b1930.json @@ -0,0 +1,14 @@ +{ + "db_name": "PostgreSQL", + "query": "DELETE FROM ssh_keys WHERE fingerprint = $1", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Text" + ] + }, + "nullable": [] + }, + "hash": "21471490cdc3adb206274cc68e1ea745ffa5da4479478c1fd2158a45324b1930" +} diff --git a/backend/.sqlx/query-28ea34bbde836e0618c5fc9bb7c36e463c20c841a7d6a0eb15be0f24f4a928ec.json b/backend/.sqlx/query-28ea34bbde836e0618c5fc9bb7c36e463c20c841a7d6a0eb15be0f24f4a928ec.json new file mode 100644 index 000000000..e234a72a9 --- /dev/null +++ b/backend/.sqlx/query-28ea34bbde836e0618c5fc9bb7c36e463c20c841a7d6a0eb15be0f24f4a928ec.json @@ -0,0 +1,40 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT hostname, path, username, password FROM cifs_shares WHERE id = $1", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "hostname", + "type_info": "Text" + }, + { + "ordinal": 1, + "name": "path", + "type_info": "Text" + }, + { + "ordinal": 2, + "name": "username", + "type_info": "Text" + }, + { + "ordinal": 3, + "name": "password", + "type_info": "Text" + } + ], + "parameters": { + "Left": [ + "Int4" + ] + }, + "nullable": [ + false, + false, + false, + true + ] + }, + "hash": "28ea34bbde836e0618c5fc9bb7c36e463c20c841a7d6a0eb15be0f24f4a928ec" +} diff --git a/backend/.sqlx/query-4099028a5c0de578255bf54a67cef6cb0f1e9a4e158260700f1639dd4b438997.json b/backend/.sqlx/query-4099028a5c0de578255bf54a67cef6cb0f1e9a4e158260700f1639dd4b438997.json new file mode 100644 index 000000000..761af064b --- /dev/null +++ b/backend/.sqlx/query-4099028a5c0de578255bf54a67cef6cb0f1e9a4e158260700f1639dd4b438997.json @@ -0,0 +1,34 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT * FROM ssh_keys WHERE fingerprint = $1", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "fingerprint", + "type_info": "Text" + }, + { + "ordinal": 1, + "name": "openssh_pubkey", + "type_info": "Text" + }, + { + "ordinal": 2, + "name": "created_at", + "type_info": "Text" + } + ], + "parameters": { + "Left": [ + "Text" + ] + }, + "nullable": [ + false, + false, + false + ] + }, + "hash": "4099028a5c0de578255bf54a67cef6cb0f1e9a4e158260700f1639dd4b438997" +} diff --git a/backend/.sqlx/query-4691e3a2ce80b59009ac17124f54f925f61dc5ea371903e62cdffa5d7b67ca96.json b/backend/.sqlx/query-4691e3a2ce80b59009ac17124f54f925f61dc5ea371903e62cdffa5d7b67ca96.json new file mode 100644 index 000000000..1f7edd1ce --- /dev/null +++ b/backend/.sqlx/query-4691e3a2ce80b59009ac17124f54f925f61dc5ea371903e62cdffa5d7b67ca96.json @@ -0,0 +1,50 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT * FROM session WHERE logged_out IS NULL OR logged_out > CURRENT_TIMESTAMP", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "id", + "type_info": "Text" + }, + { + "ordinal": 1, + "name": "logged_in", + "type_info": "Timestamp" + }, + { + "ordinal": 2, + "name": "logged_out", + "type_info": "Timestamp" + }, + { + "ordinal": 3, + "name": "last_active", + "type_info": "Timestamp" + }, + { + "ordinal": 4, + "name": "user_agent", + "type_info": "Text" + }, + { + "ordinal": 5, + "name": "metadata", + "type_info": "Text" + } + ], + "parameters": { + "Left": [] + }, + "nullable": [ + false, + false, + true, + false, + true, + false + ] + }, + "hash": "4691e3a2ce80b59009ac17124f54f925f61dc5ea371903e62cdffa5d7b67ca96" +} diff --git a/backend/.sqlx/query-4bcfbefb1eb3181343871a1cd7fc3afb81c2be5c681cfa8b4be0ce70610e9c3a.json b/backend/.sqlx/query-4bcfbefb1eb3181343871a1cd7fc3afb81c2be5c681cfa8b4be0ce70610e9c3a.json new file mode 100644 index 000000000..2157198e5 --- /dev/null +++ b/backend/.sqlx/query-4bcfbefb1eb3181343871a1cd7fc3afb81c2be5c681cfa8b4be0ce70610e9c3a.json @@ -0,0 +1,14 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE session SET logged_out = CURRENT_TIMESTAMP WHERE id = $1", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Text" + ] + }, + "nullable": [] + }, + "hash": "4bcfbefb1eb3181343871a1cd7fc3afb81c2be5c681cfa8b4be0ce70610e9c3a" +} diff --git a/backend/.sqlx/query-629be61c3c341c131ddbbff0293a83dbc6afd07cae69d246987f62cf0cc35c2a.json b/backend/.sqlx/query-629be61c3c341c131ddbbff0293a83dbc6afd07cae69d246987f62cf0cc35c2a.json new file mode 100644 index 000000000..764cff84a --- /dev/null +++ b/backend/.sqlx/query-629be61c3c341c131ddbbff0293a83dbc6afd07cae69d246987f62cf0cc35c2a.json @@ -0,0 +1,20 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT password FROM account", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "password", + "type_info": "Text" + } + ], + "parameters": { + "Left": [] + }, + "nullable": [ + false + ] + }, + "hash": "629be61c3c341c131ddbbff0293a83dbc6afd07cae69d246987f62cf0cc35c2a" +} diff --git a/backend/.sqlx/query-687688055e63d27123cdc89a5bbbd8361776290a9411d527eaf1fdb40bef399d.json b/backend/.sqlx/query-687688055e63d27123cdc89a5bbbd8361776290a9411d527eaf1fdb40bef399d.json new file mode 100644 index 000000000..2e8a9ee0e --- /dev/null +++ b/backend/.sqlx/query-687688055e63d27123cdc89a5bbbd8361776290a9411d527eaf1fdb40bef399d.json @@ -0,0 +1,23 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT key FROM tor WHERE package = $1 AND interface = $2", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "key", + "type_info": "Bytea" + } + ], + "parameters": { + "Left": [ + "Text", + "Text" + ] + }, + "nullable": [ + false + ] + }, + "hash": "687688055e63d27123cdc89a5bbbd8361776290a9411d527eaf1fdb40bef399d" +} diff --git a/backend/.sqlx/query-6d35ccf780fb2bb62586dd1d3df9c1550a41ee580dad3f49d35cb843ebef10ca.json b/backend/.sqlx/query-6d35ccf780fb2bb62586dd1d3df9c1550a41ee580dad3f49d35cb843ebef10ca.json new file mode 100644 index 000000000..3f859bd10 --- /dev/null +++ b/backend/.sqlx/query-6d35ccf780fb2bb62586dd1d3df9c1550a41ee580dad3f49d35cb843ebef10ca.json @@ -0,0 +1,14 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE session SET last_active = CURRENT_TIMESTAMP WHERE id = $1 AND logged_out IS NULL OR logged_out > CURRENT_TIMESTAMP", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Text" + ] + }, + "nullable": [] + }, + "hash": "6d35ccf780fb2bb62586dd1d3df9c1550a41ee580dad3f49d35cb843ebef10ca" +} diff --git a/backend/.sqlx/query-770c1017734720453dc87b58c385b987c5af5807151ff71a59000014586752e0.json b/backend/.sqlx/query-770c1017734720453dc87b58c385b987c5af5807151ff71a59000014586752e0.json new file mode 100644 index 000000000..cf3591e01 --- /dev/null +++ b/backend/.sqlx/query-770c1017734720453dc87b58c385b987c5af5807151ff71a59000014586752e0.json @@ -0,0 +1,24 @@ +{ + "db_name": "PostgreSQL", + "query": "INSERT INTO network_keys (package, interface, key) VALUES ($1, $2, $3) ON CONFLICT (package, interface) DO UPDATE SET package = EXCLUDED.package RETURNING key", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "key", + "type_info": "Bytea" + } + ], + "parameters": { + "Left": [ + "Text", + "Text", + "Bytea" + ] + }, + "nullable": [ + false + ] + }, + "hash": "770c1017734720453dc87b58c385b987c5af5807151ff71a59000014586752e0" +} diff --git a/backend/.sqlx/query-7b64f032d507e8ffe37c41f4c7ad514a66c421a11ab04c26d89a7aa8f6b67210.json b/backend/.sqlx/query-7b64f032d507e8ffe37c41f4c7ad514a66c421a11ab04c26d89a7aa8f6b67210.json new file mode 100644 index 000000000..53fc6f066 --- /dev/null +++ b/backend/.sqlx/query-7b64f032d507e8ffe37c41f4c7ad514a66c421a11ab04c26d89a7aa8f6b67210.json @@ -0,0 +1,65 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT id, package_id, created_at, code, level, title, message, data FROM notifications WHERE id < $1 ORDER BY id DESC LIMIT $2", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "id", + "type_info": "Int4" + }, + { + "ordinal": 1, + "name": "package_id", + "type_info": "Text" + }, + { + "ordinal": 2, + "name": "created_at", + "type_info": "Timestamp" + }, + { + "ordinal": 3, + "name": "code", + "type_info": "Int4" + }, + { + "ordinal": 4, + "name": "level", + "type_info": "Text" + }, + { + "ordinal": 5, + "name": "title", + "type_info": "Text" + }, + { + "ordinal": 6, + "name": "message", + "type_info": "Text" + }, + { + "ordinal": 7, + "name": "data", + "type_info": "Text" + } + ], + "parameters": { + "Left": [ + "Int4", + "Int8" + ] + }, + "nullable": [ + false, + true, + false, + false, + false, + false, + false, + true + ] + }, + "hash": "7b64f032d507e8ffe37c41f4c7ad514a66c421a11ab04c26d89a7aa8f6b67210" +} diff --git a/backend/.sqlx/query-7c7a3549c997eb75bf964ea65fbb98a73045adf618696cd838d79203ef5383fb.json b/backend/.sqlx/query-7c7a3549c997eb75bf964ea65fbb98a73045adf618696cd838d79203ef5383fb.json new file mode 100644 index 000000000..245a838d8 --- /dev/null +++ b/backend/.sqlx/query-7c7a3549c997eb75bf964ea65fbb98a73045adf618696cd838d79203ef5383fb.json @@ -0,0 +1,19 @@ +{ + "db_name": "PostgreSQL", + "query": "\n INSERT INTO account (\n id,\n server_id,\n hostname,\n password,\n network_key,\n root_ca_key_pem,\n root_ca_cert_pem\n ) VALUES (\n 0, $1, $2, $3, $4, $5, $6\n ) ON CONFLICT (id) DO UPDATE SET\n server_id = EXCLUDED.server_id,\n hostname = EXCLUDED.hostname,\n password = EXCLUDED.password,\n network_key = EXCLUDED.network_key,\n root_ca_key_pem = EXCLUDED.root_ca_key_pem,\n root_ca_cert_pem = EXCLUDED.root_ca_cert_pem\n ", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Text", + "Text", + "Text", + "Bytea", + "Text", + "Text" + ] + }, + "nullable": [] + }, + "hash": "7c7a3549c997eb75bf964ea65fbb98a73045adf618696cd838d79203ef5383fb" +} diff --git a/backend/.sqlx/query-7e0649d839927e57fa03ee51a2c9f96a8bdb0fc97ee8a3c6df1069e1e2b98576.json b/backend/.sqlx/query-7e0649d839927e57fa03ee51a2c9f96a8bdb0fc97ee8a3c6df1069e1e2b98576.json new file mode 100644 index 000000000..e3ce7957d --- /dev/null +++ b/backend/.sqlx/query-7e0649d839927e57fa03ee51a2c9f96a8bdb0fc97ee8a3c6df1069e1e2b98576.json @@ -0,0 +1,14 @@ +{ + "db_name": "PostgreSQL", + "query": "DELETE FROM tor WHERE package = $1", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Text" + ] + }, + "nullable": [] + }, + "hash": "7e0649d839927e57fa03ee51a2c9f96a8bdb0fc97ee8a3c6df1069e1e2b98576" +} diff --git a/backend/.sqlx/query-8951b9126fbf60dbb5997241e11e3526b70bccf3e407327917294a993bc17ed5.json b/backend/.sqlx/query-8951b9126fbf60dbb5997241e11e3526b70bccf3e407327917294a993bc17ed5.json new file mode 100644 index 000000000..e39aebf69 --- /dev/null +++ b/backend/.sqlx/query-8951b9126fbf60dbb5997241e11e3526b70bccf3e407327917294a993bc17ed5.json @@ -0,0 +1,16 @@ +{ + "db_name": "PostgreSQL", + "query": "INSERT INTO tor (package, interface, key) VALUES ($1, $2, $3) ON CONFLICT (package, interface) DO NOTHING", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Text", + "Text", + "Bytea" + ] + }, + "nullable": [] + }, + "hash": "8951b9126fbf60dbb5997241e11e3526b70bccf3e407327917294a993bc17ed5" +} diff --git a/backend/.sqlx/query-94d471bb374b4965c6cbedf8c17bbf6bea226d38efaf6559923c79a36d5ca08c.json b/backend/.sqlx/query-94d471bb374b4965c6cbedf8c17bbf6bea226d38efaf6559923c79a36d5ca08c.json new file mode 100644 index 000000000..e7fe8d38c --- /dev/null +++ b/backend/.sqlx/query-94d471bb374b4965c6cbedf8c17bbf6bea226d38efaf6559923c79a36d5ca08c.json @@ -0,0 +1,64 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT id, package_id, created_at, code, level, title, message, data FROM notifications ORDER BY id DESC LIMIT $1", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "id", + "type_info": "Int4" + }, + { + "ordinal": 1, + "name": "package_id", + "type_info": "Text" + }, + { + "ordinal": 2, + "name": "created_at", + "type_info": "Timestamp" + }, + { + "ordinal": 3, + "name": "code", + "type_info": "Int4" + }, + { + "ordinal": 4, + "name": "level", + "type_info": "Text" + }, + { + "ordinal": 5, + "name": "title", + "type_info": "Text" + }, + { + "ordinal": 6, + "name": "message", + "type_info": "Text" + }, + { + "ordinal": 7, + "name": "data", + "type_info": "Text" + } + ], + "parameters": { + "Left": [ + "Int8" + ] + }, + "nullable": [ + false, + true, + false, + false, + false, + false, + false, + true + ] + }, + "hash": "94d471bb374b4965c6cbedf8c17bbf6bea226d38efaf6559923c79a36d5ca08c" +} diff --git a/backend/.sqlx/query-95c4ab4c645f3302568c6ff13d85ab58252362694cf0f56999bf60194d20583a.json b/backend/.sqlx/query-95c4ab4c645f3302568c6ff13d85ab58252362694cf0f56999bf60194d20583a.json new file mode 100644 index 000000000..aadc0fc3a --- /dev/null +++ b/backend/.sqlx/query-95c4ab4c645f3302568c6ff13d85ab58252362694cf0f56999bf60194d20583a.json @@ -0,0 +1,44 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT id, hostname, path, username, password FROM cifs_shares", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "id", + "type_info": "Int4" + }, + { + "ordinal": 1, + "name": "hostname", + "type_info": "Text" + }, + { + "ordinal": 2, + "name": "path", + "type_info": "Text" + }, + { + "ordinal": 3, + "name": "username", + "type_info": "Text" + }, + { + "ordinal": 4, + "name": "password", + "type_info": "Text" + } + ], + "parameters": { + "Left": [] + }, + "nullable": [ + false, + false, + false, + false, + true + ] + }, + "hash": "95c4ab4c645f3302568c6ff13d85ab58252362694cf0f56999bf60194d20583a" +} diff --git a/backend/.sqlx/query-a60d6e66719325b08dc4ecfacaf337527233c84eee758ac9be967906e5841d27.json b/backend/.sqlx/query-a60d6e66719325b08dc4ecfacaf337527233c84eee758ac9be967906e5841d27.json new file mode 100644 index 000000000..c56a9ebd1 --- /dev/null +++ b/backend/.sqlx/query-a60d6e66719325b08dc4ecfacaf337527233c84eee758ac9be967906e5841d27.json @@ -0,0 +1,14 @@ +{ + "db_name": "PostgreSQL", + "query": "DELETE FROM cifs_shares WHERE id = $1", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Int4" + ] + }, + "nullable": [] + }, + "hash": "a60d6e66719325b08dc4ecfacaf337527233c84eee758ac9be967906e5841d27" +} diff --git a/backend/.sqlx/query-a6b0c8909a3a5d6d9156aebfb359424e6b5a1d1402e028219e21726f1ebd282e.json b/backend/.sqlx/query-a6b0c8909a3a5d6d9156aebfb359424e6b5a1d1402e028219e21726f1ebd282e.json new file mode 100644 index 000000000..86bd9250e --- /dev/null +++ b/backend/.sqlx/query-a6b0c8909a3a5d6d9156aebfb359424e6b5a1d1402e028219e21726f1ebd282e.json @@ -0,0 +1,32 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT fingerprint, openssh_pubkey, created_at FROM ssh_keys", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "fingerprint", + "type_info": "Text" + }, + { + "ordinal": 1, + "name": "openssh_pubkey", + "type_info": "Text" + }, + { + "ordinal": 2, + "name": "created_at", + "type_info": "Text" + } + ], + "parameters": { + "Left": [] + }, + "nullable": [ + false, + false, + false + ] + }, + "hash": "a6b0c8909a3a5d6d9156aebfb359424e6b5a1d1402e028219e21726f1ebd282e" +} diff --git a/backend/.sqlx/query-b1147beaaabbed89f2ab8c1e13ec4393a9a8fde2833cf096af766a979d94dee6.json b/backend/.sqlx/query-b1147beaaabbed89f2ab8c1e13ec4393a9a8fde2833cf096af766a979d94dee6.json new file mode 100644 index 000000000..c8ff84277 --- /dev/null +++ b/backend/.sqlx/query-b1147beaaabbed89f2ab8c1e13ec4393a9a8fde2833cf096af766a979d94dee6.json @@ -0,0 +1,18 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE cifs_shares SET hostname = $1, path = $2, username = $3, password = $4 WHERE id = $5", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Text", + "Text", + "Text", + "Text", + "Int4" + ] + }, + "nullable": [] + }, + "hash": "b1147beaaabbed89f2ab8c1e13ec4393a9a8fde2833cf096af766a979d94dee6" +} diff --git a/backend/.sqlx/query-d5117054072476377f3c4f040ea429d4c9b2cf534e76f35c80a2bf60e8599cca.json b/backend/.sqlx/query-d5117054072476377f3c4f040ea429d4c9b2cf534e76f35c80a2bf60e8599cca.json new file mode 100644 index 000000000..b77ba7ce9 --- /dev/null +++ b/backend/.sqlx/query-d5117054072476377f3c4f040ea429d4c9b2cf534e76f35c80a2bf60e8599cca.json @@ -0,0 +1,20 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT openssh_pubkey FROM ssh_keys", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "openssh_pubkey", + "type_info": "Text" + } + ], + "parameters": { + "Left": [] + }, + "nullable": [ + false + ] + }, + "hash": "d5117054072476377f3c4f040ea429d4c9b2cf534e76f35c80a2bf60e8599cca" +} diff --git a/backend/.sqlx/query-da71f94b29798d1738d2b10b9a721ea72db8cfb362e7181c8226d9297507c62b.json b/backend/.sqlx/query-da71f94b29798d1738d2b10b9a721ea72db8cfb362e7181c8226d9297507c62b.json new file mode 100644 index 000000000..5c5c89c27 --- /dev/null +++ b/backend/.sqlx/query-da71f94b29798d1738d2b10b9a721ea72db8cfb362e7181c8226d9297507c62b.json @@ -0,0 +1,19 @@ +{ + "db_name": "PostgreSQL", + "query": "INSERT INTO notifications (package_id, code, level, title, message, data) VALUES ($1, $2, $3, $4, $5, $6)", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Text", + "Int4", + "Text", + "Text", + "Text", + "Text" + ] + }, + "nullable": [] + }, + "hash": "da71f94b29798d1738d2b10b9a721ea72db8cfb362e7181c8226d9297507c62b" +} diff --git a/backend/.sqlx/query-e185203cf84e43b801dfb23b4159e34aeaef1154dcd3d6811ab504915497ccf7.json b/backend/.sqlx/query-e185203cf84e43b801dfb23b4159e34aeaef1154dcd3d6811ab504915497ccf7.json new file mode 100644 index 000000000..a4dc187cd --- /dev/null +++ b/backend/.sqlx/query-e185203cf84e43b801dfb23b4159e34aeaef1154dcd3d6811ab504915497ccf7.json @@ -0,0 +1,14 @@ +{ + "db_name": "PostgreSQL", + "query": "DELETE FROM notifications WHERE id = $1", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Int4" + ] + }, + "nullable": [] + }, + "hash": "e185203cf84e43b801dfb23b4159e34aeaef1154dcd3d6811ab504915497ccf7" +} diff --git a/backend/.sqlx/query-e545696735f202f9d13cf22a561f3ff3f9aed7f90027a9ba97634bcb47d772f0.json b/backend/.sqlx/query-e545696735f202f9d13cf22a561f3ff3f9aed7f90027a9ba97634bcb47d772f0.json new file mode 100644 index 000000000..97a4ec95a --- /dev/null +++ b/backend/.sqlx/query-e545696735f202f9d13cf22a561f3ff3f9aed7f90027a9ba97634bcb47d772f0.json @@ -0,0 +1,20 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT tor_key FROM account WHERE id = 0", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "tor_key", + "type_info": "Bytea" + } + ], + "parameters": { + "Left": [] + }, + "nullable": [ + true + ] + }, + "hash": "e545696735f202f9d13cf22a561f3ff3f9aed7f90027a9ba97634bcb47d772f0" +} diff --git a/backend/.sqlx/query-e5843c5b0e7819b29aa1abf2266799bd4f82e761837b526a0972c3d4439a264d.json b/backend/.sqlx/query-e5843c5b0e7819b29aa1abf2266799bd4f82e761837b526a0972c3d4439a264d.json new file mode 100644 index 000000000..b2aa04370 --- /dev/null +++ b/backend/.sqlx/query-e5843c5b0e7819b29aa1abf2266799bd4f82e761837b526a0972c3d4439a264d.json @@ -0,0 +1,16 @@ +{ + "db_name": "PostgreSQL", + "query": "INSERT INTO session (id, user_agent, metadata) VALUES ($1, $2, $3)", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Text", + "Text", + "Text" + ] + }, + "nullable": [] + }, + "hash": "e5843c5b0e7819b29aa1abf2266799bd4f82e761837b526a0972c3d4439a264d" +} diff --git a/backend/.sqlx/query-e95322a8e2ae3b93f1e974b24c0b81803f1e9ec9e8ebbf15cafddfc1c5a028ed.json b/backend/.sqlx/query-e95322a8e2ae3b93f1e974b24c0b81803f1e9ec9e8ebbf15cafddfc1c5a028ed.json new file mode 100644 index 000000000..fd5a467ec --- /dev/null +++ b/backend/.sqlx/query-e95322a8e2ae3b93f1e974b24c0b81803f1e9ec9e8ebbf15cafddfc1c5a028ed.json @@ -0,0 +1,40 @@ +{ + "db_name": "PostgreSQL", + "query": "\n SELECT\n network_keys.package,\n network_keys.interface,\n network_keys.key,\n tor.key AS \"tor_key?\"\n FROM\n network_keys\n LEFT JOIN\n tor\n ON\n network_keys.package = tor.package\n AND\n network_keys.interface = tor.interface\n WHERE\n network_keys.package = $1\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "package", + "type_info": "Text" + }, + { + "ordinal": 1, + "name": "interface", + "type_info": "Text" + }, + { + "ordinal": 2, + "name": "key", + "type_info": "Bytea" + }, + { + "ordinal": 3, + "name": "tor_key?", + "type_info": "Bytea" + } + ], + "parameters": { + "Left": [ + "Text" + ] + }, + "nullable": [ + false, + false, + false, + false + ] + }, + "hash": "e95322a8e2ae3b93f1e974b24c0b81803f1e9ec9e8ebbf15cafddfc1c5a028ed" +} diff --git a/backend/.sqlx/query-eb750adaa305bdbf3c5b70aaf59139c7b7569602adb58f2d6b3a94da4f167b0a.json b/backend/.sqlx/query-eb750adaa305bdbf3c5b70aaf59139c7b7569602adb58f2d6b3a94da4f167b0a.json new file mode 100644 index 000000000..fb8a7c1e5 --- /dev/null +++ b/backend/.sqlx/query-eb750adaa305bdbf3c5b70aaf59139c7b7569602adb58f2d6b3a94da4f167b0a.json @@ -0,0 +1,14 @@ +{ + "db_name": "PostgreSQL", + "query": "DELETE FROM notifications WHERE id < $1", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Int4" + ] + }, + "nullable": [] + }, + "hash": "eb750adaa305bdbf3c5b70aaf59139c7b7569602adb58f2d6b3a94da4f167b0a" +} diff --git a/backend/.sqlx/query-ecc765d8205c0876956f95f76944ac6a5f34dd820c4073b7728c7067aab9fded.json b/backend/.sqlx/query-ecc765d8205c0876956f95f76944ac6a5f34dd820c4073b7728c7067aab9fded.json new file mode 100644 index 000000000..27c9752b2 --- /dev/null +++ b/backend/.sqlx/query-ecc765d8205c0876956f95f76944ac6a5f34dd820c4073b7728c7067aab9fded.json @@ -0,0 +1,25 @@ +{ + "db_name": "PostgreSQL", + "query": "INSERT INTO cifs_shares (hostname, path, username, password) VALUES ($1, $2, $3, $4) RETURNING id", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "id", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Text", + "Text", + "Text", + "Text" + ] + }, + "nullable": [ + false + ] + }, + "hash": "ecc765d8205c0876956f95f76944ac6a5f34dd820c4073b7728c7067aab9fded" +} diff --git a/backend/.sqlx/query-f6d1c5ef0f9d9577bea8382318967b9deb46da75788c7fe6082b43821c22d556.json b/backend/.sqlx/query-f6d1c5ef0f9d9577bea8382318967b9deb46da75788c7fe6082b43821c22d556.json new file mode 100644 index 000000000..6ed9898f6 --- /dev/null +++ b/backend/.sqlx/query-f6d1c5ef0f9d9577bea8382318967b9deb46da75788c7fe6082b43821c22d556.json @@ -0,0 +1,16 @@ +{ + "db_name": "PostgreSQL", + "query": "INSERT INTO ssh_keys (fingerprint, openssh_pubkey, created_at) VALUES ($1, $2, $3)", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Text", + "Text", + "Text" + ] + }, + "nullable": [] + }, + "hash": "f6d1c5ef0f9d9577bea8382318967b9deb46da75788c7fe6082b43821c22d556" +} diff --git a/backend/.sqlx/query-f7d2dae84613bcef330f7403352cc96547f3f6dbec11bf2eadfaf53ad8ab51b5.json b/backend/.sqlx/query-f7d2dae84613bcef330f7403352cc96547f3f6dbec11bf2eadfaf53ad8ab51b5.json new file mode 100644 index 000000000..f48ccb074 --- /dev/null +++ b/backend/.sqlx/query-f7d2dae84613bcef330f7403352cc96547f3f6dbec11bf2eadfaf53ad8ab51b5.json @@ -0,0 +1,20 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT network_key FROM account WHERE id = 0", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "network_key", + "type_info": "Bytea" + } + ], + "parameters": { + "Left": [] + }, + "nullable": [ + false + ] + }, + "hash": "f7d2dae84613bcef330f7403352cc96547f3f6dbec11bf2eadfaf53ad8ab51b5" +} diff --git a/backend/.sqlx/query-fe6e4f09f3028e5b6b6259e86cbad285680ce157aae9d7837ac020c8b2945e7f.json b/backend/.sqlx/query-fe6e4f09f3028e5b6b6259e86cbad285680ce157aae9d7837ac020c8b2945e7f.json new file mode 100644 index 000000000..6ef1d5023 --- /dev/null +++ b/backend/.sqlx/query-fe6e4f09f3028e5b6b6259e86cbad285680ce157aae9d7837ac020c8b2945e7f.json @@ -0,0 +1,62 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT * FROM account WHERE id = 0", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "id", + "type_info": "Int4" + }, + { + "ordinal": 1, + "name": "password", + "type_info": "Text" + }, + { + "ordinal": 2, + "name": "tor_key", + "type_info": "Bytea" + }, + { + "ordinal": 3, + "name": "server_id", + "type_info": "Text" + }, + { + "ordinal": 4, + "name": "hostname", + "type_info": "Text" + }, + { + "ordinal": 5, + "name": "network_key", + "type_info": "Bytea" + }, + { + "ordinal": 6, + "name": "root_ca_key_pem", + "type_info": "Text" + }, + { + "ordinal": 7, + "name": "root_ca_cert_pem", + "type_info": "Text" + } + ], + "parameters": { + "Left": [] + }, + "nullable": [ + false, + false, + true, + true, + true, + false, + false, + false + ] + }, + "hash": "fe6e4f09f3028e5b6b6259e86cbad285680ce157aae9d7837ac020c8b2945e7f" +} diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 53f5a6db0..0429bf077 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -34,7 +34,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" dependencies = [ "cfg-if 1.0.0", - "cipher", + "cipher 0.3.0", "cpufeatures", "ctr", "opaque-debug", @@ -65,9 +65,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] @@ -146,15 +146,15 @@ dependencies = [ [[package]] name = "ast_node" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c704e2f6ee1a98223f5a7629a6ef0f3decb3b552ed282889dc957edff98ce1e6" +checksum = "c09c69dffe06d222d072c878c3afe86eee2179806f20503faec97250268b4c24" dependencies = [ "pmutil", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "swc_macros_common", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] @@ -170,9 +170,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.3.15" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942c7cd7ae39e91bde4820d74132e9862e62c2f386c3aa90ccf55949f5bad63a" +checksum = "f658e2baef915ba0f26f1f7c42bfb8e12f532a01f449a090ded75ae7a07e9ba2" dependencies = [ "brotli", "flate2", @@ -199,27 +199,27 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.18", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] name = "async-trait" -version = "0.1.69" +version = "0.1.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b2d0f03b3640e3a630367e40c468cb7f309529c708ed1d88597047b0e7c6ef7" +checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.18", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] name = "atoi" -version = "1.0.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c57d12312ff59c811c0643f4d80830505833c9ffaebd193d819392b265be8e" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" dependencies = [ "num-traits", ] @@ -250,6 +250,51 @@ dependencies = [ "libc", ] +[[package]] +name = "axum" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +dependencies = [ + "async-trait", + "axum-core", + "bitflags 1.3.2", + "bytes", + "futures-util", + "http", + "http-body", + "hyper", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "mime", + "rustversion", + "tower-layer", + "tower-service", +] + [[package]] name = "backtrace" version = "0.3.69" @@ -267,9 +312,9 @@ dependencies = [ [[package]] name = "base16ct" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" [[package]] name = "base32" @@ -349,8 +394,8 @@ dependencies = [ "lazycell", "log", "peeking_take_while", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "regex", "rustc-hash", "shlex", @@ -380,9 +425,12 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +dependencies = [ + "serde", +] [[package]] name = "bitmaps" @@ -440,9 +488,9 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "brotli" -version = "3.3.4" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" +checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -451,9 +499,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "2.3.4" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744" +checksum = "da74e2b81409b1b743f8f0c62cc6254afefb8b8e50bbfe3735550f7aeefa3448" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -467,9 +515,9 @@ checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" @@ -567,6 +615,16 @@ dependencies = [ "generic-array", ] +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + [[package]] name = "clang-sys" version = "1.6.1" @@ -666,12 +724,69 @@ dependencies = [ "windows-sys 0.45.0", ] +[[package]] +name = "console-api" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd326812b3fd01da5bb1af7d340d0d555fd3d4b641e7f1dfcf5962a902952787" +dependencies = [ + "futures-core", + "prost", + "prost-types", + "tonic", + "tracing-core", +] + +[[package]] +name = "console-subscriber" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7481d4c57092cd1c19dd541b92bdce883de840df30aa5d03fd48a3935c01842e" +dependencies = [ + "console-api", + "crossbeam-channel", + "crossbeam-utils", + "futures-task", + "hdrhistogram", + "humantime 2.1.0", + "prost-types", + "serde", + "serde_json", + "thread_local", + "tokio", + "tokio-stream", + "tonic", + "tracing", + "tracing-core", + "tracing-subscriber", +] + [[package]] name = "const-oid" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" +[[package]] +name = "const_format" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a214c7af3d04997541b18d432afaff4c455e79e2029079647e72fc2bd27673" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f6ff08fd20f4f299298a28e2dfa8a8ba1036e6cd2460ac1de7b425d76f2500" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + [[package]] name = "constant_time_eq" version = "0.3.0" @@ -684,6 +799,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "cookie" version = "0.16.2" @@ -695,13 +819,34 @@ dependencies = [ "version_check", ] +[[package]] +name = "cookie" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "cookie" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cd91cf61412820176e137621345ee43b3f4423e589e7ae4e50d601d93e35ef8" +dependencies = [ + "time", + "version_check", +] + [[package]] name = "cookie_store" version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d606d0fba62e13cf04db20536c05cb7f13673c161cb47a47a82b9b9e7d3f1daa" dependencies = [ - "cookie", + "cookie 0.16.2", "idna 0.2.3", "log", "publicsuffix", @@ -714,11 +859,11 @@ dependencies = [ [[package]] name = "cookie_store" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5a18f35792056f8c7c2de9c002e7e4fe44c7b5f66e7d99f46468dbb730a7ea7" +checksum = "387461abbc748185c3a6e1673d826918b450b87ff22639429c694619a83b6cf6" dependencies = [ - "cookie", + "cookie 0.17.0", "idna 0.3.0", "log", "publicsuffix", @@ -778,6 +923,16 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "crossbeam-channel" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + [[package]] name = "crossbeam-queue" version = "0.3.8" @@ -805,9 +960,9 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-bigint" -version = "0.4.9" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" +checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124" dependencies = [ "generic-array", "rand_core 0.6.4", @@ -837,9 +992,9 @@ dependencies = [ [[package]] name = "csv" -version = "1.2.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626ae34994d3d8d668f4269922248239db4ae42d538b14c398b74a52208e8086" +checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" dependencies = [ "csv-core", "itoa", @@ -849,9 +1004,9 @@ dependencies = [ [[package]] name = "csv-core" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" dependencies = [ "memchr", ] @@ -862,7 +1017,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" dependencies = [ - "cipher", + "cipher 0.3.0", ] [[package]] @@ -884,6 +1039,34 @@ dependencies = [ "zeroize", ] +[[package]] +name = "curve25519-dalek" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "platforms", + "rustc_version 0.4.0", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", +] + [[package]] name = "darling" version = "0.20.3" @@ -902,10 +1085,10 @@ checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "strsim 0.10.0", - "syn 2.0.18", + "syn 2.0.38", ] [[package]] @@ -915,8 +1098,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", - "quote 1.0.33", - "syn 2.0.18", + "quote", + "syn 2.0.38", ] [[package]] @@ -926,10 +1109,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if 1.0.0", - "hashbrown 0.14.0", + "hashbrown 0.14.1", "lock_api", "once_cell", - "parking_lot_core 0.9.8", + "parking_lot_core", ] [[package]] @@ -961,8 +1144,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c65c2ffdafc1564565200967edc4851c7b55422d3913466688907efd05ea26f" dependencies = [ "deno-proc-macro-rules-macros", - "proc-macro2 1.0.67", - "syn 2.0.18", + "proc-macro2", + "syn 2.0.38", ] [[package]] @@ -972,16 +1155,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3047b312b7451e3190865713a4dd6e1f821aed614ada219766ebc3024a690435" dependencies = [ "once_cell", - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.18", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] name = "deno_ast" -version = "0.27.2" +version = "0.29.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a39dc5554b1c835c62914b545f8b378563a997521e39a8f03450b37b216143ef" +checksum = "8a8adb6aeb787db71d015d8e9f63f6e004eeb09c86babb4ded00878be18619b1" dependencies = [ "anyhow", "base64 0.13.1", @@ -1015,25 +1198,26 @@ dependencies = [ [[package]] name = "deno_core" -version = "0.195.0" +version = "0.222.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "408e433386de30dd501cf82d26ca1fb4cd84b055536f8f6f9c78c3380649d94b" +checksum = "b13c81b9ea8462680e7b77088a44fc36390bab3dbfa5a205a285e11b64e0919c" dependencies = [ "anyhow", "bytes", "deno_ops", + "deno_unsync", "futures", - "indexmap 1.9.3", + "indexmap 2.0.2", "libc", "log", "once_cell", - "parking_lot 0.12.1", + "parking_lot", "pin-project", "serde", "serde_json", "serde_v8", "smallvec", - "sourcemap", + "sourcemap 7.0.0", "tokio", "url", "v8", @@ -1052,31 +1236,38 @@ dependencies = [ [[package]] name = "deno_ops" -version = "0.73.0" +version = "0.98.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6d06feb9b26ccd2997f35610517d5a8f1dd423e21364509523f72474601f87f" +checksum = "bf89da1a3e50ff7c89956495b53d9bcad29e1f1b3f3d2bc54cad7155f55419c4" dependencies = [ "deno-proc-macro-rules", "lazy-regex", "once_cell", "pmutil", "proc-macro-crate", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "regex", "strum", "strum_macros", - "syn 1.0.109", - "syn 2.0.18", + "syn 2.0.38", "thiserror", - "v8", +] + +[[package]] +name = "deno_unsync" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8a8f3722afd50e566ecfc783cc8a3a046bc4dd5eb45007431dfb2776aeb8993" +dependencies = [ + "tokio", ] [[package]] name = "der" -version = "0.6.1" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" dependencies = [ "const-oid", "pem-rfc7468", @@ -1085,10 +1276,11 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" +checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" dependencies = [ + "powerfmt", "serde", ] @@ -1098,9 +1290,9 @@ version = "0.99.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ - "convert_case", - "proc-macro2 1.0.67", - "quote 1.0.33", + "convert_case 0.4.0", + "proc-macro2", + "quote", "rustc_version 0.4.0", "syn 1.0.109", ] @@ -1132,15 +1324,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "dirs" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" -dependencies = [ - "dirs-sys", -] - [[package]] name = "dirs-next" version = "2.0.0" @@ -1151,17 +1334,6 @@ dependencies = [ "dirs-sys-next", ] -[[package]] -name = "dirs-sys" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - [[package]] name = "dirs-sys-next" version = "0.1.2" @@ -1187,9 +1359,9 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dprint-swc-ext" -version = "0.10.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd4dda8a1b920e8be367aeaad035753d21bb69b3c50515afb41ab1eefbb886b5" +checksum = "6a0a2492465344a58a37ae119de59e81fe5a2885f2711c7b5048ef0dfa14ce42" dependencies = [ "bumpalo", "num-bigint", @@ -1201,6 +1373,15 @@ dependencies = [ "text_lines", ] +[[package]] +name = "drain" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f1a0abf3fcefad9b4dd0e414207a7408e12b68414a01e6bb19b897d5bd7632d" +dependencies = [ + "tokio", +] + [[package]] name = "dyn-clone" version = "1.0.14" @@ -1209,26 +1390,16 @@ checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" [[package]] name = "ecdsa" -version = "0.14.8" +version = "0.16.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" -dependencies = [ - "der", - "elliptic-curve", - "rfc6979", - "signature 1.6.4", -] - -[[package]] -name = "ecdsa" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12844141594ad74185a926d030f3b605f6a903b4e3fec351f3ea338ac5b7637e" +checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" dependencies = [ "der", + "digest 0.10.7", "elliptic-curve", "rfc6979", "signature 2.0.0", + "spki", ] [[package]] @@ -1236,10 +1407,19 @@ name = "ed25519" version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +dependencies = [ + "signature 1.6.4", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ "pkcs8", "serde", - "signature 1.6.4", + "signature 2.0.0", ] [[package]] @@ -1248,15 +1428,29 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ - "curve25519-dalek", - "ed25519", + "curve25519-dalek 3.2.0", + "ed25519 1.5.3", "rand 0.7.3", "serde", - "serde_bytes", "sha2 0.9.9", "zeroize", ] +[[package]] +name = "ed25519-dalek" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7277392b266383ef8396db7fdeb1e77b6c52fed775f5df15bb24f35b72156980" +dependencies = [ + "curve25519-dalek 4.1.1", + "ed25519 2.2.3", + "rand_core 0.6.4", + "serde", + "sha2 0.10.8", + "signature 2.0.0", + "zeroize", +] + [[package]] name = "either" version = "1.9.0" @@ -1268,13 +1462,12 @@ dependencies = [ [[package]] name = "elliptic-curve" -version = "0.12.3" +version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" +checksum = "d97ca172ae9dc9f9b779a6e3a65d308f2af74e5b8c921299075bdb4a0370e914" dependencies = [ "base16ct", "crypto-bigint", - "der", "digest 0.10.7", "ff", "generic-array", @@ -1296,7 +1489,7 @@ dependencies = [ "futures", "helpers", "imbl", - "nix 0.25.1", + "nix 0.27.1", "procfs", "serde", "serde_json", @@ -1350,22 +1543,16 @@ dependencies = [ "cfg-if 1.0.0", ] -[[package]] -name = "endian-type" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" - [[package]] name = "enum-as-inner" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116" +checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" dependencies = [ "heck", - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 1.0.109", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] @@ -1383,12 +1570,12 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.9.3" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" dependencies = [ - "atty", "humantime 2.1.0", + "is-terminal", "log", "regex", "termcolor", @@ -1402,23 +1589,23 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" +checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" dependencies = [ - "errno-dragonfly", "libc", "windows-sys 0.48.0", ] [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "etcetera" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" dependencies = [ - "cc", - "libc", + "cfg-if 1.0.0", + "home", + "windows-sys 0.48.0", ] [[package]] @@ -1454,14 +1641,20 @@ dependencies = [ [[package]] name = "ff" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ "rand_core 0.6.4", "subtle", ] +[[package]] +name = "fiat-crypto" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0870c84016d4b481be5c9f323c24f65e31e901ae618f0e80f4308fb00de1d2d" + [[package]] name = "filetime" version = "0.2.22" @@ -1488,14 +1681,25 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "miniz_oxide", ] +[[package]] +name = "flume" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +dependencies = [ + "futures-core", + "futures-sink", + "spin 0.9.8", +] + [[package]] name = "fnv" version = "1.0.7" @@ -1537,14 +1741,14 @@ dependencies = [ [[package]] name = "from_variant" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d449976075322384507443937df2f1d5577afbf4282f12a5a66ef29fa3e6307" +checksum = "03ec5dc38ee19078d84a692b1c41181ff9f94331c76cee66ff0208c770b5e54f" dependencies = [ "pmutil", - "proc-macro2 1.0.67", + "proc-macro2", "swc_macros_common", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] @@ -1607,13 +1811,13 @@ dependencies = [ [[package]] name = "futures-intrusive" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604f7a68fbf8103337523b1fadc8ade7361ee3f112f7c680ad179651616aed5" +checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" dependencies = [ "futures-core", "lock_api", - "parking_lot 0.11.2", + "parking_lot", ] [[package]] @@ -1628,9 +1832,9 @@ version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.18", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] @@ -1671,6 +1875,7 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -1718,8 +1923,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe69f1cbdb6e28af2bac214e943b99ce8a0a06b447d15d3e61161b0423139f3f" dependencies = [ "proc-macro-hack", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -1735,7 +1940,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8283e7331b8c93b9756e0cfdbcfb90312852f953c6faf9bf741e684cc3b6ad69" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "crc", "log", "uuid", @@ -1743,9 +1948,9 @@ dependencies = [ [[package]] name = "group" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", "rand_core 0.6.4", @@ -1797,9 +2002,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" dependencies = [ "ahash 0.8.3", "allocator-api2", @@ -1811,7 +2016,20 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" dependencies = [ - "hashbrown 0.14.0", + "hashbrown 0.14.1", +] + +[[package]] +name = "hdrhistogram" +version = "7.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f19b9f54f7c7f55e31401bb647626ce0cf0f67b0004982ce815b3ee72a02aa8" +dependencies = [ + "base64 0.13.1", + "byteorder", + "flate2", + "nom 7.1.3", + "num-traits", ] [[package]] @@ -1978,6 +2196,18 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper", + "pin-project-lite", + "tokio", + "tokio-io-timeout", +] + [[package]] name = "hyper-tls" version = "0.5.0" @@ -1993,13 +2223,13 @@ dependencies = [ [[package]] name = "hyper-ws-listener" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3fb761e568fdb34ff794d284bfe1769efc5d16b9d716286451ab3a70ab82bea" +checksum = "dcbfe4981e45b0a7403a55d4af12f8d30e173e722409658c3857243990e72180" dependencies = [ "anyhow", - "base64 0.13.1", - "env_logger 0.9.3", + "base64 0.21.4", + "env_logger 0.10.0", "futures", "hyper", "log", @@ -2010,16 +2240,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.57" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows", + "windows-core", ] [[package]] @@ -2133,8 +2363,8 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", ] [[package]] @@ -2156,12 +2386,13 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad227c3af19d4914570ad36d30409928b75967c298feb9ea1969db3a610bb14e" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown 0.14.1", + "serde", ] [[package]] @@ -2178,6 +2409,15 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + [[package]] name = "instant" version = "0.1.12" @@ -2219,15 +2459,15 @@ dependencies = [ [[package]] name = "is-macro" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7d079e129b77477a49c5c4f1cfe9ce6c2c909ef52520693e8e811a714c7b20" +checksum = "f4467ed1321b310c2625c5aa6c1b1ffc5de4d9e42668cf697a08fb033ee8265e" dependencies = [ "Inflector", "pmutil", - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 1.0.109", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] @@ -2237,7 +2477,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ "hermit-abi 0.3.3", - "rustix 0.38.14", + "rustix 0.38.19", "windows-sys 0.48.0", ] @@ -2324,9 +2564,9 @@ dependencies = [ [[package]] name = "josekit" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33a96c4f2128a6f44ecf7c36df2b03dddf5a07b060a4d5ebc0a81e9821f7c60e" +checksum = "5754487a088f527b1407df470db8e654e4064dccbbe1fe850e0773721e9962b7" dependencies = [ "anyhow", "base64 0.21.4", @@ -2359,7 +2599,7 @@ dependencies = [ "deno_core", "embassy_container_init", "helpers", - "itertools 0.10.5", + "itertools 0.11.0", "lazy_static", "models", "pin-project", @@ -2430,7 +2670,7 @@ dependencies = [ "string_cache", "term", "tiny-keccak", - "unicode-xid 0.2.4", + "unicode-xid", ] [[package]] @@ -2444,9 +2684,9 @@ dependencies = [ [[package]] name = "lazy-regex" -version = "2.5.0" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff63c423c68ea6814b7da9e88ce585f793c87ddd9e78f646970891769c8235d4" +checksum = "e723bd417b2df60a0f6a2b6825f297ea04b245d4ba52b5a22cb679bdf58b05fa" dependencies = [ "lazy-regex-proc_macros", "once_cell", @@ -2455,14 +2695,14 @@ dependencies = [ [[package]] name = "lazy-regex-proc_macros" -version = "2.4.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8edfc11b8f56ce85e207e62ea21557cfa09bb24a8f6b04ae181b086ff8611c22" +checksum = "0f0a1d9139f0ee2e862e08a9c5d0ba0470f2aa21cd1e1aa1b1562f83116c725f" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "regex", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] @@ -2481,7 +2721,7 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" dependencies = [ - "spin", + "spin 0.5.2", ] [[package]] @@ -2490,84 +2730,11 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" -[[package]] -name = "lexical" -version = "6.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7aefb36fd43fef7003334742cbf77b243fcd36418a1d1bdd480d613a67968f6" -dependencies = [ - "lexical-core", -] - -[[package]] -name = "lexical-core" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" -dependencies = [ - "lexical-parse-float", - "lexical-parse-integer", - "lexical-util", - "lexical-write-float", - "lexical-write-integer", -] - -[[package]] -name = "lexical-parse-float" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" -dependencies = [ - "lexical-parse-integer", - "lexical-util", - "static_assertions", -] - -[[package]] -name = "lexical-parse-integer" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" -dependencies = [ - "lexical-util", - "static_assertions", -] - -[[package]] -name = "lexical-util" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" -dependencies = [ - "static_assertions", -] - -[[package]] -name = "lexical-write-float" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" -dependencies = [ - "lexical-util", - "lexical-write-integer", - "static_assertions", -] - -[[package]] -name = "lexical-write-integer" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" -dependencies = [ - "lexical-util", - "static_assertions", -] - [[package]] name = "libc" -version = "0.2.148" +version = "0.2.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" +checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" [[package]] name = "libloading" @@ -2581,9 +2748,20 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libsqlite3-sys" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afc22eff61b133b115c6e8c74e818c628d6d5e7a502afea6f64dee076dd94326" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] [[package]] name = "linux-raw-sys" @@ -2593,15 +2771,15 @@ checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" [[package]] name = "linux-raw-sys" -version = "0.4.7" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128" +checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", @@ -2628,6 +2806,12 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + [[package]] name = "mbrman" version = "0.5.2" @@ -2641,17 +2825,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "md-5" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15" -dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "opaque-debug", -] - [[package]] name = "md-5" version = "0.10.6" @@ -2664,9 +2837,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.6.3" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "memoffset" @@ -2724,7 +2897,7 @@ version = "0.1.0" dependencies = [ "base64 0.21.4", "color-eyre", - "ed25519-dalek", + "ed25519-dalek 2.0.0", "emver", "ipnet", "lazy_static", @@ -2780,15 +2953,6 @@ dependencies = [ "unicase", ] -[[package]] -name = "nibble_vec" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" -dependencies = [ - "smallvec", -] - [[package]] name = "nix" version = "0.24.3" @@ -2801,20 +2965,6 @@ dependencies = [ "memoffset 0.6.5", ] -[[package]] -name = "nix" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if 1.0.0", - "libc", - "memoffset 0.6.5", - "pin-utils", -] - [[package]] name = "nix" version = "0.26.4" @@ -2828,6 +2978,17 @@ dependencies = [ "pin-utils", ] +[[package]] +name = "nix" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +dependencies = [ + "bitflags 2.4.1", + "cfg-if 1.0.0", + "libc", +] + [[package]] name = "nom" version = "5.1.3" @@ -2946,9 +3107,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", "libm", @@ -2966,23 +3127,23 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.11" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +checksum = "70bf6736f74634d299d00086f02986875b3c2d924781a6a2cb6c201e73da0ceb" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.11" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +checksum = "56ea360eafe1022f7cc56cd7b869ed57330fb2453d0c7831d99b74c65d2f5597" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 1.0.109", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] @@ -3014,14 +3175,14 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssh-keys" -version = "0.5.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7249a699cdeea261ac73f1bf9350777cb867324f44373aafb5a287365bf1771" +checksum = "c75a0ec2d1b302412fb503224289325fcc0e44600176864804c7211b055cfd58" dependencies = [ - "base64 0.13.1", + "base64 0.21.4", "byteorder", - "md-5 0.9.1", - "sha2 0.9.9", + "md-5", + "sha2 0.10.8", "thiserror", ] @@ -3031,7 +3192,7 @@ version = "0.10.57" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "cfg-if 1.0.0", "foreign-types", "libc", @@ -3046,9 +3207,9 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.18", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] @@ -3081,9 +3242,9 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.5.1" +version = "6.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" [[package]] name = "overload" @@ -3099,22 +3260,11 @@ checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" [[package]] name = "p256" -version = "0.11.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" dependencies = [ - "ecdsa 0.14.8", - "elliptic-curve", - "sha2 0.10.8", -] - -[[package]] -name = "p256" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49c124b3cbce43bcbac68c58ec181d98ed6cc7e6d0aa7c3ba97b2563410b0e55" -dependencies = [ - "ecdsa 0.15.1", + "ecdsa", "elliptic-curve", "primeorder", "sha2 0.10.8", @@ -3122,26 +3272,16 @@ dependencies = [ [[package]] name = "p384" -version = "0.11.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc8c5bf642dde52bb9e87c0ecd8ca5a76faac2eeed98dedb7c717997e1080aa" +checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209" dependencies = [ - "ecdsa 0.14.8", + "ecdsa", "elliptic-curve", + "primeorder", "sha2 0.10.8", ] -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", -] - [[package]] name = "parking_lot" version = "0.12.1" @@ -3149,47 +3289,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.8", + "parking_lot_core", ] [[package]] name = "parking_lot_core" -version = "0.8.6" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if 1.0.0", - "instant", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "winapi", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.3.5", + "redox_syscall 0.4.1", "smallvec", "windows-targets 0.48.5", ] -[[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 = "paste" version = "1.0.14" @@ -3223,7 +3338,7 @@ name = "patch-db-macro" version = "0.1.0" dependencies = [ "patch-db-macro-internals", - "proc-macro2 1.0.67", + "proc-macro2", "syn 1.0.109", ] @@ -3232,8 +3347,8 @@ name = "patch-db-macro-internals" version = "0.1.0" dependencies = [ "heck", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -3245,14 +3360,12 @@ checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" [[package]] name = "pbkdf2" -version = "0.11.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ "digest 0.10.7", "hmac 0.12.1", - "password-hash", - "sha2 0.10.8", ] [[package]] @@ -3263,9 +3376,9 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" [[package]] name = "pem-rfc7468" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d159833a9105500e0398934e205e0773f0b27529557134ecfc51c27646adac" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" dependencies = [ "base64ct", ] @@ -3283,7 +3396,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 2.0.1", + "indexmap 2.0.2", ] [[package]] @@ -3316,8 +3429,8 @@ dependencies = [ "phf_generator", "phf_shared", "proc-macro-hack", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -3345,9 +3458,9 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.18", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] @@ -3364,21 +3477,20 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkcs1" -version = "0.4.1" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff33bdbdfc54cc98a2eca766ebdec3e1b8fb7387523d5c9c9a2891da856f719" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" dependencies = [ "der", "pkcs8", "spki", - "zeroize", ] [[package]] name = "pkcs8" -version = "0.9.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ "der", "spki", @@ -3391,14 +3503,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] -name = "pmutil" -version = "0.5.3" +name = "platforms" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3894e5d549cccbe44afecf72922f277f603cd4bb0219c8342631ef18fffbe004" +checksum = "4503fa043bf02cee09a9582e9554b4c6403b2ef55e4612e96561d294419429f8" + +[[package]] +name = "pmutil" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52a40bc70c2c58040d2d8b167ba9a5ff59fc9dab7ad44771cfde3dcfde7a09c6" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 1.0.109", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] @@ -3407,6 +3525,12 @@ version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "31114a898e107c51bb1609ffaf55a0e011cf6a4d7f1170d0015a165082c0338b" +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -3435,9 +3559,9 @@ dependencies = [ [[package]] name = "primeorder" -version = "0.12.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b54f7131b3dba65a2f414cf5bd25b66d4682e4608610668eae785750ba4c5b2" +checksum = "3c2fcef82c0ec6eefcc179b978446c399b3cdf73c392c35604e399eee6df1ee3" dependencies = [ "elliptic-curve", ] @@ -3449,7 +3573,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "toml_edit", + "toml_edit 0.19.15", ] [[package]] @@ -3460,27 +3584,18 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "0.4.30" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -dependencies = [ - "unicode-xid 0.1.0", -] - -[[package]] -name = "proc-macro2" -version = "1.0.67" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] [[package]] name = "procfs" -version = "0.14.2" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1de8dacb0873f77e6aefc6d71e044761fcc68060290f5b1089fcdf84626bb69" +checksum = "943ca7f9f29bab5844ecd8fdb3992c5969b6622bb9609b9502fef9b4310e3f1f" dependencies = [ "bitflags 1.3.2", "byteorder", @@ -3488,24 +3603,24 @@ dependencies = [ "flate2", "hex", "lazy_static", - "rustix 0.36.15", + "rustix 0.36.16", ] [[package]] name = "proptest" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e35c06b98bf36aba164cc17cb25f7e232f5c4aeea73baa14b8a9f0d92dbfa65" +checksum = "7c003ac8c77cb07bb74f5f198bce836a689bcd5a42574612bf14d17bfd08c20e" dependencies = [ "bit-set", - "bitflags 1.3.2", - "byteorder", + "bit-vec", + "bitflags 2.4.1", "lazy_static", "num-traits", "rand 0.8.5", "rand_chacha 0.3.1", "rand_xorshift", - "regex-syntax 0.6.29", + "regex-syntax 0.7.5", "rusty-fork", "tempfile", "unarray", @@ -3513,13 +3628,45 @@ dependencies = [ [[package]] name = "proptest-derive" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90b46295382dc76166cb7cf2bb4a97952464e4b7ed5a43e6cd34e1fec3349ddc" +checksum = "9cf16337405ca084e9c78985114633b6827711d22b9e6ef6c6c0d665eb3f0b6e" dependencies = [ - "proc-macro2 0.4.30", - "quote 0.6.13", - "syn 0.15.44", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "prost" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4fdd22f3b9c31b53c060df4a0613a1c7f062d4115a2b984dd15b1858f7e340d" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "265baba7fabd416cf5078179f7d2cbeca4ce7a9041111900675ea7c4cb8a4c32" +dependencies = [ + "anyhow", + "itertools 0.11.0", + "proc-macro2", + "quote", + "syn 2.0.38", +] + +[[package]] +name = "prost-types" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e081b29f63d83a4bc75cfc9f3fe424f9156cf92d8a4f0c9407cce9a1b67327cf" +dependencies = [ + "prost", ] [[package]] @@ -3553,22 +3700,13 @@ version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" -[[package]] -name = "quote" -version = "0.6.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" -dependencies = [ - "proc-macro2 0.4.30", -] - [[package]] name = "quote" version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ - "proc-macro2 1.0.67", + "proc-macro2", ] [[package]] @@ -3577,16 +3715,6 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" -[[package]] -name = "radix_trie" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" -dependencies = [ - "endian-type", - "nibble_vec", -] - [[package]] name = "rand" version = "0.7.3" @@ -3700,6 +3828,15 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "redox_users" version = "0.4.3" @@ -3713,14 +3850,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.9.5" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.3.8", - "regex-syntax 0.7.5", + "regex-automata 0.4.3", + "regex-syntax 0.8.2", ] [[package]] @@ -3734,13 +3871,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.8" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.5", + "regex-syntax 0.8.2", ] [[package]] @@ -3756,14 +3893,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] -name = "reqwest" -version = "0.11.20" +name = "regex-syntax" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "reqwest" +version = "0.11.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ "base64 0.21.4", "bytes", - "cookie", + "cookie 0.16.2", "cookie_store 0.16.2", "encoding_rs", "futures-core", @@ -3784,6 +3927,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", + "system-configuration", "tokio", "tokio-native-tls", "tokio-socks", @@ -3799,26 +3943,24 @@ dependencies = [ [[package]] name = "reqwest_cookie_store" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06b407c05de7a0f7e4cc2a56af5e9bd6468e509124e81078ce1f8bc2ed3536bf" +checksum = "ba529055ea150e42e4eb9c11dcd380a41025ad4d594b0cb4904ef28b037e1061" dependencies = [ "bytes", - "cookie", - "cookie_store 0.19.1", + "cookie_store 0.20.0", "reqwest", "url", ] [[package]] name = "rfc6979" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" dependencies = [ - "crypto-bigint", "hmac 0.12.1", - "zeroize", + "subtle", ] [[package]] @@ -3830,7 +3972,7 @@ dependencies = [ "cc", "libc", "once_cell", - "spin", + "spin 0.5.2", "untrusted", "web-sys", "winapi", @@ -3875,7 +4017,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8e4b9cb00baf2d61bcd35e98d67dcb760382a3b4540df7e63b38d053c8a7b8b" dependencies = [ - "proc-macro2 1.0.67", + "proc-macro2", "rpc-toolkit-macro-internals", "syn 1.0.109", ] @@ -3886,18 +4028,19 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3e2ce21b936feaecdab9c9a8e75b9dca64374ccc11951a58045ad6559b75f42" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "syn 1.0.109", ] [[package]] name = "rsa" -version = "0.7.2" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "094052d5470cbcef561cb848a7209968c9f12dfa6d668f4bca048ac5de51099c" +checksum = "6ab43bb47d23c1a631b4b680199a45255dce26fa9ab2fa902581f624ff13e6a8" dependencies = [ "byteorder", + "const-oid", "digest 0.10.7", "num-bigint-dig", "num-integer", @@ -3906,8 +4049,9 @@ dependencies = [ "pkcs1", "pkcs8", "rand_core 0.6.4", - "signature 1.6.4", - "smallvec", + "sha2 0.10.8", + "signature 2.0.0", + "spki", "subtle", "zeroize", ] @@ -3924,14 +4068,13 @@ dependencies = [ [[package]] name = "rust-argon2" -version = "1.0.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5885493fdf0be6cdff808d1533ce878d21cfa49c7086fa00c66355cd9141bfc" +checksum = "1e71971821b3ae0e769e4a4328dbcb517607b434db7697e9aba17203ec14e46a" dependencies = [ "base64 0.21.4", "blake2b_simd", "constant_time_eq", - "crossbeam-utils", ] [[package]] @@ -3961,14 +4104,14 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.19", + "semver 1.0.20", ] [[package]] name = "rustix" -version = "0.36.15" +version = "0.36.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c37f1bd5ef1b5422177b7646cba67430579cfe2ace80f284fee876bca52ad941" +checksum = "6da3636faa25820d8648e0e31c5d519bbb01f72fdf57131f0f5f7da5fed36eab" dependencies = [ "bitflags 1.3.2", "errno", @@ -3980,27 +4123,27 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.14" +version = "0.38.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "747c788e9ce8e92b12cd485c49ddf90723550b654b32508f979b71a7b1ecda4f" +checksum = "745ecfa778e66b2b63c88a61cb36e0eea109e803b0b86bf9879fbc77c70e86ed" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "errno", "libc", - "linux-raw-sys 0.4.7", + "linux-raw-sys 0.4.10", "windows-sys 0.48.0", ] [[package]] name = "rustls" -version = "0.20.9" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" +checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" dependencies = [ "log", "ring", + "rustls-webpki", "sct", - "webpki", ] [[package]] @@ -4012,6 +4155,16 @@ dependencies = [ "base64 0.21.4", ] +[[package]] +name = "rustls-webpki" +version = "0.101.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "rustversion" version = "1.0.14" @@ -4069,9 +4222,9 @@ dependencies = [ [[package]] name = "sec1" -version = "0.3.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ "base16ct", "der", @@ -4115,9 +4268,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "semver-parser" @@ -4127,9 +4280,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.164" +version = "1.0.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "8e422a44e74ad4001bdc8eede9a4570ab52f71190e9c076d14369f38b9200537" dependencies = [ "serde_derive", ] @@ -4145,9 +4298,9 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.10" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c5113243e4a3a1c96587342d067f3e6b0f50790b6cf40d2868eb647a3eef0e" +checksum = "ab33ec92f677585af6d88c65593ae2375adde54efdbf16d597f2cbc7a6d368ff" dependencies = [ "serde", ] @@ -4172,27 +4325,36 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "1e48d1f918009ce3145511378cf68d613e3b3d9137d67272562080d68a2b32d5" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.18", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] name = "serde_json" -version = "1.0.99" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" dependencies = [ - "indexmap 2.0.1", + "indexmap 2.0.2", "itoa", "ryu", "serde", ] +[[package]] +name = "serde_spanned" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +dependencies = [ + "serde", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -4207,9 +4369,9 @@ dependencies = [ [[package]] name = "serde_v8" -version = "0.106.0" +version = "0.131.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1506733ba5b864018c44320fa3bb11dbb4bf01b62dd09eda007be73034371c51" +checksum = "38cafa16d0a4288d75925351bb54d06d2e830118ad3fad393947bb11f91b18f3" dependencies = [ "bytes", "derive_more", @@ -4223,14 +4385,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "2.3.3" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07ff71d2c147a7b57362cead5e22f772cd52f6ab31cfcd9edcd7f6aeb2a0afbe" +checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" dependencies = [ - "base64 0.13.1", + "base64 0.21.4", "chrono", "hex", "indexmap 1.9.3", + "indexmap 2.0.2", "serde", "serde_json", "serde_with_macros", @@ -4239,14 +4402,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "2.3.3" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" +checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" dependencies = [ "darling", - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.18", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] @@ -4255,7 +4418,7 @@ version = "0.9.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574" dependencies = [ - "indexmap 2.0.1", + "indexmap 2.0.2", "itoa", "ryu", "serde", @@ -4322,9 +4485,9 @@ dependencies = [ [[package]] name = "sharded-slab" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1b21f559e07218024e7e9f90f96f601825397de0e25420135f7f952453fed0b" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ "lazy_static", ] @@ -4349,10 +4512,6 @@ name = "signature" version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" -dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", -] [[package]] name = "signature" @@ -4443,6 +4602,22 @@ dependencies = [ "url", ] +[[package]] +name = "sourcemap" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbecc42a2b6131acc3bf9a25c9fe4161dba438eb52131bba83c5d781b5b70be3" +dependencies = [ + "data-encoding", + "debugid", + "if_chain", + "rustc_version 0.2.3", + "serde", + "serde_json", + "unicode-id", + "url", +] + [[package]] name = "spin" version = "0.5.2" @@ -4450,10 +4625,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] -name = "spki" -version = "0.6.0" +name = "spin" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" dependencies = [ "base64ct", "der", @@ -4472,106 +4656,248 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.6.3" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8de3b03a925878ed54a954f621e64bf55a3c1bd29652d0d1a17830405350188" +checksum = "0e50c216e3624ec8e7ecd14c6a6a6370aad6ee5d8cfc3ab30b5162eeeef2ed33" dependencies = [ "sqlx-core", "sqlx-macros", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", ] [[package]] name = "sqlx-core" -version = "0.6.3" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa8241483a83a3f33aa5fff7e7d9def398ff9990b2752b6c6112b83c6d246029" +checksum = "8d6753e460c998bbd4cd8c6f0ed9a64346fcca0723d6e75e52fdc351c5d2169d" dependencies = [ - "ahash 0.7.6", + "ahash 0.8.3", "atoi", - "base64 0.13.1", - "bitflags 1.3.2", "byteorder", "bytes", "chrono", "crc", "crossbeam-queue", - "dirs", "dotenvy", "either", "event-listener", "futures-channel", "futures-core", "futures-intrusive", + "futures-io", "futures-util", "hashlink", "hex", - "hkdf", - "hmac 0.12.1", - "indexmap 1.9.3", - "itoa", - "libc", + "indexmap 2.0.2", "log", - "md-5 0.10.6", "memchr", "once_cell", "paste", "percent-encoding", - "rand 0.8.5", "rustls", "rustls-pemfile", "serde", "serde_json", - "sha1", "sha2 0.10.8", "smallvec", "sqlformat", - "sqlx-rt", - "stringprep", "thiserror", + "tokio", "tokio-stream", + "tracing", "url", "webpki-roots", - "whoami", ] [[package]] name = "sqlx-macros" -version = "0.6.3" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9966e64ae989e7e575b19d7265cb79d7fc3cbbdf179835cb0d716f294c2049c9" +checksum = "9a793bb3ba331ec8359c1853bd39eed32cdd7baaf22c35ccf5c92a7e8d1189ec" +dependencies = [ + "proc-macro2", + "quote", + "sqlx-core", + "sqlx-macros-core", + "syn 1.0.109", +] + +[[package]] +name = "sqlx-macros-core" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a4ee1e104e00dedb6aa5ffdd1343107b0a4702e862a84320ee7cc74782d96fc" dependencies = [ "dotenvy", "either", "heck", "hex", "once_cell", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "serde", "serde_json", "sha2 0.10.8", "sqlx-core", - "sqlx-rt", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", "syn 1.0.109", + "tempfile", + "tokio", "url", ] [[package]] -name = "sqlx-rt" -version = "0.6.3" +name = "sqlx-mysql" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "804d3f245f894e61b1e6263c84b23ca675d96753b5abfd5cc8597d86806e8024" +checksum = "864b869fdf56263f4c95c45483191ea0af340f9f3e3e7b4d57a61c7c87a970db" dependencies = [ + "atoi", + "base64 0.21.4", + "bitflags 2.4.1", + "byteorder", + "bytes", + "chrono", + "crc", + "digest 0.10.7", + "dotenvy", + "either", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "generic-array", + "hex", + "hkdf", + "hmac 0.12.1", + "itoa", + "log", + "md-5", + "memchr", "once_cell", - "tokio", - "tokio-rustls", + "percent-encoding", + "rand 0.8.5", + "rsa", + "serde", + "sha1", + "sha2 0.10.8", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-postgres" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb7ae0e6a97fb3ba33b23ac2671a5ce6e3cabe003f451abd5a56e7951d975624" +dependencies = [ + "atoi", + "base64 0.21.4", + "bitflags 2.4.1", + "byteorder", + "chrono", + "crc", + "dotenvy", + "etcetera", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "hex", + "hkdf", + "hmac 0.12.1", + "home", + "itoa", + "log", + "md-5", + "memchr", + "once_cell", + "rand 0.8.5", + "serde", + "serde_json", + "sha1", + "sha2 0.10.8", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-sqlite" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59dc83cf45d89c555a577694534fcd1b55c545a816c816ce51f20bbe56a4f3f" +dependencies = [ + "atoi", + "chrono", + "flume", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "libsqlite3-sys", + "log", + "percent-encoding", + "serde", + "sqlx-core", + "tracing", + "url", +] + +[[package]] +name = "sscanf" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c713ebd15ce561dd4a13ed62bc2a0368e16806fc30dcaf66ecf1256b2a3fdde6" +dependencies = [ + "const_format", + "lazy_static", + "regex", + "sscanf_macro", +] + +[[package]] +name = "sscanf_macro" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84955aa74a157e5834d58a07be11af7f0ab923f0194a0bb2ea6b3db8b5d1611d" +dependencies = [ + "convert_case 0.6.0", + "proc-macro2", + "quote", + "regex-syntax 0.6.29", + "strsim 0.10.0", + "syn 2.0.38", + "unicode-width", +] + +[[package]] +name = "ssh-cipher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caac132742f0d33c3af65bfcde7f6aa8f62f0e991d80db99149eb9d44708784f" +dependencies = [ + "cipher 0.4.4", + "ssh-encoding", ] [[package]] name = "ssh-encoding" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19cfdc32e0199062113edf41f344fbf784b8205a94600233c84eb838f45191e1" +checksum = "eb9242b9ef4108a78e8cd1a2c98e193ef372437f8c22be363075233321dd4a15" dependencies = [ "base64ct", "pem-rfc7468", @@ -4580,19 +4906,21 @@ dependencies = [ [[package]] name = "ssh-key" -version = "0.5.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "288d8f5562af5a3be4bda308dd374b2c807b940ac370b5efa1c99311da91d9a1" +checksum = "2180b3bc4955efd5661a97658d3cf4c8107e0d132f619195afe9486c13cca313" dependencies = [ - "ed25519-dalek", - "p256 0.11.1", + "ed25519-dalek 2.0.0", + "p256", "p384", "rand_core 0.6.4", "rsa", "sec1", "sha2 0.10.8", - "signature 1.6.4", + "signature 2.0.0", + "ssh-cipher", "ssh-encoding", + "subtle", "zeroize", ] @@ -4617,7 +4945,7 @@ dependencies = [ [[package]] name = "start-os" -version = "0.3.4-rev.4" +version = "0.3.5" dependencies = [ "aes", "async-compression", @@ -4625,7 +4953,7 @@ dependencies = [ "async-trait", "avahi-sys", "base32", - "base64 0.13.1", + "base64 0.21.4", "base64ct", "basic-cookies", "bimap", @@ -4635,14 +4963,14 @@ dependencies = [ "clap 3.2.25", "color-eyre", "console", - "cookie", - "cookie_store 0.19.1", + "console-subscriber", + "cookie 0.18.0", + "cookie_store 0.20.0", "current_platform", "digest 0.10.7", - "digest 0.9.0", "divrem", - "ed25519", - "ed25519-dalek", + "ed25519 2.2.3", + "ed25519-dalek 2.0.0", "embassy_container_init", "emver", "fd-lock-rs", @@ -4659,12 +4987,12 @@ dependencies = [ "imbl", "imbl-value", "include_dir", - "indexmap 1.9.3", + "indexmap 2.0.2", "indicatif", "ipnet", "iprange", "isocountry", - "itertools 0.10.5", + "itertools 0.11.0", "jaq-core", "jaq-std", "josekit", @@ -4676,13 +5004,13 @@ dependencies = [ "mbrman", "models", "new_mime_guess", - "nix 0.25.1", + "nix 0.27.1", "nom 7.1.3", "num", "num_enum", "openssh-keys", "openssl", - "p256 0.12.0", + "p256", "patch-db", "pbkdf2", "pin-project", @@ -4690,7 +5018,6 @@ dependencies = [ "prettytable-rs", "proptest", "proptest-derive", - "rand 0.7.3", "rand 0.8.5", "regex", "reqwest", @@ -4704,9 +5031,9 @@ dependencies = [ "serde_with", "serde_yaml", "sha2 0.10.8", - "sha2 0.9.9", "simple-logging", "sqlx", + "sscanf", "ssh-key", "stderrlog", "tar", @@ -4718,11 +5045,12 @@ dependencies = [ "tokio-tar", "tokio-tungstenite", "tokio-util", - "toml", + "toml 0.8.2", "torut", "tracing", "tracing-error", "tracing-futures", + "tracing-journald", "tracing-subscriber", "trust-dns-server", "typed-builder", @@ -4759,7 +5087,7 @@ checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" dependencies = [ "new_debug_unreachable", "once_cell", - "parking_lot 0.12.1", + "parking_lot", "phf_shared", "precomputed-hash", "serde", @@ -4773,21 +5101,21 @@ checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" dependencies = [ "phf_generator", "phf_shared", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", ] [[package]] name = "string_enum" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0090512bdfee4b56d82480d66c0fd8a6f53f0fe0f97e075e949b252acdd482e0" +checksum = "8fa4d4f81d7c05b9161f8de839975d3326328b8ba2831164b465524cc2f55252" dependencies = [ "pmutil", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "swc_macros_common", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] @@ -4815,24 +5143,24 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "strum" -version = "0.24.1" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.24.3" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" dependencies = [ "heck", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "rustversion", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] @@ -4843,9 +5171,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "swc_atoms" -version = "0.5.6" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d0307dc4bfd107d49c7528350c372758cfca94fb503629b9a056e6a1572860" +checksum = "9f54563d7dcba626d4acfe14ed12def7ecc28e004debe3ecd2c3ee07cc47e449" dependencies = [ "once_cell", "rustc-hash", @@ -4857,11 +5185,10 @@ dependencies = [ [[package]] name = "swc_common" -version = "0.31.12" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19c774005489d2907fb67909cf42af926e72edee1366512777c605ba2ef19c94" +checksum = "39cb7fcd56655c8ae7dcf2344f0be6cbff4d9c7cb401fe3ec8e56e1de8dfe582" dependencies = [ - "ahash 0.7.6", "ast_node", "better_scoped_tls", "cfg-if 1.0.0", @@ -4873,7 +5200,7 @@ dependencies = [ "rustc-hash", "serde", "siphasher", - "sourcemap", + "sourcemap 6.4.1", "string_cache", "swc_atoms", "swc_eq_ignore_macros", @@ -4885,9 +5212,9 @@ dependencies = [ [[package]] name = "swc_config" -version = "0.1.5" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89c8fc2c12bb1634c7c32fc3c9b6b963ad8f034cc62c4ecddcf215dc4f6f959d" +checksum = "9ba1c7a40d38f9dd4e9a046975d3faf95af42937b34b2b963be4d8f01239584b" dependencies = [ "indexmap 1.9.3", "serde", @@ -4897,24 +5224,24 @@ dependencies = [ [[package]] name = "swc_config_macro" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dadb9998d4f5fc36ef558ed5a092579441579ee8c6fcce84a5228cca9df4004" +checksum = "e5b5aaca9a0082be4515f0fbbecc191bf5829cd25b5b9c0a2810f6a2bb0d6829" dependencies = [ "pmutil", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "swc_macros_common", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] name = "swc_ecma_ast" -version = "0.104.5" +version = "0.109.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5cf9dd351d0c285dcd36535267953a18995d4dda0cbe34ac9d1df61aa415b26" +checksum = "7bc2286cedd688a68f214faa1c19bb5cceab7c9c54d0cbe3273e4c1704e38f69" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "is-macro", "num-bigint", "scoped-tls", @@ -4927,16 +5254,16 @@ dependencies = [ [[package]] name = "swc_ecma_codegen" -version = "0.139.17" +version = "0.144.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66d1ea16bb9b7ea6f87f17325742ff256fcbd65b188af57c2bf415fe4afc945" +checksum = "8e62ba2c0ed1f119fc1a76542d007f1b2c12854d54dea15f5491363227debe11" dependencies = [ "memchr", "num-bigint", "once_cell", "rustc-hash", "serde", - "sourcemap", + "sourcemap 6.4.1", "swc_atoms", "swc_common", "swc_ecma_ast", @@ -4946,24 +5273,23 @@ dependencies = [ [[package]] name = "swc_ecma_codegen_macros" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ee0caee1018808d94ecd09490cb7affd3d504b19aa11c49238f5fc4b54901" +checksum = "dcdff076dccca6cc6a0e0b2a2c8acfb066014382bc6df98ec99e755484814384" dependencies = [ "pmutil", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "swc_macros_common", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] name = "swc_ecma_loader" -version = "0.43.14" +version = "0.44.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe45f1e5dcc1b005544ff78253b787dea5dfd5e2f712b133964cdc3545c954a4" +checksum = "e7d7c322462657ae27ac090a2c89f7e456c94416284a2f5ecf66c43a6a3c19d1" dependencies = [ - "ahash 0.7.6", "anyhow", "pathdiff", "serde", @@ -4973,13 +5299,13 @@ dependencies = [ [[package]] name = "swc_ecma_parser" -version = "0.134.12" +version = "0.139.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a3fcfe3d83dd445cbd9321882e47b467594433d9a21c4d6c37a27f534bb89e" +checksum = "3eab46cb863bc5cd61535464e07e5b74d5f792fa26a27b9f6fd4c8daca9903b7" dependencies = [ "either", - "lexical", "num-bigint", + "num-traits", "serde", "smallvec", "smartstring", @@ -4993,12 +5319,12 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_base" -version = "0.127.18" +version = "0.132.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9c33ec5369178f3a0580ab86cfe89ffb9c3fbd122aed379cfb71d469d9d61c1" +checksum = "01ffd4a8149052bfc1ec1832fcbe04f317846ce635a49ec438df33b06db27d26" dependencies = [ "better_scoped_tls", - "bitflags 2.4.0", + "bitflags 2.4.1", "indexmap 1.9.3", "once_cell", "phf", @@ -5016,9 +5342,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_classes" -version = "0.116.18" +version = "0.121.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e3b0d5f362f0da97be1f1b06d7b0d8667ea70b4adeabff0dcaecb6259c09525" +checksum = "f4b7fee0e2c6f12456d2aefb2418f2f26529b995945d493e1dce35a5a22584fc" dependencies = [ "swc_atoms", "swc_common", @@ -5030,22 +5356,22 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_macros" -version = "0.5.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "984d5ac69b681fc5438f9abf82b0fda34fe04e119bc75f8213b7e01128c7c9a2" +checksum = "8188eab297da773836ef5cf2af03ee5cca7a563e1be4b146f8141452c28cc690" dependencies = [ "pmutil", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "swc_macros_common", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] name = "swc_ecma_transforms_proposal" -version = "0.161.22" +version = "0.166.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cdce42d44ef775bc29f5ada3678a80ff72fa17a0ef705e14f63cfd0e0155e0e" +checksum = "122fd9a69f464694edefbf9c59106b3c15e5cc8cb8575a97836e4fb79018e98f" dependencies = [ "either", "rustc-hash", @@ -5063,11 +5389,10 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_react" -version = "0.173.20" +version = "0.178.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fb9481ad4e2acba34c6fbb6d4ccc64efe9f1821675e883dcfa732d7220f4b1e" +checksum = "675b5c755b0448268830e85e59429095d3423c0ce4a850b209c6f0eeab069f63" dependencies = [ - "ahash 0.7.6", "base64 0.13.1", "dashmap", "indexmap 1.9.3", @@ -5088,9 +5413,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_typescript" -version = "0.177.23" +version = "0.182.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fe2eea4f5b8a25c93cdaa29fb1ce4108893da88a11e61e04b7f5295b5468829" +checksum = "4eba97b1ea71739fcf278aedad4677a3cacb52288a3f3566191b70d16a889de6" dependencies = [ "serde", "swc_atoms", @@ -5104,9 +5429,9 @@ dependencies = [ [[package]] name = "swc_ecma_utils" -version = "0.117.13" +version = "0.122.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad791bbfdafcebd878584021e050964c8ab68aba7eeac9d0ee4afba4c284a629" +checksum = "11006a3398ffd4693c4d3b0a1b1a5030edbdc04228159f5301120a6178144708" dependencies = [ "indexmap 1.9.3", "num_cpus", @@ -5122,9 +5447,9 @@ dependencies = [ [[package]] name = "swc_ecma_visit" -version = "0.90.5" +version = "0.95.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce3ac941ae1d6c7e683aa375fc71fbf58df58b441f614d757fbb10554936ca2" +checksum = "0f628ec196e76e67892441e14eef2e423a738543d32bffdabfeec20c29582117" dependencies = [ "num-bigint", "swc_atoms", @@ -5136,33 +5461,33 @@ dependencies = [ [[package]] name = "swc_eq_ignore_macros" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c20468634668c2bbab581947bb8c75c97158d5a6959f4ba33df20983b20b4f6" +checksum = "05a95d367e228d52484c53336991fdcf47b6b553ef835d9159db4ba40efb0ee8" dependencies = [ "pmutil", - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 1.0.109", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] name = "swc_macros_common" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e582c3e3c2269238524923781df5be49e011dbe29cf7683a2215d600a562ea6" +checksum = "7a273205ccb09b51fabe88c49f3b34c5a4631c4c00a16ae20e03111d6a42e832" dependencies = [ "pmutil", - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 1.0.109", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] name = "swc_visit" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f412dd4fbc58f509a04e64f5c8038333142fc139e8232f01b883db0094b3b51" +checksum = "e87c337fbb2d191bf371173dea6a957f01899adb8f189c6c31b122a6cfc98fc3" dependencies = [ "either", "swc_visit_macros", @@ -5170,27 +5495,16 @@ dependencies = [ [[package]] name = "swc_visit_macros" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cfc226380ba54a5feed2c12f3ccd33f1ae8e959160290e5d2d9b4e918b6472a" +checksum = "0f322730fb82f3930a450ac24de8c98523af7d34ab8cb2f46bcb405839891a99" dependencies = [ "Inflector", "pmutil", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "swc_macros_common", - "syn 1.0.109", -] - -[[package]] -name = "syn" -version = "0.15.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" -dependencies = [ - "proc-macro2 0.4.30", - "quote 0.6.13", - "unicode-xid 0.1.0", + "syn 2.0.38", ] [[package]] @@ -5199,22 +5513,49 @@ version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "unicode-ident", ] [[package]] name = "syn" -version = "2.0.18" +version = "2.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2", + "quote", "unicode-ident", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tap" version = "1.0.1" @@ -5241,7 +5582,7 @@ dependencies = [ "cfg-if 1.0.0", "fastrand", "redox_syscall 0.3.5", - "rustix 0.38.14", + "rustix 0.38.19", "windows-sys 0.48.0", ] @@ -5291,22 +5632,22 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.18", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] @@ -5332,12 +5673,13 @@ dependencies = [ [[package]] name = "time" -version = "0.3.26" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a79d09ac6b08c1ab3906a2f7cc2e81a0e27c7ae89c63812df75e52bef0751e07" +checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" dependencies = [ "deranged", "itoa", + "powerfmt", "serde", "time-core", "time-macros", @@ -5345,15 +5687,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75c65469ed6b3a4809d987a41eb1dc918e9bc1d92211cbad7ae82931846f7451" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" dependencies = [ "time-core", ] @@ -5384,32 +5726,43 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.32.0" +version = "1.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" dependencies = [ "backtrace", "bytes", "libc", "mio", "num_cpus", - "parking_lot 0.12.1", + "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2 0.5.4", "tokio-macros", + "tracing", "windows-sys 0.48.0", ] +[[package]] +name = "tokio-io-timeout" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" +dependencies = [ + "pin-project-lite", + "tokio", +] + [[package]] name = "tokio-macros" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.18", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] @@ -5424,13 +5777,12 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.23.4" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ "rustls", "tokio", - "webpki", ] [[package]] @@ -5473,9 +5825,9 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.17.2" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f714dd15bead90401d77e04243611caec13726c2408afd5b31901dfcdcb3b181" +checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" dependencies = [ "futures-util", "log", @@ -5501,11 +5853,26 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.11" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" dependencies = [ "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.19.15", +] + +[[package]] +name = "toml" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.20.2", ] [[package]] @@ -5513,6 +5880,9 @@ name = "toml_datetime" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] [[package]] name = "toml_edit" @@ -5520,11 +5890,53 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.0.1", + "indexmap 2.0.2", + "serde", + "serde_spanned", "toml_datetime", "winnow", ] +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap 2.0.2", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tonic" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d560933a0de61cf715926b9cac824d4c883c2c43142f787595e48280c40a1d0e" +dependencies = [ + "async-stream", + "async-trait", + "axum", + "base64 0.21.4", + "bytes", + "h2", + "http", + "http-body", + "hyper", + "hyper-timeout", + "percent-encoding", + "pin-project", + "prost", + "tokio", + "tokio-stream", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "torut" version = "0.2.1" @@ -5534,7 +5946,7 @@ dependencies = [ "base32", "base64 0.13.1", "derive_more", - "ed25519-dalek", + "ed25519-dalek 1.0.1", "hex", "hmac 0.11.0", "rand 0.7.3", @@ -5545,6 +5957,32 @@ dependencies = [ "tokio", ] +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + [[package]] name = "tower-service" version = "0.3.2" @@ -5553,11 +5991,11 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "ee2ef2af84856a50c1d430afce2fdded0a4ec7eda868db86409b4543df0797f9" dependencies = [ - "cfg-if 1.0.0", + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -5565,20 +6003,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.18", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", @@ -5604,6 +6042,17 @@ dependencies = [ "tracing", ] +[[package]] +name = "tracing-journald" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba316a74e8fc3c3896a850dba2375928a9fa171b085ecddfc7c054d39970f3fd" +dependencies = [ + "libc", + "tracing-core", + "tracing-subscriber", +] + [[package]] name = "tracing-log" version = "0.1.3" @@ -5652,31 +6101,11 @@ dependencies = [ "stable_deref_trait", ] -[[package]] -name = "trust-dns-client" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c408c32e6a9dbb38037cece35740f2cf23c875d8ca134d33631cec83f74d3fe" -dependencies = [ - "cfg-if 1.0.0", - "data-encoding", - "futures-channel", - "futures-util", - "lazy_static", - "radix_trie", - "rand 0.8.5", - "thiserror", - "time", - "tokio", - "tracing", - "trust-dns-proto", -] - [[package]] name = "trust-dns-proto" -version = "0.22.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f7f83d1e4a0e4358ac54c5c3681e5d7da5efc5a7a632c90bb6d6669ddd9bc26" +checksum = "559ac980345f7f5020883dd3bcacf176355225e01916f8c2efecad7534f682c6" dependencies = [ "async-trait", "cfg-if 1.0.0", @@ -5685,9 +6114,9 @@ dependencies = [ "futures-channel", "futures-io", "futures-util", - "idna 0.2.3", + "idna 0.4.0", "ipnet", - "lazy_static", + "once_cell", "rand 0.8.5", "smallvec", "thiserror", @@ -5699,13 +6128,14 @@ dependencies = [ [[package]] name = "trust-dns-server" -version = "0.22.1" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99022f9befa6daec2a860be68ac28b1f0d9d7ccf441d8c5a695e35a58d88840d" +checksum = "f4307166910ddf09378e651e9d4730c44900e9e0e1f157a6b955e48b539cd1d6" dependencies = [ "async-trait", "bytes", "cfg-if 1.0.0", + "drain", "enum-as-inner", "futures-executor", "futures-util", @@ -5713,9 +6143,8 @@ dependencies = [ "thiserror", "time", "tokio", - "toml", + "toml 0.7.8", "tracing", - "trust-dns-client", "trust-dns-proto", ] @@ -5727,19 +6156,19 @@ checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "tungstenite" -version = "0.17.3" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e27992fd6a8c29ee7eef28fc78349aa244134e10ad447ce3b9f0ac0ed0fa4ce0" +checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" dependencies = [ - "base64 0.13.1", "byteorder", "bytes", + "data-encoding", "http", "httparse", "log", "native-tls", "rand 0.8.5", - "sha-1", + "sha1", "thiserror", "url", "utf-8", @@ -5753,13 +6182,22 @@ checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" [[package]] name = "typed-builder" -version = "0.10.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89851716b67b937e393b3daa8423e67ddfc4bbbf1654bcf05488e95e0828db0c" +checksum = "b1c6a006a6d3d6a6f143fda41cf4d1ad35110080687628c9f2117bd3cc7924f3" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 1.0.109", + "typed-builder-macro", +] + +[[package]] +name = "typed-builder-macro" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fa054ee5e2346187d631d2f1d1fd3b33676772d6d03a2d84e1c5213b31674ee" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] @@ -5822,12 +6260,6 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" -[[package]] -name = "unicode-xid" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" - [[package]] name = "unicode-xid" version = "0.2.4" @@ -5878,18 +6310,18 @@ checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] name = "uuid" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc" dependencies = [ "getrandom 0.2.10", ] [[package]] name = "v8" -version = "0.74.3" +version = "0.79.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eedac634b8dd39b889c5b62349cbc55913780226239166435c5cf66771792ea" +checksum = "b15561535230812a1db89a696f1f16a12ae6c2c370c6b2241c68d4cb33963faf" dependencies = [ "bitflags 1.3.2", "fslock", @@ -5970,9 +6402,9 @@ dependencies = [ "bumpalo", "log", "once_cell", - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.18", + "proc-macro2", + "quote", + "syn 2.0.38", "wasm-bindgen-shared", ] @@ -5994,7 +6426,7 @@ version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ - "quote 1.0.33", + "quote", "wasm-bindgen-macro-support", ] @@ -6004,9 +6436,9 @@ version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.18", + "proc-macro2", + "quote", + "syn 2.0.38", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -6040,23 +6472,13 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "webpki" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0e74f82d49d545ad128049b7e88f6576df2da6b02e9ce565c6f533be576957e" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "webpki-roots" -version = "0.22.6" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" +checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888" dependencies = [ - "webpki", + "rustls-webpki", ] [[package]] @@ -6077,7 +6499,7 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.14", + "rustix 0.38.19", ] [[package]] @@ -6085,10 +6507,6 @@ name = "whoami" version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50" -dependencies = [ - "wasm-bindgen", - "web-sys", -] [[package]] name = "winapi" @@ -6122,10 +6540,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows" -version = "0.48.0" +name = "windows-core" +version = "0.51.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" dependencies = [ "windows-targets 0.48.5", ] @@ -6264,9 +6682,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.5.15" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" +checksum = "a3b801d0e0a6726477cc207f60162da452f3a95adb368399bef20a946e06f65c" dependencies = [ "memchr", ] @@ -6358,7 +6776,7 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.18", + "proc-macro2", + "quote", + "syn 2.0.38", ] diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 754e6050f..2c99a79ed 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -14,7 +14,7 @@ keywords = [ name = "start-os" readme = "README.md" repository = "https://github.com/Start9Labs/start-os" -version = "0.3.4-rev.4" +version = "0.3.5" [lib] name = "startos" @@ -26,145 +26,150 @@ path = "src/main.rs" [features] avahi = ["avahi-sys"] -default = ["cli", "sdk", "daemon", "js_engine"] -dev = [] -unstable = ["patch-db/unstable"] avahi-alias = ["avahi"] cli = [] -sdk = [] daemon = [] +default = ["cli", "sdk", "daemon", "js_engine"] +dev = [] podman = [] +sdk = [] +unstable = ["console-subscriber", "tokio/tracing"] [dependencies] aes = { version = "0.7.5", features = ["ctr"] } -async-compression = { version = "0.3.15", features = [ +async-compression = { version = "0.4.4", features = [ "gzip", "brotli", "tokio", ] } -async-stream = "0.3.3" -async-trait = "0.1.56" +async-stream = "0.3.5" +async-trait = "0.1.74" avahi-sys = { git = "https://github.com/Start9Labs/avahi-sys", version = "0.10.0", branch = "feature/dynamic-linking", features = [ "dynamic", ], optional = true } base32 = "0.4.0" -base64 = "0.13.0" -base64ct = "1.5.1" +base64 = "0.21.4" +base64ct = "1.6.0" basic-cookies = "0.1.4" bimap = { version = "0.6.2", features = ["serde"] } bytes = "1" -chrono = { version = "0.4.19", features = ["serde"] } -clap = "3.2.8" -color-eyre = "0.6.1" -cookie = "0.16.2" -cookie_store = "0.19.0" +chrono = { version = "0.4.31", features = ["serde"] } +clap = "3.2.25" +color-eyre = "0.6.2" +console = "0.15.7" +console-subscriber = { version = "0.2", optional = true } +cookie = "0.18.0" +cookie_store = "0.20.0" current_platform = "0.2.0" -digest = "0.10.3" -digest-old = { package = "digest", version = "0.9.0" } +digest = "0.10.7" divrem = "1.0.0" -ed25519 = { version = "1.5.2", features = ["pkcs8", "pem", "alloc"] } -ed25519-dalek = { version = "1.0.1", features = ["serde"] } +ed25519 = { version = "2.2.3", features = ["pkcs8", "pem", "alloc"] } +ed25519-dalek = { version = "2.0.0", features = [ + "serde", + "hazmat", + "zeroize", + "rand_core", + "digest", +] } +embassy_container_init = { path = "../libs/embassy_container_init" } emver = { version = "0.1.7", git = "https://github.com/Start9Labs/emver-rs.git", features = [ "serde", ] } fd-lock-rs = "0.1.4" -futures = "0.3.21" +futures = "0.3.28" git-version = "0.3.5" -gpt = "3.0.0" +gpt = "3.1.0" helpers = { path = "../libs/helpers" } -embassy_container_init = { path = "../libs/embassy_container_init" } hex = "0.4.3" hmac = "0.12.1" -http = "0.2.8" -hyper = { version = "0.14.20", features = ["full"] } -hyper-ws-listener = "0.2.0" +http = "0.2.9" +hyper = { version = "0.14.27", features = ["full"] } +hyper-ws-listener = "0.3.0" id-pool = { version = "0.2.2", features = [ "u16", "serde", ], default-features = false } -imbl = "2.0.0" +imbl = "2.0.2" imbl-value = { git = "https://github.com/Start9Labs/imbl-value.git" } include_dir = "0.7.3" -indexmap = { version = "1.9.1", features = ["serde"] } -ipnet = { version = "2.7.1", features = ["serde"] } +indexmap = { version = "2.0.2", features = ["serde"] } +indicatif = { version = "0.17.7", features = ["tokio"] } +ipnet = { version = "2.8.0", features = ["serde"] } iprange = { version = "0.6.7", features = ["serde"] } isocountry = "0.3.2" -itertools = "0.10.3" -jaq-core = "0.10.0" +itertools = "0.11.0" +jaq-core = "0.10.1" jaq-std = "0.10.0" -josekit = "0.8.1" +josekit = "0.8.4" js_engine = { path = '../libs/js_engine', optional = true } jsonpath_lib = { git = "https://github.com/Start9Labs/jsonpath.git" } lazy_static = "1.4.0" -libc = "0.2.126" -log = "0.4.17" -mbrman = "0.5.0" +libc = "0.2.149" +log = "0.4.20" +mbrman = "0.5.2" models = { version = "*", path = "../libs/models" } new_mime_guess = "4" -nix = "0.25.0" -nom = "7.1.1" -num = "0.4.0" -num_enum = "0.5.7" -openssh-keys = "0.5.0" -openssl = { version = "0.10.41", features = ["vendored"] } +nix = { version = "0.27.1", features = ["user", "process", "signal", "fs"] } +nom = "7.1.3" +num = "0.4.1" +num_enum = "0.7.0" +openssh-keys = "0.6.2" +openssl = { version = "0.10.57", features = ["vendored"] } +p256 = { version = "0.13.2", features = ["pem"] } patch-db = { version = "*", path = "../patch-db/patch-db", features = [ "trace", ] } -p256 = { version = "0.12.0", features = ["pem"] } -pbkdf2 = "0.11.0" -pin-project = "1.0.11" -pkcs8 = { version = "0.9.0", features = ["std"] } +pbkdf2 = "0.12.2" +pin-project = "1.1.3" +pkcs8 = { version = "0.10.2", features = ["std"] } prettytable-rs = "0.10.0" -proptest = "1.0.0" -proptest-derive = "0.3.0" +proptest = "1.3.1" +proptest-derive = "0.4.0" rand = { version = "0.8.5", features = ["std"] } -rand-old = { package = "rand", version = "0.7.3" } -regex = "1.6.0" -reqwest = { version = "0.11.11", features = ["stream", "json", "socks"] } -reqwest_cookie_store = "0.5.0" -rpassword = "7.0.0" +regex = "1.10.2" +reqwest = { version = "0.11.22", features = ["stream", "json", "socks"] } +reqwest_cookie_store = "0.6.0" +rpassword = "7.2.0" rpc-toolkit = "0.2.2" -rust-argon2 = "1.0.0" +rust-argon2 = "2.0.0" scopeguard = "1.1" # because avahi-sys fucks your shit up -serde = { version = "1.0.139", features = ["derive", "rc"] } -serde_cbor = { package = "ciborium", version = "0.2.0" } -serde_json = "1.0.93" -serde_toml = { package = "toml", version = "0.5.9" } -serde_with = { version = "2.0.1", features = ["macros", "json"] } -serde_yaml = "0.9.11" +serde = { version = "1.0", features = ["derive", "rc"] } +serde_cbor = { package = "ciborium", version = "0.2.1" } +serde_json = "1.0" +serde_toml = { package = "toml", version = "0.8.2" } +serde_with = { version = "3.4.0", features = ["macros", "json"] } +serde_yaml = "0.9.25" sha2 = "0.10.2" -sha2-old = { package = "sha2", version = "0.9.9" } simple-logging = "2.0.2" -sqlx = { version = "0.6.0", features = [ +sqlx = { version = "0.7.2", features = [ "chrono", - "offline", "runtime-tokio-rustls", "postgres", ] } -ssh-key = { version = "0.5.1", features = ["ed25519"] } -stderrlog = "0.5.3" -tar = "0.4.38" -thiserror = "1.0.31" -tokio = { version = "1.23", features = ["full"] } -tokio-stream = { version = "0.1.11", features = ["io-util", "sync", "net"] } -tokio-tar = { git = "https://github.com/dr-bonez/tokio-tar.git" } -tokio-tungstenite = { version = "0.17.1", features = ["native-tls"] } -tokio-rustls = "0.23.4" +sscanf = "0.4.1" +ssh-key = { version = "0.6.2", features = ["ed25519"] } +stderrlog = "0.5.4" +tar = "0.4.40" +thiserror = "1.0.49" +tokio = { version = "1", features = ["full"] } +tokio-rustls = "0.24.1" tokio-socks = "0.5.1" -tokio-util = { version = "0.7.3", features = ["io"] } +tokio-stream = { version = "0.1.14", features = ["io-util", "sync", "net"] } +tokio-tar = { git = "https://github.com/dr-bonez/tokio-tar.git" } +tokio-tungstenite = { version = "0.20.1", features = ["native-tls"] } +tokio-util = { version = "0.7.9", features = ["io"] } torut = "0.2.1" -tracing = "0.1.35" +tracing = "0.1.39" tracing-error = "0.2.0" tracing-futures = "0.2.5" -tracing-subscriber = { version = "0.3.14", features = ["env-filter"] } -trust-dns-server = "0.22.0" -typed-builder = "0.10.0" -url = { version = "2.2.2", features = ["serde"] } -urlencoding = "2.1.2" -uuid = { version = "1.1.2", features = ["v4"] } -zeroize = "1.5.7" -indicatif = { version = "0.17.6", features = ["tokio"] } -console = "^0.15" +tracing-journald = "0.3.0" +tracing-subscriber = { version = "0.3.17", features = ["env-filter"] } +trust-dns-server = "0.23.1" +typed-builder = "0.17.0" +url = { version = "2.4.1", features = ["serde"] } +urlencoding = "2.1.3" +uuid = { version = "1.4.1", features = ["v4"] } +zeroize = "1.6.0" [profile.test] opt-level = 3 diff --git a/backend/build-prod.sh b/backend/build-prod.sh index 97ca33279..c679fdf98 100755 --- a/backend/build-prod.sh +++ b/backend/build-prod.sh @@ -22,49 +22,38 @@ if tty -s; then USE_TTY="-it" fi -alias 'rust-gnu-builder'='docker run $USE_TTY --rm -e "OS_ARCH=$OS_ARCH" -v "$HOME/.cargo/registry":/usr/local/cargo/registry -v "$(pwd)":/home/rust/src -w /home/rust/src -P start9/rust-arm-cross:aarch64' -alias 'rust-musl-builder'='docker run $USE_TTY --rm -e "OS_ARCH=$OS_ARCH" -v "$HOME/.cargo/registry":/root/.cargo/registry -v "$(pwd)":/home/rust/src -P messense/rust-musl-cross:$ARCH-musl' - cd .. FLAGS="" +RUSTFLAGS="" if [[ "$ENVIRONMENT" =~ (^|-)podman($|-) ]]; then FLAGS="podman,$FLAGS" fi if [[ "$ENVIRONMENT" =~ (^|-)unstable($|-) ]]; then FLAGS="unstable,$FLAGS" + RUSTFLAGS="$RUSTFLAGS --cfg tokio_unstable" fi if [[ "$ENVIRONMENT" =~ (^|-)dev($|-) ]]; then FLAGS="dev,$FLAGS" fi +alias 'rust-gnu-builder'='docker run $USE_TTY --rm -e "OS_ARCH=$OS_ARCH" -e "RUSTFLAGS=$RUSTFLAGS" -v "$HOME/.cargo/registry":/usr/local/cargo/registry -v "$(pwd)":/home/rust/src -w /home/rust/src -P start9/rust-arm-cross:aarch64' +alias 'rust-musl-builder'='docker run $USE_TTY --rm -e "OS_ARCH=$OS_ARCH" -v "$HOME/.cargo/registry":/root/.cargo/registry -v "$(pwd)":/home/rust/src -P messense/rust-musl-cross:$ARCH-musl' + set +e fail= -if [[ "$FLAGS" = "" ]]; then - rust-gnu-builder sh -c "(cd backend && cargo build --release --locked --features avahi-alias, --target=$ARCH-unknown-linux-gnu)" - if test $? -ne 0; then - fail=true - fi - for ARCH in x86_64 aarch64 - do - rust-musl-builder sh -c "(cd libs && cargo build --release --locked --bin embassy_container_init )" - if test $? -ne 0; then - fail=true - fi - done -else - echo "FLAGS=$FLAGS" - rust-gnu-builder sh -c "(cd backend && cargo build --release --features avahi-alias,$FLAGS --locked --target=$ARCH-unknown-linux-gnu)" - if test $? -ne 0; then - fail=true - fi - for ARCH in x86_64 aarch64 - do - rust-musl-builder sh -c "(cd libs && cargo build --release --locked --bin embassy_container_init)" - if test $? -ne 0; then - fail=true - fi - done +echo "FLAGS=\"$FLAGS\"" +echo "RUSTFLAGS=\"$RUSTFLAGS\"" +rust-gnu-builder sh -c "(cd backend && cargo build --release --features avahi-alias,$FLAGS --locked --target=$ARCH-unknown-linux-gnu)" +if test $? -ne 0; then + fail=true fi +for ARCH in x86_64 aarch64 +do + rust-musl-builder sh -c "(cd libs && cargo build --release --locked --bin embassy_container_init)" + if test $? -ne 0; then + fail=true + fi +done set -e cd backend diff --git a/backend/sqlx-data.json b/backend/sqlx-data.json deleted file mode 100644 index 84afcfdb6..000000000 --- a/backend/sqlx-data.json +++ /dev/null @@ -1,744 +0,0 @@ -{ - "db": "PostgreSQL", - "1ce5254f27de971fd87f5ab66d300f2b22433c86617a0dbf796bf2170186dd2e": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text", - "Text", - "Bytea" - ] - } - }, - "query": "INSERT INTO network_keys (package, interface, key) VALUES ($1, $2, $3) ON CONFLICT (package, interface) DO NOTHING" - }, - "21471490cdc3adb206274cc68e1ea745ffa5da4479478c1fd2158a45324b1930": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text" - ] - } - }, - "query": "DELETE FROM ssh_keys WHERE fingerprint = $1" - }, - "28ea34bbde836e0618c5fc9bb7c36e463c20c841a7d6a0eb15be0f24f4a928ec": { - "describe": { - "columns": [ - { - "name": "hostname", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "path", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "username", - "ordinal": 2, - "type_info": "Text" - }, - { - "name": "password", - "ordinal": 3, - "type_info": "Text" - } - ], - "nullable": [ - false, - false, - false, - true - ], - "parameters": { - "Left": [ - "Int4" - ] - } - }, - "query": "SELECT hostname, path, username, password FROM cifs_shares WHERE id = $1" - }, - "4099028a5c0de578255bf54a67cef6cb0f1e9a4e158260700f1639dd4b438997": { - "describe": { - "columns": [ - { - "name": "fingerprint", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "openssh_pubkey", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "created_at", - "ordinal": 2, - "type_info": "Text" - } - ], - "nullable": [ - false, - false, - false - ], - "parameters": { - "Left": [ - "Text" - ] - } - }, - "query": "SELECT * FROM ssh_keys WHERE fingerprint = $1" - }, - "4691e3a2ce80b59009ac17124f54f925f61dc5ea371903e62cdffa5d7b67ca96": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "logged_in", - "ordinal": 1, - "type_info": "Timestamp" - }, - { - "name": "logged_out", - "ordinal": 2, - "type_info": "Timestamp" - }, - { - "name": "last_active", - "ordinal": 3, - "type_info": "Timestamp" - }, - { - "name": "user_agent", - "ordinal": 4, - "type_info": "Text" - }, - { - "name": "metadata", - "ordinal": 5, - "type_info": "Text" - } - ], - "nullable": [ - false, - false, - true, - false, - true, - false - ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT * FROM session WHERE logged_out IS NULL OR logged_out > CURRENT_TIMESTAMP" - }, - "4bcfbefb1eb3181343871a1cd7fc3afb81c2be5c681cfa8b4be0ce70610e9c3a": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text" - ] - } - }, - "query": "UPDATE session SET logged_out = CURRENT_TIMESTAMP WHERE id = $1" - }, - "629be61c3c341c131ddbbff0293a83dbc6afd07cae69d246987f62cf0cc35c2a": { - "describe": { - "columns": [ - { - "name": "password", - "ordinal": 0, - "type_info": "Text" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT password FROM account" - }, - "687688055e63d27123cdc89a5bbbd8361776290a9411d527eaf1fdb40bef399d": { - "describe": { - "columns": [ - { - "name": "key", - "ordinal": 0, - "type_info": "Bytea" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Text", - "Text" - ] - } - }, - "query": "SELECT key FROM tor WHERE package = $1 AND interface = $2" - }, - "6d35ccf780fb2bb62586dd1d3df9c1550a41ee580dad3f49d35cb843ebef10ca": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text" - ] - } - }, - "query": "UPDATE session SET last_active = CURRENT_TIMESTAMP WHERE id = $1 AND logged_out IS NULL OR logged_out > CURRENT_TIMESTAMP" - }, - "770c1017734720453dc87b58c385b987c5af5807151ff71a59000014586752e0": { - "describe": { - "columns": [ - { - "name": "key", - "ordinal": 0, - "type_info": "Bytea" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Text", - "Text", - "Bytea" - ] - } - }, - "query": "INSERT INTO network_keys (package, interface, key) VALUES ($1, $2, $3) ON CONFLICT (package, interface) DO UPDATE SET package = EXCLUDED.package RETURNING key" - }, - "7b64f032d507e8ffe37c41f4c7ad514a66c421a11ab04c26d89a7aa8f6b67210": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Int4" - }, - { - "name": "package_id", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "created_at", - "ordinal": 2, - "type_info": "Timestamp" - }, - { - "name": "code", - "ordinal": 3, - "type_info": "Int4" - }, - { - "name": "level", - "ordinal": 4, - "type_info": "Text" - }, - { - "name": "title", - "ordinal": 5, - "type_info": "Text" - }, - { - "name": "message", - "ordinal": 6, - "type_info": "Text" - }, - { - "name": "data", - "ordinal": 7, - "type_info": "Text" - } - ], - "nullable": [ - false, - true, - false, - false, - false, - false, - false, - true - ], - "parameters": { - "Left": [ - "Int4", - "Int8" - ] - } - }, - "query": "SELECT id, package_id, created_at, code, level, title, message, data FROM notifications WHERE id < $1 ORDER BY id DESC LIMIT $2" - }, - "7c7a3549c997eb75bf964ea65fbb98a73045adf618696cd838d79203ef5383fb": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text", - "Text", - "Text", - "Bytea", - "Text", - "Text" - ] - } - }, - "query": "\n INSERT INTO account (\n id,\n server_id,\n hostname,\n password,\n network_key,\n root_ca_key_pem,\n root_ca_cert_pem\n ) VALUES (\n 0, $1, $2, $3, $4, $5, $6\n ) ON CONFLICT (id) DO UPDATE SET\n server_id = EXCLUDED.server_id,\n hostname = EXCLUDED.hostname,\n password = EXCLUDED.password,\n network_key = EXCLUDED.network_key,\n root_ca_key_pem = EXCLUDED.root_ca_key_pem,\n root_ca_cert_pem = EXCLUDED.root_ca_cert_pem\n " - }, - "7e0649d839927e57fa03ee51a2c9f96a8bdb0fc97ee8a3c6df1069e1e2b98576": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text" - ] - } - }, - "query": "DELETE FROM tor WHERE package = $1" - }, - "8951b9126fbf60dbb5997241e11e3526b70bccf3e407327917294a993bc17ed5": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text", - "Text", - "Bytea" - ] - } - }, - "query": "INSERT INTO tor (package, interface, key) VALUES ($1, $2, $3) ON CONFLICT (package, interface) DO NOTHING" - }, - "94d471bb374b4965c6cbedf8c17bbf6bea226d38efaf6559923c79a36d5ca08c": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Int4" - }, - { - "name": "package_id", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "created_at", - "ordinal": 2, - "type_info": "Timestamp" - }, - { - "name": "code", - "ordinal": 3, - "type_info": "Int4" - }, - { - "name": "level", - "ordinal": 4, - "type_info": "Text" - }, - { - "name": "title", - "ordinal": 5, - "type_info": "Text" - }, - { - "name": "message", - "ordinal": 6, - "type_info": "Text" - }, - { - "name": "data", - "ordinal": 7, - "type_info": "Text" - } - ], - "nullable": [ - false, - true, - false, - false, - false, - false, - false, - true - ], - "parameters": { - "Left": [ - "Int8" - ] - } - }, - "query": "SELECT id, package_id, created_at, code, level, title, message, data FROM notifications ORDER BY id DESC LIMIT $1" - }, - "95c4ab4c645f3302568c6ff13d85ab58252362694cf0f56999bf60194d20583a": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Int4" - }, - { - "name": "hostname", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "path", - "ordinal": 2, - "type_info": "Text" - }, - { - "name": "username", - "ordinal": 3, - "type_info": "Text" - }, - { - "name": "password", - "ordinal": 4, - "type_info": "Text" - } - ], - "nullable": [ - false, - false, - false, - false, - true - ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT id, hostname, path, username, password FROM cifs_shares" - }, - "a60d6e66719325b08dc4ecfacaf337527233c84eee758ac9be967906e5841d27": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int4" - ] - } - }, - "query": "DELETE FROM cifs_shares WHERE id = $1" - }, - "a6b0c8909a3a5d6d9156aebfb359424e6b5a1d1402e028219e21726f1ebd282e": { - "describe": { - "columns": [ - { - "name": "fingerprint", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "openssh_pubkey", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "created_at", - "ordinal": 2, - "type_info": "Text" - } - ], - "nullable": [ - false, - false, - false - ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT fingerprint, openssh_pubkey, created_at FROM ssh_keys" - }, - "b1147beaaabbed89f2ab8c1e13ec4393a9a8fde2833cf096af766a979d94dee6": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text", - "Text", - "Text", - "Text", - "Int4" - ] - } - }, - "query": "UPDATE cifs_shares SET hostname = $1, path = $2, username = $3, password = $4 WHERE id = $5" - }, - "d5117054072476377f3c4f040ea429d4c9b2cf534e76f35c80a2bf60e8599cca": { - "describe": { - "columns": [ - { - "name": "openssh_pubkey", - "ordinal": 0, - "type_info": "Text" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT openssh_pubkey FROM ssh_keys" - }, - "da71f94b29798d1738d2b10b9a721ea72db8cfb362e7181c8226d9297507c62b": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text", - "Int4", - "Text", - "Text", - "Text", - "Text" - ] - } - }, - "query": "INSERT INTO notifications (package_id, code, level, title, message, data) VALUES ($1, $2, $3, $4, $5, $6)" - }, - "e185203cf84e43b801dfb23b4159e34aeaef1154dcd3d6811ab504915497ccf7": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int4" - ] - } - }, - "query": "DELETE FROM notifications WHERE id = $1" - }, - "e545696735f202f9d13cf22a561f3ff3f9aed7f90027a9ba97634bcb47d772f0": { - "describe": { - "columns": [ - { - "name": "tor_key", - "ordinal": 0, - "type_info": "Bytea" - } - ], - "nullable": [ - true - ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT tor_key FROM account WHERE id = 0" - }, - "e5843c5b0e7819b29aa1abf2266799bd4f82e761837b526a0972c3d4439a264d": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text", - "Text", - "Text" - ] - } - }, - "query": "INSERT INTO session (id, user_agent, metadata) VALUES ($1, $2, $3)" - }, - "e95322a8e2ae3b93f1e974b24c0b81803f1e9ec9e8ebbf15cafddfc1c5a028ed": { - "describe": { - "columns": [ - { - "name": "package", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "interface", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "key", - "ordinal": 2, - "type_info": "Bytea" - }, - { - "name": "tor_key?", - "ordinal": 3, - "type_info": "Bytea" - } - ], - "nullable": [ - false, - false, - false, - false - ], - "parameters": { - "Left": [ - "Text" - ] - } - }, - "query": "\n SELECT\n network_keys.package,\n network_keys.interface,\n network_keys.key,\n tor.key AS \"tor_key?\"\n FROM\n network_keys\n LEFT JOIN\n tor\n ON\n network_keys.package = tor.package\n AND\n network_keys.interface = tor.interface\n WHERE\n network_keys.package = $1\n " - }, - "eb750adaa305bdbf3c5b70aaf59139c7b7569602adb58f2d6b3a94da4f167b0a": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int4" - ] - } - }, - "query": "DELETE FROM notifications WHERE id < $1" - }, - "ecc765d8205c0876956f95f76944ac6a5f34dd820c4073b7728c7067aab9fded": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Int4" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Text", - "Text", - "Text", - "Text" - ] - } - }, - "query": "INSERT INTO cifs_shares (hostname, path, username, password) VALUES ($1, $2, $3, $4) RETURNING id" - }, - "f6d1c5ef0f9d9577bea8382318967b9deb46da75788c7fe6082b43821c22d556": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text", - "Text", - "Text" - ] - } - }, - "query": "INSERT INTO ssh_keys (fingerprint, openssh_pubkey, created_at) VALUES ($1, $2, $3)" - }, - "f7d2dae84613bcef330f7403352cc96547f3f6dbec11bf2eadfaf53ad8ab51b5": { - "describe": { - "columns": [ - { - "name": "network_key", - "ordinal": 0, - "type_info": "Bytea" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT network_key FROM account WHERE id = 0" - }, - "fe6e4f09f3028e5b6b6259e86cbad285680ce157aae9d7837ac020c8b2945e7f": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Int4" - }, - { - "name": "password", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "tor_key", - "ordinal": 2, - "type_info": "Bytea" - }, - { - "name": "server_id", - "ordinal": 3, - "type_info": "Text" - }, - { - "name": "hostname", - "ordinal": 4, - "type_info": "Text" - }, - { - "name": "network_key", - "ordinal": 5, - "type_info": "Bytea" - }, - { - "name": "root_ca_key_pem", - "ordinal": 6, - "type_info": "Text" - }, - { - "name": "root_ca_cert_pem", - "ordinal": 7, - "type_info": "Text" - } - ], - "nullable": [ - false, - false, - true, - true, - true, - false, - false, - false - ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT * FROM account WHERE id = 0" - } -} \ No newline at end of file diff --git a/backend/src/account.rs b/backend/src/account.rs index daae7bee7..1f8d86e91 100644 --- a/backend/src/account.rs +++ b/backend/src/account.rs @@ -1,5 +1,5 @@ -use ed25519_dalek::{ExpandedSecretKey, SecretKey}; -use models::ResultExt; +use digest::Digest; +use ed25519_dalek::SecretKey; use openssl::pkey::{PKey, Private}; use openssl::x509::X509; use sqlx::PgExecutor; @@ -7,7 +7,8 @@ use sqlx::PgExecutor; use crate::hostname::{generate_hostname, generate_id, Hostname}; use crate::net::keys::Key; use crate::net::ssl::{generate_key, make_root_cert}; -use crate::Error; +use crate::prelude::*; +use crate::util::crypto::ed25519_expand_key; fn hash_password(password: &str) -> Result { argon2::hash_encoded( @@ -51,13 +52,23 @@ impl AccountInfo { let server_id = r.server_id.unwrap_or_else(generate_id); let hostname = r.hostname.map(Hostname).unwrap_or_else(generate_hostname); let password = r.password; - let network_key = SecretKey::from_bytes(&r.network_key)?; + let network_key = SecretKey::try_from(r.network_key).map_err(|e| { + Error::new( + eyre!("expected vec of len 32, got len {}", e.len()), + ErrorKind::ParseDbField, + ) + })?; let tor_key = if let Some(k) = &r.tor_key { - ExpandedSecretKey::from_bytes(k)? + <[u8; 64]>::try_from(&k[..]).map_err(|_| { + Error::new( + eyre!("expected vec of len 64, got len {}", k.len()), + ErrorKind::ParseDbField, + ) + })? } else { - ExpandedSecretKey::from(&network_key) + ed25519_expand_key(&network_key) }; - let key = Key::from_pair(None, network_key.to_bytes(), tor_key.to_bytes()); + let key = Key::from_pair(None, network_key, tor_key); let root_ca_key = PKey::private_key_from_pem(r.root_ca_key_pem.as_bytes())?; let root_ca_cert = X509::from_pem(r.root_ca_cert_pem.as_bytes())?; diff --git a/backend/src/action.rs b/backend/src/action.rs index 07fe1759b..3223aaa86 100644 --- a/backend/src/action.rs +++ b/backend/src/action.rs @@ -134,7 +134,7 @@ pub async fn action( let manifest = ctx .db .peek() - .await? + .await .as_package_data() .as_idx(&pkg_id) .or_not_found(&pkg_id)? diff --git a/backend/src/auth.rs b/backend/src/auth.rs index 132c80ef8..823480fd3 100644 --- a/backend/src/auth.rs +++ b/backend/src/auth.rs @@ -160,7 +160,7 @@ pub async fn login( ) -> Result<(), Error> { let password = password.unwrap_or_default().decrypt(&ctx)?; let mut handle = ctx.secret_store.acquire().await?; - check_password_against_db(&mut handle, &password).await?; + check_password_against_db(handle.as_mut(), &password).await?; let hash_token = HashSessionToken::new(); let user_agent = req.headers.get("user-agent").and_then(|h| h.to_str().ok()); @@ -172,7 +172,7 @@ pub async fn login( user_agent, metadata, ) - .execute(&mut handle) + .execute(handle.as_mut()) .await?; res.headers.insert( "set-cookie", @@ -263,7 +263,7 @@ pub async fn list( sessions: sqlx::query!( "SELECT * FROM session WHERE logged_out IS NULL OR logged_out > CURRENT_TIMESTAMP" ) - .fetch_all(&mut ctx.secret_store.acquire().await?) + .fetch_all(ctx.secret_store.acquire().await?.as_mut()) .await? .into_iter() .map(|row| { diff --git a/backend/src/backup/backup_bulk.rs b/backend/src/backup/backup_bulk.rs index 5bab4bb78..21eedbaf2 100644 --- a/backend/src/backup/backup_bulk.rs +++ b/backend/src/backup/backup_bulk.rs @@ -56,16 +56,16 @@ pub async fn backup_all( package_ids: Option>, #[arg] password: crate::auth::PasswordType, ) -> Result<(), Error> { - let db = ctx.db.peek().await?; + let db = ctx.db.peek().await; let old_password_decrypted = old_password .as_ref() .unwrap_or(&password) .clone() .decrypt(&ctx)?; let password = password.decrypt(&ctx)?; - check_password_against_db(&mut ctx.secret_store.acquire().await?, &password).await?; + check_password_against_db(ctx.secret_store.acquire().await?.as_mut(), &password).await?; let fs = target_id - .load(&mut ctx.secret_store.acquire().await?) + .load(ctx.secret_store.acquire().await?.as_mut()) .await?; let mut backup_guard = BackupMountGuard::mount( TmpMountGuard::mount(&fs, ReadWrite).await?, @@ -265,7 +265,7 @@ async fn perform_backup( } } - let ui = ctx.db.peek().await?.into_ui().de()?; + let ui = ctx.db.peek().await.into_ui().de()?; let mut os_backup_file = AtomicFile::new( backup_guard.lock().await.as_ref().join("os-backup.cbor"), diff --git a/backend/src/backup/mod.rs b/backend/src/backup/mod.rs index 670c01c29..2f3f9bd8f 100644 --- a/backend/src/backup/mod.rs +++ b/backend/src/backup/mod.rs @@ -134,7 +134,7 @@ impl BackupActions { let marketplace_url = ctx .db .peek() - .await? + .await .as_package_data() .as_idx(&pkg_id) .or_not_found(pkg_id)? diff --git a/backend/src/backup/restore.rs b/backend/src/backup/restore.rs index ac8d07f48..46d0b9036 100644 --- a/backend/src/backup/restore.rs +++ b/backend/src/backup/restore.rs @@ -52,7 +52,7 @@ pub async fn restore_packages_rpc( #[arg] password: String, ) -> Result<(), Error> { let fs = target_id - .load(&mut ctx.secret_store.acquire().await?) + .load(ctx.secret_store.acquire().await?.as_mut()) .await?; let backup_guard = BackupMountGuard::mount(TmpMountGuard::mount(&fs, ReadWrite).await?, &password).await?; @@ -310,7 +310,7 @@ async fn assure_restoring( let mut insert_packages = BTreeMap::new(); for id in ids { - let peek = ctx.db.peek().await?; + let peek = ctx.db.peek().await; let model = peek.as_package_data().as_idx(&id); @@ -402,7 +402,7 @@ async fn restore_package<'a>( iface.to_string(), k, ) - .execute(&mut secrets_tx).await?; + .execute(secrets_tx.as_mut()).await?; } // DEPRECATED for (iface, key) in metadata.tor_keys { @@ -413,7 +413,7 @@ async fn restore_package<'a>( iface.to_string(), k, ) - .execute(&mut secrets_tx).await?; + .execute(secrets_tx.as_mut()).await?; } secrets_tx.commit().await?; drop(secrets); diff --git a/backend/src/backup/target/mod.rs b/backend/src/backup/target/mod.rs index 80c4a59c6..93e56c2d3 100644 --- a/backend/src/backup/target/mod.rs +++ b/backend/src/backup/target/mod.rs @@ -142,7 +142,7 @@ pub async fn list( let mut sql_handle = ctx.secret_store.acquire().await?; let (disks_res, cifs) = tokio::try_join!( crate::disk::util::list(&ctx.os_partitions), - cifs::list(&mut sql_handle), + cifs::list(sql_handle.as_mut()), )?; Ok(disks_res .into_iter() @@ -233,7 +233,7 @@ pub async fn info( let guard = BackupMountGuard::mount( TmpMountGuard::mount( &target_id - .load(&mut ctx.secret_store.acquire().await?) + .load(ctx.secret_store.acquire().await?.as_mut()) .await?, ReadWrite, ) @@ -271,7 +271,7 @@ pub async fn mount( TmpMountGuard::mount( &target_id .clone() - .load(&mut ctx.secret_store.acquire().await?) + .load(ctx.secret_store.acquire().await?.as_mut()) .await?, ReadWrite, ) diff --git a/backend/src/bins/mod.rs b/backend/src/bins/mod.rs index 76329e094..e131d22c4 100644 --- a/backend/src/bins/mod.rs +++ b/backend/src/bins/mod.rs @@ -5,6 +5,8 @@ pub mod avahi_alias; pub mod deprecated; #[cfg(feature = "cli")] pub mod start_cli; +#[cfg(feature = "js_engine")] +pub mod start_deno; #[cfg(feature = "daemon")] pub mod start_init; #[cfg(feature = "sdk")] @@ -16,6 +18,8 @@ fn select_executable(name: &str) -> Option { match name { #[cfg(feature = "avahi-alias")] "avahi-alias" => Some(avahi_alias::main), + #[cfg(feature = "js_engine")] + "start-deno" => Some(start_deno::main), #[cfg(feature = "cli")] "start-cli" => Some(start_cli::main), #[cfg(feature = "sdk")] diff --git a/backend/src/bins/start_deno.rs b/backend/src/bins/start_deno.rs new file mode 100644 index 000000000..1a68decfc --- /dev/null +++ b/backend/src/bins/start_deno.rs @@ -0,0 +1,145 @@ +use clap::Arg; +use rpc_toolkit::command; +use rpc_toolkit::run_cli; +use rpc_toolkit::yajrc::RpcError; +use serde_json::Value; + +use crate::context::CliContext; +use crate::procedure::js_scripts::ExecuteArgs; +use crate::s9pk::manifest::PackageId; +use crate::util::logger::EmbassyLogger; +use crate::util::serde::{display_serializable, parse_stdin_deserializable}; +use crate::version::{Current, VersionT}; +use crate::Error; + +lazy_static::lazy_static! { + static ref VERSION_STRING: String = Current::new().semver().to_string(); +} + +#[command(subcommands(execute, sandbox))] +fn deno_api() -> Result<(), Error> { + Ok(()) +} + +#[command(cli_only, display(display_serializable))] +async fn execute( + #[arg(stdin, parse(parse_stdin_deserializable))] arg: ExecuteArgs, +) -> Result, Error> { + let ExecuteArgs { + procedure, + directory, + pkg_id, + pkg_version, + name, + volumes, + input, + } = arg; + PackageLogger::init(&pkg_id); + procedure + .execute_impl(&directory, &pkg_id, &pkg_version, name, &volumes, input) + .await +} +#[command(cli_only, display(display_serializable))] +async fn sandbox( + #[arg(stdin, parse(parse_stdin_deserializable))] arg: ExecuteArgs, +) -> Result, Error> { + let ExecuteArgs { + procedure, + directory, + pkg_id, + pkg_version, + name, + volumes, + input, + } = arg; + PackageLogger::init(&pkg_id); + procedure + .sandboxed_impl(&directory, &pkg_id, &pkg_version, &volumes, input, name) + .await +} + +use tracing::Subscriber; +use tracing_subscriber::util::SubscriberInitExt; + +#[derive(Clone)] +struct PackageLogger {} + +impl PackageLogger { + fn base_subscriber(id: &PackageId) -> impl Subscriber { + use tracing_error::ErrorLayer; + use tracing_subscriber::prelude::*; + use tracing_subscriber::{fmt, EnvFilter}; + + let filter_layer = EnvFilter::builder() + .with_default_directive( + format!("{}=info", std::module_path!().split("::").next().unwrap()) + .parse() + .unwrap(), + ) + .from_env_lossy(); + let fmt_layer = fmt::layer().with_writer(std::io::stderr).with_target(true); + let journald_layer = tracing_journald::layer() + .unwrap() + .with_syslog_identifier(format!("{id}.embassy")); + + let sub = tracing_subscriber::registry() + .with(filter_layer) + .with(fmt_layer) + .with(journald_layer) + .with(ErrorLayer::default()); + + sub + } + pub fn init(id: &PackageId) -> Self { + Self::base_subscriber(id).init(); + color_eyre::install().unwrap_or_else(|_| tracing::warn!("tracing too many times")); + + Self {} + } +} + +fn inner_main() -> Result<(), Error> { + run_cli!({ + command: deno_api, + app: app => app + .name("StartOS Deno Executor") + .version(&**VERSION_STRING) + .arg( + clap::Arg::with_name("config") + .short('c') + .long("config") + .takes_value(true), + ), + context: matches => { + CliContext::init(matches)? + }, + exit: |e: RpcError| { + match e.data { + Some(Value::String(s)) => eprintln!("{}: {}", e.message, s), + Some(Value::Object(o)) => if let Some(Value::String(s)) = o.get("details") { + eprintln!("{}: {}", e.message, s); + if let Some(Value::String(s)) = o.get("debug") { + tracing::debug!("{}", s) + } + } + Some(a) => eprintln!("{}: {}", e.message, a), + None => eprintln!("{}", e.message), + } + + std::process::exit(e.code); + } + }); + Ok(()) +} + +pub fn main() { + match inner_main() { + Ok(_) => (), + Err(e) => { + eprintln!("{}", e.source); + tracing::debug!("{:?}", e.source); + drop(e.source); + std::process::exit(e.kind as i32) + } + } +} diff --git a/backend/src/bins/start_init.rs b/backend/src/bins/start_init.rs index 5fdf10c3b..a2b16cf78 100644 --- a/backend/src/bins/start_init.rs +++ b/backend/src/bins/start_init.rs @@ -11,6 +11,7 @@ use crate::context::{DiagnosticContext, InstallContext, SetupContext}; use crate::disk::fsck::RepairStrategy; use crate::disk::main::DEFAULT_PASSWORD; use crate::disk::REPAIR_DISK_PATH; +use crate::firmware::update_firmware; use crate::init::STANDBY_MODE_PATH; use crate::net::web_server::WebServer; use crate::shutdown::Shutdown; @@ -19,7 +20,14 @@ use crate::util::Invoke; use crate::{Error, ErrorKind, ResultExt, OS_ARCH}; #[instrument(skip_all)] -async fn setup_or_init(cfg_path: Option) -> Result<(), Error> { +async fn setup_or_init(cfg_path: Option) -> Result, Error> { + if update_firmware().await?.0 { + return Ok(Some(Shutdown { + export_args: None, + restart: true, + })); + } + Command::new("ln") .arg("-sf") .arg("/usr/lib/embassy/scripts/fake-apt") @@ -146,7 +154,7 @@ async fn setup_or_init(cfg_path: Option) -> Result<(), Error> { crate::init::init(&cfg).await?; } - Ok(()) + Ok(None) } async fn run_script_if_exists>(path: P) { @@ -180,46 +188,47 @@ async fn inner_main(cfg_path: Option) -> Result, Error run_script_if_exists("/media/embassy/config/preinit.sh").await; - let res = if let Err(e) = setup_or_init(cfg_path.clone()).await { - async move { - tracing::error!("{}", e.source); - tracing::debug!("{}", e.source); - crate::sound::BEETHOVEN.play().await?; + let res = match setup_or_init(cfg_path.clone()).await { + Err(e) => { + async move { + tracing::error!("{}", e.source); + tracing::debug!("{}", e.source); + crate::sound::BEETHOVEN.play().await?; - let ctx = DiagnosticContext::init( - cfg_path, - if tokio::fs::metadata("/media/embassy/config/disk.guid") - .await - .is_ok() - { - Some(Arc::new( - tokio::fs::read_to_string("/media/embassy/config/disk.guid") // unique identifier for volume group - keeps track of the disk that goes with your embassy - .await? - .trim() - .to_owned(), - )) - } else { - None - }, - e, - ) - .await?; + let ctx = DiagnosticContext::init( + cfg_path, + if tokio::fs::metadata("/media/embassy/config/disk.guid") + .await + .is_ok() + { + Some(Arc::new( + tokio::fs::read_to_string("/media/embassy/config/disk.guid") // unique identifier for volume group - keeps track of the disk that goes with your embassy + .await? + .trim() + .to_owned(), + )) + } else { + None + }, + e, + ) + .await?; - let server = WebServer::diagnostic( - SocketAddr::new(Ipv6Addr::UNSPECIFIED.into(), 80), - ctx.clone(), - ) - .await?; + let server = WebServer::diagnostic( + SocketAddr::new(Ipv6Addr::UNSPECIFIED.into(), 80), + ctx.clone(), + ) + .await?; - let shutdown = ctx.shutdown.subscribe().recv().await.unwrap(); + let shutdown = ctx.shutdown.subscribe().recv().await.unwrap(); - server.shutdown().await; + server.shutdown().await; - Ok(shutdown) + Ok(shutdown) + } + .await } - .await - } else { - Ok(None) + Ok(s) => Ok(s), }; run_script_if_exists("/media/embassy/config/postinit.sh").await; diff --git a/backend/src/bins/startd.rs b/backend/src/bins/startd.rs index e6c272803..a773dd99a 100644 --- a/backend/src/bins/startd.rs +++ b/backend/src/bins/startd.rs @@ -16,7 +16,7 @@ use crate::{Error, ErrorKind, ResultExt}; #[instrument(skip_all)] async fn inner_main(cfg_path: Option) -> Result, Error> { - let (rpc_ctx, server, shutdown) = { + let (rpc_ctx, server, shutdown) = async { let rpc_ctx = RpcContext::init( cfg_path, Arc::new( @@ -91,8 +91,9 @@ async fn inner_main(cfg_path: Option) -> Result, Error sig_handler.abort(); - (rpc_ctx, server, shutdown) - }; + Ok::<_, Error>((rpc_ctx, server, shutdown)) + } + .await?; server.shutdown().await; rpc_ctx.shutdown().await?; diff --git a/backend/src/config/mod.rs b/backend/src/config/mod.rs index 2d3a30fd7..8224860a5 100644 --- a/backend/src/config/mod.rs +++ b/backend/src/config/mod.rs @@ -14,9 +14,9 @@ use rpc_toolkit::command; use tracing::instrument; use crate::context::RpcContext; -use crate::db::model::CurrentDependencies; + use crate::prelude::*; -use crate::s9pk::manifest::{Manifest, PackageId}; +use crate::s9pk::manifest::{PackageId}; use crate::util::display_none; use crate::util::serde::{display_serializable, parse_stdin_deserializable, IoFormat}; use crate::Error; @@ -167,7 +167,7 @@ pub async fn get( #[arg(long = "format")] format: Option, ) -> Result { - let db = ctx.db.peek().await?; + let db = ctx.db.peek().await; let manifest = db .as_package_data() .as_idx(&id) @@ -256,7 +256,7 @@ pub async fn configure( id: &PackageId, configure_context: ConfigureContext, ) -> Result, Error> { - let db = ctx.db.peek().await?; + let db = ctx.db.peek().await; let package = db .as_package_data() .as_idx(id) diff --git a/backend/src/config/spec.rs b/backend/src/config/spec.rs index b11cefaf2..35512d47a 100644 --- a/backend/src/config/spec.rs +++ b/backend/src/config/spec.rs @@ -1696,7 +1696,6 @@ impl TorAddressPointer { .db .peek() .await - .map_err(|e| ConfigurationError::SystemError(e))? .as_package_data() .as_idx(&self.package_id) .and_then(|pde| pde.as_installed()) @@ -1739,7 +1738,6 @@ impl LanAddressPointer { .db .peek() .await - .map_err(|e| ConfigurationError::SystemError(e))? .as_package_data() .as_idx(&self.package_id) .and_then(|pde| pde.as_installed()) @@ -1775,11 +1773,7 @@ impl ConfigPointer { Ok(self.select(&Value::Object(cfg.clone()))) } else { let id = &self.package_id; - let db = ctx - .db - .peek() - .await - .map_err(|e| ConfigurationError::SystemError(e))?; + let db = ctx.db.peek().await; let manifest = db.as_package_data().as_idx(id).map(|pde| pde.as_manifest()); let cfg_actions = manifest.and_then(|m| m.as_config().transpose_ref()); if let (Some(manifest), Some(cfg_actions)) = (manifest, cfg_actions) { @@ -1900,10 +1894,11 @@ impl TorKeyPointer { )); } let key = Key::for_interface( - &mut secrets + secrets .acquire() .await - .map_err(|e| ConfigurationError::SystemError(e.into()))?, + .map_err(|e| ConfigurationError::SystemError(e.into()))? + .as_mut(), Some((self.package_id.clone(), self.interface.clone())), ) .await diff --git a/backend/src/context/cli.rs b/backend/src/context/cli.rs index 25adecdde..020b73459 100644 --- a/backend/src/context/cli.rs +++ b/backend/src/context/cli.rs @@ -6,8 +6,7 @@ use std::sync::Arc; use clap::ArgMatches; use color_eyre::eyre::eyre; -use cookie::Cookie; -use cookie_store::CookieStore; +use cookie_store::{CookieStore, RawCookie}; use josekit::jwk::Jwk; use reqwest::Proxy; use reqwest_cookie_store::CookieStoreMutex; @@ -111,7 +110,10 @@ impl CliContext { }; if let Ok(local) = std::fs::read_to_string(LOCAL_AUTH_COOKIE_PATH) { store - .insert_raw(&Cookie::new("local", local), &"http://localhost".parse()?) + .insert_raw( + &RawCookie::new("local", local), + &"http://localhost".parse()?, + ) .with_kind(crate::ErrorKind::Network)?; } store diff --git a/backend/src/context/rpc.rs b/backend/src/context/rpc.rs index f01ec2ce7..abb122d6e 100644 --- a/backend/src/context/rpc.rs +++ b/backend/src/context/rpc.rs @@ -22,6 +22,7 @@ use crate::account::AccountInfo; use crate::core::rpc_continuations::{RequestGuid, RestHandler, RpcContinuation}; use crate::db::model::{CurrentDependents, Database, PackageDataEntryMatchModelRef}; use crate::db::prelude::PatchDbExt; +use crate::dependencies::compute_dependency_config_errs; use crate::disk::OsPartitionInfo; use crate::init::init_postgres; use crate::install::cleanup::{cleanup_failed, uninstall}; @@ -155,8 +156,7 @@ impl RpcContext { .unwrap_or(SocketAddr::from(([127, 0, 0, 1], 9051))), tor_proxy, base.dns_bind - .as_ref() - .map(|v| v.as_slice()) + .as_deref() .unwrap_or(&[SocketAddr::from(([127, 0, 0, 1], 53))]), SslManager::new(&account)?, &account.hostname, @@ -217,11 +217,8 @@ impl RpcContext { }); let res = Self(seed.clone()); - res.cleanup().await?; + res.cleanup_and_initialize().await?; tracing::info!("Cleaned up transient states"); - let peeked = res.db.peek().await?; - res.managers.init(res.clone(), peeked).await?; - tracing::info!("Initialized Package Managers"); Ok(res) } @@ -236,7 +233,7 @@ impl RpcContext { } #[instrument(skip(self))] - pub async fn cleanup(&self) -> Result<(), Error> { + pub async fn cleanup_and_initialize(&self) -> Result<(), Error> { self.db .mutate(|f| { let mut current_dependents = f @@ -278,9 +275,10 @@ impl RpcContext { Ok(()) }) .await?; - let peek = self.db.peek().await?; + + let peek = self.db.peek().await; + for (package_id, package) in peek.as_package_data().as_entries()?.into_iter() { - let package = package.clone(); let action = match package.as_match() { PackageDataEntryMatchModelRef::Installing(_) | PackageDataEntryMatchModelRef::Restoring(_) @@ -288,7 +286,12 @@ impl RpcContext { cleanup_failed(self, &package_id).await } PackageDataEntryMatchModelRef::Removing(_) => { - uninstall(self, &mut self.secret_store.acquire().await?, &package_id).await + uninstall( + self, + self.secret_store.acquire().await?.as_mut(), + &package_id, + ) + .await } PackageDataEntryMatchModelRef::Installed(m) => { let version = m.as_manifest().as_version().clone().de()?; @@ -298,7 +301,7 @@ impl RpcContext { &self.datadir, &package_id, &version, - &volume_id, + volume_id, )) .with_kind(ErrorKind::Filesystem)?; if tokio::fs::metadata(&tmp_path).await.is_ok() { @@ -314,7 +317,8 @@ impl RpcContext { tracing::debug!("{:?}", e); } } - self.db + let peek = self + .db .mutate(|v| { for (_, pde) in v.as_package_data_mut().as_entries_mut()? { let status = pde @@ -329,9 +333,49 @@ impl RpcContext { MainStatus::Stopped })?; } + Ok(v.clone()) + }) + .await?; + self.managers.init(self.clone(), peek.clone()).await?; + tracing::info!("Initialized Package Managers"); + + let mut all_dependency_config_errs = BTreeMap::new(); + for (package_id, package) in peek.as_package_data().as_entries()?.into_iter() { + let package = package.clone(); + if let Some(current_dependencies) = package + .as_installed() + .and_then(|x| x.as_current_dependencies().de().ok()) + { + let manifest = package.as_manifest().de()?; + all_dependency_config_errs.insert( + package_id.clone(), + compute_dependency_config_errs( + self, + &peek, + &manifest, + ¤t_dependencies, + &Default::default(), + ) + .await?, + ); + } + } + self.db + .mutate(|v| { + for (package_id, errs) in all_dependency_config_errs { + if let Some(config_errors) = v + .as_package_data_mut() + .as_idx_mut(&package_id) + .and_then(|pde| pde.as_installed_mut()) + .map(|i| i.as_status_mut().as_dependency_config_errors_mut()) + { + config_errors.ser(&errs)?; + } + } Ok(()) }) .await?; + Ok(()) } @@ -389,7 +433,7 @@ impl RpcContext { } impl AsRef for RpcContext { fn as_ref(&self) -> &Jwk { - &*CURRENT_SECRET + &CURRENT_SECRET } } impl Context for RpcContext {} @@ -403,7 +447,7 @@ impl Deref for RpcContext { tracing_error::SpanTrace::capture() ); } - &*self.0 + &self.0 } } impl Drop for RpcContext { diff --git a/backend/src/context/sdk.rs b/backend/src/context/sdk.rs index 87adaee1f..7ba7a6bfa 100644 --- a/backend/src/context/sdk.rs +++ b/backend/src/context/sdk.rs @@ -7,8 +7,8 @@ use rpc_toolkit::Context; use serde::Deserialize; use tracing::instrument; +use crate::prelude::*; use crate::util::config::{load_config_from_paths, local_config_path}; -use crate::{Error, ResultExt}; #[derive(Debug, Default, Deserialize)] #[serde(rename_all = "kebab-case")] @@ -50,21 +50,21 @@ impl SdkContext { } /// BLOCKING #[instrument(skip_all)] - pub fn developer_key(&self) -> Result { + pub fn developer_key(&self) -> Result { if !self.developer_key_path.exists() { - return Err(Error::new(eyre!("Developer Key does not exist! Please run `embassy-sdk init` before running this command."), crate::ErrorKind::Uninitialized)); + return Err(Error::new(eyre!("Developer Key does not exist! Please run `start-sdk init` before running this command."), crate::ErrorKind::Uninitialized)); } let pair = ::from_pkcs8_pem( &std::fs::read_to_string(&self.developer_key_path)?, ) .with_kind(crate::ErrorKind::Pem)?; - let secret = ed25519_dalek::SecretKey::from_bytes(&pair.secret_key[..])?; - let public = if let Some(public) = pair.public_key { - ed25519_dalek::PublicKey::from_bytes(&public[..])? - } else { - (&secret).into() - }; - Ok(ed25519_dalek::Keypair { secret, public }) + let secret = ed25519_dalek::SecretKey::try_from(&pair.secret_key[..]).map_err(|_| { + Error::new( + eyre!("pkcs8 key is of incorrect length"), + ErrorKind::OpenSsl, + ) + })?; + Ok(secret.into()) } } impl std::ops::Deref for SdkContext { diff --git a/backend/src/control.rs b/backend/src/control.rs index a84fe7283..58e39ac14 100644 --- a/backend/src/control.rs +++ b/backend/src/control.rs @@ -12,7 +12,7 @@ use crate::Error; #[command(display(display_none), metadata(sync_db = true))] #[instrument(skip_all)] pub async fn start(#[context] ctx: RpcContext, #[arg] id: PackageId) -> Result<(), Error> { - let peek = ctx.db.peek().await?; + let peek = ctx.db.peek().await; let version = peek .as_package_data() .as_idx(&id) @@ -27,14 +27,15 @@ pub async fn start(#[context] ctx: RpcContext, #[arg] id: PackageId) -> Result<( .get(&(id, version)) .await .ok_or_else(|| Error::new(eyre!("Manager not found"), crate::ErrorKind::InvalidRequest))? - .start(); + .start() + .await; Ok(()) } #[command(display(display_none), metadata(sync_db = true))] pub async fn stop(#[context] ctx: RpcContext, #[arg] id: PackageId) -> Result { - let peek = ctx.db.peek().await?; + let peek = ctx.db.peek().await; let version = peek .as_package_data() .as_idx(&id) @@ -62,14 +63,15 @@ pub async fn stop(#[context] ctx: RpcContext, #[arg] id: PackageId) -> Result Result<(), Error> { - let peek = ctx.db.peek().await?; + let peek = ctx.db.peek().await; let version = peek .as_package_data() .as_idx(&id) @@ -83,7 +85,8 @@ pub async fn restart(#[context] ctx: RpcContext, #[arg] id: PackageId) -> Result .get(&(id, version)) .await .ok_or_else(|| Error::new(eyre!("Manager not found"), crate::ErrorKind::InvalidRequest))? - .restart(); + .restart() + .await; Ok(()) } diff --git a/backend/src/db/mod.rs b/backend/src/db/mod.rs index 61f434493..03ad94338 100644 --- a/backend/src/db/mod.rs +++ b/backend/src/db/mod.rs @@ -37,7 +37,7 @@ async fn ws_handler< session: Option<(HasValidSession, HashSessionToken)>, ws_fut: WSFut, ) -> Result<(), Error> { - let (dump, sub) = ctx.db.dump_and_sub().await?; + let (dump, sub) = ctx.db.dump_and_sub().await; let mut stream = ws_fut .await .with_kind(ErrorKind::Network)? @@ -82,6 +82,8 @@ async fn deal_with_messages( mut sub: patch_db::Subscriber, mut stream: WebSocketStream, ) -> Result<(), Error> { + let mut timer = tokio::time::interval(tokio::time::Duration::from_secs(5)); + loop { futures::select! { _ = (&mut kill).fuse() => { @@ -112,6 +114,13 @@ async fn deal_with_messages( _ => (), } } + // This is trying to give a health checks to the home to keep the ui alive. + _ = timer.tick().fuse() => { + stream + .send(Message::Ping(vec![])) + .await + .with_kind(crate::ErrorKind::Network)?; + } } } } @@ -165,7 +174,7 @@ pub async fn subscribe(ctx: RpcContext, req: Request) -> Result Result<(), RpcError> { Ok(()) } @@ -177,20 +186,6 @@ pub enum RevisionsRes { Dump(Dump), } -#[command(display(display_serializable))] -pub async fn revisions( - #[context] ctx: RpcContext, - #[arg] since: u64, - #[allow(unused_variables)] - #[arg(long = "format")] - format: Option, -) -> Result { - Ok(match ctx.db.sync(since).await? { - Ok(revs) => RevisionsRes::Revisions(revs), - Err(dump) => RevisionsRes::Dump(dump), - }) -} - #[instrument(skip_all)] async fn cli_dump( ctx: CliContext, @@ -198,7 +193,7 @@ async fn cli_dump( path: Option, ) -> Result { let dump = if let Some(path) = path { - PatchDb::open(path).await?.dump().await? + PatchDb::open(path).await?.dump().await } else { rpc_toolkit::command_helpers::call_remote( ctx, @@ -226,7 +221,7 @@ pub async fn dump( #[arg] path: Option, ) -> Result { - Ok(ctx.db.dump().await?) + Ok(ctx.db.dump().await) } fn apply_expr(input: jaq_core::Val, expr: &str) -> Result { diff --git a/backend/src/db/model.rs b/backend/src/db/model.rs index 5630884cf..3ff55a522 100644 --- a/backend/src/db/model.rs +++ b/backend/src/db/model.rs @@ -47,7 +47,7 @@ impl Database { last_wifi_region: None, eos_version_compat: Current::new().compat().clone(), lan_address, - tor_address: format!("http://{}", account.key.tor_address()) + tor_address: format!("https://{}", account.key.tor_address()) .parse() .unwrap(), ip_info: BTreeMap::new(), @@ -426,7 +426,7 @@ pub struct InstalledPackageInfo { pub marketplace_url: Option, #[serde(default)] #[serde(with = "crate::util::serde::ed25519_pubkey")] - pub developer_key: ed25519_dalek::PublicKey, + pub developer_key: ed25519_dalek::VerifyingKey, pub manifest: Manifest, pub last_backup: Option>, pub dependency_info: BTreeMap, @@ -483,6 +483,7 @@ pub struct StaticDependencyInfo { #[serde(rename_all = "kebab-case")] #[model = "Model"] pub struct CurrentDependencyInfo { + #[serde(default)] pub pointers: BTreeSet, pub health_checks: BTreeSet, } diff --git a/backend/src/db/prelude.rs b/backend/src/db/prelude.rs index 4fce5fbcb..922a47500 100644 --- a/backend/src/db/prelude.rs +++ b/backend/src/db/prelude.rs @@ -28,7 +28,7 @@ where #[async_trait::async_trait] pub trait PatchDbExt { - async fn peek(&self) -> Result; + async fn peek(&self) -> DatabaseModel; async fn mutate( &self, f: impl FnOnce(&mut DatabaseModel) -> Result + UnwindSafe + Send, @@ -40,8 +40,8 @@ pub trait PatchDbExt { } #[async_trait::async_trait] impl PatchDbExt for PatchDb { - async fn peek(&self) -> Result { - Ok(DatabaseModel::from(self.dump().await?.value)) + async fn peek(&self) -> DatabaseModel { + DatabaseModel::from(self.dump().await.value) } async fn mutate( &self, diff --git a/backend/src/dependencies.rs b/backend/src/dependencies.rs index 299518057..dfddecd93 100644 --- a/backend/src/dependencies.rs +++ b/backend/src/dependencies.rs @@ -170,7 +170,7 @@ pub async fn configure_logic( ctx: RpcContext, (pkg_id, dependency_id): (PackageId, PackageId), ) -> Result { - let db = ctx.db.peek().await?; + let db = ctx.db.peek().await; let pkg = db .as_package_data() .as_idx(&pkg_id) diff --git a/backend/src/developer/mod.rs b/backend/src/developer/mod.rs index 23d714875..8722a4a11 100644 --- a/backend/src/developer/mod.rs +++ b/backend/src/developer/mod.rs @@ -3,7 +3,8 @@ use std::io::Write; use std::path::Path; use ed25519::pkcs8::EncodePrivateKey; -use ed25519_dalek::Keypair; +use ed25519::PublicKeyBytes; +use ed25519_dalek::{SigningKey, VerifyingKey}; use rpc_toolkit::command; use tracing::instrument; @@ -21,11 +22,11 @@ pub fn init(#[context] ctx: SdkContext) -> Result<(), Error> { .with_ctx(|_| (crate::ErrorKind::Filesystem, parent.display().to_string()))?; } tracing::info!("Generating new developer key..."); - let keypair = Keypair::generate(&mut rand_old::thread_rng()); + let secret = SigningKey::generate(&mut rand::thread_rng()); tracing::info!("Writing key to {}", ctx.developer_key_path.display()); let keypair_bytes = ed25519::KeypairBytes { - secret_key: keypair.secret.to_bytes(), - public_key: Some(keypair.public.to_bytes()), + secret_key: secret.to_bytes(), + public_key: Some(PublicKeyBytes(VerifyingKey::from(&secret).to_bytes())), }; let mut dev_key_file = File::create(&ctx.developer_key_path)?; dev_key_file.write_all( diff --git a/backend/src/diagnostic.rs b/backend/src/diagnostic.rs index 1d4c3bcf5..aad95a5e5 100644 --- a/backend/src/diagnostic.rs +++ b/backend/src/diagnostic.rs @@ -9,7 +9,6 @@ use crate::disk::repair; use crate::init::SYSTEM_REBUILD_PATH; use crate::logs::{fetch_logs, LogResponse, LogSource}; use crate::shutdown::Shutdown; -use crate::system::SYSTEMD_UNIT; use crate::util::display_none; use crate::Error; @@ -29,7 +28,7 @@ pub async fn logs( #[arg] cursor: Option, #[arg] before: bool, ) -> Result { - Ok(fetch_logs(LogSource::Service(SYSTEMD_UNIT), limit, cursor, before).await?) + Ok(fetch_logs(LogSource::System, limit, cursor, before).await?) } #[command(display(display_none))] @@ -42,8 +41,10 @@ pub fn exit(#[context] ctx: DiagnosticContext) -> Result<(), Error> { pub fn restart(#[context] ctx: DiagnosticContext) -> Result<(), Error> { ctx.shutdown .send(Some(Shutdown { - datadir: ctx.datadir.clone(), - disk_guid: ctx.disk_guid.clone(), + export_args: ctx + .disk_guid + .clone() + .map(|guid| (guid, ctx.datadir.clone())), restart: true, })) .expect("receiver dropped"); diff --git a/backend/src/disk/main.rs b/backend/src/disk/main.rs index 48b392236..74f6db73c 100644 --- a/backend/src/disk/main.rs +++ b/backend/src/disk/main.rs @@ -126,6 +126,7 @@ pub async fn create_fs>( Command::new("cryptsetup") .arg("-q") .arg("luksOpen") + .arg("--allow-discards") .arg(format!("--key-file={}", PASSWORD_PATH)) .arg(format!("--keyfile-size={}", password.len())) .arg(&blockdev_path) diff --git a/backend/src/firmware.rs b/backend/src/firmware.rs new file mode 100644 index 000000000..3ffb603fe --- /dev/null +++ b/backend/src/firmware.rs @@ -0,0 +1,82 @@ +use std::path::Path; +use std::process::Stdio; + +use async_compression::tokio::bufread::GzipDecoder; +use tokio::fs::File; +use tokio::io::{AsyncRead, AsyncWriteExt, BufReader}; +use tokio::process::Command; + +use crate::disk::fsck::RequiresReboot; +use crate::prelude::*; +use crate::util::Invoke; + +pub async fn update_firmware() -> Result { + let product_name = String::from_utf8( + Command::new("dmidecode") + .arg("-s") + .arg("system-product-name") + .invoke(ErrorKind::Firmware) + .await?, + )? + .trim() + .to_owned(); + if product_name.is_empty() { + return Ok(RequiresReboot(false)); + } + let firmware_dir = Path::new("/usr/lib/embassy/firmware").join(&product_name); + if tokio::fs::metadata(&firmware_dir).await.is_ok() { + let current_firmware = String::from_utf8( + Command::new("dmidecode") + .arg("-s") + .arg("bios-version") + .invoke(ErrorKind::Firmware) + .await?, + )? + .trim() + .to_owned(); + if tokio::fs::metadata(firmware_dir.join(format!("{current_firmware}.rom.gz"))) + .await + .is_err() + && tokio::fs::metadata(firmware_dir.join(format!("{current_firmware}.rom"))) + .await + .is_err() + { + let mut firmware_read_dir = tokio::fs::read_dir(&firmware_dir).await?; + while let Some(entry) = firmware_read_dir.next_entry().await? { + let filename = entry.file_name().to_string_lossy().into_owned(); + let rdr: Option> = if filename.ends_with(".rom.gz") { + Some(Box::new(GzipDecoder::new(BufReader::new( + File::open(entry.path()).await?, + )))) + } else if filename.ends_with(".rom") { + Some(Box::new(File::open(entry.path()).await?)) + } else { + None + }; + if let Some(mut rdr) = rdr { + let mut flashrom = Command::new("flashrom") + .arg("-p") + .arg("internal") + .arg("-w-") + .stdin(Stdio::piped()) + .spawn()?; + let mut rom_dest = flashrom.stdin.take().or_not_found("stdin")?; + tokio::io::copy(&mut rdr, &mut rom_dest).await?; + rom_dest.flush().await?; + rom_dest.shutdown().await?; + drop(rom_dest); + let o = flashrom.wait_with_output().await?; + if !o.status.success() { + return Err(Error::new( + eyre!("{}", std::str::from_utf8(&o.stderr)?), + ErrorKind::Firmware, + )); + } else { + return Ok(RequiresReboot(true)); + } + } + } + } + } + Ok(RequiresReboot(false)) +} diff --git a/backend/src/init.rs b/backend/src/init.rs index 8a5ae2484..b98a23921 100644 --- a/backend/src/init.rs +++ b/backend/src/init.rs @@ -20,6 +20,9 @@ use crate::middleware::auth::LOCAL_AUTH_COOKIE_PATH; use crate::prelude::*; use crate::sound::BEP; use crate::system::time; +use crate::util::cpupower::{ + current_governor, get_available_governors, set_governor, GOVERNOR_PERFORMANCE, +}; use crate::util::docker::{create_bridge_network, CONTAINER_DATADIR, CONTAINER_TOOL}; use crate::util::Invoke; use crate::{Error, ARCH}; @@ -200,13 +203,8 @@ pub async fn init(cfg: &RpcContextConfig) -> Result { let account = AccountInfo::load(&secret_store).await?; let db = cfg.db(&account).await?; - db.mutate(|d| { - let model = d.de()?; - d.ser(&model) - }) - .await?; tracing::info!("Opened PatchDB"); - let peek = db.peek().await?; + let peek = db.peek().await; let mut server_info = peek.as_server_info().de()?; // write to ca cert store @@ -268,6 +266,11 @@ pub async fn init(cfg: &RpcContextConfig) -> Result { if tokio::fs::metadata(&tmp_dir).await.is_err() { tokio::fs::create_dir_all(&tmp_dir).await?; } + let tmp_var = cfg.datadir().join(format!("package-data/tmp/var")); + if tokio::fs::metadata(&tmp_var).await.is_ok() { + tokio::fs::remove_dir_all(&tmp_var).await?; + } + crate::disk::mount::util::bind(&tmp_var, "/var/tmp", false).await?; let tmp_docker = cfg .datadir() .join(format!("package-data/tmp/{CONTAINER_TOOL}")); @@ -341,6 +344,23 @@ pub async fn init(cfg: &RpcContextConfig) -> Result { .await?; tracing::info!("Enabled Docker QEMU Emulation"); + if current_governor() + .await? + .map(|g| &g != &GOVERNOR_PERFORMANCE) + .unwrap_or(false) + { + tracing::info!("Setting CPU Governor to \"{}\"", GOVERNOR_PERFORMANCE); + if get_available_governors() + .await? + .contains(&GOVERNOR_PERFORMANCE) + { + set_governor(&GOVERNOR_PERFORMANCE).await?; + tracing::info!("Set CPU Governor"); + } else { + tracing::warn!("CPU Governor \"{}\" Not Available", GOVERNOR_PERFORMANCE) + } + } + let mut warn_time_not_synced = true; for _ in 0..60 { if check_time_is_synchronized().await? { @@ -375,6 +395,12 @@ pub async fn init(cfg: &RpcContextConfig) -> Result { crate::version::init(&db, &secret_store).await?; + db.mutate(|d| { + let model = d.de()?; + d.ser(&model) + }) + .await?; + if should_rebuild { match tokio::fs::remove_file(SYSTEM_REBUILD_PATH).await { Ok(()) => Ok(()), diff --git a/backend/src/install/cleanup.rs b/backend/src/install/cleanup.rs index e47b7ca6b..9d87f63e9 100644 --- a/backend/src/install/cleanup.rs +++ b/backend/src/install/cleanup.rs @@ -62,7 +62,7 @@ pub async fn cleanup_failed(ctx: &RpcContext, id: &PackageId) -> Result<(), Erro if let Some(version) = match ctx .db .peek() - .await? + .await .as_package_data() .as_idx(id) .or_not_found(id)? @@ -141,7 +141,7 @@ pub async fn uninstall(ctx: &RpcContext, secrets: &mut Ex, id: &PackageId) - where for<'a> &'a mut Ex: Executor<'a, Database = Postgres>, { - let db = ctx.db.peek().await?; + let db = ctx.db.peek().await; let entry = db .as_package_data() .as_idx(id) diff --git a/backend/src/install/mod.rs b/backend/src/install/mod.rs index a85c7c823..20f57764f 100644 --- a/backend/src/install/mod.rs +++ b/backend/src/install/mod.rs @@ -22,7 +22,7 @@ use serde_json::{json, Value}; use tokio::fs::{File, OpenOptions}; use tokio::io::{AsyncRead, AsyncSeek, AsyncSeekExt, AsyncWriteExt}; use tokio::process::Command; -use tokio::sync::{oneshot, Mutex}; +use tokio::sync::oneshot; use tokio_stream::wrappers::ReadDirStream; use tracing::instrument; @@ -64,7 +64,7 @@ pub const PKG_WASM_DIR: &str = "package-data/wasm"; #[command(display(display_serializable))] pub async fn list(#[context] ctx: RpcContext) -> Result { - Ok(ctx.db.peek().await?.as_package_data().as_entries()? + Ok(ctx.db.peek().await.as_package_data().as_entries()? .iter() .filter_map(|(id, pde)| { let status = match pde.as_match() { @@ -626,9 +626,10 @@ pub async fn uninstall( let return_id = id.clone(); tokio::spawn(async move { - if let Err(e) = - async { cleanup::uninstall(&ctx, &mut ctx.secret_store.acquire().await?, &id).await } - .await + if let Err(e) = async { + cleanup::uninstall(&ctx, ctx.secret_store.acquire().await?.as_mut(), &id).await + } + .await { let err_str = format!("Uninstall of {} Failed: {}", id, e); tracing::error!("{}", err_str); @@ -666,23 +667,11 @@ pub async fn download_install_s9pk( ) -> Result<(), Error> { let pkg_id = &temp_manifest.id; let version = &temp_manifest.version; - let previous_state: Arc>> = Default::default(); - let db = ctx.db.peek().await?; - let after_previous_state = previous_state.clone(); + let db = ctx.db.peek().await; if let Result::<(), Error>::Err(e) = { let ctx = ctx.clone(); async move { - if db - .as_package_data() - .as_idx(&pkg_id) - .or_not_found(&pkg_id)? - .as_installed() - .is_some() - { - *previous_state.lock().await = - crate::control::stop(ctx.clone(), pkg_id.clone()).await.ok(); - } // // Build set of existing manifests let mut manifests = Vec::new(); for (_id, pkg) in db.as_package_data().as_entries()? { @@ -699,7 +688,7 @@ pub async fn download_install_s9pk( for (p, lan) in cfg { if p.0 == 80 && lan.ssl || p.0 == 443 && !lan.ssl { return Err(Error::new( - eyre!("SSL Conflict with embassyOS"), + eyre!("SSL Conflict with StartOS"), ErrorKind::LanPortConflict, )); } @@ -779,15 +768,6 @@ pub async fn download_install_s9pk( tracing::debug!("{:?}", e); } - let previous_state = after_previous_state.lock().await; - if previous_state - .as_ref() - .map(|x| x.running()) - .unwrap_or(false) - { - crate::control::start(ctx.clone(), pkg_id.clone()).await?; - } - Err(e) } else { Ok::<_, Error>(()) @@ -807,7 +787,7 @@ pub async fn install_s9pk( rdr.validated(); let developer_key = rdr.developer_key().clone(); rdr.reset().await?; - let db = ctx.db.peek().await?; + let db = ctx.db.peek().await; tracing::info!("Install {}@{}: Unpacking Manifest", pkg_id, version); let manifest = progress @@ -845,7 +825,12 @@ pub async fn install_s9pk( .await .with_kind(crate::ErrorKind::Deserialization)?, )), - Err(e) if e.status() == Some(StatusCode::BAD_REQUEST) => Ok(None), + Err(e) + if e.status() == Some(StatusCode::BAD_REQUEST) + || e.status() == Some(StatusCode::NOT_FOUND) => + { + Ok(None) + } Err(e) => Err(e), } .with_kind(crate::ErrorKind::Registry)? @@ -1033,6 +1018,12 @@ pub async fn install_s9pk( ) .await?; + let peek = ctx.db.peek().await; + let prev = peek + .as_package_data() + .as_idx(pkg_id) + .or_not_found(pkg_id)? + .de()?; let mut sql_tx = ctx.secret_store.begin().await?; tracing::info!("Install {}@{}: Creating volumes", pkg_id, version); @@ -1040,7 +1031,7 @@ pub async fn install_s9pk( tracing::info!("Install {}@{}: Created volumes", pkg_id, version); tracing::info!("Install {}@{}: Installing interfaces", pkg_id, version); - let interface_addresses = manifest.interfaces.install(&mut sql_tx, pkg_id).await?; + let interface_addresses = manifest.interfaces.install(sql_tx.as_mut(), pkg_id).await?; tracing::info!( "Install {}@{}: Installed interfaces {:?}", pkg_id, @@ -1095,17 +1086,10 @@ pub async fn install_s9pk( CurrentDependents(deps) }; - let peek = ctx.db.peek().await?; - let prev = peek - .as_package_data() - .as_idx(pkg_id) - .or_not_found(pkg_id)? - .de()?; let installed = InstalledPackageInfo { status: Status { configured: manifest.config.is_none(), main: MainStatus::Stopped, - dependency_errors: Default::default(), dependency_config_errors: compute_dependency_config_errs( &ctx, &peek, @@ -1241,11 +1225,7 @@ pub async fn install_s9pk( manager.configure(configure_context).await?; } - if auto_start { - manager.start(); - } - - for to_configure in to_configure { + for to_configure in to_configure.into_iter().filter(|(dep, _)| dep != pkg_id) { if let Err(e) = async { ctx.managers .get(&to_configure) @@ -1267,6 +1247,10 @@ pub async fn install_s9pk( } } + if auto_start { + manager.start().await; + } + tracing::info!("Install {}@{}: Complete", pkg_id, version); Ok(()) diff --git a/backend/src/lib.rs b/backend/src/lib.rs index 2b4818698..986682252 100644 --- a/backend/src/lib.rs +++ b/backend/src/lib.rs @@ -28,6 +28,7 @@ pub mod developer; pub mod diagnostic; pub mod disk; pub mod error; +pub mod firmware; pub mod hostname; pub mod init; pub mod inspect; diff --git a/backend/src/logs.rs b/backend/src/logs.rs index 30d73f4d7..baacb2845 100644 --- a/backend/src/logs.rs +++ b/backend/src/logs.rs @@ -198,7 +198,7 @@ fn deserialize_string_or_utf8_array<'de, D: serde::de::Deserializer<'de>>( String::from_utf8( std::iter::repeat_with(|| seq.next_element::().transpose()) .take_while(|a| a.is_some()) - .filter_map(|a| a) + .flatten() .collect::, _>>()?, ) .map_err(serde::de::Error::custom) @@ -207,13 +207,22 @@ fn deserialize_string_or_utf8_array<'de, D: serde::de::Deserializer<'de>>( deserializer.deserialize_any(Visitor) } +/// Defining how we are going to filter on a journalctl cli log. +/// Kernal: (-k --dmesg Show kernel message log from the current boot) +/// Unit: ( -u --unit=UNIT Show logs from the specified unit +/// --user-unit=UNIT Show logs from the specified user unit)) +/// System: Unit is startd, but we also filter on the comm +/// Container: Filtering containers, like podman/docker is done by filtering on the CONTAINER_NAME #[derive(Debug)] pub enum LogSource { Kernel, - Service(&'static str), + Unit(&'static str), + System, Container(PackageId), } +pub const SYSTEM_UNIT: &str = "startd"; + #[command( custom_cli(cli_logs(async, context(CliContext))), subcommands(self(logs_nofollow(async)), logs_follow), @@ -323,21 +332,15 @@ pub async fn cli_logs_generic_follow( .into()) } }; - base_url.set_scheme(ws_scheme).or_else(|_| { - Err(Error::new( - eyre!("Cannot set URL scheme"), - crate::ErrorKind::ParseUrl, - )) - })?; + base_url + .set_scheme(ws_scheme) + .map_err(|_| Error::new(eyre!("Cannot set URL scheme"), crate::ErrorKind::ParseUrl))?; let (mut stream, _) = // base_url is "http://127.0.0.1/", with a trailing slash, so we don't put a leading slash in this path: tokio_tungstenite::connect_async(format!("{}ws/rpc/{}", base_url, res.guid)).await?; while let Some(log) = stream.try_next().await? { - match log { - Message::Text(log) => { - println!("{}", serde_json::from_str::(&log)?); - } - _ => (), + if let Message::Text(log) = log { + println!("{}", serde_json::from_str::(&log)?); } } @@ -361,11 +364,22 @@ pub async fn journalctl( LogSource::Kernel => { cmd.arg("-k"); } - LogSource::Service(id) => { + LogSource::Unit(id) => { cmd.arg("-u"); cmd.arg(id); } + LogSource::System => { + cmd.arg("-u"); + cmd.arg(SYSTEM_UNIT); + cmd.arg(format!("_COMM={}", SYSTEM_UNIT)); + } LogSource::Container(id) => { + #[cfg(feature = "podman")] + cmd.arg(format!( + "SYSLOG_IDENTIFIER={}", + DockerProcedure::container_name(&id, None) + )); + #[cfg(not(feature = "podman"))] cmd.arg(format!( "CONTAINER_NAME={}", DockerProcedure::container_name(&id, None) @@ -373,7 +387,7 @@ pub async fn journalctl( } }; - let cursor_formatted = format!("--after-cursor={}", cursor.clone().unwrap_or("")); + let cursor_formatted = format!("--after-cursor={}", cursor.unwrap_or("")); if cursor.is_some() { cmd.arg(&cursor_formatted); if before { diff --git a/backend/src/manager/health.rs b/backend/src/manager/health.rs index 17e968f21..30f18051a 100644 --- a/backend/src/manager/health.rs +++ b/backend/src/manager/health.rs @@ -11,7 +11,7 @@ use crate::Error; #[instrument(skip_all)] pub async fn check(ctx: &RpcContext, id: &PackageId) -> Result<(), Error> { let (manifest, started) = { - let peeked = ctx.db.peek().await?; + let peeked = ctx.db.peek().await; let pde = peeked .as_package_data() .as_idx(id) diff --git a/backend/src/manager/manager_container.rs b/backend/src/manager/manager_container.rs index a4f44dbb4..32e11c2e5 100644 --- a/backend/src/manager/manager_container.rs +++ b/backend/src/manager/manager_container.rs @@ -53,7 +53,7 @@ impl ManageContainer { let current_state = Arc::new(watch::channel(StartStop::Stop).0); let desired_state = Arc::new( watch::channel::( - get_status(seed.ctx.db.peek().await?, &seed.manifest).into(), + get_status(seed.ctx.db.peek().await, &seed.manifest).into(), ) .0, ); @@ -103,7 +103,7 @@ impl ManageContainer { &self, seed: &manager_seed::ManagerSeed, ) -> Result<(), Error> { - let current_state = get_status(seed.ctx.db.peek().await?, &seed.manifest); + let current_state = get_status(seed.ctx.db.peek().await, &seed.manifest); self.override_main_status .send_modify(|x| *x = Some(current_state)); Ok(()) diff --git a/backend/src/manager/mod.rs b/backend/src/manager/mod.rs index 2154ccf8d..f8f9ff16d 100644 --- a/backend/src/manager/mod.rs +++ b/backend/src/manager/mod.rs @@ -111,7 +111,7 @@ pub struct Manager { seed: Arc, manage_container: Arc, - transition: Arc>>, + transition: Arc>, persistent_container: ManagerPersistentContainer, pub gid: Arc, @@ -140,60 +140,67 @@ impl Manager { }) } - pub fn start(&self) { - self._transition_abort(); - self.manage_container.to_desired(StartStop::Start); - } - pub fn stop(&self) { - self._transition_abort(); - self.manage_container.to_desired(StartStop::Stop); - } - pub fn restart(&self) { + /// awaiting this does not wait for the start to complete + pub async fn start(&self) { if self._is_transition_restart() { return; } - self._transition_replace(self._transition_restart()); + self._transition_abort().await; + self.manage_container.to_desired(StartStop::Start); } + + /// awaiting this does not wait for the stop to complete + pub async fn stop(&self) { + self._transition_abort().await; + self.manage_container.to_desired(StartStop::Stop); + } + /// awaiting this does not wait for the restart to complete + pub async fn restart(&self) { + if self._is_transition_restart() + && *self.manage_container.desired_state().borrow() == StartStop::Stop + { + return; + } + if self.manage_container.desired_state().borrow().is_start() { + self._transition_replace(self._transition_restart()).await; + } + } + /// awaiting this does not wait for the restart to complete pub async fn configure( &self, configure_context: ConfigureContext, ) -> Result, Error> { - if self._is_transition_configure() { - return Ok(configure_context.breakages); + if self._is_transition_restart() { + self._transition_abort().await; + } else if self._is_transition_backup() { + return Err(Error::new( + eyre!("Can't configure because service is backing up"), + ErrorKind::InvalidRequest, + )); } let context = self.seed.ctx.clone(); let id = self.seed.manifest.id.clone(); let breakages = configure(context, id, configure_context).await?; - self._transition_replace({ - let manage_container = self.manage_container.clone(); - let state_reverter = DesiredStateReverter::new(manage_container.clone()); - let transition = self.transition.clone(); - TransitionState::Configuring( - tokio::spawn(async move { - manage_container.wait_for_desired(StartStop::Stop).await; + self.restart().await; - state_reverter.revert().await; - transition.send_replace(Default::default()); - }) - .into(), - ) - }); Ok(breakages) } + + /// awaiting this does not wait for the backup to complete pub async fn backup(&self, backup_guard: BackupGuard) -> BackupReturn { if self._is_transition_backup() { return BackupReturn::AlreadyRunning(PackageBackupReport { - error: Some("Can't do backup because service is in a backing up state".to_owned()), + error: Some("Can't do backup because service is already backing up".to_owned()), }); } let (transition_state, done) = self._transition_backup(backup_guard); - self._transition_replace(transition_state); + self._transition_replace(transition_state).await; done.await } pub async fn exit(&self) { - self._transition_abort(); + self._transition_abort().await; self.manage_container .wait_for_desired(StartStop::Stop) .await; @@ -220,19 +227,14 @@ impl Manager { .map(|x| x.rpc_client()) } - fn _transition_abort(&self) { - if let Some(transition) = self - .transition - .send_replace(Default::default()) - .join_handle() - { - (**transition).abort(); - } - } - fn _transition_replace(&self, transition_state: TransitionState) { + async fn _transition_abort(&self) { self.transition - .send_replace(Arc::new(transition_state)) - .abort(); + .send_replace(Default::default()) + .abort() + .await; + } + async fn _transition_replace(&self, transition_state: TransitionState) { + self.transition.send_replace(transition_state).abort().await; } pub(super) fn perform_restart(&self) -> impl Future> + 'static { @@ -265,7 +267,7 @@ impl Manager { let manage_container = self.manage_container.clone(); let seed = self.seed.clone(); async move { - let peek = seed.ctx.db.peek().await?; + let peek = seed.ctx.db.peek().await; let state_reverter = DesiredStateReverter::new(manage_container.clone()); let override_guard = manage_container.set_override(get_status(peek, &seed.manifest).backing_up())?; @@ -322,15 +324,11 @@ impl Manager { } fn _is_transition_restart(&self) -> bool { let transition = self.transition.borrow(); - matches!(**transition, TransitionState::Restarting(_)) + matches!(*transition, TransitionState::Restarting(_)) } fn _is_transition_backup(&self) -> bool { let transition = self.transition.borrow(); - matches!(**transition, TransitionState::BackingUp(_)) - } - fn _is_transition_configure(&self) -> bool { - let transition = self.transition.borrow(); - matches!(**transition, TransitionState::Configuring(_)) + matches!(*transition, TransitionState::BackingUp(_)) } } @@ -340,7 +338,7 @@ async fn configure( id: PackageId, mut configure_context: ConfigureContext, ) -> Result, Error> { - let db = ctx.db.peek().await?; + let db = ctx.db.peek().await; let id = &id; let ctx = &ctx; let overrides = &mut configure_context.overrides; @@ -602,7 +600,7 @@ impl Drop for DesiredStateReverter { type BackupDoneSender = oneshot::Sender>; fn finish_up_backup_task( - transition: Arc>>, + transition: Arc>, send: BackupDoneSender, ) -> impl FnOnce(Result, Error>) -> BoxFuture<'static, ()> { move |result| { @@ -761,7 +759,7 @@ async fn add_network_for_main( for (id, interface) in &seed.manifest.interfaces.0 { for (external, internal) in interface.lan_config.iter().flatten() { svc.add_lan( - &mut tx, + tx.as_mut(), id.clone(), external.0, internal.internal, @@ -770,13 +768,14 @@ async fn add_network_for_main( .await?; } for (external, internal) in interface.tor_config.iter().flat_map(|t| &t.port_mapping) { - svc.add_tor(&mut tx, id.clone(), external.0, internal.0) + svc.add_tor(tx.as_mut(), id.clone(), external.0, internal.0) .await?; } } for volume in seed.manifest.volumes.values() { if let Volume::Certificate { interface_id } = volume { - svc.export_cert(&mut tx, interface_id, ip.into()).await?; + svc.export_cert(tx.as_mut(), interface_id, ip.into()) + .await?; } } tx.commit().await?; diff --git a/backend/src/manager/transition_state.rs b/backend/src/manager/transition_state.rs index 6826aef09..122c0f703 100644 --- a/backend/src/manager/transition_state.rs +++ b/backend/src/manager/transition_state.rs @@ -5,21 +5,26 @@ use helpers::NonDetachingJoinHandle; pub(super) enum TransitionState { BackingUp(NonDetachingJoinHandle<()>), Restarting(NonDetachingJoinHandle<()>), - Configuring(NonDetachingJoinHandle<()>), None, } impl TransitionState { - pub(super) fn join_handle(&self) -> Option<&NonDetachingJoinHandle<()>> { + pub(super) fn take(&mut self) -> Self { + std::mem::take(self) + } + pub(super) fn into_join_handle(self) -> Option> { Some(match self { TransitionState::BackingUp(a) => a, TransitionState::Restarting(a) => a, - TransitionState::Configuring(a) => a, TransitionState::None => return None, }) } - pub(super) fn abort(&self) { - self.join_handle().map(|transition| transition.abort()); + pub(super) async fn abort(&mut self) { + if let Some(s) = self.take().into_join_handle() { + if s.wait_for_abort().await.is_ok() { + tracing::trace!("transition completed before abort"); + } + } } } diff --git a/backend/src/middleware/auth.rs b/backend/src/middleware/auth.rs index ecc07ffd6..611923ad6 100644 --- a/backend/src/middleware/auth.rs +++ b/backend/src/middleware/auth.rs @@ -47,7 +47,7 @@ impl HasLoggedOutSessions { "UPDATE session SET logged_out = CURRENT_TIMESTAMP WHERE id = $1", session ) - .execute(&mut sqlx_conn) + .execute(sqlx_conn.as_mut()) .await?; for socket in open_authed_websockets.remove(&session).unwrap_or_default() { let _ = socket.send(()); @@ -94,7 +94,7 @@ impl HasValidSession { pub async fn from_session(session: &HashSessionToken, ctx: &RpcContext) -> Result { let session_hash = session.hashed(); let session = sqlx::query!("UPDATE session SET last_active = CURRENT_TIMESTAMP WHERE id = $1 AND logged_out IS NULL OR logged_out > CURRENT_TIMESTAMP", session_hash) - .execute(&mut ctx.secret_store.acquire().await?) + .execute(ctx.secret_store.acquire().await?.as_mut()) .await?; if session.rows_affected() == 0 { return Err(Error::new( diff --git a/backend/src/middleware/cors.rs b/backend/src/middleware/cors.rs index 132a2385f..5f33bc08d 100644 --- a/backend/src/middleware/cors.rs +++ b/backend/src/middleware/cors.rs @@ -1,4 +1,6 @@ use futures::FutureExt; +use http::HeaderValue; +use hyper::header::HeaderMap; use rpc_toolkit::hyper::http::Error as HttpError; use rpc_toolkit::hyper::{Body, Method, Request, Response}; use rpc_toolkit::rpc_server_helpers::{ @@ -6,24 +8,35 @@ use rpc_toolkit::rpc_server_helpers::{ }; use rpc_toolkit::Metadata; +fn get_cors_headers(req: &Request) -> HeaderMap { + let mut res = HeaderMap::new(); + if let Some(origin) = req.headers().get("Origin") { + res.insert("Access-Control-Allow-Origin", origin.clone()); + } + if let Some(method) = req.headers().get("Access-Control-Request-Method") { + res.insert("Access-Control-Allow-Methods", method.clone()); + } + if let Some(headers) = req.headers().get("Access-Control-Request-Headers") { + res.insert("Access-Control-Allow-Headers", headers.clone()); + } + res.insert( + "Access-Control-Allow-Credentials", + HeaderValue::from_static("true"), + ); + res +} + pub async fn cors( req: &mut Request, _metadata: M, ) -> Result>, HttpError> { + let headers = get_cors_headers(req); if req.method() == Method::OPTIONS { - Ok(Err(Response::builder() - .header( - "Access-Control-Allow-Origin", - if let Some(origin) = req.headers().get("origin").and_then(|s| s.to_str().ok()) { - origin - } else { - "*" - }, - ) - .header("Access-Control-Allow-Methods", "*") - .header("Access-Control-Allow-Headers", "*") - .header("Access-Control-Allow-Credentials", "true") - .body(Body::empty())?)) + Ok(Err({ + let mut res = Response::new(Body::empty()); + res.headers_mut().extend(headers.into_iter()); + res + })) } else { Ok(Ok(Box::new(|_, _| { async move { @@ -31,8 +44,7 @@ pub async fn cors( async move { let res: DynMiddlewareStage4 = Box::new(|res| { async move { - res.headers_mut() - .insert("Access-Control-Allow-Origin", "*".parse()?); + res.headers_mut().extend(headers.into_iter()); Ok::<_, HttpError>(()) } .boxed() diff --git a/backend/src/middleware/db.rs b/backend/src/middleware/db.rs index eeeeb299a..c3ceadda6 100644 --- a/backend/src/middleware/db.rs +++ b/backend/src/middleware/db.rs @@ -1,4 +1,3 @@ -use color_eyre::eyre::eyre; use futures::future::BoxFuture; use futures::FutureExt; use http::HeaderValue; @@ -11,7 +10,6 @@ use rpc_toolkit::yajrc::RpcMethod; use rpc_toolkit::Metadata; use crate::context::RpcContext; -use crate::{Error, ResultExt}; pub fn db(ctx: RpcContext) -> DynMiddleware { Box::new( @@ -20,51 +18,21 @@ pub fn db(ctx: RpcContext) -> DynMiddleware { -> BoxFuture>, HttpError>> { let ctx = ctx.clone(); async move { - let m2: DynMiddlewareStage2 = Box::new(move |req, rpc_req| { + let m2: DynMiddlewareStage2 = Box::new(move |_req, rpc_req| { async move { - let seq = req.headers.remove("x-patch-sequence"); let sync_db = metadata .get(rpc_req.method.as_str(), "sync_db") .unwrap_or(false); let m3: DynMiddlewareStage3 = Box::new(move |res, _| { async move { - if sync_db && seq.is_some() { - match async { - let seq = seq - .ok_or_else(|| { - Error::new( - eyre!("Missing X-Patch-Sequence"), - crate::ErrorKind::InvalidRequest, - ) - })? - .to_str() - .with_kind(crate::ErrorKind::InvalidRequest)? - .parse()?; - let res = ctx.db.sync(seq).await?; - let json = match res { - Ok(revs) => serde_json::to_vec(&revs), - Err(dump) => serde_json::to_vec(&[dump]), - } - .with_kind(crate::ErrorKind::Serialization)?; - Ok::<_, Error>(base64::encode_config( - &json, - base64::URL_SAFE, - )) - } - .await - { - Ok(a) => res - .headers - .append("X-Patch-Updates", HeaderValue::from_str(&a)?), - Err(e) => res.headers.append( - "X-Patch-Error", - HeaderValue::from_str(&base64::encode_config( - &e.to_string(), - base64::URL_SAFE, - ))?, - ), - }; + if sync_db { + res.headers.append( + "X-Patch-Sequence", + HeaderValue::from_str( + &ctx.db.sequence().await.to_string(), + )?, + ); } Ok(Ok(noop4())) } diff --git a/backend/src/middleware/encrypt.rs b/backend/src/middleware/encrypt.rs index 6eb8ed967..010197c49 100644 --- a/backend/src/middleware/encrypt.rs +++ b/backend/src/middleware/encrypt.rs @@ -13,7 +13,7 @@ pub fn pbkdf2(password: impl AsRef<[u8]>, salt: impl AsRef<[u8]>) -> CipherKey>(), diff --git a/backend/src/net/keys.rs b/backend/src/net/keys.rs index 12516e900..6f5f13f82 100644 --- a/backend/src/net/keys.rs +++ b/backend/src/net/keys.rs @@ -1,5 +1,4 @@ use color_eyre::eyre::eyre; -use ed25519_dalek::{ExpandedSecretKey, SecretKey}; use models::{Id, InterfaceId, PackageId}; use openssl::pkey::{PKey, Private}; use openssl::sha::Sha256; @@ -12,14 +11,15 @@ use tracing::instrument; use zeroize::Zeroize; use crate::net::ssl::CertPair; -use crate::Error; +use crate::prelude::*; +use crate::util::crypto::ed25519_expand_key; // TODO: delete once we may change tor addresses #[instrument(skip(secrets))] async fn compat( secrets: impl PgExecutor<'_>, interface: &Option<(PackageId, InterfaceId)>, -) -> Result, Error> { +) -> Result, Error> { if let Some((package, interface)) = interface { if let Some(r) = sqlx::query!( "SELECT key FROM tor WHERE package = $1 AND interface = $2", @@ -29,7 +29,12 @@ async fn compat( .fetch_optional(secrets) .await? { - Ok(Some(ExpandedSecretKey::from_bytes(&r.key)?)) + Ok(Some(<[u8; 64]>::try_from(r.key).map_err(|e| { + Error::new( + eyre!("expected vec of len 64, got len {}", e.len()), + ErrorKind::ParseDbField, + ) + })?)) } else { Ok(None) } @@ -38,7 +43,12 @@ async fn compat( .await? .tor_key { - Ok(Some(ExpandedSecretKey::from_bytes(&key)?)) + Ok(Some(<[u8; 64]>::try_from(key).map_err(|e| { + Error::new( + eyre!("expected vec of len 64, got len {}", e.len()), + ErrorKind::ParseDbField, + ) + })?)) } else { Ok(None) } @@ -64,10 +74,7 @@ impl Key { .unwrap_or_else(|| "embassy".to_owned()) } pub fn tor_key(&self) -> TorSecretKeyV3 { - ed25519_dalek::ExpandedSecretKey::from_bytes(&self.tor_key) - .unwrap() - .to_bytes() - .into() + self.tor_key.into() } pub fn tor_address(&self) -> OnionAddressV3 { self.tor_key().public().get_onion_address() @@ -87,7 +94,7 @@ impl Key { pub fn openssl_key_nistp256(&self) -> PKey { let mut buf = self.base; loop { - if let Ok(k) = p256::SecretKey::from_be_bytes(&buf) { + if let Ok(k) = p256::SecretKey::from_slice(&buf) { return PKey::private_key_from_pkcs8(&*k.to_pkcs8_der().unwrap().as_bytes()) .unwrap(); } @@ -111,11 +118,7 @@ impl Key { } } pub fn from_bytes(interface: Option<(PackageId, InterfaceId)>, bytes: [u8; 32]) -> Self { - Self::from_pair( - interface, - bytes, - ExpandedSecretKey::from(&SecretKey::from_bytes(&bytes).unwrap()).to_bytes(), - ) + Self::from_pair(interface, bytes, ed25519_expand_key(&bytes)) } pub fn new(interface: Option<(PackageId, InterfaceId)>) -> Self { Self::from_bytes(interface, rand::random()) @@ -225,7 +228,7 @@ impl Key { }; let mut res = Self::from_bytes(interface, actual); if let Some(tor_key) = compat(secrets, &res.interface).await? { - res.tor_key = tor_key.to_bytes(); + res.tor_key = tor_key; } Ok(res) } diff --git a/backend/src/net/mod.rs b/backend/src/net/mod.rs index caa080940..afba879f0 100644 --- a/backend/src/net/mod.rs +++ b/backend/src/net/mod.rs @@ -23,7 +23,7 @@ pub mod wifi; pub const PACKAGE_CERT_PATH: &str = "/var/lib/embassy/ssl"; -#[command(subcommands(tor::tor, dhcp::dhcp))] +#[command(subcommands(tor::tor, dhcp::dhcp, ssl::ssl))] pub fn net() -> Result<(), Error> { Ok(()) } diff --git a/backend/src/net/net_controller.rs b/backend/src/net/net_controller.rs index 8865d4dd8..39df25ee9 100644 --- a/backend/src/net/net_controller.rs +++ b/backend/src/net/net_controller.rs @@ -159,6 +159,7 @@ impl NetController { let dns = self.dns.add(Some(package.clone()), ip).await?; Ok(NetService { + shutdown: false, id: package, ip, dns, @@ -225,6 +226,7 @@ impl NetController { } pub struct NetService { + shutdown: bool, id: PackageId, ip: Ipv4Addr, dns: Arc<()>, @@ -372,6 +374,7 @@ impl NetService { Ok(()) } pub async fn remove_all(mut self) -> Result<(), Error> { + self.shutdown = true; let mut errors = ErrorCollection::new(); if let Some(ctrl) = Weak::upgrade(&self.controller) { for ((_, external), (key, rcs)) in std::mem::take(&mut self.lan) { @@ -385,9 +388,9 @@ impl NetService { } std::mem::take(&mut self.dns); errors.handle(ctrl.dns.gc(Some(self.id.clone()), self.ip).await); - self.ip = Ipv4Addr::new(0, 0, 0, 0); errors.into_result() } else { + tracing::warn!("NetService dropped after NetController is shutdown"); Err(Error::new( eyre!("NetController is shutdown"), crate::ErrorKind::Network, @@ -398,11 +401,12 @@ impl NetService { impl Drop for NetService { fn drop(&mut self) { - if self.ip != Ipv4Addr::new(0, 0, 0, 0) { + if !self.shutdown { tracing::debug!("Dropping NetService for {}", self.id); let svc = std::mem::replace( self, NetService { + shutdown: true, id: Default::default(), ip: Ipv4Addr::new(0, 0, 0, 0), dns: Default::default(), diff --git a/backend/src/net/ssl.rs b/backend/src/net/ssl.rs index af785d476..89e16b0a9 100644 --- a/backend/src/net/ssl.rs +++ b/backend/src/net/ssl.rs @@ -13,14 +13,15 @@ use openssl::nid::Nid; use openssl::pkey::{PKey, Private}; use openssl::x509::{X509Builder, X509Extension, X509NameBuilder, X509}; use openssl::*; +use rpc_toolkit::command; use tokio::sync::{Mutex, RwLock}; use tracing::instrument; use crate::account::AccountInfo; +use crate::context::RpcContext; use crate::hostname::Hostname; use crate::net::dhcp::ips; use crate::net::keys::{Key, KeyInfo}; -use crate::s9pk::manifest::PackageId; use crate::{Error, ErrorKind, ResultExt}; static CERTIFICATE_VERSION: i32 = 2; // X509 version 3 is actually encoded as '2' in the cert because fuck you. @@ -415,3 +416,16 @@ pub fn make_leaf_cert( let cert = builder.build(); Ok(cert) } + +#[command(subcommands(size))] +pub async fn ssl() -> Result<(), Error> { + Ok(()) +} + +#[command] +pub async fn size(#[context] ctx: RpcContext) -> Result { + Ok(format!( + "Cert Catch size: {}", + ctx.net_controller.ssl.cert_cache.read().await.len() + )) +} diff --git a/backend/src/net/tor.rs b/backend/src/net/tor.rs index d1d8f0b80..9926d3c6c 100644 --- a/backend/src/net/tor.rs +++ b/backend/src/net/tor.rs @@ -139,7 +139,7 @@ pub async fn logs_nofollow( _ctx: (), (limit, cursor, before, _): (Option, Option, bool, bool), ) -> Result { - fetch_logs(LogSource::Service(SYSTEMD_UNIT), limit, cursor, before).await + fetch_logs(LogSource::Unit(SYSTEMD_UNIT), limit, cursor, before).await } #[command(rpc_only, rename = "follow", display(display_none))] @@ -147,7 +147,7 @@ pub async fn logs_follow( #[context] ctx: RpcContext, #[parent_data] (limit, _, _, _): (Option, Option, bool, bool), ) -> Result { - follow_logs(ctx, LogSource::Service(SYSTEMD_UNIT), limit).await + follow_logs(ctx, LogSource::Unit(SYSTEMD_UNIT), limit).await } fn event_handler(_event: AsyncEvent<'static>) -> BoxFuture<'static, Result<(), ConnError>> { @@ -305,7 +305,7 @@ async fn torctl( .invoke(ErrorKind::Tor) .await?; - let logs = journalctl(LogSource::Service(SYSTEMD_UNIT), 0, None, false, true).await?; + let logs = journalctl(LogSource::Unit(SYSTEMD_UNIT), 0, None, false, true).await?; let mut tcp_stream = None; for _ in 0..60 { diff --git a/backend/src/net/vhost.rs b/backend/src/net/vhost.rs index e8e754baf..00ffc6c59 100644 --- a/backend/src/net/vhost.rs +++ b/backend/src/net/vhost.rs @@ -16,12 +16,13 @@ use tokio::sync::{Mutex, RwLock}; use tokio_rustls::rustls::server::Acceptor; use tokio_rustls::rustls::{RootCertStore, ServerConfig}; use tokio_rustls::{LazyConfigAcceptor, TlsConnector}; +use tracing::instrument; use crate::net::keys::Key; use crate::net::ssl::SslManager; use crate::net::utils::SingleAccept; +use crate::prelude::*; use crate::util::io::{BackTrackingReader, TimeoutStream}; -use crate::Error; // not allowed: <=1024, >=32768, 5355, 5432, 9050, 6010, 9051, 5353 @@ -36,6 +37,7 @@ impl VHostController { servers: Mutex::new(BTreeMap::new()), } } + #[instrument(skip_all)] pub async fn add( &self, key: Key, @@ -63,6 +65,7 @@ impl VHostController { writable.insert(external, server); Ok(rc?) } + #[instrument(skip_all)] pub async fn gc(&self, hostname: Option, external: u16) -> Result<(), Error> { let mut writable = self.servers.lock().await; if let Some(server) = writable.remove(&external) { @@ -93,6 +96,7 @@ struct VHostServer { _thread: NonDetachingJoinHandle<()>, } impl VHostServer { + #[instrument(skip_all)] async fn new(port: u16, ssl: Arc) -> Result { // check if port allowed let listener = TcpListener::bind(SocketAddr::new(Ipv6Addr::UNSPECIFIED.into(), port)) diff --git a/backend/src/net/wifi.rs b/backend/src/net/wifi.rs index d0d0dc6c0..8429f9205 100644 --- a/backend/src/net/wifi.rs +++ b/backend/src/net/wifi.rs @@ -174,7 +174,7 @@ pub async fn delete(#[context] ctx: RpcContext, #[arg] ssid: String) -> Result<( pub struct WiFiInfo { ssids: HashMap, connected: Option, - country: CountryCode, + country: Option, ethernet: bool, available_wifi: Vec, } @@ -216,7 +216,7 @@ fn display_wifi_info(info: WiFiInfo, matches: &ArgMatches) { .as_ref() .and_then(|x| info.ssids.get(x)) .map_or("[N/A]".to_owned(), |ss| format!("{}", ss.0)), - &info.country.alpha2(), + info.country.as_ref().map(|c| c.alpha2()).unwrap_or("00"), &format!("{}", info.ethernet) ]); table_global.print_tty(false).unwrap(); @@ -517,7 +517,7 @@ impl WpaCli { Ok(()) } - pub async fn get_country_low(&self) -> Result { + pub async fn get_country_low(&self) -> Result, Error> { let r = Command::new("iw") .arg("reg") .arg("get") @@ -539,12 +539,16 @@ impl WpaCli { ErrorKind::Wifi, ) })?[1]; - Ok(CountryCode::for_alpha2(country).map_err(|_| { - Error::new( - color_eyre::eyre::eyre!("Invalid Country Code: {}", country), - ErrorKind::Wifi, - ) - })?) + if country == "00" { + Ok(None) + } else { + Ok(Some(CountryCode::for_alpha2(country).map_err(|_| { + Error::new( + color_eyre::eyre::eyre!("Invalid Country Code: {}", country), + ErrorKind::Wifi, + ) + })?)) + } } pub async fn remove_network_low(&mut self, id: NetworkId) -> Result<(), Error> { let _ = Command::new("nmcli") @@ -634,7 +638,7 @@ impl WpaCli { Ok(()) } pub async fn save_config(&mut self, db: PatchDb) -> Result<(), Error> { - let new_country = Some(self.get_country_low().await?); + let new_country = self.get_country_low().await?; db.mutate(|d| { d.as_server_info_mut() .as_last_wifi_region_mut() diff --git a/backend/src/notifications.rs b/backend/src/notifications.rs index afe92c571..73351471c 100644 --- a/backend/src/notifications.rs +++ b/backend/src/notifications.rs @@ -236,7 +236,7 @@ impl NotificationManager { subtype: T, debounce_interval: Option, ) -> Result<(), Error> { - let peek = db.peek().await?; + let peek = db.peek().await; if !self .should_notify(&package_id, &level, &title, debounce_interval) .await diff --git a/backend/src/procedure/js_scripts.rs b/backend/src/procedure/js_scripts.rs index 4c49e7f74..24b9eb6e9 100644 --- a/backend/src/procedure/js_scripts.rs +++ b/backend/src/procedure/js_scripts.rs @@ -1,24 +1,27 @@ -use std::path::{Path, PathBuf}; use std::sync::Arc; use std::time::Duration; +use std::{ + path::{Path, PathBuf}, + process::Stdio, +}; use color_eyre::eyre::eyre; -use color_eyre::Report; -use embassy_container_init::{ProcessGroupId, SignalGroup, SignalGroupParams}; -use helpers::{Address, AddressSchemaLocal, AddressSchemaOnion, Callback, OsApi, UnixRpcClient}; +use embassy_container_init::ProcessGroupId; +use helpers::UnixRpcClient; pub use js_engine::JsError; use js_engine::{JsExecutionEnvironment, PathForVolumeId}; -use models::{ErrorKind, InterfaceId, VolumeId}; +use models::VolumeId; use serde::de::DeserializeOwned; use serde::{Deserialize, Serialize}; +use tokio::process::Command; use tracing::instrument; use super::ProcedureName; -use crate::context::RpcContext; +use crate::prelude::*; use crate::s9pk::manifest::PackageId; -use crate::util::{GeneralGuard, Version}; +use crate::util::io::to_json_async_writer; +use crate::util::Version; use crate::volume::Volumes; -use crate::Error; #[derive(Debug, Serialize, Deserialize, Clone)] #[serde(rename_all = "kebab-case")] @@ -46,56 +49,15 @@ impl PathForVolumeId for Volumes { } } -struct SandboxOsApi { - _ctx: RpcContext, -} -#[async_trait::async_trait] -impl OsApi for SandboxOsApi { - #[allow(unused_variables)] - async fn get_service_config( - &self, - id: PackageId, - path: &str, - callback: Option, - ) -> Result, Report> { - Err(eyre!("Operation not permitted")) - } - #[allow(unused_variables)] - async fn bind_local( - &self, - internal_port: u16, - address_schema: AddressSchemaLocal, - ) -> Result { - Err(eyre!("Operation not permitted")) - } - #[allow(unused_variables)] - async fn bind_onion( - &self, - internal_port: u16, - address_schema: AddressSchemaOnion, - ) -> Result { - Err(eyre!("Operation not permitted")) - } - #[allow(unused_variables)] - async fn unbind_local(&self, id: InterfaceId, external: u16) -> Result<(), Report> { - Err(eyre!("Operation not permitted")) - } - #[allow(unused_variables)] - async fn unbind_onion(&self, id: InterfaceId, external: u16) -> Result<(), Report> { - Err(eyre!("Operation not permitted")) - } - fn set_started(&self) -> Result<(), Report> { - Err(eyre!("Operation not permitted")) - } - async fn restart(&self) -> Result<(), Report> { - Err(eyre!("Operation not permitted")) - } - async fn start(&self) -> Result<(), Report> { - Err(eyre!("Operation not permitted")) - } - async fn stop(&self) -> Result<(), Report> { - Err(eyre!("Operation not permitted")) - } +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct ExecuteArgs { + pub procedure: JsProcedure, + pub directory: PathBuf, + pub pkg_id: PackageId, + pub pkg_version: Version, + pub name: ProcedureName, + pub volumes: Volumes, + pub input: Option, } #[derive(Clone, Debug, Default, Deserialize, Serialize)] @@ -120,56 +82,54 @@ impl JsProcedure { volumes: &Volumes, input: Option, timeout: Option, - gid: ProcessGroupId, - rpc_client: Option>, - os: Arc, + _gid: ProcessGroupId, + _rpc_client: Option>, ) -> Result, Error> { - let cleaner_client = rpc_client.clone(); - let cleaner = GeneralGuard::new(move || { - tokio::spawn(async move { - if let Some(client) = cleaner_client { - client - .request(SignalGroup, SignalGroupParams { gid, signal: 9 }) - .await - .map_err(|e| { - Error::new(eyre!("{}: {:?}", e.message, e.data), ErrorKind::Docker) - }) - } else { - Ok(()) - } - }) - }); - let res = async move { - let running_action = JsExecutionEnvironment::load_from_package( - os, - directory, - pkg_id, - pkg_version, - Box::new(volumes.clone()), - gid, - rpc_client, - ) - .await? - .run_action(name, input, self.args.clone()); - let output: Option = match timeout { - Some(timeout_duration) => tokio::time::timeout(timeout_duration, running_action) - .await - .map_err(|_| (JsError::Timeout, "Timed out. Retrying soon...".to_owned()))??, - None => running_action.await?, - }; - let output: O = unwrap_known_error(output)?; - Ok(output) + let runner_argument = ExecuteArgs { + procedure: self.clone(), + directory: directory.clone(), + pkg_id: pkg_id.clone(), + pkg_version: pkg_version.clone(), + name, + volumes: volumes.clone(), + input: input.and_then(|x| serde_json::to_value(x).ok()), + }; + let mut runner = Command::new("start-deno") + .arg("execute") + .stdin(Stdio::piped()) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .kill_on_drop(true) + .spawn()?; + to_json_async_writer( + &mut runner.stdin.take().or_not_found("stdin")?, + &runner_argument, + ) + .await?; + + let res = if let Some(timeout) = timeout { + tokio::time::timeout(timeout, runner.wait_with_output()) + .await + .with_kind(ErrorKind::Timeout)?? + } else { + runner.wait_with_output().await? + }; + + if res.status.success() { + serde_json::from_str::>(std::str::from_utf8(&res.stdout)?) + .with_kind(ErrorKind::Deserialization) + } else { + Err(Error::new( + eyre!("{}", String::from_utf8(res.stderr)?), + ErrorKind::Javascript, + )) } - .await - .map_err(|(error, message)| (error.as_code_num(), message)); - cleaner.drop().await.unwrap()?; - Ok(res) } #[instrument(skip_all)] pub async fn sandboxed( &self, - ctx: &RpcContext, + directory: &PathBuf, pkg_id: &PackageId, pkg_version: &Version, volumes: &Volumes, @@ -177,25 +137,97 @@ impl JsProcedure { timeout: Option, name: ProcedureName, ) -> Result, Error> { - Ok(async move { + let runner_argument = ExecuteArgs { + procedure: self.clone(), + directory: directory.clone(), + pkg_id: pkg_id.clone(), + pkg_version: pkg_version.clone(), + name, + volumes: volumes.clone(), + input: input.and_then(|x| serde_json::to_value(x).ok()), + }; + let mut runner = Command::new("start-deno") + .arg("sandbox") + .stdin(Stdio::piped()) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .kill_on_drop(true) + .spawn()?; + to_json_async_writer( + &mut runner.stdin.take().or_not_found("stdin")?, + &runner_argument, + ) + .await?; + + let res = if let Some(timeout) = timeout { + tokio::time::timeout(timeout, runner.wait_with_output()) + .await + .with_kind(ErrorKind::Timeout)?? + } else { + runner.wait_with_output().await? + }; + + if res.status.success() { + serde_json::from_str::>(std::str::from_utf8(&res.stdout)?) + .with_kind(ErrorKind::Deserialization) + } else { + Err(Error::new( + eyre!("{}", String::from_utf8(res.stderr)?), + ErrorKind::Javascript, + )) + } + } + + #[instrument(skip_all)] + pub async fn execute_impl( + &self, + directory: &PathBuf, + pkg_id: &PackageId, + pkg_version: &Version, + name: ProcedureName, + volumes: &Volumes, + input: Option, + ) -> Result, Error> { + let res = async move { let running_action = JsExecutionEnvironment::load_from_package( - Arc::new(SandboxOsApi { _ctx: ctx.clone() }), - &ctx.datadir, + directory, + pkg_id, + pkg_version, + Box::new(volumes.clone()), + ) + .await? + .run_action(name, input, self.args.clone()); + let output: Option = running_action.await?; + let output: O = unwrap_known_error(output)?; + Ok(output) + } + .await + .map_err(|(error, message)| (error.as_code_num(), message)); + + Ok(res) + } + + #[instrument(skip_all)] + pub async fn sandboxed_impl( + &self, + directory: &PathBuf, + pkg_id: &PackageId, + pkg_version: &Version, + volumes: &Volumes, + input: Option, + name: ProcedureName, + ) -> Result, Error> { + Ok(async move { + let running_action = JsExecutionEnvironment::load_from_package( + directory, pkg_id, pkg_version, Box::new(volumes.clone()), - ProcessGroupId(0), - None, ) .await? .read_only_effects() .run_action(name, input, self.args.clone()); - let output: Option = match timeout { - Some(timeout_duration) => tokio::time::timeout(timeout_duration, running_action) - .await - .map_err(|_| (JsError::Timeout, "Timed out. Retrying soon...".to_owned()))??, - None => running_action.await?, - }; + let output: Option = running_action.await?; let output: O = unwrap_known_error(output)?; Ok(output) } @@ -873,134 +905,40 @@ mod tests { } })) .unwrap(); - let input: Option = None; - let timeout = Some(Duration::from_secs(10)); - js_action - .execute::( - &path, - &package_id, - &package_version, - name, - &volumes, - input, - timeout, - ProcessGroupId(0), - None, - Arc::new(OsApiMock::default()), - ) - .await - .unwrap() - .unwrap(); - } - #[tokio::test] - async fn test_callback() { - let api = Arc::new(OsApiMock::default()); - let action_api = api.clone(); - let spawned = tokio::spawn(async move { - let mut watching = api.config_callbacks.subscribe(); - loop { - if watching.borrow().is_empty() { - watching.changed().await.unwrap(); - continue; - } - api.config_callbacks.send_modify(|x| { - x[0].call(vec![json!("This is something across the wire!")]) - .map_err(|e| format!("Failed call")) - .unwrap(); - }); - break; - } - }); - let js_action = JsProcedure { args: vec![] }; - let path: PathBuf = "test/js_action_execute/" - .parse::() - .unwrap() - .canonicalize() - .unwrap(); - let package_id = "test-package".parse().unwrap(); - let package_version: Version = "0.3.0.3".parse().unwrap(); - let name = ProcedureName::Action("test-callback".parse().unwrap()); - let volumes: Volumes = serde_json::from_value(json!({ - "main": { - "type": "data" - }, - "compat": { - "type": "assets" - }, - "filebrowser" :{ - "package-id": "filebrowser", - "path": "data", - "readonly": true, - "type": "pointer", - "volume-id": "main", - } - })) + let package_id = "test-package".parse().unwrap(); + let package_version: Version = "0.3.0.3".parse().unwrap(); + let name = ProcedureName::Action("test-disk-usage".parse().unwrap()); + let volumes: Volumes = serde_json::from_value(serde_json::json!({ + "main": { + "type": "data" + }, + "compat": { + "type": "assets" + }, + "filebrowser" :{ + "package-id": "filebrowser", + "path": "data", + "readonly": true, + "type": "pointer", + "volume-id": "main", + } + })) + .unwrap(); + let input: Option = None; + let timeout = Some(Duration::from_secs(10)); + js_action + .execute::( + &path, + &package_id, + &package_version, + name, + &volumes, + input, + timeout, + ProcessGroupId(0), + None, + ) + .await + .unwrap() .unwrap(); - let input: Option = None; - let timeout = Some(Duration::from_secs(10)); - js_action - .execute::( - &path, - &package_id, - &package_version, - name, - &volumes, - input, - timeout, - ProcessGroupId(0), - None, - action_api, - ) - .await - .unwrap() - .unwrap(); - spawned.await.unwrap(); - } - - #[tokio::test] - async fn js_disk_usage() { - let js_action = JsProcedure { args: vec![] }; - let path: PathBuf = "test/js_action_execute/" - .parse::() - .unwrap() - .canonicalize() - .unwrap(); - let package_id = "test-package".parse().unwrap(); - let package_version: Version = "0.3.0.3".parse().unwrap(); - let name = ProcedureName::Action("test-disk-usage".parse().unwrap()); - let volumes: Volumes = serde_json::from_value(serde_json::json!({ - "main": { - "type": "data" - }, - "compat": { - "type": "assets" - }, - "filebrowser" :{ - "package-id": "filebrowser", - "path": "data", - "readonly": true, - "type": "pointer", - "volume-id": "main", - } - })) - .unwrap(); - let input: Option = None; - let timeout = Some(Duration::from_secs(10)); - dbg!(js_action - .execute::( - &path, - &package_id, - &package_version, - name, - &volumes, - input, - timeout, - ProcessGroupId(0), - None, - Arc::new(OsApiMock::default()), - ) - .await - .unwrap() - .unwrap()); - } } diff --git a/backend/src/procedure/mod.rs b/backend/src/procedure/mod.rs index fbf7c75b9..fc4c76161 100644 --- a/backend/src/procedure/mod.rs +++ b/backend/src/procedure/mod.rs @@ -21,8 +21,6 @@ pub mod docker; pub mod js_scripts; pub use models::ProcedureName; -// TODO: create RPC endpoint that looks up the appropriate action and calls `execute` - #[derive(Clone, Debug, Deserialize, Serialize, HasModel)] #[serde(rename_all = "kebab-case")] #[serde(tag = "type")] @@ -140,7 +138,15 @@ impl PackageProcedure { #[cfg(feature = "js_engine")] PackageProcedure::Script(procedure) => { procedure - .sandboxed(ctx, pkg_id, pkg_version, volumes, input, timeout, name) + .sandboxed( + &ctx.datadir, + pkg_id, + pkg_version, + volumes, + input, + timeout, + name, + ) .await } } @@ -158,13 +164,15 @@ impl std::fmt::Display for PackageProcedure { } } +// TODO: make this not allocate #[derive(Debug)] pub struct NoOutput; impl<'de> Deserialize<'de> for NoOutput { - fn deserialize(_: D) -> Result + fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { + let _ = Value::deserialize(deserializer)?; Ok(NoOutput) } } diff --git a/backend/src/properties.rs b/backend/src/properties.rs index da90a7370..851033b71 100644 --- a/backend/src/properties.rs +++ b/backend/src/properties.rs @@ -21,7 +21,7 @@ pub async fn properties(#[context] ctx: RpcContext, #[arg] id: PackageId) -> Res #[instrument(skip_all)] pub async fn fetch_properties(ctx: RpcContext, id: PackageId) -> Result { - let peek = ctx.db.peek().await?; + let peek = ctx.db.peek().await; let manifest = peek .as_package_data() diff --git a/backend/src/registry/admin.rs b/backend/src/registry/admin.rs index f6eecc1f2..44b83d161 100644 --- a/backend/src/registry/admin.rs +++ b/backend/src/registry/admin.rs @@ -52,7 +52,7 @@ async fn do_index( pkg: &Package, ) -> Result<(), Error> { url.set_path("/admin/v0/index"); - let mut req = httpc + let req = httpc .post(url) .header(header::ACCEPT, "text/plain") .basic_auth(user, Some(pass)) @@ -74,7 +74,7 @@ async fn do_upload( body: Body, ) -> Result<(), Error> { url.set_path("/admin/v0/upload"); - let mut req = httpc + let req = httpc .post(url) .header(header::ACCEPT, "text/plain") .basic_auth(user, Some(pass)) diff --git a/backend/src/registry/marketplace.rs b/backend/src/registry/marketplace.rs index 6c0bcb96a..435350240 100644 --- a/backend/src/registry/marketplace.rs +++ b/backend/src/registry/marketplace.rs @@ -1,3 +1,4 @@ +use base64::Engine; use color_eyre::eyre::eyre; use reqwest::{StatusCode, Url}; use rpc_toolkit::command; @@ -65,12 +66,11 @@ pub async fn get(#[context] ctx: RpcContext, #[arg] url: Url) -> Result Ok(Value::String(format!( "data:{};base64,{}", ctype, - base64::encode_config( + base64::engine::general_purpose::URL_SAFE.encode( &response .bytes() .await - .with_kind(crate::ErrorKind::Registry)?, - base64::URL_SAFE + .with_kind(crate::ErrorKind::Registry)? ) ))), _ => Err(Error::new( diff --git a/backend/src/s9pk/builder.rs b/backend/src/s9pk/builder.rs index 24869564f..199742439 100644 --- a/backend/src/s9pk/builder.rs +++ b/backend/src/s9pk/builder.rs @@ -1,4 +1,4 @@ -use sha2_old::{Digest, Sha512}; +use sha2::{Digest, Sha512}; use tokio::io::{AsyncReadExt, AsyncSeekExt, AsyncWriteExt, SeekFrom}; use tracing::instrument; use typed_builder::TypedBuilder; @@ -43,7 +43,7 @@ impl< { /// BLOCKING #[instrument(skip_all)] - pub async fn pack(mut self, key: &ed25519_dalek::Keypair) -> Result<(), Error> { + pub async fn pack(mut self, key: &ed25519_dalek::SigningKey) -> Result<(), Error> { let header_pos = self.writer.stream_position().await?; if header_pos != 0 { tracing::warn!("Appending to non-empty file."); @@ -132,7 +132,7 @@ impl< // header let (hash, _) = writer.finish(); self.writer.seek(SeekFrom::Start(header_pos)).await?; - header.pubkey = key.public.clone(); + header.pubkey = key.into(); header.signature = key.sign_prehashed(hash, Some(SIG_CONTEXT))?; header .serialize(&mut self.writer) diff --git a/backend/src/s9pk/header.rs b/backend/src/s9pk/header.rs index 9e8bfae7e..4f77ad855 100644 --- a/backend/src/s9pk/header.rs +++ b/backend/src/s9pk/header.rs @@ -1,7 +1,7 @@ use std::collections::BTreeMap; use color_eyre::eyre::eyre; -use ed25519_dalek::{PublicKey, Signature}; +use ed25519_dalek::{Signature, VerifyingKey}; use tokio::io::{AsyncRead, AsyncReadExt, AsyncWriteExt}; use crate::Error; @@ -11,15 +11,15 @@ pub const VERSION: u8 = 1; #[derive(Debug)] pub struct Header { - pub pubkey: PublicKey, + pub pubkey: VerifyingKey, pub signature: Signature, pub table_of_contents: TableOfContents, } impl Header { pub fn placeholder() -> Self { Header { - pubkey: PublicKey::default(), - signature: Signature::from_bytes(&[0; 64]).expect("Invalid ed25519 signature"), + pubkey: VerifyingKey::default(), + signature: Signature::from_bytes(&[0; 64]), table_of_contents: Default::default(), } } @@ -28,7 +28,7 @@ impl Header { writer.write_all(&MAGIC).await?; writer.write_all(&[VERSION]).await?; writer.write_all(self.pubkey.as_bytes()).await?; - writer.write_all(self.signature.as_ref()).await?; + writer.write_all(&self.signature.to_bytes()).await?; self.table_of_contents.serialize(writer).await?; Ok(()) } @@ -51,11 +51,11 @@ impl Header { } let mut pubkey_bytes = [0; 32]; reader.read_exact(&mut pubkey_bytes).await?; - let pubkey = PublicKey::from_bytes(&pubkey_bytes) + let pubkey = VerifyingKey::from_bytes(&pubkey_bytes) .map_err(|e| Error::new(e, crate::ErrorKind::ParseS9pk))?; let mut sig_bytes = [0; 64]; reader.read_exact(&mut sig_bytes).await?; - let signature = Signature::from_bytes(&sig_bytes).expect("Invalid ed25519 signature"); + let signature = Signature::from_bytes(&sig_bytes); let table_of_contents = TableOfContents::deserialize(reader).await?; Ok(Header { diff --git a/backend/src/s9pk/reader.rs b/backend/src/s9pk/reader.rs index b5c1562ff..e901b1a14 100644 --- a/backend/src/s9pk/reader.rs +++ b/backend/src/s9pk/reader.rs @@ -7,11 +7,11 @@ use std::str::FromStr; use std::task::{Context, Poll}; use color_eyre::eyre::eyre; -use digest_old::Output; -use ed25519_dalek::PublicKey; +use digest::Output; +use ed25519_dalek::VerifyingKey; use futures::TryStreamExt; use models::ImageId; -use sha2_old::{Digest, Sha512}; +use sha2::{Digest, Sha512}; use tokio::fs::File; use tokio::io::{AsyncRead, AsyncReadExt, AsyncSeek, AsyncSeekExt, ReadBuf}; use tracing::instrument; @@ -147,7 +147,7 @@ impl FromStr for ImageTag { pub struct S9pkReader { hash: Option>, hash_string: Option, - developer_key: PublicKey, + developer_key: VerifyingKey, toc: TableOfContents, pos: u64, rdr: R, @@ -333,7 +333,7 @@ impl S9pkReader { self.hash_string.as_ref().map(|s| s.as_str()) } - pub fn developer_key(&self) -> &PublicKey { + pub fn developer_key(&self) -> &VerifyingKey { &self.developer_key } diff --git a/backend/src/setup.rs b/backend/src/setup.rs index e789aba26..f9e897d01 100644 --- a/backend/src/setup.rs +++ b/backend/src/setup.rs @@ -59,11 +59,11 @@ async fn setup_init( let mut secrets_handle = secret_store.acquire().await?; let mut secrets_tx = secrets_handle.begin().await?; - let mut account = AccountInfo::load(&mut secrets_tx).await?; + let mut account = AccountInfo::load(secrets_tx.as_mut()).await?; if let Some(password) = password { account.set_password(&password)?; - account.save(&mut secrets_tx).await?; + account.save(secrets_tx.as_mut()).await?; db.mutate(|m| { m.as_server_info_mut() .as_password_hash_mut() diff --git a/backend/src/shutdown.rs b/backend/src/shutdown.rs index 4941915fc..98465f454 100644 --- a/backend/src/shutdown.rs +++ b/backend/src/shutdown.rs @@ -13,8 +13,7 @@ use crate::{Error, OS_ARCH}; #[derive(Debug, Clone)] pub struct Shutdown { - pub datadir: PathBuf, - pub disk_guid: Option>, + pub export_args: Option<(Arc, PathBuf)>, pub restart: bool, } impl Shutdown { @@ -55,8 +54,8 @@ impl Shutdown { tracing::debug!("{:?}", e); } } - if let Some(guid) = &self.disk_guid { - if let Err(e) = export(guid, &self.datadir).await { + if let Some((guid, datadir)) = &self.export_args { + if let Err(e) = export(guid, datadir).await { tracing::error!("Error Exporting Volume Group: {}", e); tracing::debug!("{:?}", e); } @@ -93,8 +92,7 @@ impl Shutdown { pub async fn shutdown(#[context] ctx: RpcContext) -> Result<(), Error> { ctx.shutdown .send(Some(Shutdown { - datadir: ctx.datadir.clone(), - disk_guid: Some(ctx.disk_guid.clone()), + export_args: Some((ctx.disk_guid.clone(), ctx.datadir.clone())), restart: false, })) .map_err(|_| ()) @@ -106,8 +104,7 @@ pub async fn shutdown(#[context] ctx: RpcContext) -> Result<(), Error> { pub async fn restart(#[context] ctx: RpcContext) -> Result<(), Error> { ctx.shutdown .send(Some(Shutdown { - datadir: ctx.datadir.clone(), - disk_guid: Some(ctx.disk_guid.clone()), + export_args: Some((ctx.disk_guid.clone(), ctx.datadir.clone())), restart: true, })) .map_err(|_| ()) diff --git a/backend/src/status/mod.rs b/backend/src/status/mod.rs index f6290be12..2a5a9391f 100644 --- a/backend/src/status/mod.rs +++ b/backend/src/status/mod.rs @@ -16,8 +16,6 @@ pub struct Status { pub configured: bool, pub main: MainStatus, #[serde(default)] - pub dependency_errors: BTreeMap<(), ()>, // TODO: remove - #[serde(default)] pub dependency_config_errors: DependencyConfigErrors, } diff --git a/backend/src/system.rs b/backend/src/system.rs index 6f05b6b73..aee32b50a 100644 --- a/backend/src/system.rs +++ b/backend/src/system.rs @@ -23,8 +23,6 @@ use crate::util::serde::{display_serializable, IoFormat}; use crate::util::{display_none, Invoke}; use crate::{Error, ErrorKind, ResultExt}; -pub const SYSTEMD_UNIT: &'static str = "startd"; - #[command(subcommands(zram))] pub async fn experimental() -> Result<(), Error> { Ok(()) @@ -60,7 +58,7 @@ pub async fn enable_zram() -> Result<(), Error> { #[command(display(display_none))] pub async fn zram(#[context] ctx: RpcContext, #[arg] enable: bool) -> Result<(), Error> { - let db = ctx.db.peek().await?; + let db = ctx.db.peek().await; let zram = db.as_server_info().as_zram().de()?; if enable == zram { @@ -130,7 +128,7 @@ pub async fn logs_nofollow( _ctx: (), (limit, cursor, before, _): (Option, Option, bool, bool), ) -> Result { - fetch_logs(LogSource::Service(SYSTEMD_UNIT), limit, cursor, before).await + fetch_logs(LogSource::System, limit, cursor, before).await } #[command(rpc_only, rename = "follow", display(display_none))] @@ -138,7 +136,7 @@ pub async fn logs_follow( #[context] ctx: RpcContext, #[parent_data] (limit, _, _, _): (Option, Option, bool, bool), ) -> Result { - follow_logs(ctx, LogSource::Service(SYSTEMD_UNIT), limit).await + follow_logs(ctx, LogSource::System, limit).await } #[command( @@ -590,7 +588,8 @@ async fn get_temp() -> Result { .flat_map(|(_, v)| v.as_object()) .flatten() .filter_map(|(k, v)| { - if k.ends_with("_input") { + // we have seen so far that `temp1` is always a composite reading of some sort, so we should just use that for each chip + if k.trim() == "temp1_input" { v.as_f64() } else { None diff --git a/backend/src/update/mod.rs b/backend/src/update/mod.rs index 6e3d3e3b0..814a27b1d 100644 --- a/backend/src/update/mod.rs +++ b/backend/src/update/mod.rs @@ -76,7 +76,7 @@ fn display_update_result(status: UpdateResult, _: &ArgMatches) { #[instrument(skip_all)] async fn maybe_do_update(ctx: RpcContext, marketplace_url: Url) -> Result, Error> { - let peeked = ctx.db.peek().await?; + let peeked = ctx.db.peek().await; let latest_version: Version = ctx .client .get(with_query_params( @@ -154,7 +154,7 @@ async fn maybe_do_update(ctx: RpcContext, marketplace_url: Url) -> Result
- +
+
diff --git a/frontend/projects/setup-wizard/src/app/pages/home/home.page.html b/frontend/projects/setup-wizard/src/app/pages/home/home.page.html index 3c803bb34..ab517cbcb 100644 --- a/frontend/projects/setup-wizard/src/app/pages/home/home.page.html +++ b/frontend/projects/setup-wizard/src/app/pages/home/home.page.html @@ -4,13 +4,13 @@
- + - Start9 +
diff --git a/frontend/projects/ui/src/app/app/menu/menu.component.scss b/frontend/projects/ui/src/app/app/menu/menu.component.scss index b85269c36..a7c8c762f 100644 --- a/frontend/projects/ui/src/app/app/menu/menu.component.scss +++ b/frontend/projects/ui/src/app/app/menu/menu.component.scss @@ -4,8 +4,9 @@ .logo { display: block; - width: 60%; + width: 36%; margin: 0 auto; + padding: 16px 16px 0 16px; } .menu { diff --git a/frontend/projects/ui/src/app/app/preloader/preloader.component.html b/frontend/projects/ui/src/app/app/preloader/preloader.component.html index f20fe4a96..959c361eb 100644 --- a/frontend/projects/ui/src/app/app/preloader/preloader.component.html +++ b/frontend/projects/ui/src/app/app/preloader/preloader.component.html @@ -60,11 +60,7 @@ - - - - diff --git a/frontend/projects/ui/src/app/apps/login/ca-wizard/ca-wizard.component.html b/frontend/projects/ui/src/app/apps/login/ca-wizard/ca-wizard.component.html index 326eedd33..22afbcba2 100644 --- a/frontend/projects/ui/src/app/apps/login/ca-wizard/ca-wizard.component.html +++ b/frontend/projects/ui/src/app/apps/login/ca-wizard/ca-wizard.component.html @@ -1,5 +1,5 @@ - + StartOS @@ -103,6 +103,8 @@ diff --git a/frontend/projects/ui/src/app/apps/login/ca-wizard/ca-wizard.component.ts b/frontend/projects/ui/src/app/apps/login/ca-wizard/ca-wizard.component.ts index 444210fe2..98916fd6e 100644 --- a/frontend/projects/ui/src/app/apps/login/ca-wizard/ca-wizard.component.ts +++ b/frontend/projects/ui/src/app/apps/login/ca-wizard/ca-wizard.component.ts @@ -39,7 +39,7 @@ export class CAWizardComponent { instructions() { this.windowRef.open( - 'https://docs.start9.com/getting-started/trust-ca/#trust-your-root-ca', + 'https://docs.start9.com/0.3.5.x/getting-started/trust-ca/#trust-root-ca', '_blank', 'noreferrer', ) diff --git a/frontend/projects/ui/src/app/apps/login/login.page.html b/frontend/projects/ui/src/app/apps/login/login.page.html index a61553e44..def298675 100644 --- a/frontend/projects/ui/src/app/apps/login/login.page.html +++ b/frontend/projects/ui/src/app/apps/login/login.page.html @@ -1,6 +1,6 @@ - + @@ -23,45 +23,51 @@ - - - + + StartOS Icon - StartOS Login + Login to StartOS - -
- - + + +

+ {{ error }} +

diff --git a/frontend/projects/ui/src/app/apps/login/login.page.scss b/frontend/projects/ui/src/app/apps/login/login.page.scss index 27524ee79..690d97591 100644 --- a/frontend/projects/ui/src/app/apps/login/login.page.scss +++ b/frontend/projects/ui/src/app/apps/login/login.page.scss @@ -1,15 +1,5 @@ .content { - --background: #222428; -} - -.card { - background: #414141; -} - -.title { - margin: 24px 0 16px; - color: #e0e0e0; - text-transform: uppercase; + --background: #333333; } .grid { @@ -23,17 +13,6 @@ text-align: center; } -.logo { - max-width: 240px; - padding-bottom: 16px; -} - -.error { - display: block; - text-align: left; - padding-top: 4px; -} - .banner { position: absolute; padding: 20px; @@ -46,58 +25,52 @@ } } -.side-button { - --border-radius: 0 4px 4px 0; -} - -.login-item { - --border-style: solid; - --border-color: var(--ion-color-light); - --border-radius: 4px 0 0 4px; - box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), - 0 1px 5px 0 rgba(0, 0, 0, 0.12); - - .side-button { - --border-radius: 4px; - } -} - ion-card { - background: var(--ion-color-step-200); - box-shadow: 0 4px 4px rgba(0, 0, 0, 0.25); - border-radius: 44px; + background: #414141; + box-shadow: 0 4px 4px rgba(17, 17, 17, 0.144); + border-radius: 35px; min-height: 16rem; + contain: unset; + overflow: unset; + position: relative; +} + +ion-item { + --background: transparent; + --border-radius: 0px; +} + +.title { + padding-top: 55px; + color: #e0e0e0; + font-size: 1.3rem; +} + +.header { + &-icon { + width: 100px; + position: absolute; + left: 50%; + margin-left: -50px; + top: -17%; + z-index: 100; + } } .login-button { - margin-inline-start: 0; - margin-inline-end: 0; - height: 49px; - font-size: larger; - font-weight: bold; -} - -.form { - margin-bottom: 12px; - - * { - display: inline-block; - vertical-align: middle; - } + height: 45px; + width: 120px; + --border-radius: 50px; + margin: 0 auto; + margin-top: 27px; + margin-bottom: 10px; } .item-interactive { --highlight-background: #5260ff !important; } - -@media (max-width: 500px) { - .side-button { - --border-radius: 4px; - margin-top: 0.7rem; - } - - .login-item { - --border-radius: 4px; - } +.error { + display: block; + padding-top: 4px; } diff --git a/frontend/projects/ui/src/app/apps/login/login.page.ts b/frontend/projects/ui/src/app/apps/login/login.page.ts index a0c564aad..4a61f2adc 100644 --- a/frontend/projects/ui/src/app/apps/login/login.page.ts +++ b/frontend/projects/ui/src/app/apps/login/login.page.ts @@ -4,7 +4,6 @@ import { ApiService } from 'src/app/services/api/embassy-api.service' import { AuthService } from 'src/app/services/auth.service' import { Router } from '@angular/router' import { ConfigService } from 'src/app/services/config.service' -import { pauseFor, RELATIVE_URL } from '@start9labs/shared' import { DOCUMENT } from '@angular/common' import { WINDOW } from '@ng-web-apis/common' @@ -18,58 +17,16 @@ export class LoginPage { unmasked = false error = '' - downloadClicked = false - instructionsClicked = false - polling = false - caTrusted = false - constructor( private readonly router: Router, private readonly authService: AuthService, private readonly loadingCtrl: LoadingController, private readonly api: ApiService, public readonly config: ConfigService, - @Inject(RELATIVE_URL) private readonly relativeUrl: string, @Inject(DOCUMENT) public readonly document: Document, @Inject(WINDOW) private readonly windowRef: Window, ) {} - async ngOnInit() { - if (!this.config.isSecure()) { - await this.testHttps().catch(e => - console.warn('Failed Https connection attempt'), - ) - } - } - - download() { - this.downloadClicked = true - this.document.getElementById('install-cert')?.click() - } - - instructions() { - this.windowRef.open( - 'https://docs.start9.com/getting-started/trust-ca/#trust-your-server-s-root-ca', - '_blank', - 'noreferrer', - ) - this.instructionsClicked = true - this.startDaemon() - } - - private async startDaemon(): Promise { - this.polling = true - while (this.polling) { - try { - await this.testHttps() - this.polling = false - } catch (e) { - console.warn('Failed Https connection attempt') - await pauseFor(2000) - } - } - } - launchHttps() { const host = this.config.getHost() this.windowRef.open(`https://${host}`, '_blank', 'noreferrer') @@ -104,13 +61,4 @@ export class LoginPage { loader.dismiss() } } - - private async testHttps() { - const url = `https://${this.document.location.host}${this.relativeUrl}` - await this.api.echo({ message: 'ping' }, url).then(() => { - this.downloadClicked = true - this.instructionsClicked = true - this.caTrusted = true - }) - } } diff --git a/frontend/projects/ui/src/app/apps/ui/pages/services/app-list/app-list.page.html b/frontend/projects/ui/src/app/apps/ui/pages/services/app-list/app-list.page.html index 4dcc24234..3bc38f762 100644 --- a/frontend/projects/ui/src/app/apps/ui/pages/services/app-list/app-list.page.html +++ b/frontend/projects/ui/src/app/apps/ui/pages/services/app-list/app-list.page.html @@ -14,7 +14,7 @@

Welcome to StartOS

- +
@@ -27,7 +27,7 @@ sizeMd="6" > diff --git a/frontend/projects/ui/src/app/apps/ui/pages/services/app-list/package-info.pipe.ts b/frontend/projects/ui/src/app/apps/ui/pages/services/app-list/package-info.pipe.ts index 23a4745d0..96b28172e 100644 --- a/frontend/projects/ui/src/app/apps/ui/pages/services/app-list/package-info.pipe.ts +++ b/frontend/projects/ui/src/app/apps/ui/pages/services/app-list/package-info.pipe.ts @@ -1,10 +1,7 @@ import { Pipe, PipeTransform } from '@angular/core' import { Observable, combineLatest } from 'rxjs' -import { filter, map, startWith } from 'rxjs/operators' -import { - DataModel, - PackageDataEntry, -} from 'src/app/services/patch-db/data-model' +import { filter, map } from 'rxjs/operators' +import { DataModel } from 'src/app/services/patch-db/data-model' import { getPackageInfo } from 'src/app/util/get-package-info' import { PkgInfo } from 'src/app/types/pkg-info' import { PatchDB } from 'patch-db-client' @@ -19,12 +16,10 @@ export class PackageInfoPipe implements PipeTransform { private readonly depErrorService: DepErrorService, ) {} - transform(pkg: PackageDataEntry): Observable { + transform(pkgId: string): Observable { return combineLatest([ - this.patch - .watch$('package-data', pkg.manifest.id) - .pipe(filter(Boolean), startWith(pkg)), - this.depErrorService.depErrors$, + this.patch.watch$('package-data', pkgId).pipe(filter(Boolean)), + this.depErrorService.getPkgDepErrors$(pkgId), ]).pipe(map(([pkg, depErrors]) => getPackageInfo(pkg, depErrors))) } } diff --git a/frontend/projects/ui/src/app/apps/ui/pages/services/app-show/app-show.page.ts b/frontend/projects/ui/src/app/apps/ui/pages/services/app-show/app-show.page.ts index 44d7ad8a4..ff5249800 100644 --- a/frontend/projects/ui/src/app/apps/ui/pages/services/app-show/app-show.page.ts +++ b/frontend/projects/ui/src/app/apps/ui/pages/services/app-show/app-show.page.ts @@ -19,7 +19,7 @@ import { DependentInfo } from 'src/app/types/dependent-info' import { DepErrorService, DependencyErrorType, - PackageDependencyErrors, + PkgDependencyErrors, } from 'src/app/services/dep-error.service' import { combineLatest } from 'rxjs' import { Manifest } from '@start9labs/marketplace' @@ -54,15 +54,14 @@ export class AppShowPage { readonly pkgId = getPkgId(this.route) readonly pkgPlus$ = combineLatest([ - this.patch.watch$('package-data'), - this.depErrorService.depErrors$, + this.patch.watch$('package-data', this.pkgId), + this.depErrorService.getPkgDepErrors$(this.pkgId), ]).pipe( - tap(([pkgs, _]) => { + tap(([pkg, _]) => { // if package disappears, navigate to list page - if (!pkgs[this.pkgId]) this.navCtrl.navigateRoot('/services') + if (!pkg) this.navCtrl.navigateRoot('/services') }), - map(([pkgs, depErrors]) => { - const pkg = pkgs[this.pkgId] + map(([pkg, depErrors]) => { return { pkg, dependencies: this.getDepInfo(pkg, depErrors), @@ -97,7 +96,7 @@ export class AppShowPage { private getDepInfo( pkg: PackageDataEntry, - depErrors: PackageDependencyErrors, + depErrors: PkgDependencyErrors, ): DependencyInfo[] { const pkgInstalled = pkg.installed @@ -116,7 +115,7 @@ export class AppShowPage { pkgInstalled: InstalledPackageInfo, pkgManifest: Manifest, depId: string, - depErrors: PackageDependencyErrors, + depErrors: PkgDependencyErrors, ): DependencyInfo { const { errorText, fixText, fixAction } = this.getDepErrors( pkgManifest, @@ -143,9 +142,9 @@ export class AppShowPage { private getDepErrors( pkgManifest: Manifest, depId: string, - depErrors: PackageDependencyErrors, + depErrors: PkgDependencyErrors, ) { - const depError = depErrors[pkgManifest.id][depId] + const depError = (depErrors[pkgManifest.id] as any)?.[depId] // @TODO fix let errorText: string | null = null let fixText: string | null = null @@ -168,7 +167,7 @@ export class AppShowPage { errorText = 'Not running' fixText = 'Start' } else if (depError.type === DependencyErrorType.HealthChecksFailed) { - errorText = 'Health check failed' + errorText = 'Required health check not passing' } else if (depError.type === DependencyErrorType.Transitive) { errorText = 'Dependency has a dependency issue' } diff --git a/frontend/projects/ui/src/app/apps/ui/pages/services/app-show/components/app-show-status/app-show-status.component.html b/frontend/projects/ui/src/app/apps/ui/pages/services/app-show/components/app-show-status/app-show-status.component.html index 5cace82aa..1c7abf791 100644 --- a/frontend/projects/ui/src/app/apps/ui/pages/services/app-show/components/app-show-status/app-show-status.component.html +++ b/frontend/projects/ui/src/app/apps/ui/pages/services/app-show/components/app-show-status/app-show-status.component.html @@ -14,11 +14,16 @@ + + + Stop + - - - Stop - For a secure local connection and faster Tor experience, diff --git a/frontend/projects/ui/src/app/apps/ui/pages/system/server-show/server-show.page.ts b/frontend/projects/ui/src/app/apps/ui/pages/system/server-show/server-show.page.ts index f5d4d85e7..4c21f7619 100644 --- a/frontend/projects/ui/src/app/apps/ui/pages/system/server-show/server-show.page.ts +++ b/frontend/projects/ui/src/app/apps/ui/pages/system/server-show/server-show.page.ts @@ -607,7 +607,7 @@ export class ServerShowPage { icon: 'map-outline', action: () => window.open( - 'https://docs.start9.com/latest/user-manual', + 'https://docs.start9.com/0.3.5.x/user-manual', '_blank', 'noreferrer', ), diff --git a/frontend/projects/ui/src/app/apps/ui/pages/system/ssh-keys/ssh-keys.page.ts b/frontend/projects/ui/src/app/apps/ui/pages/system/ssh-keys/ssh-keys.page.ts index 794e5dd47..de31f3465 100644 --- a/frontend/projects/ui/src/app/apps/ui/pages/system/ssh-keys/ssh-keys.page.ts +++ b/frontend/projects/ui/src/app/apps/ui/pages/system/ssh-keys/ssh-keys.page.ts @@ -19,7 +19,7 @@ import { styleUrls: ['ssh-keys.page.scss'], }) export class SSHKeysPage { - readonly docsUrl = 'https://docs.start9.com/latest/user-manual/ssh' + readonly docsUrl = 'https://docs.start9.com/0.3.5.x/user-manual/ssh' sshKeys: SSHKey[] = [] loading$ = new BehaviorSubject(true) diff --git a/frontend/projects/ui/src/app/apps/ui/pages/widgets/built-in/health/health.component.ts b/frontend/projects/ui/src/app/apps/ui/pages/widgets/built-in/health/health.component.ts index 760d8fede..4a1213d9b 100644 --- a/frontend/projects/ui/src/app/apps/ui/pages/widgets/built-in/health/health.component.ts +++ b/frontend/projects/ui/src/app/apps/ui/pages/widgets/built-in/health/health.component.ts @@ -8,6 +8,8 @@ import { import { PrimaryStatus } from 'src/app/services/pkg-status-rendering.service' import { getPackageInfo } from 'src/app/util/get-package-info' import { PkgInfo } from 'src/app/types/pkg-info' +import { combineLatest } from 'rxjs' +import { DepErrorService } from 'src/app/services/dep-error.service' @Component({ selector: 'widget-health', @@ -24,31 +26,32 @@ export class HealthComponent { 'Transitioning', ] as const - readonly data$ = inject(PatchDB) - .watch$('package-data') - .pipe( - map(data => { - const pkgs = Object.values(data).map( - pkg => getPackageInfo(pkg, {}), // @TODO hack because not currently using widget - ) - const result = this.labels.reduce>( - (acc, label) => ({ - ...acc, - [label]: this.getCount(label, pkgs), - }), - {}, - ) + readonly data$ = combineLatest([ + inject(PatchDB).watch$('package-data'), + inject(DepErrorService).depErrors$, + ]).pipe( + map(([data, depErrors]) => { + const pkgs = Object.values(data).map(pkg => + getPackageInfo(pkg, depErrors[pkg.manifest.id]), + ) + const result = this.labels.reduce>( + (acc, label) => ({ + ...acc, + [label]: this.getCount(label, pkgs), + }), + {}, + ) - result['Healthy'] = - pkgs.length - - result['Error'] - - result['Needs Attention'] - - result['Stopped'] - - result['Transitioning'] + result['Healthy'] = + pkgs.length - + result['Error'] - + result['Needs Attention'] - + result['Stopped'] - + result['Transitioning'] - return this.labels.map(label => result[label]) - }), - ) + return this.labels.map(label => result[label]) + }), + ) private getCount(label: string, pkgs: PkgInfo[]): number { switch (label) { diff --git a/frontend/projects/ui/src/app/common/os-welcome/os-welcome.page.html b/frontend/projects/ui/src/app/common/os-welcome/os-welcome.page.html index cd0c93507..ed05ccb45 100644 --- a/frontend/projects/ui/src/app/common/os-welcome/os-welcome.page.html +++ b/frontend/projects/ui/src/app/common/os-welcome/os-welcome.page.html @@ -12,11 +12,11 @@

This Release

-

0.3.4.4

+

0.3.5

View the complete @@ -26,98 +26,20 @@

Highlights
    -
  • Https over Tor for faster UI loading times
  • -
  • Change password through UI
  • -
  • Use IP address for Network Folder backups
  • - Multiple bug fixes, performance enhancements, and other small features + This release contains significant under-the-hood improvements to + performance and reliability
  • +
  • Ditch Docker, replace with Podman
  • +
  • Remove locking behavior from PatchDB and optimize
  • +
  • Boost efficiency of service manager
  • +
  • Require HTTPS on LAN, and improve setup flow for trusting Root CA
  • +
  • Better default privacy settings for Firefox kiosk mode
  • +
  • Eliminate memory leak from Javascript runtime
  • +
  • Other small bug fixes
  • +
  • Update license to MIT
-

Previous Releases

- -

0.3.4.3

-

- View the complete - - release notes - - for more details. -

-
Highlights
-
    -
  • Improved Tor reliability
  • -
  • Experimental features tab
  • -
  • Multiple bugfixes and general performance enhancements
  • -
  • Update branding
  • -
- -

0.3.4.2

-

- View the complete - - release notes - - for more details. -

-
Highlights
-
    -
  • Update build system for Server Lite and NUC-based Server One
  • -
  • Rename embassyOS to StartOS
  • -
  • - PWA support for StartOS web interface. You can now save StartOS to your - phone as an app! -
  • -
- -

0.3.4.1

-

- View the complete - - release notes - - for more details. -

-
Highlights
-
    -
  • 0.3.4 bug fixes
  • -
- -

0.3.4

-

- View the complete - - release notes - - for more details. -

-
Highlights
-
    -
  • Security patches
  • -
  • Bug fixes
  • -
  • Breakout services to Community Registry
  • -
  • SSL support for IP access
  • -
  • UI display improvements
  • -
  • Better logs
  • -
  • New system metrics
  • -
  • EFI support
  • -
= - {} as ElementRef + @ViewChild('gridContent') + gridContent: ElementRef = {} as ElementRef @HostListener('window:resize', ['$event']) onResize() { this.setContainerDimensions() @@ -71,7 +71,7 @@ export class WidgetListComponent { icon: 'map-outline', color: 'var(--alt-yellow)', description: 'Discover what StartOS can do', - link: 'https://docs.start9.com/latest/user-manual/index', + link: 'https://docs.start9.com/0.3.5.x/user-manual/index', }, { title: 'Contact Support', diff --git a/frontend/projects/ui/src/app/services/api/api.fixures.ts b/frontend/projects/ui/src/app/services/api/api.fixures.ts index 1fac619dc..46680447c 100644 --- a/frontend/projects/ui/src/app/services/api/api.fixures.ts +++ b/frontend/projects/ui/src/app/services/api/api.fixures.ts @@ -34,9 +34,10 @@ export module Mock { 'shutting-down': false, } export const MarketplaceEos: RR.GetMarketplaceEosRes = { - version: '0.3.4.4', + version: '0.3.5', headline: 'Our biggest release ever.', 'release-notes': { + '0.3.5': 'Some **Markdown** release _notes_ for 0.3.5', '0.3.4.4': 'Some **Markdown** release _notes_ for 0.3.4.4', '0.3.4.3': 'Some **Markdown** release _notes_ for 0.3.4.3', '0.3.4.2': 'Some **Markdown** release _notes_ for 0.3.4.2', @@ -844,7 +845,7 @@ export module Mock { integer: false, }), }), - displayAs: 'I\'m {{last-name}}, {{first-name}} {{last-name}}', + displayAs: "I'm {{last-name}}, {{first-name}} {{last-name}}", uniqueBy: 'last-name', }, ), @@ -1355,7 +1356,7 @@ export module Mock { }, 'dependency-info': { bitcoind: { - title: 'Bitcoin Core', + title: Mock.MockManifestBitcoind.title, icon: 'assets/img/service-icons/bitcoind.svg', }, }, @@ -1415,11 +1416,11 @@ export module Mock { 'current-dependents': {}, 'dependency-info': { bitcoind: { - title: 'Bitcoin Core', + title: Mock.MockManifestBitcoind.title, icon: 'assets/img/service-icons/bitcoind.svg', }, 'btc-rpc-proxy': { - title: 'Bitcoin Proxy', + title: Mock.MockManifestBitcoinProxy.title, icon: 'assets/img/service-icons/btc-rpc-proxy.png', }, }, diff --git a/frontend/projects/ui/src/app/services/api/api.types.ts b/frontend/projects/ui/src/app/services/api/api.types.ts index 16e94bb1c..63572338b 100644 --- a/frontend/projects/ui/src/app/services/api/api.types.ts +++ b/frontend/projects/ui/src/app/services/api/api.types.ts @@ -37,7 +37,7 @@ export module RR { // server - export type EchoReq = { message: string } // server.echo + export type EchoReq = { message: string; timeout?: number } // server.echo export type EchoRes = string export type GetSystemTimeReq = {} // server.time diff --git a/frontend/projects/ui/src/app/services/api/embassy-api.service.ts b/frontend/projects/ui/src/app/services/api/embassy-api.service.ts index 23b046752..547a0c39f 100644 --- a/frontend/projects/ui/src/app/services/api/embassy-api.service.ts +++ b/frontend/projects/ui/src/app/services/api/embassy-api.service.ts @@ -1,4 +1,4 @@ -import { BehaviorSubject, Observable } from 'rxjs' +import { Observable } from 'rxjs' import { Update } from 'patch-db-client' import { RR, BackupTargetType, Metrics } from './api.types' import { DataModel } from 'src/app/services/patch-db/data-model' @@ -6,8 +6,6 @@ import { Log, SetupStatus } from '@start9labs/shared' import { WebSocketSubjectConfig } from 'rxjs/webSocket' export abstract class ApiService { - readonly patchStream$ = new BehaviorSubject[]>([]) - // http // for getting static files: ex icons, instructions, licenses diff --git a/frontend/projects/ui/src/app/services/api/embassy-live-api.service.ts b/frontend/projects/ui/src/app/services/api/embassy-live-api.service.ts index 0e24be0c1..608412ddd 100644 --- a/frontend/projects/ui/src/app/services/api/embassy-live-api.service.ts +++ b/frontend/projects/ui/src/app/services/api/embassy-live-api.service.ts @@ -1,6 +1,5 @@ import { Inject, Injectable } from '@angular/core' import { - decodeBase64, HttpOptions, HttpService, isRpcError, @@ -14,7 +13,7 @@ import { ApiService } from './embassy-api.service' import { BackupTargetType, Metrics, RR } from './api.types' import { ConfigService } from '../config.service' import { webSocket, WebSocketSubjectConfig } from 'rxjs/webSocket' -import { Observable } from 'rxjs' +import { Observable, filter, firstValueFrom } from 'rxjs' import { AuthService } from '../auth.service' import { DOCUMENT } from '@angular/common' import { DataModel } from '../patch-db/data-model' @@ -78,7 +77,7 @@ export class LiveApiService extends ApiService { // auth async login(params: RR.LoginReq): Promise { - return this.rpcRequest({ method: 'auth.login', params }, false) + return this.rpcRequest({ method: 'auth.login', params }) } async logout(params: RR.LogoutReq): Promise { @@ -102,7 +101,7 @@ export class LiveApiService extends ApiService { // server async echo(params: RR.EchoReq, urlOverride?: string): Promise { - return this.rpcRequest({ method: 'echo', params }, false, urlOverride) + return this.rpcRequest({ method: 'echo', params }, urlOverride) } openPatchWebsocket$(): Observable> { @@ -502,42 +501,28 @@ export class LiveApiService extends ApiService { private async rpcRequest( options: RPCOptions, - addHeader = true, urlOverride?: string, ): Promise { - if (addHeader) { - options.headers = { - 'x-patch-sequence': String(this.patch.cache$.value.sequence), - ...(options.headers || {}), - } - } - const res = await this.http.rpcRequest(options, urlOverride) - const encodedUpdates = res.headers.get('x-patch-updates') - const encodedError = res.headers.get('x-patch-error') + const body = res.body - if (encodedUpdates) { - const decoded = decodeBase64(encodedUpdates) - const updates: Update[] = JSON.parse(decoded) - this.patchStream$.next(updates) - } - - if (encodedError) { - const error = decodeBase64(encodedError) - console.error(error) - } - - const rpcRes = res.body - - if (isRpcError(rpcRes)) { - if (rpcRes.error.code === 34) { + if (isRpcError(body)) { + if (body.error.code === 34) { console.error('Unauthenticated, logging out') this.auth.setUnverified() } - throw new RpcError(rpcRes.error) + throw new RpcError(body.error) } - return rpcRes.result + const patchSequence = res.headers.get('x-patch-sequence') + if (patchSequence) + await firstValueFrom( + this.patch.cache$.pipe( + filter(({ sequence }) => sequence >= Number(patchSequence)), + ), + ) + + return body.result } private async httpRequest(opts: HttpOptions): Promise { diff --git a/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts b/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts index ac816bca6..4999e26dd 100644 --- a/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts +++ b/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts @@ -24,7 +24,8 @@ import { interval, map, Observable, - ReplaySubject, + shareReplay, + Subject, switchMap, tap, timer, @@ -48,8 +49,8 @@ const PROGRESS: InstallProgress = { @Injectable() export class MockApiService extends ApiService { - readonly mockWsSource$ = new ReplaySubject>() - private readonly revertTime = 2000 + readonly mockWsSource$ = new Subject>() + private readonly revertTime = 1800 sequence = 0 constructor( @@ -62,7 +63,6 @@ export class MockApiService extends ApiService { .pipe( tap(() => { this.sequence = 0 - this.patchStream$.next([]) }), switchMap(verified => iif( @@ -109,7 +109,9 @@ export class MockApiService extends ApiService { value: params.value, }, ] - return this.withRevision(patch) + this.mockRevision(patch) + + return null } // auth @@ -151,7 +153,6 @@ export class MockApiService extends ApiService { async echo(params: RR.EchoReq, url?: string): Promise { if (url) { const num = Math.floor(Math.random() * 10) + 1 - console.warn(num) if (num > 8) return params.message throw new Error() } @@ -160,7 +161,9 @@ export class MockApiService extends ApiService { } openPatchWebsocket$(): Observable> { - return this.mockWsSource$ + return this.mockWsSource$.pipe( + shareReplay({ bufferSize: 1, refCount: true }), + ) } openLogsWebsocket$(config: WebSocketSubjectConfig): Observable { @@ -298,7 +301,9 @@ export class MockApiService extends ApiService { value: initialProgress, }, ] - return this.withRevision(patch, 'updating') + this.mockRevision(patch) + + return 'updating' } async restartServer( @@ -341,7 +346,9 @@ export class MockApiService extends ApiService { value: params.enable, }, ] - return this.withRevision(patch, null) + this.mockRevision(patch) + + return null } // marketplace URLs @@ -394,7 +401,9 @@ export class MockApiService extends ApiService { value: 0, }, ] - return this.withRevision(patch, Mock.Notifications) + this.mockRevision(patch) + + return Mock.Notifications } async deleteNotification( @@ -648,7 +657,9 @@ export class MockApiService extends ApiService { }, ] - return this.withRevision(originalPatch) + this.mockRevision(originalPatch) + + return null } // package @@ -715,7 +726,9 @@ export class MockApiService extends ApiService { }, }, ] - return this.withRevision(patch) + this.mockRevision(patch) + + return null } async getPackageConfig( @@ -746,7 +759,9 @@ export class MockApiService extends ApiService { value: true, }, ] - return this.withRevision(patch) + this.mockRevision(patch) + + return null } async restorePackages( @@ -770,7 +785,9 @@ export class MockApiService extends ApiService { } }) - return this.withRevision(patch) + this.mockRevision(patch) + + return null } async executePackageAction( @@ -820,7 +837,9 @@ export class MockApiService extends ApiService { }, ] - return this.withRevision(originalPatch) + this.mockRevision(originalPatch) + + return null } async restartPackage( @@ -897,7 +916,9 @@ export class MockApiService extends ApiService { }, ] - return this.withRevision(patch) + this.mockRevision(patch) + + return null } async stopPackage(params: RR.StopPackageReq): Promise { @@ -923,7 +944,9 @@ export class MockApiService extends ApiService { }, ] - return this.withRevision(patch) + this.mockRevision(patch) + + return null } async uninstallPackage( @@ -949,7 +972,9 @@ export class MockApiService extends ApiService { }, ] - return this.withRevision(patch) + this.mockRevision(patch) + + return null } async dryConfigureDependency( @@ -1103,23 +1128,4 @@ export class MockApiService extends ApiService { } this.mockWsSource$.next(revision) } - - private async withRevision( - patch: Operation[], - response: T | null = null, - ): Promise { - if (!this.sequence) { - const { sequence } = this.bootstrapper.init() - this.sequence = sequence - } - - this.patchStream$.next([ - { - id: ++this.sequence, - patch, - }, - ]) - - return response as T - } } diff --git a/frontend/projects/ui/src/app/services/api/mock-patch.ts b/frontend/projects/ui/src/app/services/api/mock-patch.ts index 6799f12ea..ab3b0e412 100644 --- a/frontend/projects/ui/src/app/services/api/mock-patch.ts +++ b/frontend/projects/ui/src/app/services/api/mock-patch.ts @@ -35,7 +35,7 @@ export const mockPatchData: DataModel = { }, 'server-info': { id: 'abcdefgh', - version: '0.3.4', + version: '0.3.5', country: 'us', 'last-backup': new Date(new Date().valueOf() - 604800001).toISOString(), 'lan-address': 'https://adjective-noun.local', diff --git a/frontend/projects/ui/src/app/services/config.service.ts b/frontend/projects/ui/src/app/services/config.service.ts index b36e54aa0..63c64ee2e 100644 --- a/frontend/projects/ui/src/app/services/config.service.ts +++ b/frontend/projects/ui/src/app/services/config.service.ts @@ -44,23 +44,12 @@ export class ConfigService { : this.hostname.endsWith('.local') } - isLocalhost(): boolean { - return useMocks - ? mocks.maskAs === 'localhost' - : this.hostname === 'localhost' - } - - isLan(): boolean { - // @TODO will not work once clearnet arrives - return !this.isTor() - } - isTorHttp(): boolean { return this.isTor() && !this.isHttps() } - isLocalHttp(): boolean { - return this.isLocal() && !this.isHttps() + isLanHttp(): boolean { + return !this.isTor() && !this.isLocalhost() && !this.isHttps() } isSecure(): boolean { @@ -71,6 +60,12 @@ export class ConfigService { return this.host } + private isLocalhost(): boolean { + return useMocks + ? mocks.maskAs === 'localhost' + : this.hostname === 'localhost' + } + private isHttps(): boolean { return useMocks ? mocks.maskAsHttps : this.protocol === 'https:' } diff --git a/frontend/projects/ui/src/app/services/dep-error.service.ts b/frontend/projects/ui/src/app/services/dep-error.service.ts index 320d47d65..4762f2df1 100644 --- a/frontend/projects/ui/src/app/services/dep-error.service.ts +++ b/frontend/projects/ui/src/app/services/dep-error.service.ts @@ -1,17 +1,18 @@ import { Injectable } from '@angular/core' import { Emver } from '@start9labs/shared' -import { map, shareReplay } from 'rxjs/operators' +import { distinctUntilChanged, map, shareReplay } from 'rxjs/operators' import { PatchDB } from 'patch-db-client' import { DataModel, HealthCheckResult, HealthResult, - PackageDataEntry, + InstalledPackageDataEntry, PackageMainStatus, } from './patch-db/data-model' +import * as deepEqual from 'fast-deep-equal' -export type PackageDependencyErrors = Record -export type DependencyErrors = Record +export type AllDependencyErrors = Record +export type PkgDependencyErrors = Record @Injectable({ providedIn: 'root', @@ -26,14 +27,15 @@ export class DepErrorService { })) .sort((a, b) => (b.depth > a.depth ? -1 : 1)) .reduce( - (errors, { id }): PackageDependencyErrors => ({ + (errors, { id }): AllDependencyErrors => ({ ...errors, [id]: this.getDepErrors(pkgs, id, errors), }), - {} as PackageDependencyErrors, + {} as AllDependencyErrors, ), ), - shareReplay(1), + distinctUntilChanged(deepEqual), + shareReplay({ bufferSize: 1, refCount: true }), ) constructor( @@ -41,37 +43,38 @@ export class DepErrorService { private readonly patch: PatchDB, ) {} + getPkgDepErrors$(pkgId: string) { + return this.depErrors$.pipe( + map(depErrors => depErrors[pkgId]), + distinctUntilChanged(deepEqual), + ) + } + private getDepErrors( pkgs: DataModel['package-data'], pkgId: string, - outerErrors: PackageDependencyErrors, - ): DependencyErrors { - const pkg = pkgs[pkgId] + outerErrors: AllDependencyErrors, + ): PkgDependencyErrors { + const pkgInstalled = pkgs[pkgId].installed - if (!pkg.installed) return {} + if (!pkgInstalled) return {} return currentDeps(pkgs, pkgId).reduce( - (innerErrors, depId): DependencyErrors => ({ + (innerErrors, depId): PkgDependencyErrors => ({ ...innerErrors, - [depId]: this.getDepError(pkgs, pkg, depId, outerErrors), + [depId]: this.getDepError(pkgs, pkgInstalled, depId, outerErrors), }), - {} as DependencyErrors, + {} as PkgDependencyErrors, ) } private getDepError( pkgs: DataModel['package-data'], - pkg: PackageDataEntry, + pkgInstalled: InstalledPackageDataEntry, depId: string, - outerErrors: PackageDependencyErrors, + outerErrors: AllDependencyErrors, ): DependencyError | null { - console.warn(depId) - console.warn(pkgs) - - const dep = pkgs[depId] - - const pkgInstalled = pkg.installed! - const depInstalled = dep?.installed + const depInstalled = pkgs[depId]?.installed // not installed if (!depInstalled) { @@ -80,17 +83,8 @@ export class DepErrorService { } } - const depStatus = depInstalled.status.main.status - - // backing up - if (depStatus === PackageMainStatus.BackingUp) { - return { - type: DependencyErrorType.NotRunning, - } - } - - const pkgManifest = pkg.manifest - const depManifest = dep.manifest + const pkgManifest = pkgInstalled.manifest + const depManifest = depInstalled.manifest // incorrect version if ( @@ -117,6 +111,8 @@ export class DepErrorService { } } + const depStatus = depInstalled.status.main.status + // not running if ( depStatus !== PackageMainStatus.Running && @@ -133,11 +129,10 @@ export class DepErrorService { 'health-checks' ]) { if ( - depInstalled.status.main.health[id].result !== HealthResult.Success + depInstalled.status.main.health[id]?.result !== HealthResult.Success ) { return { type: DependencyErrorType.HealthChecksFailed, - check: depInstalled.status.main.health[id], } } } @@ -185,7 +180,6 @@ export type DependencyError = export enum DependencyErrorType { NotInstalled = 'notInstalled', - BackingUp = 'backingUp', NotRunning = 'notRunning', IncorrectVersion = 'incorrectVersion', ConfigUnsatisfied = 'configUnsatisfied', @@ -213,7 +207,6 @@ export interface DependencyErrorConfigUnsatisfied { export interface DependencyErrorHealthChecksFailed { type: DependencyErrorType.HealthChecksFailed - check: HealthCheckResult } export interface DependencyErrorTransitive { diff --git a/frontend/projects/ui/src/app/services/marketplace.service.ts b/frontend/projects/ui/src/app/services/marketplace.service.ts index 721a69a34..a6a1bf2c6 100644 --- a/frontend/projects/ui/src/app/services/marketplace.service.ts +++ b/frontend/projects/ui/src/app/services/marketplace.service.ts @@ -75,7 +75,7 @@ export class MarketplaceService implements AbstractMarketplaceService { map(({ 'selected-url': url, 'known-hosts': hosts }) => toStoreIdentity(url, hosts[url]), ), - shareReplay(1), + shareReplay({ bufferSize: 1, refCount: true }), ) private readonly marketplace$ = this.knownHosts$.pipe( @@ -103,7 +103,7 @@ export class MarketplaceService implements AbstractMarketplaceService { }, {}, ), - shareReplay(1), + shareReplay({ bufferSize: 1, refCount: true }), ) private readonly filteredMarketplace$ = combineLatest([ diff --git a/frontend/projects/ui/src/app/services/patch-db/patch-db.factory.ts b/frontend/projects/ui/src/app/services/patch-db/patch-db.factory.ts index 3f43d1e49..a92672036 100644 --- a/frontend/projects/ui/src/app/services/patch-db/patch-db.factory.ts +++ b/frontend/projects/ui/src/app/services/patch-db/patch-db.factory.ts @@ -11,13 +11,13 @@ import { EMPTY, from, interval, - merge, Observable, } from 'rxjs' import { DataModel } from './data-model' import { AuthService } from '../auth.service' import { ConnectionService } from '../connection.service' import { ApiService } from '../api/embassy-api.service' +import { ConfigService } from '../config.service' export const PATCH_SOURCE = new InjectionToken[]>>( '', @@ -31,6 +31,9 @@ export function sourceFactory( const api = injector.get(ApiService) const authService = injector.get(AuthService) const connectionService = injector.get(ConnectionService) + const configService = injector.get(ConfigService) + const isTor = configService.isTor() + const timeout = isTor ? 16000 : 4000 const websocket$ = api.openPatchWebsocket$().pipe( bufferTime(250), @@ -38,9 +41,11 @@ export function sourceFactory( catchError((_, watch$) => { connectionService.websocketConnected$.next(false) - return interval(4000).pipe( + return interval(timeout).pipe( switchMap(() => - from(api.echo({ message: 'ping' })).pipe(catchError(() => EMPTY)), + from(api.echo({ message: 'ping', timeout })).pipe( + catchError(() => EMPTY), + ), ), take(1), switchMap(() => watch$), @@ -50,9 +55,7 @@ export function sourceFactory( ) return authService.isVerified$.pipe( - switchMap(verified => - verified ? merge(websocket$, api.patchStream$) : EMPTY, - ), + switchMap(verified => (verified ? websocket$ : EMPTY)), ) }) } diff --git a/frontend/projects/ui/src/app/services/patch-monitor.service.ts b/frontend/projects/ui/src/app/services/patch-monitor.service.ts index 41f69e344..fcf59bcbd 100644 --- a/frontend/projects/ui/src/app/services/patch-monitor.service.ts +++ b/frontend/projects/ui/src/app/services/patch-monitor.service.ts @@ -12,13 +12,9 @@ import { LocalStorageBootstrap } from './patch-db/local-storage-bootstrap' export class PatchMonitorService extends Observable { // @TODO not happy with Observable private readonly stream$ = this.authService.isVerified$.pipe( - tap(verified => { - if (verified) { - this.patch.start(this.bootstrapper) - } else { - this.patch.stop() - } - }), + tap(verified => + verified ? this.patch.start(this.bootstrapper) : this.patch.stop(), + ), ) constructor( diff --git a/frontend/projects/ui/src/app/services/pkg-status-rendering.service.ts b/frontend/projects/ui/src/app/services/pkg-status-rendering.service.ts index 4b320099f..e6e199baf 100644 --- a/frontend/projects/ui/src/app/services/pkg-status-rendering.service.ts +++ b/frontend/projects/ui/src/app/services/pkg-status-rendering.service.ts @@ -4,8 +4,7 @@ import { PackageState, Status, } from 'src/app/services/patch-db/data-model' -import { PackageDependencyErrors } from './dep-error.service' -import { Manifest } from '../../../../marketplace/src/types' +import { PkgDependencyErrors } from './dep-error.service' export interface PackageStatus { primary: PrimaryStatus | PackageState | PackageMainStatus @@ -15,7 +14,7 @@ export interface PackageStatus { export function renderPkgStatus( pkg: PackageDataEntry, - depErrors: PackageDependencyErrors, + depErrors: PkgDependencyErrors, ): PackageStatus { let primary: PrimaryStatus | PackageState | PackageMainStatus let dependency: DependencyStatus | null = null @@ -23,7 +22,7 @@ export function renderPkgStatus( if (pkg.state === PackageState.Installed && pkg.installed) { primary = getPrimaryStatus(pkg.installed.status) - dependency = getDependencyStatus(pkg.manifest, depErrors) + dependency = getDependencyStatus(depErrors) health = getHealthStatus(pkg.installed.status) } else { primary = pkg.state @@ -40,11 +39,8 @@ function getPrimaryStatus(status: Status): PrimaryStatus | PackageMainStatus { } } -function getDependencyStatus( - manifest: Manifest, - depErrors: PackageDependencyErrors, -): DependencyStatus { - return Object.values(depErrors[manifest.id]).some(err => !!err) +function getDependencyStatus(depErrors: PkgDependencyErrors): DependencyStatus { + return Object.values(depErrors).some(err => !!err) ? DependencyStatus.Warning : DependencyStatus.Satisfied } diff --git a/frontend/projects/ui/src/app/util/get-package-info.ts b/frontend/projects/ui/src/app/util/get-package-info.ts index a0bced97a..b72852ffd 100644 --- a/frontend/projects/ui/src/app/util/get-package-info.ts +++ b/frontend/projects/ui/src/app/util/get-package-info.ts @@ -8,11 +8,11 @@ import { } from '../services/pkg-status-rendering.service' import { PkgInfo } from '../types/pkg-info' import { packageLoadingProgress } from './package-loading-progress' -import { PackageDependencyErrors } from '../services/dep-error.service' +import { PkgDependencyErrors } from '../services/dep-error.service' export function getPackageInfo( entry: PackageDataEntry, - depErrors: PackageDependencyErrors, + depErrors: PkgDependencyErrors, ): PkgInfo { const statuses = renderPkgStatus(entry, depErrors) const primaryRendering = PrimaryRendering[statuses.primary] diff --git a/frontend/projects/ui/src/manifest.webmanifest b/frontend/projects/ui/src/manifest.webmanifest index 94e6b08f9..a199ac1dd 100644 --- a/frontend/projects/ui/src/manifest.webmanifest +++ b/frontend/projects/ui/src/manifest.webmanifest @@ -5,11 +5,11 @@ "background_color": "#1e1e1e", "display": "standalone", "scope": ".", - "start_url": "/?version=0344", - "id": "/?version=0344", + "start_url": "/?version=035", + "id": "/?version=035", "icons": [ { - "src": "assets/img/icon_pwa.png", + "src": "assets/img/icon.png", "sizes": "256x256", "type": "image/png", "purpose": "any" diff --git a/libs/Cargo.lock b/libs/Cargo.lock index 643e696f7..8f398bdc8 100644 --- a/libs/Cargo.lock +++ b/libs/Cargo.lock @@ -14,9 +14,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -27,17 +27,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "ahash" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" -dependencies = [ - "getrandom 0.2.10", - "once_cell", - "version_check", -] - [[package]] name = "ahash" version = "0.8.3" @@ -52,9 +41,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.0.2" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] @@ -82,21 +71,21 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.72" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "ast_node" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c704e2f6ee1a98223f5a7629a6ef0f3decb3b552ed282889dc957edff98ce1e6" +checksum = "c09c69dffe06d222d072c878c3afe86eee2179806f20503faec97250268b4c24" dependencies = [ "pmutil", "proc-macro2", "quote", "swc_macros_common", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] @@ -129,25 +118,25 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.38", ] [[package]] name = "async-trait" -version = "0.1.69" +version = "0.1.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b2d0f03b3640e3a630367e40c468cb7f309529c708ed1d88597047b0e7c6ef7" +checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.38", ] [[package]] name = "atoi" -version = "1.0.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c57d12312ff59c811c0643f4d80830505833c9ffaebd193d819392b265be8e" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" dependencies = [ "num-traits", ] @@ -171,9 +160,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", @@ -186,9 +175,9 @@ dependencies = [ [[package]] name = "base16ct" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" [[package]] name = "base32" @@ -204,9 +193,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.2" +version = "0.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" +checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" [[package]] name = "base64ct" @@ -240,9 +229,12 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.3" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +dependencies = [ + "serde", +] [[package]] name = "bitmaps" @@ -289,27 +281,30 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "cc" -version = "1.0.79" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] [[package]] name = "cfg-if" @@ -319,14 +314,24 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", - "winapi", + "windows-targets 0.48.5", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", ] [[package]] @@ -382,18 +387,18 @@ dependencies = [ [[package]] name = "concurrent-queue" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" +checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" dependencies = [ "crossbeam-utils", ] [[package]] name = "const-oid" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "795bc6e66a8e340f075fcf6227e417a2dc976b92b91f3cdc778bb858778b6747" +checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" [[package]] name = "convert_case" @@ -471,9 +476,9 @@ dependencies = [ [[package]] name = "crypto-bigint" -version = "0.4.9" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" +checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124" dependencies = [ "generic-array", "rand_core 0.6.4", @@ -515,16 +520,44 @@ dependencies = [ ] [[package]] -name = "dashmap" -version = "5.5.0" +name = "curve25519-dalek" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6943ae99c34386c84a470c499d3414f66502a41340aa895406e0d2e4a207b91d" +checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c" dependencies = [ "cfg-if", - "hashbrown 0.14.0", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "platforms", + "rustc_version 0.4.0", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.1", "lock_api", "once_cell", - "parking_lot_core 0.9.8", + "parking_lot_core", ] [[package]] @@ -535,9 +568,19 @@ checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" [[package]] name = "data-url" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d7439c3735f405729d52c3fbbe4de140eaf938a1fe47d227c27f8254d4302a5" +checksum = "41b319d1b62ffbd002e057f36bebd1f42b9f97927c9577461d855f3513c4289f" + +[[package]] +name = "debugid" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" +dependencies = [ + "serde", + "uuid", +] [[package]] name = "deno-proc-macro-rules" @@ -547,7 +590,7 @@ checksum = "3c65c2ffdafc1564565200967edc4851c7b55422d3913466688907efd05ea26f" dependencies = [ "deno-proc-macro-rules-macros", "proc-macro2", - "syn 2.0.18", + "syn 2.0.38", ] [[package]] @@ -559,14 +602,14 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.38", ] [[package]] name = "deno_ast" -version = "0.27.2" +version = "0.29.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a39dc5554b1c835c62914b545f8b378563a997521e39a8f03450b37b216143ef" +checksum = "8a8adb6aeb787db71d015d8e9f63f6e004eeb09c86babb4ded00878be18619b1" dependencies = [ "anyhow", "base64 0.13.1", @@ -600,25 +643,26 @@ dependencies = [ [[package]] name = "deno_core" -version = "0.195.0" +version = "0.222.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "408e433386de30dd501cf82d26ca1fb4cd84b055536f8f6f9c78c3380649d94b" +checksum = "b13c81b9ea8462680e7b77088a44fc36390bab3dbfa5a205a285e11b64e0919c" dependencies = [ "anyhow", "bytes", "deno_ops", + "deno_unsync", "futures", - "indexmap 1.9.3", + "indexmap 2.0.2", "libc", "log", "once_cell", - "parking_lot 0.12.1", + "parking_lot", "pin-project", "serde", "serde_json", "serde_v8", "smallvec", - "sourcemap", + "sourcemap 7.0.0", "tokio", "url", "v8", @@ -626,9 +670,9 @@ dependencies = [ [[package]] name = "deno_media_type" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63772a60d740a41d97fbffb4788fc3779e6df47289e01892c12be38f4a5beded" +checksum = "a798670c20308e5770cc0775de821424ff9e85665b602928509c8c70430b3ee0" dependencies = [ "data-url", "serde", @@ -637,9 +681,9 @@ dependencies = [ [[package]] name = "deno_ops" -version = "0.73.0" +version = "0.98.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6d06feb9b26ccd2997f35610517d5a8f1dd423e21364509523f72474601f87f" +checksum = "bf89da1a3e50ff7c89956495b53d9bcad29e1f1b3f3d2bc54cad7155f55419c4" dependencies = [ "deno-proc-macro-rules", "lazy-regex", @@ -651,17 +695,24 @@ dependencies = [ "regex", "strum", "strum_macros", - "syn 1.0.109", - "syn 2.0.18", + "syn 2.0.38", "thiserror", - "v8", +] + +[[package]] +name = "deno_unsync" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8a8f3722afd50e566ecfc783cc8a3a046bc4dd5eb45007431dfb2776aeb8993" +dependencies = [ + "tokio", ] [[package]] name = "der" -version = "0.6.1" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" dependencies = [ "const-oid", "pem-rfc7468", @@ -702,26 +753,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "dirs" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-sys" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - [[package]] name = "dotenvy" version = "0.15.7" @@ -730,9 +761,9 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dprint-swc-ext" -version = "0.10.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd4dda8a1b920e8be367aeaad035753d21bb69b3c50515afb41ab1eefbb886b5" +checksum = "6a0a2492465344a58a37ae119de59e81fe5a2885f2711c7b5048ef0dfa14ce42" dependencies = [ "bumpalo", "num-bigint", @@ -746,14 +777,16 @@ dependencies = [ [[package]] name = "ecdsa" -version = "0.14.8" +version = "0.16.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" +checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" dependencies = [ "der", + "digest 0.10.7", "elliptic-curve", "rfc6979", - "signature", + "signature 2.1.0", + "spki", ] [[package]] @@ -762,8 +795,18 @@ version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" dependencies = [ + "signature 1.6.4", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8", "serde", - "signature", + "signature 2.1.0", ] [[package]] @@ -772,37 +815,49 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ - "curve25519-dalek", - "ed25519", + "curve25519-dalek 3.2.0", + "ed25519 1.5.3", "rand 0.7.3", "serde", - "serde_bytes", "sha2 0.9.9", "zeroize", ] [[package]] -name = "either" -version = "1.8.1" +name = "ed25519-dalek" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "7277392b266383ef8396db7fdeb1e77b6c52fed775f5df15bb24f35b72156980" +dependencies = [ + "curve25519-dalek 4.1.1", + "ed25519 2.2.3", + "serde", + "sha2 0.10.8", + "zeroize", +] + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" dependencies = [ "serde", ] [[package]] name = "elliptic-curve" -version = "0.12.3" +version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" +checksum = "d97ca172ae9dc9f9b779a6e3a65d308f2af74e5b8c921299075bdb4a0370e914" dependencies = [ "base16ct", "crypto-bigint", - "der", "digest 0.10.7", "ff", "generic-array", "group", + "pkcs8", "rand_core 0.6.4", "sec1", "subtle", @@ -818,7 +873,7 @@ dependencies = [ "futures", "helpers", "imbl", - "nix 0.25.1", + "nix 0.27.1", "procfs", "serde", "serde_json", @@ -844,9 +899,9 @@ dependencies = [ [[package]] name = "encoding_rs" -version = "0.8.32" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if", ] @@ -859,23 +914,23 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.1" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" dependencies = [ - "errno-dragonfly", "libc", "windows-sys 0.48.0", ] [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "etcetera" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" dependencies = [ - "cc", - "libc", + "cfg-if", + "home", + "windows-sys 0.48.0", ] [[package]] @@ -896,12 +951,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "1.9.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "fd-lock-rs" @@ -914,24 +966,47 @@ dependencies = [ [[package]] name = "ff" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ "rand_core 0.6.4", "subtle", ] [[package]] -name = "flate2" -version = "1.0.26" +name = "fiat-crypto" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +checksum = "d0870c84016d4b481be5c9f323c24f65e31e901ae618f0e80f4308fb00de1d2d" + +[[package]] +name = "finl_unicode" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" + +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "miniz_oxide", ] +[[package]] +name = "flume" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +dependencies = [ + "futures-core", + "futures-sink", + "spin 0.9.8", +] + [[package]] name = "fnv" version = "1.0.7" @@ -973,14 +1048,14 @@ dependencies = [ [[package]] name = "from_variant" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d449976075322384507443937df2f1d5577afbf4282f12a5a66ef29fa3e6307" +checksum = "03ec5dc38ee19078d84a692b1c41181ff9f94331c76cee66ff0208c770b5e54f" dependencies = [ "pmutil", "proc-macro2", "swc_macros_common", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] @@ -1043,13 +1118,13 @@ dependencies = [ [[package]] name = "futures-intrusive" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604f7a68fbf8103337523b1fadc8ade7361ee3f112f7c680ad179651616aed5" +checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" dependencies = [ "futures-core", "lock_api", - "parking_lot 0.11.2", + "parking_lot", ] [[package]] @@ -1066,7 +1141,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.38", ] [[package]] @@ -1107,6 +1182,7 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -1133,15 +1209,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.3" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] name = "group" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", "rand_core 0.6.4", @@ -1150,9 +1226,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.20" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ "bytes", "fnv", @@ -1185,26 +1261,26 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "ahash 0.8.3", + "ahash", ] [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" dependencies = [ - "ahash 0.8.3", + "ahash", "allocator-api2", ] [[package]] name = "hashlink" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312f66718a2d7789ffef4f4b7b213138ed9f1eb3aa1d0d82fc99f88fb3ffd26f" +checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" dependencies = [ - "hashbrown 0.14.0", + "hashbrown 0.14.1", ] [[package]] @@ -1245,9 +1321,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hex" @@ -1283,6 +1359,15 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "home" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +dependencies = [ + "windows-sys 0.48.0", +] + [[package]] name = "http" version = "0.2.9" @@ -1313,9 +1398,9 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" @@ -1334,7 +1419,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.4.9", "tokio", "tower-service", "tracing", @@ -1356,16 +1441,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.57" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows", + "windows-core", ] [[package]] @@ -1395,9 +1480,9 @@ checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" [[package]] name = "imbl" -version = "2.0.0" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2806b69cd9f4664844027b64465eacb444c67c1db9c778e341adff0c25cdb0d" +checksum = "85b4555023847ca2cd6fd11f20b553886e6981c7e8aee9b3e7e960b4b17fb440" dependencies = [ "bitmaps", "imbl-sized-chunks", @@ -1446,21 +1531,21 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.0" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown 0.14.1", ] [[package]] -name = "instant" -version = "0.1.12" +name = "inout" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" dependencies = [ - "cfg-if", + "generic-array", ] [[package]] @@ -1469,7 +1554,7 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.2", + "hermit-abi 0.3.3", "libc", "windows-sys 0.48.0", ] @@ -1482,15 +1567,15 @@ checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] name = "is-macro" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7d079e129b77477a49c5c4f1cfe9ce6c2c909ef52520693e8e811a714c7b20" +checksum = "f4467ed1321b310c2625c5aa6c1b1ffc5de4d9e42668cf697a08fb033ee8265e" dependencies = [ "Inflector", "pmutil", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] @@ -1504,9 +1589,9 @@ dependencies = [ [[package]] name = "itertools" -version = "0.10.5" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" dependencies = [ "either", ] @@ -1536,14 +1621,14 @@ dependencies = [ "deno_core", "embassy_container_init", "helpers", - "itertools 0.10.5", + "itertools 0.11.0", "lazy_static", "models", "pin-project", "reqwest", "serde", "serde_json", - "sha2 0.10.7", + "sha2 0.10.8", "tokio", "tracing", ] @@ -1579,9 +1664,9 @@ dependencies = [ [[package]] name = "lazy-regex" -version = "2.5.0" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff63c423c68ea6814b7da9e88ce585f793c87ddd9e78f646970891769c8235d4" +checksum = "e723bd417b2df60a0f6a2b6825f297ea04b245d4ba52b5a22cb679bdf58b05fa" dependencies = [ "lazy-regex-proc_macros", "once_cell", @@ -1590,14 +1675,14 @@ dependencies = [ [[package]] name = "lazy-regex-proc_macros" -version = "2.4.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8edfc11b8f56ce85e207e62ea21557cfa09bb24a8f6b04ae181b086ff8611c22" +checksum = "0f0a1d9139f0ee2e862e08a9c5d0ba0470f2aa21cd1e1aa1b1562f83116c725f" dependencies = [ "proc-macro2", "quote", "regex", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] @@ -1616,93 +1701,31 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" dependencies = [ - "spin", -] - -[[package]] -name = "lexical" -version = "6.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7aefb36fd43fef7003334742cbf77b243fcd36418a1d1bdd480d613a67968f6" -dependencies = [ - "lexical-core", -] - -[[package]] -name = "lexical-core" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" -dependencies = [ - "lexical-parse-float", - "lexical-parse-integer", - "lexical-util", - "lexical-write-float", - "lexical-write-integer", -] - -[[package]] -name = "lexical-parse-float" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" -dependencies = [ - "lexical-parse-integer", - "lexical-util", - "static_assertions", -] - -[[package]] -name = "lexical-parse-integer" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" -dependencies = [ - "lexical-util", - "static_assertions", -] - -[[package]] -name = "lexical-util" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" -dependencies = [ - "static_assertions", -] - -[[package]] -name = "lexical-write-float" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" -dependencies = [ - "lexical-util", - "lexical-write-integer", - "static_assertions", -] - -[[package]] -name = "lexical-write-integer" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" -dependencies = [ - "lexical-util", - "static_assertions", + "spin 0.5.2", ] [[package]] name = "libc" -version = "0.2.147" +version = "0.2.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" [[package]] name = "libm" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libsqlite3-sys" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afc22eff61b133b115c6e8c74e818c628d6d5e7a502afea6f64dee076dd94326" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] [[package]] name = "linux-raw-sys" @@ -1712,9 +1735,9 @@ checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" [[package]] name = "linux-raw-sys" -version = "0.3.8" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" [[package]] name = "lock_api" @@ -1728,9 +1751,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "matchers" @@ -1756,18 +1779,19 @@ dependencies = [ [[package]] name = "md-5" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ + "cfg-if", "digest 0.10.7", ] [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "memoffset" @@ -1823,9 +1847,9 @@ dependencies = [ name = "models" version = "0.1.0" dependencies = [ - "base64 0.21.2", + "base64 0.21.4", "color-eyre", - "ed25519-dalek", + "ed25519-dalek 2.0.0", "emver", "ipnet", "lazy_static", @@ -1883,20 +1907,6 @@ dependencies = [ "memoffset 0.6.5", ] -[[package]] -name = "nix" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset 0.6.5", - "pin-utils", -] - [[package]] name = "nix" version = "0.26.4" @@ -1910,6 +1920,17 @@ dependencies = [ "pin-utils", ] +[[package]] +name = "nix" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +dependencies = [ + "bitflags 2.4.1", + "cfg-if", + "libc", +] + [[package]] name = "nom" version = "7.1.3" @@ -1932,9 +1953,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", @@ -1983,9 +2004,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", "libm", @@ -1997,15 +2018,15 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.2", + "hermit-abi 0.3.3", "libc", ] [[package]] name = "object" -version = "0.31.1" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ "memchr", ] @@ -2024,11 +2045,11 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.55" +version = "0.10.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345df152bc43501c5eb9e4654ff05f794effb78d4efe3d53abc158baddc0703d" +checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", "cfg-if", "foreign-types", "libc", @@ -2045,7 +2066,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.38", ] [[package]] @@ -2056,18 +2077,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "111.26.0+1.1.1u" +version = "300.1.5+3.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efc62c9f12b22b8f5208c23a7200a442b2e5999f8bdf80233852122b5a4f6f37" +checksum = "559068e4c12950d7dcaa1857a61725c0d38d4fc03ff8e070ab31a75d6e316491" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.90" +version = "0.9.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374533b0e45f3a7ced10fcaeccca020e66656bc03dac384f852e4e5a7a8104a6" +checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" dependencies = [ "cc", "libc", @@ -2078,9 +2099,9 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.5.1" +version = "6.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" [[package]] name = "overload" @@ -2096,35 +2117,26 @@ checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" [[package]] name = "p256" -version = "0.11.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" dependencies = [ "ecdsa", "elliptic-curve", - "sha2 0.10.7", + "primeorder", + "sha2 0.10.8", ] [[package]] name = "p384" -version = "0.11.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc8c5bf642dde52bb9e87c0ecd8ca5a76faac2eeed98dedb7c717997e1080aa" +checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209" dependencies = [ "ecdsa", "elliptic-curve", - "sha2 0.10.7", -] - -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", + "primeorder", + "sha2 0.10.8", ] [[package]] @@ -2134,21 +2146,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.8", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "winapi", + "parking_lot_core", ] [[package]] @@ -2159,9 +2157,9 @@ checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", + "redox_syscall", "smallvec", - "windows-targets 0.48.1", + "windows-targets 0.48.5", ] [[package]] @@ -2219,9 +2217,9 @@ checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" [[package]] name = "pem-rfc7468" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d159833a9105500e0398934e205e0773f0b27529557134ecfc51c27646adac" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" dependencies = [ "base64ct", ] @@ -2278,29 +2276,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "030ad2bc4db10a8944cb0d837f158bdfec4d4a4873ab701a95046770d11f8842" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.38", ] [[package]] name = "pin-project-lite" -version = "0.2.10" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -2310,21 +2308,20 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkcs1" -version = "0.4.1" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff33bdbdfc54cc98a2eca766ebdec3e1b8fb7387523d5c9c9a2891da856f719" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" dependencies = [ "der", "pkcs8", "spki", - "zeroize", ] [[package]] name = "pkcs8" -version = "0.9.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ "der", "spki", @@ -2337,14 +2334,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] -name = "pmutil" -version = "0.5.3" +name = "platforms" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3894e5d549cccbe44afecf72922f277f603cd4bb0219c8342631ef18fffbe004" +checksum = "4503fa043bf02cee09a9582e9554b4c6403b2ef55e4612e96561d294419429f8" + +[[package]] +name = "pmutil" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52a40bc70c2c58040d2d8b167ba9a5ff59fc9dab7ad44771cfde3dcfde7a09c6" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] @@ -2359,6 +2362,15 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" +[[package]] +name = "primeorder" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c2fcef82c0ec6eefcc179b978446c399b3cdf73c392c35604e399eee6df1ee3" +dependencies = [ + "elliptic-curve", +] + [[package]] name = "proc-macro-crate" version = "1.3.1" @@ -2377,18 +2389,18 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] [[package]] name = "procfs" -version = "0.14.2" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1de8dacb0873f77e6aefc6d71e044761fcc68060290f5b1089fcdf84626bb69" +checksum = "943ca7f9f29bab5844ecd8fdb3992c5969b6622bb9609b9502fef9b4310e3f1f" dependencies = [ "bitflags 1.3.2", "byteorder", @@ -2396,7 +2408,7 @@ dependencies = [ "flate2", "hex", "lazy_static", - "rustix 0.36.15", + "rustix 0.36.16", ] [[package]] @@ -2410,9 +2422,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.31" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fe8a65d69dd0808184ebb5f836ab526bb259db23c657efa38711b1072ee47f0" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -2503,15 +2515,6 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "redox_syscall" version = "0.3.5" @@ -2521,27 +2524,16 @@ dependencies = [ "bitflags 1.3.2", ] -[[package]] -name = "redox_users" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" -dependencies = [ - "getrandom 0.2.10", - "redox_syscall 0.2.16", - "thiserror", -] - [[package]] name = "regex" -version = "1.9.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.3.3", - "regex-syntax 0.7.4", + "regex-automata 0.4.3", + "regex-syntax 0.8.2", ] [[package]] @@ -2555,13 +2547,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.3" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.4", + "regex-syntax 0.8.2", ] [[package]] @@ -2572,17 +2564,17 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "reqwest" -version = "0.11.18" +version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" +checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ - "base64 0.21.2", + "base64 0.21.4", "bytes", "encoding_rs", "futures-core", @@ -2603,6 +2595,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", + "system-configuration", "tokio", "tokio-native-tls", "tower-service", @@ -2615,13 +2608,12 @@ dependencies = [ [[package]] name = "rfc6979" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" dependencies = [ - "crypto-bigint", "hmac 0.12.1", - "zeroize", + "subtle", ] [[package]] @@ -2633,7 +2625,7 @@ dependencies = [ "cc", "libc", "once_cell", - "spin", + "spin 0.5.2", "untrusted", "web-sys", "winapi", @@ -2685,11 +2677,12 @@ dependencies = [ [[package]] name = "rsa" -version = "0.7.2" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "094052d5470cbcef561cb848a7209968c9f12dfa6d668f4bca048ac5de51099c" +checksum = "6ab43bb47d23c1a631b4b680199a45255dce26fa9ab2fa902581f624ff13e6a8" dependencies = [ "byteorder", + "const-oid", "digest 0.10.7", "num-bigint-dig", "num-integer", @@ -2698,8 +2691,9 @@ dependencies = [ "pkcs1", "pkcs8", "rand_core 0.6.4", - "signature", - "smallvec", + "sha2 0.10.8", + "signature 2.1.0", + "spki", "subtle", "zeroize", ] @@ -2731,14 +2725,14 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.18", + "semver 1.0.20", ] [[package]] name = "rustix" -version = "0.36.15" +version = "0.36.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c37f1bd5ef1b5422177b7646cba67430579cfe2ace80f284fee876bca52ad941" +checksum = "6da3636faa25820d8648e0e31c5d519bbb01f72fdf57131f0f5f7da5fed36eab" dependencies = [ "bitflags 1.3.2", "errno", @@ -2750,28 +2744,26 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.23" +version = "0.38.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" +checksum = "745ecfa778e66b2b63c88a61cb36e0eea109e803b0b86bf9879fbc77c70e86ed" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", "errno", - "io-lifetimes", "libc", - "linux-raw-sys 0.3.8", + "linux-raw-sys 0.4.10", "windows-sys 0.48.0", ] [[package]] name = "rustls" -version = "0.20.8" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" dependencies = [ - "log", "ring", + "rustls-webpki", "sct", - "webpki", ] [[package]] @@ -2780,7 +2772,17 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" dependencies = [ - "base64 0.21.2", + "base64 0.21.4", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe" +dependencies = [ + "ring", + "untrusted", ] [[package]] @@ -2828,9 +2830,9 @@ dependencies = [ [[package]] name = "sec1" -version = "0.3.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ "base16ct", "der", @@ -2842,9 +2844,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.9.1" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -2855,9 +2857,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" dependencies = [ "core-foundation-sys", "libc", @@ -2874,9 +2876,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "semver-parser" @@ -2937,7 +2939,7 @@ checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.38", ] [[package]] @@ -2946,7 +2948,7 @@ version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3" dependencies = [ - "indexmap 2.0.0", + "indexmap 2.0.2", "itoa", "ryu", "serde", @@ -2966,9 +2968,9 @@ dependencies = [ [[package]] name = "serde_v8" -version = "0.106.0" +version = "0.131.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1506733ba5b864018c44320fa3bb11dbb4bf01b62dd09eda007be73034371c51" +checksum = "38cafa16d0a4288d75925351bb54d06d2e830118ad3fad393947bb11f91b18f3" dependencies = [ "bytes", "derive_more", @@ -2993,9 +2995,9 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", @@ -3017,9 +3019,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.7" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -3040,9 +3042,9 @@ dependencies = [ [[package]] name = "sharded-slab" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ "lazy_static", ] @@ -3061,6 +3063,12 @@ name = "signature" version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" + +[[package]] +name = "signature" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" dependencies = [ "digest 0.10.7", "rand_core 0.6.4", @@ -3068,24 +3076,24 @@ dependencies = [ [[package]] name = "siphasher" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] [[package]] name = "smallvec" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" [[package]] name = "smartstring" @@ -3118,12 +3126,39 @@ dependencies = [ ] [[package]] -name = "sourcemap" -version = "6.2.3" +name = "socket2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eed16231c92d0a6f0388f56e0ab2be24ecff1173f8e22f0ea5e074d0525631cb" +checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "sourcemap" +version = "6.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4cbf65ca7dc576cf50e21f8d0712d96d4fcfd797389744b7b222a85cdf5bd90" dependencies = [ "data-encoding", + "debugid", + "if_chain", + "rustc_version 0.2.3", + "serde", + "serde_json", + "unicode-id", + "url", +] + +[[package]] +name = "sourcemap" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbecc42a2b6131acc3bf9a25c9fe4161dba438eb52131bba83c5d781b5b70be3" +dependencies = [ + "data-encoding", + "debugid", "if_chain", "rustc_version 0.2.3", "serde", @@ -3139,10 +3174,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] -name = "spki" -version = "0.6.0" +name = "spin" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" dependencies = [ "base64ct", "der", @@ -3150,84 +3194,90 @@ dependencies = [ [[package]] name = "sqlformat" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c12bc9199d1db8234678b7051747c07f517cdcf019262d1847b94ec8b1aee3e" +checksum = "6b7b278788e7be4d0d29c0f39497a0eef3fba6bbc8e70d8bf7fde46edeaa9e85" dependencies = [ - "itertools 0.10.5", + "itertools 0.11.0", "nom", "unicode_categories", ] [[package]] name = "sqlx" -version = "0.6.3" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8de3b03a925878ed54a954f621e64bf55a3c1bd29652d0d1a17830405350188" +checksum = "0e50c216e3624ec8e7ecd14c6a6a6370aad6ee5d8cfc3ab30b5162eeeef2ed33" dependencies = [ "sqlx-core", "sqlx-macros", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", ] [[package]] name = "sqlx-core" -version = "0.6.3" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa8241483a83a3f33aa5fff7e7d9def398ff9990b2752b6c6112b83c6d246029" +checksum = "8d6753e460c998bbd4cd8c6f0ed9a64346fcca0723d6e75e52fdc351c5d2169d" dependencies = [ - "ahash 0.7.6", + "ahash", "atoi", - "base64 0.13.1", - "bitflags 1.3.2", "byteorder", "bytes", "chrono", "crc", "crossbeam-queue", - "dirs", "dotenvy", "either", "event-listener", "futures-channel", "futures-core", "futures-intrusive", + "futures-io", "futures-util", "hashlink", "hex", - "hkdf", - "hmac 0.12.1", - "indexmap 1.9.3", - "itoa", - "libc", + "indexmap 2.0.2", "log", - "md-5", "memchr", "once_cell", "paste", "percent-encoding", - "rand 0.8.5", "rustls", "rustls-pemfile", "serde", "serde_json", - "sha1", - "sha2 0.10.7", + "sha2 0.10.8", "smallvec", "sqlformat", - "sqlx-rt", - "stringprep", "thiserror", + "tokio", "tokio-stream", + "tracing", "url", "webpki-roots", - "whoami", ] [[package]] name = "sqlx-macros" -version = "0.6.3" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9966e64ae989e7e575b19d7265cb79d7fc3cbbdf179835cb0d716f294c2049c9" +checksum = "9a793bb3ba331ec8359c1853bd39eed32cdd7baaf22c35ccf5c92a7e8d1189ec" +dependencies = [ + "proc-macro2", + "quote", + "sqlx-core", + "sqlx-macros-core", + "syn 1.0.109", +] + +[[package]] +name = "sqlx-macros-core" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a4ee1e104e00dedb6aa5ffdd1343107b0a4702e862a84320ee7cc74782d96fc" dependencies = [ "dotenvy", "either", @@ -3238,50 +3288,160 @@ dependencies = [ "quote", "serde", "serde_json", - "sha2 0.10.7", + "sha2 0.10.8", "sqlx-core", - "sqlx-rt", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", "syn 1.0.109", + "tempfile", + "tokio", "url", ] [[package]] -name = "sqlx-rt" -version = "0.6.3" +name = "sqlx-mysql" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "804d3f245f894e61b1e6263c84b23ca675d96753b5abfd5cc8597d86806e8024" +checksum = "864b869fdf56263f4c95c45483191ea0af340f9f3e3e7b4d57a61c7c87a970db" dependencies = [ + "atoi", + "base64 0.21.4", + "bitflags 2.4.1", + "byteorder", + "bytes", + "chrono", + "crc", + "digest 0.10.7", + "dotenvy", + "either", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "generic-array", + "hex", + "hkdf", + "hmac 0.12.1", + "itoa", + "log", + "md-5", + "memchr", "once_cell", - "tokio", - "tokio-rustls", + "percent-encoding", + "rand 0.8.5", + "rsa", + "serde", + "sha1", + "sha2 0.10.8", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-postgres" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb7ae0e6a97fb3ba33b23ac2671a5ce6e3cabe003f451abd5a56e7951d975624" +dependencies = [ + "atoi", + "base64 0.21.4", + "bitflags 2.4.1", + "byteorder", + "chrono", + "crc", + "dotenvy", + "etcetera", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "hex", + "hkdf", + "hmac 0.12.1", + "home", + "itoa", + "log", + "md-5", + "memchr", + "once_cell", + "rand 0.8.5", + "serde", + "serde_json", + "sha1", + "sha2 0.10.8", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-sqlite" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59dc83cf45d89c555a577694534fcd1b55c545a816c816ce51f20bbe56a4f3f" +dependencies = [ + "atoi", + "chrono", + "flume", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "libsqlite3-sys", + "log", + "percent-encoding", + "serde", + "sqlx-core", + "tracing", + "url", +] + +[[package]] +name = "ssh-cipher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caac132742f0d33c3af65bfcde7f6aa8f62f0e991d80db99149eb9d44708784f" +dependencies = [ + "cipher", + "ssh-encoding", ] [[package]] name = "ssh-encoding" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19cfdc32e0199062113edf41f344fbf784b8205a94600233c84eb838f45191e1" +checksum = "eb9242b9ef4108a78e8cd1a2c98e193ef372437f8c22be363075233321dd4a15" dependencies = [ "base64ct", "pem-rfc7468", - "sha2 0.10.7", + "sha2 0.10.8", ] [[package]] name = "ssh-key" -version = "0.5.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "288d8f5562af5a3be4bda308dd374b2c807b940ac370b5efa1c99311da91d9a1" +checksum = "2180b3bc4955efd5661a97658d3cf4c8107e0d132f619195afe9486c13cca313" dependencies = [ - "ed25519-dalek", "p256", "p384", "rand_core 0.6.4", "rsa", "sec1", - "sha2 0.10.7", - "signature", + "sha2 0.10.8", + "signature 2.1.0", + "ssh-cipher", "ssh-encoding", + "subtle", "zeroize", ] @@ -3318,7 +3478,7 @@ checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" dependencies = [ "new_debug_unreachable", "once_cell", - "parking_lot 0.12.1", + "parking_lot", "phf_shared", "precomputed-hash", "serde", @@ -3338,23 +3498,24 @@ dependencies = [ [[package]] name = "string_enum" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0090512bdfee4b56d82480d66c0fd8a6f53f0fe0f97e075e949b252acdd482e0" +checksum = "8fa4d4f81d7c05b9161f8de839975d3326328b8ba2831164b465524cc2f55252" dependencies = [ "pmutil", "proc-macro2", "quote", "swc_macros_common", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] name = "stringprep" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3737bde7edce97102e0e2b15365bf7a20bfdb5f60f4f9e8d7004258a51a8da" +checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" dependencies = [ + "finl_unicode", "unicode-bidi", "unicode-normalization", ] @@ -3367,24 +3528,24 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "strum" -version = "0.24.1" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.24.3" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" dependencies = [ "heck", "proc-macro2", "quote", "rustversion", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] @@ -3395,9 +3556,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "swc_atoms" -version = "0.5.6" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d0307dc4bfd107d49c7528350c372758cfca94fb503629b9a056e6a1572860" +checksum = "9f54563d7dcba626d4acfe14ed12def7ecc28e004debe3ecd2c3ee07cc47e449" dependencies = [ "once_cell", "rustc-hash", @@ -3409,11 +3570,10 @@ dependencies = [ [[package]] name = "swc_common" -version = "0.31.12" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19c774005489d2907fb67909cf42af926e72edee1366512777c605ba2ef19c94" +checksum = "39cb7fcd56655c8ae7dcf2344f0be6cbff4d9c7cb401fe3ec8e56e1de8dfe582" dependencies = [ - "ahash 0.7.6", "ast_node", "better_scoped_tls", "cfg-if", @@ -3425,7 +3585,7 @@ dependencies = [ "rustc-hash", "serde", "siphasher", - "sourcemap", + "sourcemap 6.4.1", "string_cache", "swc_atoms", "swc_eq_ignore_macros", @@ -3437,9 +3597,9 @@ dependencies = [ [[package]] name = "swc_config" -version = "0.1.5" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89c8fc2c12bb1634c7c32fc3c9b6b963ad8f034cc62c4ecddcf215dc4f6f959d" +checksum = "9ba1c7a40d38f9dd4e9a046975d3faf95af42937b34b2b963be4d8f01239584b" dependencies = [ "indexmap 1.9.3", "serde", @@ -3449,24 +3609,24 @@ dependencies = [ [[package]] name = "swc_config_macro" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dadb9998d4f5fc36ef558ed5a092579441579ee8c6fcce84a5228cca9df4004" +checksum = "e5b5aaca9a0082be4515f0fbbecc191bf5829cd25b5b9c0a2810f6a2bb0d6829" dependencies = [ "pmutil", "proc-macro2", "quote", "swc_macros_common", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] name = "swc_ecma_ast" -version = "0.104.5" +version = "0.109.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5cf9dd351d0c285dcd36535267953a18995d4dda0cbe34ac9d1df61aa415b26" +checksum = "7bc2286cedd688a68f214faa1c19bb5cceab7c9c54d0cbe3273e4c1704e38f69" dependencies = [ - "bitflags 2.3.3", + "bitflags 2.4.1", "is-macro", "num-bigint", "scoped-tls", @@ -3479,16 +3639,16 @@ dependencies = [ [[package]] name = "swc_ecma_codegen" -version = "0.139.17" +version = "0.144.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66d1ea16bb9b7ea6f87f17325742ff256fcbd65b188af57c2bf415fe4afc945" +checksum = "8e62ba2c0ed1f119fc1a76542d007f1b2c12854d54dea15f5491363227debe11" dependencies = [ "memchr", "num-bigint", "once_cell", "rustc-hash", "serde", - "sourcemap", + "sourcemap 6.4.1", "swc_atoms", "swc_common", "swc_ecma_ast", @@ -3498,24 +3658,23 @@ dependencies = [ [[package]] name = "swc_ecma_codegen_macros" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ee0caee1018808d94ecd09490cb7affd3d504b19aa11c49238f5fc4b54901" +checksum = "dcdff076dccca6cc6a0e0b2a2c8acfb066014382bc6df98ec99e755484814384" dependencies = [ "pmutil", "proc-macro2", "quote", "swc_macros_common", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] name = "swc_ecma_loader" -version = "0.43.14" +version = "0.44.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe45f1e5dcc1b005544ff78253b787dea5dfd5e2f712b133964cdc3545c954a4" +checksum = "e7d7c322462657ae27ac090a2c89f7e456c94416284a2f5ecf66c43a6a3c19d1" dependencies = [ - "ahash 0.7.6", "anyhow", "pathdiff", "serde", @@ -3525,13 +3684,13 @@ dependencies = [ [[package]] name = "swc_ecma_parser" -version = "0.134.12" +version = "0.139.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a3fcfe3d83dd445cbd9321882e47b467594433d9a21c4d6c37a27f534bb89e" +checksum = "3eab46cb863bc5cd61535464e07e5b74d5f792fa26a27b9f6fd4c8daca9903b7" dependencies = [ "either", - "lexical", "num-bigint", + "num-traits", "serde", "smallvec", "smartstring", @@ -3545,12 +3704,12 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_base" -version = "0.127.18" +version = "0.132.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9c33ec5369178f3a0580ab86cfe89ffb9c3fbd122aed379cfb71d469d9d61c1" +checksum = "01ffd4a8149052bfc1ec1832fcbe04f317846ce635a49ec438df33b06db27d26" dependencies = [ "better_scoped_tls", - "bitflags 2.3.3", + "bitflags 2.4.1", "indexmap 1.9.3", "once_cell", "phf", @@ -3568,9 +3727,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_classes" -version = "0.116.18" +version = "0.121.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e3b0d5f362f0da97be1f1b06d7b0d8667ea70b4adeabff0dcaecb6259c09525" +checksum = "f4b7fee0e2c6f12456d2aefb2418f2f26529b995945d493e1dce35a5a22584fc" dependencies = [ "swc_atoms", "swc_common", @@ -3582,22 +3741,22 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_macros" -version = "0.5.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "984d5ac69b681fc5438f9abf82b0fda34fe04e119bc75f8213b7e01128c7c9a2" +checksum = "8188eab297da773836ef5cf2af03ee5cca7a563e1be4b146f8141452c28cc690" dependencies = [ "pmutil", "proc-macro2", "quote", "swc_macros_common", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] name = "swc_ecma_transforms_proposal" -version = "0.161.22" +version = "0.166.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cdce42d44ef775bc29f5ada3678a80ff72fa17a0ef705e14f63cfd0e0155e0e" +checksum = "122fd9a69f464694edefbf9c59106b3c15e5cc8cb8575a97836e4fb79018e98f" dependencies = [ "either", "rustc-hash", @@ -3615,11 +3774,10 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_react" -version = "0.173.20" +version = "0.178.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fb9481ad4e2acba34c6fbb6d4ccc64efe9f1821675e883dcfa732d7220f4b1e" +checksum = "675b5c755b0448268830e85e59429095d3423c0ce4a850b209c6f0eeab069f63" dependencies = [ - "ahash 0.7.6", "base64 0.13.1", "dashmap", "indexmap 1.9.3", @@ -3640,9 +3798,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_typescript" -version = "0.177.23" +version = "0.182.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fe2eea4f5b8a25c93cdaa29fb1ce4108893da88a11e61e04b7f5295b5468829" +checksum = "4eba97b1ea71739fcf278aedad4677a3cacb52288a3f3566191b70d16a889de6" dependencies = [ "serde", "swc_atoms", @@ -3656,9 +3814,9 @@ dependencies = [ [[package]] name = "swc_ecma_utils" -version = "0.117.13" +version = "0.122.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad791bbfdafcebd878584021e050964c8ab68aba7eeac9d0ee4afba4c284a629" +checksum = "11006a3398ffd4693c4d3b0a1b1a5030edbdc04228159f5301120a6178144708" dependencies = [ "indexmap 1.9.3", "num_cpus", @@ -3674,9 +3832,9 @@ dependencies = [ [[package]] name = "swc_ecma_visit" -version = "0.90.5" +version = "0.95.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce3ac941ae1d6c7e683aa375fc71fbf58df58b441f614d757fbb10554936ca2" +checksum = "0f628ec196e76e67892441e14eef2e423a738543d32bffdabfeec20c29582117" dependencies = [ "num-bigint", "swc_atoms", @@ -3688,33 +3846,33 @@ dependencies = [ [[package]] name = "swc_eq_ignore_macros" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c20468634668c2bbab581947bb8c75c97158d5a6959f4ba33df20983b20b4f6" +checksum = "05a95d367e228d52484c53336991fdcf47b6b553ef835d9159db4ba40efb0ee8" dependencies = [ "pmutil", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] name = "swc_macros_common" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e582c3e3c2269238524923781df5be49e011dbe29cf7683a2215d600a562ea6" +checksum = "7a273205ccb09b51fabe88c49f3b34c5a4631c4c00a16ae20e03111d6a42e832" dependencies = [ "pmutil", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] name = "swc_visit" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f412dd4fbc58f509a04e64f5c8038333142fc139e8232f01b883db0094b3b51" +checksum = "e87c337fbb2d191bf371173dea6a957f01899adb8f189c6c31b122a6cfc98fc3" dependencies = [ "either", "swc_visit_macros", @@ -3722,16 +3880,16 @@ dependencies = [ [[package]] name = "swc_visit_macros" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cfc226380ba54a5feed2c12f3ccd33f1ae8e959160290e5d2d9b4e918b6472a" +checksum = "0f322730fb82f3930a450ac24de8c98523af7d34ab8cb2f46bcb405839891a99" dependencies = [ "Inflector", "pmutil", "proc-macro2", "quote", "swc_macros_common", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] @@ -3747,15 +3905,36 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.18" +version = "2.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tap" version = "1.0.1" @@ -3764,23 +3943,22 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.6.0" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" dependencies = [ - "autocfg", "cfg-if", "fastrand", - "redox_syscall 0.3.5", - "rustix 0.37.23", + "redox_syscall", + "rustix 0.38.19", "windows-sys 0.48.0", ] [[package]] name = "termcolor" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" dependencies = [ "winapi-util", ] @@ -3817,7 +3995,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.38", ] [[package]] @@ -3847,20 +4025,19 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.29.1" +version = "1.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" +checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" dependencies = [ - "autocfg", "backtrace", "bytes", "libc", "mio", "num_cpus", - "parking_lot 0.12.1", + "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2", + "socket2 0.5.4", "tokio-macros", "windows-sys 0.48.0", ] @@ -3873,7 +4050,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.38", ] [[package]] @@ -3886,17 +4063,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-rustls" -version = "0.23.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" -dependencies = [ - "rustls", - "tokio", - "webpki", -] - [[package]] name = "tokio-stream" version = "0.1.14" @@ -3911,9 +4077,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" dependencies = [ "bytes", "futures-core", @@ -3931,11 +4097,11 @@ checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" [[package]] name = "toml_edit" -version = "0.19.14" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.0.0", + "indexmap 2.0.2", "toml_datetime", "winnow", ] @@ -3949,7 +4115,7 @@ dependencies = [ "base32", "base64 0.13.1", "derive_more", - "ed25519-dalek", + "ed25519-dalek 1.0.1", "hex", "hmac 0.11.0", "rand 0.7.3", @@ -3968,11 +4134,11 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "ee2ef2af84856a50c1d430afce2fdded0a4ec7eda868db86409b4543df0797f9" dependencies = [ - "cfg-if", + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -3980,20 +4146,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.38", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", @@ -4081,9 +4247,9 @@ checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicode-bidi" @@ -4093,15 +4259,15 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-id" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d70b6494226b36008c8366c288d77190b3fad2eb4c10533139c1c1f461127f1a" +checksum = "b1b6def86329695390197b82c1e244a54a131ceb66c996f2088a3876e2ae083f" [[package]] name = "unicode-ident" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -4120,9 +4286,9 @@ checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "unicode_categories" @@ -4138,9 +4304,9 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", "idna", @@ -4149,10 +4315,16 @@ dependencies = [ ] [[package]] -name = "v8" -version = "0.74.2" +name = "uuid" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7568bf38565bd5b350d96abbf3d09417e8c9dd74fbb38860e91b759e46f9009c" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" + +[[package]] +name = "v8" +version = "0.79.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15561535230812a1db89a696f1f16a12ae6c2c370c6b2241c68d4cb33963faf" dependencies = [ "bitflags 1.3.2", "fslock", @@ -4220,7 +4392,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.38", "wasm-bindgen-shared", ] @@ -4254,7 +4426,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.38", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4275,34 +4447,25 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "webpki" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "webpki-roots" -version = "0.22.6" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" +checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888" dependencies = [ - "webpki", + "rustls-webpki", ] [[package]] name = "which" -version = "4.4.0" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" dependencies = [ "either", - "libc", + "home", "once_cell", + "rustix 0.38.19", ] [[package]] @@ -4310,10 +4473,6 @@ name = "whoami" version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50" -dependencies = [ - "wasm-bindgen", - "web-sys", -] [[package]] name = "winapi" @@ -4333,9 +4492,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -4347,12 +4506,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows" -version = "0.48.0" +name = "windows-core" +version = "0.51.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" dependencies = [ - "windows-targets 0.48.1", + "windows-targets 0.48.5", ] [[package]] @@ -4370,7 +4529,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.1", + "windows-targets 0.48.5", ] [[package]] @@ -4390,17 +4549,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -4411,9 +4570,9 @@ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" @@ -4423,9 +4582,9 @@ checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" @@ -4435,9 +4594,9 @@ checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" @@ -4447,9 +4606,9 @@ checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" @@ -4459,9 +4618,9 @@ checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" @@ -4471,9 +4630,9 @@ checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" @@ -4483,26 +4642,27 @@ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.5.0" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fac9742fd1ad1bd9643b991319f72dd031016d44b77039a26977eb667141e7" +checksum = "a3b801d0e0a6726477cc207f60162da452f3a95adb368399bef20a946e06f65c" dependencies = [ "memchr", ] [[package]] name = "winreg" -version = "0.10.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi", + "cfg-if", + "windows-sys 0.48.0", ] [[package]] @@ -4543,7 +4703,7 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f355ab62ebe30b758c1f4ab096a306722c4b7dbfb9d8c07d18c70d71a945588" dependencies = [ - "ahash 0.8.3", + "ahash", "hashbrown 0.13.2", "lazy_static", "serde", @@ -4566,5 +4726,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.38", ] diff --git a/libs/build-arm-v8-snapshot.sh b/libs/build-arm-v8-snapshot.sh index 19e700dc4..4c11adfb4 100755 --- a/libs/build-arm-v8-snapshot.sh +++ b/libs/build-arm-v8-snapshot.sh @@ -22,7 +22,7 @@ rust-gnu-builder sh -c "(cd libs/ && cargo build -p snapshot_creator --release - cd - echo "Creating Arm v8 Snapshot" -docker run $USE_TTY --platform linux/arm64/v8 --mount type=bind,src=$(pwd),dst=/mnt arm64v8/ubuntu:20.04 /bin/sh -c "cd /mnt && /mnt/target/aarch64-unknown-linux-gnu/release/snapshot_creator" +docker run $USE_TTY --platform linux/arm64/v8 --mount type=bind,src=$(pwd),dst=/mnt arm64v8/ubuntu:22.04 /bin/sh -c "cd /mnt && /mnt/target/aarch64-unknown-linux-gnu/release/snapshot_creator" sudo chown -R $USER target sudo chown -R $USER ~/.cargo sudo chown $USER JS_SNAPSHOT.bin diff --git a/libs/embassy_container_init/Cargo.toml b/libs/embassy_container_init/Cargo.toml index 27fb2a834..c7da951f7 100644 --- a/libs/embassy_container_init/Cargo.toml +++ b/libs/embassy_container_init/Cargo.toml @@ -20,7 +20,7 @@ serde = { version = "1", features = ["derive", "rc"] } serde_json = "1" helpers = { path = "../helpers" } imbl = "2" -nix = "0.25" +nix = { version = "0.27", features = ["process", "signal"] } tokio = { version = "1", features = ["full"] } tokio-stream = { version = "0.1", features = ["io-util", "sync", "net"] } tracing = "0.1" @@ -30,7 +30,7 @@ tracing-subscriber = { version = "0.3", features = ["env-filter"] } yajrc = { version = "*", git = "https://github.com/dr-bonez/yajrc.git", branch = "develop" } [target.'cfg(target_os = "linux")'.dependencies] -procfs = "0.14" +procfs = "0.15" [profile.test] opt-level = 3 diff --git a/libs/helpers/Cargo.toml b/libs/helpers/Cargo.toml index bc82a968b..0c6f5f028 100644 --- a/libs/helpers/Cargo.toml +++ b/libs/helpers/Cargo.toml @@ -8,13 +8,13 @@ edition = "2021" [dependencies] async-trait = "0.1.64" color-eyre = "0.6.2" -futures = "0.3.21" +futures = "0.3.28" lazy_async_pool = "0.3.3" models = { path = "../models" } -pin-project = "1.0.11" +pin-project = "1.1.3" serde = { version = "1.0", features = ["derive", "rc"] } serde_json = "1.0" -tokio = { version = "1.23", features = ["full"] } -tokio-stream = { version = "0.1.9", features = ["io-util", "sync"] } -tracing = "0.1.35" +tokio = { version = "1", features = ["full"] } +tokio-stream = { version = "0.1.14", features = ["io-util", "sync"] } +tracing = "0.1.39" yajrc = { version = "*", git = "https://github.com/dr-bonez/yajrc.git", branch = "develop" } diff --git a/libs/helpers/src/lib.rs b/libs/helpers/src/lib.rs index edbfce271..d7c51d5e1 100644 --- a/libs/helpers/src/lib.rs +++ b/libs/helpers/src/lib.rs @@ -72,6 +72,12 @@ pub async fn canonicalize( #[pin_project::pin_project(PinnedDrop)] pub struct NonDetachingJoinHandle(#[pin] JoinHandle); +impl NonDetachingJoinHandle { + pub async fn wait_for_abort(self) -> Result { + self.abort(); + self.await + } +} impl From> for NonDetachingJoinHandle { fn from(t: JoinHandle) -> Self { NonDetachingJoinHandle(t) diff --git a/libs/js_engine/Cargo.toml b/libs/js_engine/Cargo.toml index 1b09504f9..cdff104f0 100644 --- a/libs/js_engine/Cargo.toml +++ b/libs/js_engine/Cargo.toml @@ -6,14 +6,14 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -async-trait = "0.1.56" -dashmap = "5.3.4" -deno_core = "=0.195.0" -deno_ast = { version = "=0.27.2", features = ["transpiling"] } +async-trait = "0.1.74" +dashmap = "5.5.3" +deno_core = "=0.222.0" +deno_ast = { version = "=0.29.5", features = ["transpiling"] } embassy_container_init = { path = "../embassy_container_init" } -reqwest = { version = "0.11.11" } -sha2 = "0.10.2" -itertools = "0.10.5" +reqwest = { version = "0.11.22" } +sha2 = "0.10.8" +itertools = "0.11.0" lazy_static = "1.4.0" models = { path = "../models" } helpers = { path = "../helpers" } diff --git a/libs/js_engine/src/artifacts/ARM_JS_SNAPSHOT.bin b/libs/js_engine/src/artifacts/ARM_JS_SNAPSHOT.bin index b366410ca..305aa2d4c 100644 Binary files a/libs/js_engine/src/artifacts/ARM_JS_SNAPSHOT.bin and b/libs/js_engine/src/artifacts/ARM_JS_SNAPSHOT.bin differ diff --git a/libs/js_engine/src/artifacts/JS_SNAPSHOT.bin b/libs/js_engine/src/artifacts/JS_SNAPSHOT.bin index 0201d5a99..7f7d10689 100644 Binary files a/libs/js_engine/src/artifacts/JS_SNAPSHOT.bin and b/libs/js_engine/src/artifacts/JS_SNAPSHOT.bin differ diff --git a/libs/js_engine/src/lib.rs b/libs/js_engine/src/lib.rs index de39f6563..514560077 100644 --- a/libs/js_engine/src/lib.rs +++ b/libs/js_engine/src/lib.rs @@ -13,8 +13,7 @@ use deno_core::{ ModuleSourceFuture, ModuleSpecifier, ModuleType, OpDecl, ResolutionKind, RuntimeOptions, Snapshot, }; -use embassy_container_init::ProcessGroupId; -use helpers::{script_dir, spawn_local, OsApi, Rsync, UnixRpcClient}; +use helpers::{script_dir, spawn_local, Rsync}; use models::{PackageId, ProcedureName, Version, VolumeId}; use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -105,8 +104,6 @@ struct JsContext { volumes: Arc, input: Value, variable_args: Vec, - container_process_gid: ProcessGroupId, - container_rpc_client: Option>, rsyncs: Arc)>>, callback_sender: mpsc::UnboundedSender<(Arc, Vec)>, } @@ -197,8 +194,6 @@ pub struct JsExecutionEnvironment { package_id: PackageId, version: Version, volumes: Arc, - container_process_gid: ProcessGroupId, - container_rpc_client: Option>, } impl JsExecutionEnvironment { @@ -208,9 +203,7 @@ impl JsExecutionEnvironment { package_id: &PackageId, version: &Version, volumes: Box, - container_process_gid: ProcessGroupId, - container_rpc_client: Option>, - ) -> Result { + ) -> Result { let data_dir = data_directory.as_ref(); let base_directory = data_dir; let js_code = JsCode({ @@ -244,8 +237,6 @@ impl JsExecutionEnvironment { version: version.clone(), volumes: volumes.into(), sandboxed: false, - container_process_gid, - container_rpc_client, }) } pub fn read_only_effects(mut self) -> Self { @@ -313,12 +304,7 @@ impl JsExecutionEnvironment { fns::get_variable_args::decl(), fns::set_value::decl(), fns::is_sandboxed::decl(), - fns::start_command::decl(), - fns::wait_command::decl(), fns::sleep::decl(), - fns::send_signal::decl(), - fns::chmod::decl(), - fns::signal_group::decl(), fns::rsync::decl(), fns::rsync_wait::decl(), fns::rsync_progress::decl(), @@ -359,9 +345,6 @@ impl JsExecutionEnvironment { sandboxed: self.sandboxed, input, variable_args, - container_process_gid: self.container_process_gid, - container_rpc_client: self.container_rpc_client.clone(), - callback_sender, rsyncs: Default::default(), }; let ext = Extension::builder("embassy") @@ -385,11 +368,7 @@ impl JsExecutionEnvironment { .load_main_module(&"file:///loadModule.js".parse().unwrap(), None) .await?; let evaluated = runtime.mod_evaluate(mod_id); - let res = RuntimeEventLoop { - runtime: &mut runtime, - callback_receiver, - } - .await; + let res = runtime.run_event_loop(false).await; res?; evaluated.await??; Ok::<_, AnyError>(()) @@ -450,23 +429,17 @@ mod fns { use deno_core::anyhow::{anyhow, bail}; use deno_core::error::AnyError; use deno_core::*; - use embassy_container_init::{ - OutputParams, OutputStrategy, ProcessGroupId, ProcessId, RunCommand, RunCommandParams, - SendSignal, SendSignalParams, SignalGroup, SignalGroupParams, - }; - use helpers::{ - to_tmp_path, AddressSchemaLocal, AddressSchemaOnion, AtomicFile, Callback, Rsync, - RsyncOptions, - }; + use embassy_container_init::ProcessId; + use helpers::{to_tmp_path, AtomicFile, Rsync, RsyncOptions}; use itertools::Itertools; use models::{PackageId, VolumeId}; use serde::{Deserialize, Serialize}; - use serde_json::{json, Value}; + use serde_json::Value; use tokio::io::AsyncWriteExt; use tokio::process::Command; use super::{AnswerState, JsContext}; - use crate::{system_time_as_unix_ms, MetadataJs, ResultType}; + use crate::{system_time_as_unix_ms, MetadataJs}; #[derive(serde::Serialize, serde::Deserialize, Debug, Clone, Default)] struct FetchOptions { @@ -1206,18 +1179,6 @@ mod fns { let state = state.borrow(); state.borrow::().clone() }; - if let Some(rpc_client) = ctx.container_rpc_client { - return rpc_client - .request( - embassy_container_init::Log, - embassy_container_init::LogParams { - gid: Some(ctx.container_process_gid), - level: embassy_container_init::LogLevel::Trace(input), - }, - ) - .await - .map_err(|e| anyhow!("{}: {:?}", e.message, e.data)); - } tracing::trace!( package_id = tracing::field::display(&ctx.package_id), run_function = tracing::field::display(&ctx.run_function), @@ -1232,18 +1193,6 @@ mod fns { let state = state.borrow(); state.borrow::().clone() }; - if let Some(rpc_client) = ctx.container_rpc_client { - return rpc_client - .request( - embassy_container_init::Log, - embassy_container_init::LogParams { - gid: Some(ctx.container_process_gid), - level: embassy_container_init::LogLevel::Warn(input), - }, - ) - .await - .map_err(|e| anyhow!("{}: {:?}", e.message, e.data)); - } tracing::warn!( package_id = tracing::field::display(&ctx.package_id), run_function = tracing::field::display(&ctx.run_function), @@ -1258,18 +1207,6 @@ mod fns { let state = state.borrow(); state.borrow::().clone() }; - if let Some(rpc_client) = ctx.container_rpc_client { - return rpc_client - .request( - embassy_container_init::Log, - embassy_container_init::LogParams { - gid: Some(ctx.container_process_gid), - level: embassy_container_init::LogLevel::Error(input), - }, - ) - .await - .map_err(|e| anyhow!("{}: {:?}", e.message, e.data)); - } tracing::error!( package_id = tracing::field::display(&ctx.package_id), run_function = tracing::field::display(&ctx.run_function), @@ -1284,18 +1221,6 @@ mod fns { let state = state.borrow(); state.borrow::().clone() }; - if let Some(rpc_client) = ctx.container_rpc_client { - return rpc_client - .request( - embassy_container_init::Log, - embassy_container_init::LogParams { - gid: Some(ctx.container_process_gid), - level: embassy_container_init::LogLevel::Debug(input), - }, - ) - .await - .map_err(|e| anyhow!("{}: {:?}", e.message, e.data)); - } tracing::debug!( package_id = tracing::field::display(&ctx.package_id), run_function = tracing::field::display(&ctx.run_function), @@ -1306,28 +1231,11 @@ mod fns { } #[op] async fn log_info(state: Rc>, input: String) -> Result<(), AnyError> { - let (container_rpc_client, container_process_gid, package_id, run_function) = { + let (package_id, run_function) = { let state = state.borrow(); let ctx: JsContext = state.borrow::().clone(); - ( - ctx.container_rpc_client, - ctx.container_process_gid, - ctx.package_id, - ctx.run_function, - ) + (ctx.package_id, ctx.run_function) }; - if let Some(rpc_client) = container_rpc_client { - return rpc_client - .request( - embassy_container_init::Log, - embassy_container_init::LogParams { - gid: Some(container_process_gid), - level: embassy_container_init::LogLevel::Info(input), - }, - ) - .await - .map_err(|e| anyhow!("{}: {:?}", e.message, e.data)); - } tracing::info!( package_id = tracing::field::display(&package_id), run_function = tracing::field::display(&run_function), @@ -1366,174 +1274,12 @@ mod fns { Ok(ctx.sandboxed) } - #[op] - async fn send_signal( - state: Rc>, - pid: u32, - signal: u32, - ) -> Result<(), AnyError> { - let sandboxed = { - let state = state.borrow(); - let ctx: &JsContext = state.borrow(); - ctx.sandboxed - }; - - if sandboxed { - bail!("Will not run sendSignal in sandboxed mode"); - } - - if let Some(rpc_client) = { - let state = state.borrow(); - let ctx = state.borrow::(); - ctx.container_rpc_client.clone() - } { - rpc_client - .request( - SendSignal, - SendSignalParams { - pid: ProcessId(pid), - signal, - }, - ) - .await - .map_err(|e| anyhow!("{}: {:?}", e.message, e.data))?; - - Ok(()) - } else { - Err(anyhow!("No RpcClient for command operations")) - } - } - - #[op] - async fn signal_group( - state: Rc>, - gid: u32, - signal: u32, - ) -> Result<(), AnyError> { - let sandboxed = { - let state = state.borrow(); - let ctx: &JsContext = state.borrow(); - ctx.sandboxed - }; - - if sandboxed { - bail!("Will not run signalGroup in sandboxed mode"); - } - - if let Some(rpc_client) = { - let state = state.borrow(); - let ctx = state.borrow::(); - ctx.container_rpc_client.clone() - } { - rpc_client - .request( - SignalGroup, - SignalGroupParams { - gid: ProcessGroupId(gid), - signal, - }, - ) - .await - .map_err(|e| anyhow!("{}: {:?}", e.message, e.data))?; - - Ok(()) - } else { - Err(anyhow!("No RpcClient for command operations")) - } - } - #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct StartCommand { process_id: ProcessId, } - #[op] - async fn start_command( - state: Rc>, - command: String, - args: Vec, - output: OutputStrategy, - timeout: Option, - ) -> Result { - let sandboxed = { - let state = state.borrow(); - let ctx: &JsContext = state.borrow(); - ctx.sandboxed - }; - - if sandboxed { - bail!("Will not run command in sandboxed mode"); - } - - if let (gid, Some(rpc_client)) = { - let state = state.borrow(); - let ctx = state.borrow::(); - (ctx.container_process_gid, ctx.container_rpc_client.clone()) - } { - let pid = rpc_client - .request( - RunCommand, - RunCommandParams { - gid: Some(gid), - command, - args, - output, - }, - ) - .await - .map_err(|e| anyhow!("{}: {:?}", e.message, e.data))?; - - if let Some(timeout) = timeout { - tokio::spawn(async move { - tokio::time::sleep(Duration::from_millis(timeout)).await; - if let Err(err) = rpc_client - .request(SendSignal, SendSignalParams { pid, signal: 9 }) - .await - .map_err(|e| anyhow!("{}: {:?}", e.message, e.data)) - { - tracing::warn!("Could not kill process {pid:?}"); - tracing::debug!("{err:?}"); - } - }); - } - - Ok(StartCommand { process_id: pid }) - } else { - Err(anyhow!("No RpcClient for command operations")) - } - } - - #[op] - async fn wait_command( - state: Rc>, - pid: ProcessId, - ) -> Result { - if let Some(rpc_client) = { - let state = state.borrow(); - let ctx = state.borrow::(); - ctx.container_rpc_client.clone() - } { - Ok( - match rpc_client - .request(embassy_container_init::Output, OutputParams { pid }) - .await - { - Ok(a) => ResultType::Result(json!(a)), - Err(e) => ResultType::ErrorCode( - e.code, - match e.data { - Some(Value::String(s)) => s, - e => format!("{:?}", e), - }, - ), - }, - ) - } else { - Err(anyhow!("No RpcClient for command operations")) - } - } - #[op] async fn sleep(time_ms: u64) -> Result<(), AnyError> { tokio::time::sleep(Duration::from_millis(time_ms)).await; diff --git a/libs/models/Cargo.toml b/libs/models/Cargo.toml index 9a05f98b6..9d75f92c4 100644 --- a/libs/models/Cargo.toml +++ b/libs/models/Cargo.toml @@ -6,34 +6,33 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -base64 = "0.21.0" -color-eyre = "0.6.1" -ed25519-dalek = { version = "1.0.1", features = ["serde"] } +base64 = "0.21.4" +color-eyre = "0.6.2" +ed25519-dalek = { version = "2.0.0", features = ["serde"] } lazy_static = "1.4" -mbrman = "0.5.0" +mbrman = "0.5.2" emver = { version = "0.1", git = "https://github.com/Start9Labs/emver-rs.git", features = [ "serde", ] } -ipnet = "2.7.1" -openssl = { version = "0.10.41", features = ["vendored"] } +ipnet = "2.8.0" +openssl = { version = "0.10.57", features = ["vendored"] } patch-db = { version = "*", path = "../../patch-db/patch-db", features = [ "trace", ] } -rand = "0.8" -regex = "1.7.1" -reqwest = "0.11.14" -rpc-toolkit = "0.2.1" +rand = "0.8.5" +regex = "1.10.2" +reqwest = "0.11.22" +rpc-toolkit = "0.2.2" serde = { version = "1.0", features = ["derive", "rc"] } serde_json = "1.0" -sqlx = { version = "0.6.0", features = [ +sqlx = { version = "0.7.2", features = [ "chrono", - "offline", "runtime-tokio-rustls", "postgres", ] } -ssh-key = "0.5.1" +ssh-key = "0.6.2" thiserror = "1.0" tokio = { version = "1", features = ["full"] } torut = "0.2.1" -tracing = "0.1.35" -yasi = "0.1.2" +tracing = "0.1.39" +yasi = "0.1.5" diff --git a/libs/models/src/errors.rs b/libs/models/src/errors.rs index 30a26b412..f22624d36 100644 --- a/libs/models/src/errors.rs +++ b/libs/models/src/errors.rs @@ -78,6 +78,9 @@ pub enum ErrorKind { OpenSsh = 66, Zram = 67, Lshw = 68, + CpuSettings = 69, + Firmware = 70, + Timeout = 71, } impl ErrorKind { pub fn as_str(&self) -> &'static str { @@ -151,6 +154,9 @@ impl ErrorKind { OpenSsh => "OpenSSH Error", Zram => "Zram Error", Lshw => "LSHW Error", + CpuSettings => "CPU Settings Error", + Firmware => "Firmware Error", + Timeout => "Timeout Error", } } } diff --git a/libs/models/src/procedure_name.rs b/libs/models/src/procedure_name.rs index ae71e3ad5..6a092955a 100644 --- a/libs/models/src/procedure_name.rs +++ b/libs/models/src/procedure_name.rs @@ -1,6 +1,8 @@ +use serde::{Deserialize, Serialize}; + use crate::{ActionId, HealthCheckId, PackageId}; -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub enum ProcedureName { Main, // Usually just run container CreateBackup, diff --git a/libs/snapshot_creator/Cargo.toml b/libs/snapshot_creator/Cargo.toml index 08876b517..628cd3161 100644 --- a/libs/snapshot_creator/Cargo.toml +++ b/libs/snapshot_creator/Cargo.toml @@ -7,5 +7,5 @@ edition = "2021" [dependencies] dashmap = "5.3.4" -deno_core = "0.195.0" -deno_ast = { version = "0.27.2", features = ["transpiling"] } +deno_core = "=0.222.0" +deno_ast = { version = "=0.29.5", features = ["transpiling"] } diff --git a/libs/snapshot_creator/src/main.rs b/libs/snapshot_creator/src/main.rs index dd14873b7..ad7330484 100644 --- a/libs/snapshot_creator/src/main.rs +++ b/libs/snapshot_creator/src/main.rs @@ -1,7 +1,7 @@ use deno_core::JsRuntimeForSnapshot; fn main() { - let runtime = JsRuntimeForSnapshot::new(Default::default(), Default::default()); + let runtime = JsRuntimeForSnapshot::new(Default::default()); let snapshot = runtime.snapshot(); let snapshot_slice: &[u8] = &*snapshot; diff --git a/patch-db b/patch-db index 3e5cc22bb..6af2221ad 160000 --- a/patch-db +++ b/patch-db @@ -1 +1 @@ -Subproject commit 3e5cc22bb69f064eab7092fc4afad1586aff1057 +Subproject commit 6af2221add56f0a557b37a268ef9fb2299a05255 diff --git a/system-images/compat/Cargo.lock b/system-images/compat/Cargo.lock index afca9387e..be8ade932 100644 --- a/system-images/compat/Cargo.lock +++ b/system-images/compat/Cargo.lock @@ -24,7 +24,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" dependencies = [ "cfg-if", - "cipher", + "cipher 0.3.0", "cpufeatures", "ctr", "opaque-debug", @@ -55,9 +55,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.20" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] @@ -77,6 +77,12 @@ dependencies = [ "alloc-no-stdlib", ] +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -138,9 +144,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.3.15" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942c7cd7ae39e91bde4820d74132e9862e62c2f386c3aa90ccf55949f5bad63a" +checksum = "f658e2baef915ba0f26f1f7c42bfb8e12f532a01f449a090ded75ae7a07e9ba2" dependencies = [ "brotli", "flate2", @@ -152,41 +158,42 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad5c83079eae9969be7fadefe640a1c566901f05ff91ab221de4b6f68d9507e" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" dependencies = [ "async-stream-impl", "futures-core", + "pin-project-lite", ] [[package]] name = "async-stream-impl" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2", + "quote", + "syn 2.0.37", ] [[package]] name = "async-trait" -version = "0.1.64" +version = "0.1.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd7fce9ba8c3c042128ce72d8b2ddbf3a05747efb67ea0313c635e10bda47a2" +checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2", + "quote", + "syn 2.0.37", ] [[package]] name = "atoi" -version = "1.0.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c57d12312ff59c811c0643f4d80830505833c9ffaebd193d819392b265be8e" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" dependencies = [ "num-traits", ] @@ -225,9 +232,9 @@ dependencies = [ [[package]] name = "base16ct" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" [[package]] name = "base32" @@ -243,15 +250,15 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.0" +version = "0.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" +checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" [[package]] name = "base64ct" -version = "1.5.3" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b645a089122eccb6111b4f81cbc1a49f5900ac4666bb93ac027feaecf15607bf" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "basic-cookies" @@ -313,6 +320,15 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +dependencies = [ + "serde", +] + [[package]] name = "bitmaps" version = "3.2.0" @@ -339,7 +355,7 @@ checksum = "72936ee4afc7f8f736d1c38383b56480b5497b4617b4a77bdbf1d2ababc76127" dependencies = [ "arrayref", "arrayvec", - "constant_time_eq", + "constant_time_eq 0.1.5", ] [[package]] @@ -396,16 +412,10 @@ checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" dependencies = [ "lazy_static", "memchr", - "regex-automata", + "regex-automata 0.1.10", "serde", ] -[[package]] -name = "build_const" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" - [[package]] name = "bumpalo" version = "3.12.0" @@ -426,9 +436,12 @@ checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" [[package]] name = "cc" -version = "1.0.78" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] [[package]] name = "cfg-if" @@ -438,18 +451,17 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.23" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ + "android-tzdata", "iana-time-zone", "js-sys", - "num-integer", "num-traits", "serde", - "time 0.1.45", "wasm-bindgen", - "winapi", + "windows-targets 0.48.5", ] [[package]] @@ -463,9 +475,9 @@ dependencies = [ [[package]] name = "ciborium" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f" +checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" dependencies = [ "ciborium-io", "ciborium-ll", @@ -474,15 +486,15 @@ dependencies = [ [[package]] name = "ciborium-io" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369" +checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" [[package]] name = "ciborium-ll" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b" +checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" dependencies = [ "ciborium-io", "half", @@ -497,6 +509,16 @@ dependencies = [ "generic-array", ] +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + [[package]] name = "clap" version = "2.34.0" @@ -505,7 +527,7 @@ checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ "ansi_term", "atty", - "bitflags", + "bitflags 1.3.2", "strsim 0.8.0", "textwrap 0.11.0", "unicode-width", @@ -514,14 +536,14 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.23" +version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ "atty", - "bitflags", + "bitflags 1.3.2", "clap_lex", - "indexmap", + "indexmap 1.9.2", "strsim 0.10.0", "termcolor", "textwrap 0.16.0", @@ -584,7 +606,7 @@ dependencies = [ "emver", "failure", "imbl-value", - "indexmap", + "indexmap 1.9.2", "itertools 0.10.5", "lazy_static", "linear-map", @@ -594,7 +616,7 @@ dependencies = [ "pest_derive", "rand 0.8.5", "regex", - "rust-argon2", + "rust-argon2 1.0.0", "serde", "serde_json", "serde_yaml 0.8.26", @@ -625,9 +647,29 @@ dependencies = [ [[package]] name = "const-oid" -version = "0.9.1" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cec318a675afcb6a1ea1d4340e2d377e56e47c266f28043ceccbf4412ddfdd3b" +checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" + +[[package]] +name = "const_format" +version = "0.2.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c990efc7a285731f9a4378d81aff2f0e85a2c8781a05ef0f8baa8dac54d0ff48" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e026b6ce194a874cb9cf32cd5772d1ef9767cc8fcb5765948d74f37a9d8b2bf6" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] [[package]] name = "constant_time_eq" @@ -635,12 +677,27 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + [[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "cookie" version = "0.16.2" @@ -648,7 +705,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" dependencies = [ "percent-encoding", - "time 0.3.17", + "time", + "version_check", +] + +[[package]] +name = "cookie" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "cookie" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cd91cf61412820176e137621345ee43b3f4423e589e7ae4e50d601d93e35ef8" +dependencies = [ + "time", "version_check", ] @@ -658,29 +736,30 @@ version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e4b6aa369f41f5faa04bb80c9b1f4216ea81646ed6124d76ba5c49a7aafd9cd" dependencies = [ - "cookie", + "cookie 0.16.2", "idna 0.2.3", "log", "publicsuffix", "serde", "serde_json", - "time 0.3.17", + "time", "url", ] [[package]] name = "cookie_store" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca9b3c618262fc0c85ecbc814c144e04be9c6eec08b315e7cd1cfbe0bb6ca84" +checksum = "387461abbc748185c3a6e1673d826918b450b87ff22639429c694619a83b6cf6" dependencies = [ - "cookie", + "cookie 0.17.0", "idna 0.3.0", "log", "publicsuffix", "serde", + "serde_derive", "serde_json", - "time 0.3.17", + "time", "url", ] @@ -702,22 +781,13 @@ checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] name = "cpufeatures" -version = "0.2.5" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" dependencies = [ "libc", ] -[[package]] -name = "crc" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb" -dependencies = [ - "build_const", -] - [[package]] name = "crc" version = "3.0.0" @@ -769,9 +839,9 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-bigint" -version = "0.4.9" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" +checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124" dependencies = [ "generic-array", "rand_core 0.6.4", @@ -827,7 +897,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" dependencies = [ - "cipher", + "cipher 0.3.0", ] [[package]] @@ -849,6 +919,34 @@ dependencies = [ "zeroize", ] +[[package]] +name = "curve25519-dalek" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "platforms", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + [[package]] name = "cxx" version = "1.0.86" @@ -870,8 +968,8 @@ dependencies = [ "cc", "codespan-reporting", "once_cell", - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2", + "quote", "scratch", "syn 1.0.107", ] @@ -888,16 +986,16 @@ version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39e61fda7e62115119469c7b3591fd913ecca96fb766cfd3f2e2502ab7bc87a5" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2", + "quote", "syn 1.0.107", ] [[package]] name = "darling" -version = "0.14.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0dd3cd20dc6b5a876612a6e5accfe7f3dd883db6d07acfbf14c128f61550dfa" +checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" dependencies = [ "darling_core", "darling_macro", @@ -905,27 +1003,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.14.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a784d2ccaf7c98501746bf0be29b2022ba41fd62a2e622af997a03e9f972859f" +checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2", + "quote", "strsim 0.10.0", - "syn 1.0.107", + "syn 2.0.37", ] [[package]] name = "darling_macro" -version = "0.14.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7618812407e9402654622dd402b0a89dff9ba93badd6540781526117b92aab7e" +checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", - "quote 1.0.23", - "syn 1.0.107", + "quote", + "syn 2.0.37", ] [[package]] @@ -938,7 +1036,7 @@ dependencies = [ "hashbrown 0.12.3", "lock_api", "once_cell", - "parking_lot_core 0.9.6", + "parking_lot_core", ] [[package]] @@ -949,9 +1047,9 @@ checksum = "23d8666cb01533c39dde32bcbab8e227b4ed6679b2c925eba05feabea39508fb" [[package]] name = "der" -version = "0.6.1" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" dependencies = [ "const-oid", "pem-rfc7468", @@ -964,9 +1062,9 @@ version = "0.99.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ - "convert_case", - "proc-macro2 1.0.50", - "quote 1.0.23", + "convert_case 0.4.0", + "proc-macro2", + "quote", "rustc_version", "syn 1.0.107", ] @@ -988,9 +1086,9 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.3", "const-oid", @@ -998,15 +1096,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "dirs" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" -dependencies = [ - "dirs-sys", -] - [[package]] name = "dirs-next" version = "2.0.0" @@ -1017,17 +1106,6 @@ dependencies = [ "dirs-sys-next", ] -[[package]] -name = "dirs-sys" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - [[package]] name = "dirs-sys-next" version = "0.1.2" @@ -1051,6 +1129,15 @@ version = "0.15.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03d8c417d7a8cb362e0c37e5d815f5eb7c37f79ff93707329d5a194e42e54ca0" +[[package]] +name = "drain" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f1a0abf3fcefad9b4dd0e414207a7408e12b68414a01e6bb19b897d5bd7632d" +dependencies = [ + "tokio", +] + [[package]] name = "dyn-clone" version = "1.0.12" @@ -1059,26 +1146,16 @@ checksum = "304e6508efa593091e97a9abbc10f90aa7ca635b6d2784feff3c89d41dd12272" [[package]] name = "ecdsa" -version = "0.14.8" +version = "0.16.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" -dependencies = [ - "der", - "elliptic-curve", - "rfc6979", - "signature 1.6.4", -] - -[[package]] -name = "ecdsa" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12844141594ad74185a926d030f3b605f6a903b4e3fec351f3ea338ac5b7637e" +checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" dependencies = [ "der", + "digest 0.10.7", "elliptic-curve", "rfc6979", "signature 2.0.0", + "spki", ] [[package]] @@ -1086,10 +1163,19 @@ name = "ed25519" version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +dependencies = [ + "signature 1.6.4", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ "pkcs8", "serde", - "signature 1.6.4", + "signature 2.0.0", ] [[package]] @@ -1098,15 +1184,29 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ - "curve25519-dalek", - "ed25519", + "curve25519-dalek 3.2.0", + "ed25519 1.5.3", "rand 0.7.3", "serde", - "serde_bytes", "sha2 0.9.9", "zeroize", ] +[[package]] +name = "ed25519-dalek" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7277392b266383ef8396db7fdeb1e77b6c52fed775f5df15bb24f35b72156980" +dependencies = [ + "curve25519-dalek 4.1.1", + "ed25519 2.2.3", + "rand_core 0.6.4", + "serde", + "sha2 0.10.8", + "signature 2.0.0", + "zeroize", +] + [[package]] name = "either" version = "1.8.0" @@ -1118,14 +1218,13 @@ dependencies = [ [[package]] name = "elliptic-curve" -version = "0.12.3" +version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" +checksum = "d97ca172ae9dc9f9b779a6e3a65d308f2af74e5b8c921299075bdb4a0370e914" dependencies = [ "base16ct", "crypto-bigint", - "der", - "digest 0.10.6", + "digest 0.10.7", "ff", "generic-array", "group", @@ -1146,7 +1245,7 @@ dependencies = [ "futures", "helpers", "imbl", - "nix 0.25.1", + "nix 0.27.1", "procfs", "serde", "serde_json", @@ -1200,37 +1299,37 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "endian-type" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" - [[package]] name = "enum-as-inner" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116" +checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" dependencies = [ "heck", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2", + "quote", + "syn 2.0.37", ] [[package]] name = "env_logger" -version = "0.9.3" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" dependencies = [ - "atty", "humantime", + "is-terminal", "log", "regex", "termcolor", ] +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + [[package]] name = "errno" version = "0.2.8" @@ -1252,6 +1351,17 @@ dependencies = [ "libc", ] +[[package]] +name = "etcetera" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" +dependencies = [ + "cfg-if", + "home", + "windows-sys 0.48.0", +] + [[package]] name = "event-listener" version = "2.5.3" @@ -1284,8 +1394,8 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2", + "quote", "syn 1.0.107", "synstructure", ] @@ -1310,14 +1420,20 @@ dependencies = [ [[package]] name = "ff" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ "rand_core 0.6.4", "subtle", ] +[[package]] +name = "fiat-crypto" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0870c84016d4b481be5c9f323c24f65e31e901ae618f0e80f4308fb00de1d2d" + [[package]] name = "filetime" version = "0.2.19" @@ -1346,6 +1462,17 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "flume" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +dependencies = [ + "futures-core", + "futures-sink", + "spin 0.9.8", +] + [[package]] name = "fnv" version = "1.0.7" @@ -1369,9 +1496,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ "percent-encoding", ] @@ -1393,9 +1520,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" dependencies = [ "futures-channel", "futures-core", @@ -1408,9 +1535,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" dependencies = [ "futures-core", "futures-sink", @@ -1418,15 +1545,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" [[package]] name = "futures-executor" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" dependencies = [ "futures-core", "futures-task", @@ -1435,49 +1562,49 @@ dependencies = [ [[package]] name = "futures-intrusive" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604f7a68fbf8103337523b1fadc8ade7361ee3f112f7c680ad179651616aed5" +checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" dependencies = [ "futures-core", "lock_api", - "parking_lot 0.11.2", + "parking_lot", ] [[package]] name = "futures-io" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" [[package]] name = "futures-macro" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2", + "quote", + "syn 2.0.37", ] [[package]] name = "futures-sink" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" [[package]] name = "futures-task" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" [[package]] name = "futures-util" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" dependencies = [ "futures-channel", "futures-core", @@ -1493,12 +1620,13 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.6" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -1546,28 +1674,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe69f1cbdb6e28af2bac214e943b99ce8a0a06b447d15d3e61161b0423139f3f" dependencies = [ "proc-macro-hack", - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2", + "quote", "syn 1.0.107", ] [[package]] name = "gpt" -version = "3.0.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd7365d734a70ac5dd7be791b0c96083852188df015b8c665bb2dadb108a743" +checksum = "8283e7331b8c93b9756e0cfdbcfb90312852f953c6faf9bf741e684cc3b6ad69" dependencies = [ - "bitflags", - "crc 1.8.1", + "bitflags 2.4.1", + "crc", "log", - "uuid 0.8.2", + "uuid", ] [[package]] name = "group" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", "rand_core 0.6.4", @@ -1576,9 +1704,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.15" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ "bytes", "fnv", @@ -1586,7 +1714,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap", + "indexmap 1.9.2", "slab", "tokio", "tokio-util", @@ -1617,6 +1745,12 @@ dependencies = [ "ahash 0.8.3", ] +[[package]] +name = "hashbrown" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" + [[package]] name = "hashlink" version = "0.8.1" @@ -1714,14 +1848,23 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", +] + +[[package]] +name = "home" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +dependencies = [ + "windows-sys 0.48.0", ] [[package]] name = "http" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ "bytes", "fnv", @@ -1759,9 +1902,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.23" +version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ "bytes", "futures-channel", @@ -1774,7 +1917,7 @@ dependencies = [ "httpdate", "itoa 1.0.5", "pin-project-lite", - "socket2", + "socket2 0.4.7", "tokio", "tower-service", "tracing", @@ -1796,12 +1939,12 @@ dependencies = [ [[package]] name = "hyper-ws-listener" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3fb761e568fdb34ff794d284bfe1769efc5d16b9d716286451ab3a70ab82bea" +checksum = "dcbfe4981e45b0a7403a55d4af12f8d30e173e722409658c3857243990e72180" dependencies = [ "anyhow", - "base64 0.13.1", + "base64 0.21.4", "env_logger", "futures", "hyper", @@ -1872,10 +2015,20 @@ dependencies = [ ] [[package]] -name = "imbl" -version = "2.0.0" +name = "idna" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2806b69cd9f4664844027b64465eacb444c67c1db9c778e341adff0c25cdb0d" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "imbl" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b4555023847ca2cd6fd11f20b553886e6981c7e8aee9b3e7e960b4b17fb440" dependencies = [ "bitmaps", "imbl-sized-chunks", @@ -1921,8 +2074,8 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2", + "quote", ] [[package]] @@ -1942,6 +2095,17 @@ dependencies = [ "serde", ] +[[package]] +name = "indexmap" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" +dependencies = [ + "equivalent", + "hashbrown 0.14.1", + "serde", +] + [[package]] name = "indicatif" version = "0.17.7" @@ -1956,6 +2120,15 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + [[package]] name = "instant" version = "0.1.12" @@ -1977,9 +2150,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" dependencies = [ "serde", ] @@ -2043,6 +2216,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "0.4.8" @@ -2064,7 +2246,7 @@ dependencies = [ "ahash 0.7.6", "dyn-clone", "hifijson", - "indexmap", + "indexmap 1.9.2", "itertools 0.10.5", "jaq-parse", "log", @@ -2095,12 +2277,12 @@ dependencies = [ [[package]] name = "josekit" -version = "0.8.1" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee6af62ad98bdf699ad2ecc8323479a1fdc7aa5faa6043d93119d83f6c5fca8" +checksum = "5754487a088f527b1407df470db8e654e4064dccbbe1fe850e0773721e9962b7" dependencies = [ "anyhow", - "base64 0.13.1", + "base64 0.21.4", "flate2", "once_cell", "openssl", @@ -2108,7 +2290,7 @@ dependencies = [ "serde", "serde_json", "thiserror", - "time 0.3.17", + "time", ] [[package]] @@ -2176,11 +2358,11 @@ dependencies = [ "petgraph", "pico-args", "regex", - "regex-syntax", + "regex-syntax 0.6.28", "string_cache", "term", "tiny-keccak", - "unicode-xid 0.2.4", + "unicode-xid", ] [[package]] @@ -2208,14 +2390,14 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" dependencies = [ - "spin", + "spin 0.5.2", ] [[package]] name = "libc" -version = "0.2.139" +version = "0.2.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" +checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" [[package]] name = "libm" @@ -2223,6 +2405,17 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" +[[package]] +name = "libsqlite3-sys" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afc22eff61b133b115c6e8c74e818c628d6d5e7a502afea6f64dee076dd94326" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + [[package]] name = "linear-map" version = "1.2.0" @@ -2266,12 +2459,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "matchers" @@ -2279,7 +2469,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" dependencies = [ - "regex-automata", + "regex-automata 0.1.10", ] [[package]] @@ -2290,9 +2480,9 @@ checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "mbrman" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4b239f4755d00466e3ac1d55ddeaf77a66c7580352fc6cbc40d56c218fc94a9" +checksum = "9c487024623ae38584610237dd1be8932bb2b324474b23c37a25f9fbe6bf5e9e" dependencies = [ "bincode", "bitvec", @@ -2301,31 +2491,20 @@ dependencies = [ "thiserror", ] -[[package]] -name = "md-5" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15" -dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "opaque-debug", -] - [[package]] name = "md-5" version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", ] [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "memoffset" @@ -2368,23 +2547,22 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", - "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.42.0", + "windows-sys 0.48.0", ] [[package]] name = "models" version = "0.1.0" dependencies = [ - "base64 0.21.0", + "base64 0.21.4", "color-eyre", - "ed25519-dalek", + "ed25519-dalek 2.0.0", "emver", "ipnet", "lazy_static", @@ -2440,22 +2618,13 @@ dependencies = [ "unicase", ] -[[package]] -name = "nibble_vec" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" -dependencies = [ - "smallvec", -] - [[package]] name = "nix" version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cfg-if", "libc", "memoffset 0.6.5", @@ -2468,7 +2637,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" dependencies = [ "autocfg", - "bitflags", + "bitflags 1.3.2", "cfg-if", "libc", "memoffset 0.6.5", @@ -2481,13 +2650,24 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cfg-if", "libc", "memoffset 0.7.1", "pin-utils", ] +[[package]] +name = "nix" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +dependencies = [ + "bitflags 2.4.1", + "cfg-if", + "libc", +] + [[package]] name = "nom" version = "7.1.3" @@ -2510,9 +2690,9 @@ dependencies = [ [[package]] name = "num" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" dependencies = [ "num-bigint", "num-complex", @@ -2552,9 +2732,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.2" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ae39348c8bc5fbd7f40c727a9925f03517afd2ab27d46702108b6a7e5414c19" +checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" dependencies = [ "num-traits", ] @@ -2614,23 +2794,23 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.7" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +checksum = "70bf6736f74634d299d00086f02986875b3c2d924781a6a2cb6c201e73da0ceb" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.7" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +checksum = "56ea360eafe1022f7cc56cd7b869ed57330fb2453d0c7831d99b74c65d2f5597" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2", + "quote", + "syn 2.0.37", ] [[package]] @@ -2650,9 +2830,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "opaque-debug" @@ -2662,24 +2842,24 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssh-keys" -version = "0.5.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7249a699cdeea261ac73f1bf9350777cb867324f44373aafb5a287365bf1771" +checksum = "c75a0ec2d1b302412fb503224289325fcc0e44600176864804c7211b055cfd58" dependencies = [ - "base64 0.13.1", + "base64 0.21.4", "byteorder", - "md-5 0.9.1", - "sha2 0.9.9", + "md-5", + "sha2 0.10.8", "thiserror", ] [[package]] name = "openssl" -version = "0.10.45" +version = "0.10.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b102428fd03bc5edf97f62620f7298614c45cedf287c271e7ed450bbaf83f2e1" +checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" dependencies = [ - "bitflags", + "bitflags 2.4.1", "cfg-if", "foreign-types", "libc", @@ -2694,8 +2874,8 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2", + "quote", "syn 1.0.107", ] @@ -2707,20 +2887,19 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "111.24.0+1.1.1s" +version = "300.1.5+3.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3498f259dab01178c6228c6b00dcef0ed2a2d5e20d648c017861227773ea4abd" +checksum = "559068e4c12950d7dcaa1857a61725c0d38d4fc03ff8e070ab31a75d6e316491" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.80" +version = "0.9.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23bbbf7854cd45b83958ebe919f0e8e516793727652e27fda10a8384cfc790b7" +checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" dependencies = [ - "autocfg", "cc", "libc", "openssl-src", @@ -2748,47 +2927,26 @@ checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" [[package]] name = "p256" -version = "0.11.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" dependencies = [ - "ecdsa 0.14.8", - "elliptic-curve", - "sha2 0.10.6", -] - -[[package]] -name = "p256" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49c124b3cbce43bcbac68c58ec181d98ed6cc7e6d0aa7c3ba97b2563410b0e55" -dependencies = [ - "ecdsa 0.15.1", + "ecdsa", "elliptic-curve", "primeorder", - "sha2 0.10.6", + "sha2 0.10.8", ] [[package]] name = "p384" -version = "0.11.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc8c5bf642dde52bb9e87c0ecd8ca5a76faac2eeed98dedb7c717997e1080aa" +checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209" dependencies = [ - "ecdsa 0.14.8", + "ecdsa", "elliptic-curve", - "sha2 0.10.6", -] - -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", + "primeorder", + "sha2 0.10.8", ] [[package]] @@ -2798,21 +2956,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.6", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "winapi", + "parking_lot_core", ] [[package]] @@ -2828,17 +2972,6 @@ dependencies = [ "windows-sys 0.42.0", ] -[[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 = "paste" version = "1.0.11" @@ -2872,7 +3005,7 @@ name = "patch-db-macro" version = "0.1.0" dependencies = [ "patch-db-macro-internals", - "proc-macro2 1.0.50", + "proc-macro2", "syn 1.0.107", ] @@ -2881,37 +3014,35 @@ name = "patch-db-macro-internals" version = "0.1.0" dependencies = [ "heck", - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2", + "quote", "syn 1.0.107", ] [[package]] name = "pbkdf2" -version = "0.11.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", "hmac 0.12.1", - "password-hash", - "sha2 0.10.6", ] [[package]] name = "pem-rfc7468" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d159833a9105500e0398934e205e0773f0b27529557134ecfc51c27646adac" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" dependencies = [ "base64ct", ] [[package]] name = "percent-encoding" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "pest" @@ -2941,8 +3072,8 @@ checksum = "46b53634d8c8196302953c74d5352f33d0c512a9499bd2ce468fc9f4128fa27c" dependencies = [ "pest", "pest_meta", - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2", + "quote", "syn 1.0.107", ] @@ -2954,7 +3085,7 @@ checksum = "0ef4f1332a8d4678b41966bb4cc1d0676880e84183a1ecc3f4b69f03e99c7a51" dependencies = [ "once_cell", "pest", - "sha2 0.10.6", + "sha2 0.10.8", ] [[package]] @@ -2964,7 +3095,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143" dependencies = [ "fixedbitset", - "indexmap", + "indexmap 1.9.2", ] [[package]] @@ -2984,29 +3115,29 @@ checksum = "db8bcd96cb740d03149cbad5518db9fd87126a10ab519c011893b1754134c468" [[package]] name = "pin-project" -version = "1.0.12" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.12" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2", + "quote", + "syn 2.0.37", ] [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -3016,21 +3147,20 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkcs1" -version = "0.4.1" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff33bdbdfc54cc98a2eca766ebdec3e1b8fb7387523d5c9c9a2891da856f719" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" dependencies = [ "der", "pkcs8", "spki", - "zeroize", ] [[package]] name = "pkcs8" -version = "0.9.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ "der", "spki", @@ -3042,6 +3172,12 @@ version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +[[package]] +name = "platforms" +version = "3.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4503fa043bf02cee09a9582e9554b4c6403b2ef55e4612e96561d294419429f8" + [[package]] name = "portable-atomic" version = "1.4.3" @@ -3076,9 +3212,9 @@ dependencies = [ [[package]] name = "primeorder" -version = "0.12.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b54f7131b3dba65a2f414cf5bd25b66d4682e4608610668eae785750ba4c5b2" +checksum = "3c2fcef82c0ec6eefcc179b978446c399b3cdf73c392c35604e399eee6df1ee3" dependencies = [ "elliptic-curve", ] @@ -3091,7 +3227,7 @@ checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" dependencies = [ "once_cell", "thiserror", - "toml", + "toml 0.5.10", ] [[package]] @@ -3102,29 +3238,20 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "0.4.30" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -dependencies = [ - "unicode-xid 0.1.0", -] - -[[package]] -name = "proc-macro2" -version = "1.0.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2" +checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" dependencies = [ "unicode-ident", ] [[package]] name = "procfs" -version = "0.14.2" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1de8dacb0873f77e6aefc6d71e044761fcc68060290f5b1089fcdf84626bb69" +checksum = "943ca7f9f29bab5844ecd8fdb3992c5969b6622bb9609b9502fef9b4310e3f1f" dependencies = [ - "bitflags", + "bitflags 1.3.2", "byteorder", "chrono", "flate2", @@ -3135,33 +3262,33 @@ dependencies = [ [[package]] name = "proptest" -version = "1.0.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0d9cc07f18492d879586c92b485def06bc850da3118075cd45d50e9c95b0e5" +checksum = "7c003ac8c77cb07bb74f5f198bce836a689bcd5a42574612bf14d17bfd08c20e" dependencies = [ "bit-set", - "bitflags", - "byteorder", + "bit-vec", + "bitflags 2.4.1", "lazy_static", "num-traits", - "quick-error 2.0.1", "rand 0.8.5", "rand_chacha 0.3.1", "rand_xorshift", - "regex-syntax", + "regex-syntax 0.7.5", "rusty-fork", "tempfile", + "unarray", ] [[package]] name = "proptest-derive" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90b46295382dc76166cb7cf2bb4a97952464e4b7ed5a43e6cd34e1fec3349ddc" +checksum = "9cf16337405ca084e9c78985114633b6827711d22b9e6ef6c6c0d665eb3f0b6e" dependencies = [ - "proc-macro2 0.4.30", - "quote 0.6.13", - "syn 0.15.44", + "proc-macro2", + "quote", + "syn 1.0.107", ] [[package]] @@ -3186,28 +3313,13 @@ version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" -[[package]] -name = "quick-error" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" - [[package]] name = "quote" -version = "0.6.13" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ - "proc-macro2 0.4.30", -] - -[[package]] -name = "quote" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" -dependencies = [ - "proc-macro2 1.0.50", + "proc-macro2", ] [[package]] @@ -3216,16 +3328,6 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" -[[package]] -name = "radix_trie" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" -dependencies = [ - "endian-type", - "nibble_vec", -] - [[package]] name = "rand" version = "0.7.3" @@ -3327,7 +3429,7 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] @@ -3343,13 +3445,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.7.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-automata 0.4.3", + "regex-syntax 0.8.2", ] [[package]] @@ -3358,7 +3461,18 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" dependencies = [ - "regex-syntax", + "regex-syntax 0.6.28", +] + +[[package]] +name = "regex-automata" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.2", ] [[package]] @@ -3367,6 +3481,18 @@ version = "0.6.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" +[[package]] +name = "regex-syntax" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + [[package]] name = "remove_dir_all" version = "0.5.3" @@ -3378,13 +3504,13 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.20" +version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" +checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ - "base64 0.21.0", + "base64 0.21.4", "bytes", - "cookie", + "cookie 0.16.2", "cookie_store 0.16.1", "encoding_rs", "futures-core", @@ -3405,6 +3531,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", + "system-configuration", "tokio", "tokio-native-tls", "tokio-socks", @@ -3420,26 +3547,24 @@ dependencies = [ [[package]] name = "reqwest_cookie_store" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06b407c05de7a0f7e4cc2a56af5e9bd6468e509124e81078ce1f8bc2ed3536bf" +checksum = "ba529055ea150e42e4eb9c11dcd380a41025ad4d594b0cb4904ef28b037e1061" dependencies = [ "bytes", - "cookie", - "cookie_store 0.19.0", + "cookie_store 0.20.0", "reqwest", "url", ] [[package]] name = "rfc6979" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" dependencies = [ - "crypto-bigint", "hmac 0.12.1", - "zeroize", + "subtle", ] [[package]] @@ -3451,7 +3576,7 @@ dependencies = [ "cc", "libc", "once_cell", - "spin", + "spin 0.5.2", "untrusted", "web-sys", "winapi", @@ -3474,7 +3599,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5353673ffd8265292281141560d2b851e4da49e83e2f5e255fd473736d45ee10" dependencies = [ - "clap 3.2.23", + "clap 3.2.25", "futures", "hyper", "lazy_static", @@ -3496,7 +3621,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8e4b9cb00baf2d61bcd35e98d67dcb760382a3b4540df7e63b38d053c8a7b8b" dependencies = [ - "proc-macro2 1.0.50", + "proc-macro2", "rpc-toolkit-macro-internals", "syn 1.0.107", ] @@ -3507,19 +3632,20 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3e2ce21b936feaecdab9c9a8e75b9dca64374ccc11951a58045ad6559b75f42" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2", + "quote", "syn 1.0.107", ] [[package]] name = "rsa" -version = "0.7.2" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "094052d5470cbcef561cb848a7209968c9f12dfa6d668f4bca048ac5de51099c" +checksum = "6ab43bb47d23c1a631b4b680199a45255dce26fa9ab2fa902581f624ff13e6a8" dependencies = [ "byteorder", - "digest 0.10.6", + "const-oid", + "digest 0.10.7", "num-bigint-dig", "num-integer", "num-iter", @@ -3527,8 +3653,9 @@ dependencies = [ "pkcs1", "pkcs8", "rand_core 0.6.4", - "signature 1.6.4", - "smallvec", + "sha2 0.10.8", + "signature 2.0.0", + "spki", "subtle", "zeroize", ] @@ -3551,10 +3678,21 @@ checksum = "b50162d19404029c1ceca6f6980fe40d45c8b369f6f44446fa14bb39573b5bb9" dependencies = [ "base64 0.13.1", "blake2b_simd", - "constant_time_eq", + "constant_time_eq 0.1.5", "crossbeam-utils", ] +[[package]] +name = "rust-argon2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e71971821b3ae0e769e4a4328dbcb517607b434db7697e9aba17203ec14e46a" +dependencies = [ + "base64 0.21.4", + "blake2b_simd", + "constant_time_eq 0.3.0", +] + [[package]] name = "rustc-demangle" version = "0.1.21" @@ -3576,7 +3714,7 @@ version = "0.36.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4feacf7db682c6c329c4ede12649cd36ecab0f3be5b7d74e6a20304725db4549" dependencies = [ - "bitflags", + "bitflags 1.3.2", "errno", "io-lifetimes", "libc", @@ -3586,14 +3724,14 @@ dependencies = [ [[package]] name = "rustls" -version = "0.20.8" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" dependencies = [ "log", "ring", + "rustls-webpki", "sct", - "webpki", ] [[package]] @@ -3602,7 +3740,17 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" dependencies = [ - "base64 0.21.0", + "base64 0.21.4", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe" +dependencies = [ + "ring", + "untrusted", ] [[package]] @@ -3618,7 +3766,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" dependencies = [ "fnv", - "quick-error 1.2.3", + "quick-error", "tempfile", "wait-timeout", ] @@ -3662,9 +3810,9 @@ dependencies = [ [[package]] name = "sec1" -version = "0.3.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ "base16ct", "der", @@ -3680,7 +3828,7 @@ version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" dependencies = [ - "bitflags", + "bitflags 1.3.2", "core-foundation", "core-foundation-sys", "libc", @@ -3721,15 +3869,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_bytes" -version = "0.11.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718dc5fff5b36f99093fc49b280cfc96ce6fc824317783bff5a1fed0c7a64819" -dependencies = [ - "serde", -] - [[package]] name = "serde_cbor" version = "0.11.1" @@ -3754,8 +3893,8 @@ version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2", + "quote", "syn 1.0.107", ] @@ -3765,12 +3904,21 @@ version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cad406b69c91885b5107daf2c29572f6c8cdb3c66826821e286c533490c0bc76" dependencies = [ - "indexmap", + "indexmap 1.9.2", "itoa 1.0.5", "ryu", "serde", ] +[[package]] +name = "serde_spanned" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +dependencies = [ + "serde", +] + [[package]] name = "serde_test" version = "1.0.152" @@ -3794,30 +3942,31 @@ dependencies = [ [[package]] name = "serde_with" -version = "2.2.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d904179146de381af4c93d3af6ca4984b3152db687dacb9c3c35e86f39809c" +checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" dependencies = [ - "base64 0.13.1", + "base64 0.21.4", "chrono", "hex", - "indexmap", + "indexmap 1.9.2", + "indexmap 2.0.2", "serde", "serde_json", "serde_with_macros", - "time 0.3.17", + "time", ] [[package]] name = "serde_with_macros" -version = "2.2.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1966009f3c05f095697c537312f5415d1e3ed31ce0a56942bac4c771c5c335e" +checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" dependencies = [ "darling", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2", + "quote", + "syn 2.0.37", ] [[package]] @@ -3826,7 +3975,7 @@ version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" dependencies = [ - "indexmap", + "indexmap 1.9.2", "ryu", "serde", "yaml-rust", @@ -3834,11 +3983,11 @@ dependencies = [ [[package]] name = "serde_yaml" -version = "0.9.16" +version = "0.9.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92b5b431e8907b50339b51223b97d102db8d987ced36f6e4d03621db9316c834" +checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574" dependencies = [ - "indexmap", + "indexmap 2.0.2", "itoa 1.0.5", "ryu", "serde", @@ -3853,7 +4002,7 @@ checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -3864,7 +4013,7 @@ checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -3882,13 +4031,13 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.6" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -3926,10 +4075,6 @@ name = "signature" version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" -dependencies = [ - "digest 0.10.6", - "rand_core 0.6.4", -] [[package]] name = "signature" @@ -3937,7 +4082,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fe458c98333f9c8152221191a77e2a44e8325d0193484af2e9421a53019e57d" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", "rand_core 0.6.4", ] @@ -3983,6 +4128,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "socket2" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "spin" version = "0.5.2" @@ -3990,10 +4145,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] -name = "spki" -version = "0.6.0" +name = "spin" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" dependencies = [ "base64ct", "der", @@ -4012,156 +4176,299 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.6.2" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9249290c05928352f71c077cc44a464d880c63f26f7534728cca008e135c0428" +checksum = "0e50c216e3624ec8e7ecd14c6a6a6370aad6ee5d8cfc3ab30b5162eeeef2ed33" dependencies = [ "sqlx-core", "sqlx-macros", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", ] [[package]] name = "sqlx-core" -version = "0.6.2" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbc16ddba161afc99e14d1713a453747a2b07fc097d2009f4c300ec99286105" +checksum = "8d6753e460c998bbd4cd8c6f0ed9a64346fcca0723d6e75e52fdc351c5d2169d" dependencies = [ - "ahash 0.7.6", + "ahash 0.8.3", "atoi", - "base64 0.13.1", - "bitflags", "byteorder", "bytes", "chrono", - "crc 3.0.0", + "crc", "crossbeam-queue", - "dirs", "dotenvy", "either", "event-listener", "futures-channel", "futures-core", "futures-intrusive", + "futures-io", "futures-util", "hashlink", "hex", - "hkdf", - "hmac 0.12.1", - "indexmap", - "itoa 1.0.5", - "libc", + "indexmap 2.0.2", "log", - "md-5 0.10.5", "memchr", "once_cell", "paste", "percent-encoding", - "rand 0.8.5", "rustls", "rustls-pemfile", "serde", "serde_json", - "sha1", - "sha2 0.10.6", + "sha2 0.10.8", "smallvec", "sqlformat", - "sqlx-rt", - "stringprep", "thiserror", + "tokio", "tokio-stream", + "tracing", "url", "webpki-roots", - "whoami", ] [[package]] name = "sqlx-macros" -version = "0.6.2" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b850fa514dc11f2ee85be9d055c512aa866746adfacd1cb42d867d68e6a5b0d9" +checksum = "9a793bb3ba331ec8359c1853bd39eed32cdd7baaf22c35ccf5c92a7e8d1189ec" +dependencies = [ + "proc-macro2", + "quote", + "sqlx-core", + "sqlx-macros-core", + "syn 1.0.107", +] + +[[package]] +name = "sqlx-macros-core" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a4ee1e104e00dedb6aa5ffdd1343107b0a4702e862a84320ee7cc74782d96fc" dependencies = [ "dotenvy", "either", "heck", "hex", "once_cell", - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2", + "quote", "serde", "serde_json", - "sha2 0.10.6", + "sha2 0.10.8", "sqlx-core", - "sqlx-rt", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", "syn 1.0.107", + "tempfile", + "tokio", "url", ] [[package]] -name = "sqlx-rt" -version = "0.6.2" +name = "sqlx-mysql" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24c5b2d25fa654cc5f841750b8e1cdedbe21189bf9a9382ee90bfa9dd3562396" +checksum = "864b869fdf56263f4c95c45483191ea0af340f9f3e3e7b4d57a61c7c87a970db" dependencies = [ + "atoi", + "base64 0.21.4", + "bitflags 2.4.1", + "byteorder", + "bytes", + "chrono", + "crc", + "digest 0.10.7", + "dotenvy", + "either", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "generic-array", + "hex", + "hkdf", + "hmac 0.12.1", + "itoa 1.0.5", + "log", + "md-5", + "memchr", "once_cell", - "tokio", - "tokio-rustls", + "percent-encoding", + "rand 0.8.5", + "rsa", + "serde", + "sha1", + "sha2 0.10.8", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-postgres" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb7ae0e6a97fb3ba33b23ac2671a5ce6e3cabe003f451abd5a56e7951d975624" +dependencies = [ + "atoi", + "base64 0.21.4", + "bitflags 2.4.1", + "byteorder", + "chrono", + "crc", + "dotenvy", + "etcetera", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "hex", + "hkdf", + "hmac 0.12.1", + "home", + "itoa 1.0.5", + "log", + "md-5", + "memchr", + "once_cell", + "rand 0.8.5", + "serde", + "serde_json", + "sha1", + "sha2 0.10.8", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-sqlite" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59dc83cf45d89c555a577694534fcd1b55c545a816c816ce51f20bbe56a4f3f" +dependencies = [ + "atoi", + "chrono", + "flume", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "libsqlite3-sys", + "log", + "percent-encoding", + "serde", + "sqlx-core", + "tracing", + "url", +] + +[[package]] +name = "sscanf" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c713ebd15ce561dd4a13ed62bc2a0368e16806fc30dcaf66ecf1256b2a3fdde6" +dependencies = [ + "const_format", + "lazy_static", + "regex", + "sscanf_macro", +] + +[[package]] +name = "sscanf_macro" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84955aa74a157e5834d58a07be11af7f0ab923f0194a0bb2ea6b3db8b5d1611d" +dependencies = [ + "convert_case 0.6.0", + "proc-macro2", + "quote", + "regex-syntax 0.6.28", + "strsim 0.10.0", + "syn 2.0.37", + "unicode-width", +] + +[[package]] +name = "ssh-cipher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caac132742f0d33c3af65bfcde7f6aa8f62f0e991d80db99149eb9d44708784f" +dependencies = [ + "cipher 0.4.4", + "ssh-encoding", ] [[package]] name = "ssh-encoding" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19cfdc32e0199062113edf41f344fbf784b8205a94600233c84eb838f45191e1" +checksum = "eb9242b9ef4108a78e8cd1a2c98e193ef372437f8c22be363075233321dd4a15" dependencies = [ "base64ct", "pem-rfc7468", - "sha2 0.10.6", + "sha2 0.10.8", ] [[package]] name = "ssh-key" -version = "0.5.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "288d8f5562af5a3be4bda308dd374b2c807b940ac370b5efa1c99311da91d9a1" +checksum = "2180b3bc4955efd5661a97658d3cf4c8107e0d132f619195afe9486c13cca313" dependencies = [ - "ed25519-dalek", - "p256 0.11.1", + "ed25519-dalek 2.0.0", + "p256", "p384", "rand_core 0.6.4", "rsa", "sec1", - "sha2 0.10.6", - "signature 1.6.4", + "sha2 0.10.8", + "signature 2.0.0", + "ssh-cipher", "ssh-encoding", + "subtle", "zeroize", ] [[package]] name = "start-os" -version = "0.3.4-rev.4" +version = "0.3.5" dependencies = [ "aes", "async-compression", "async-stream", "async-trait", "base32", - "base64 0.13.1", + "base64 0.21.4", "base64ct", "basic-cookies", "bytes", "chrono", "ciborium", - "clap 3.2.23", + "clap 3.2.25", "color-eyre", "console", - "cookie", - "cookie_store 0.19.0", + "cookie 0.18.0", + "cookie_store 0.20.0", "current_platform", - "digest 0.10.6", - "digest 0.9.0", + "digest 0.10.7", "divrem", - "ed25519", - "ed25519-dalek", + "ed25519 2.2.3", + "ed25519-dalek 2.0.0", "embassy_container_init", "emver", "fd-lock-rs", @@ -4177,12 +4484,12 @@ dependencies = [ "imbl", "imbl-value", "include_dir", - "indexmap", + "indexmap 2.0.2", "indicatif", "ipnet", "iprange", "isocountry", - "itertools 0.10.5", + "itertools 0.11.0", "jaq-core", "jaq-std", "josekit", @@ -4193,13 +4500,13 @@ dependencies = [ "mbrman", "models", "new_mime_guess", - "nix 0.25.1", + "nix 0.27.1", "nom", "num", "num_enum", "openssh-keys", "openssl", - "p256 0.12.0", + "p256", "patch-db", "pbkdf2", "pin-project", @@ -4207,23 +4514,22 @@ dependencies = [ "prettytable-rs", "proptest", "proptest-derive", - "rand 0.7.3", "rand 0.8.5", "regex", "reqwest", "reqwest_cookie_store", "rpassword", "rpc-toolkit", - "rust-argon2", + "rust-argon2 2.0.0", "scopeguard", "serde", "serde_json", "serde_with", - "serde_yaml 0.9.16", - "sha2 0.10.6", - "sha2 0.9.9", + "serde_yaml 0.9.25", + "sha2 0.10.8", "simple-logging", "sqlx", + "sscanf", "ssh-key", "stderrlog", "tar", @@ -4235,7 +4541,7 @@ dependencies = [ "tokio-tar", "tokio-tungstenite", "tokio-util", - "toml", + "toml 0.8.2", "torut", "tracing", "tracing-error", @@ -4245,7 +4551,7 @@ dependencies = [ "typed-builder", "url", "urlencoding", - "uuid 1.2.2", + "uuid", "zeroize", ] @@ -4270,7 +4576,7 @@ checksum = "213494b7a2b503146286049378ce02b482200519accc31872ee8be91fa820a08" dependencies = [ "new_debug_unreachable", "once_cell", - "parking_lot 0.12.1", + "parking_lot", "phf_shared", "precomputed-hash", ] @@ -4303,25 +4609,25 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" -[[package]] -name = "syn" -version = "0.15.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" -dependencies = [ - "proc-macro2 0.4.30", - "quote 0.6.13", - "unicode-xid 0.1.0", -] - [[package]] name = "syn" version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +dependencies = [ + "proc-macro2", + "quote", "unicode-ident", ] @@ -4331,10 +4637,31 @@ version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2", + "quote", "syn 1.0.107", - "unicode-xid 0.2.4", + "unicode-xid", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", ] [[package]] @@ -4345,13 +4672,13 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tar" -version = "0.4.38" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" +checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" dependencies = [ "filetime", "libc", - "xattr", + "xattr 1.0.1", ] [[package]] @@ -4405,22 +4732,22 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.38" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" +checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.38" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" +checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2", + "quote", + "syn 2.0.37", ] [[package]] @@ -4443,17 +4770,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "time" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - [[package]] name = "time" version = "0.3.17" @@ -4507,40 +4823,39 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.24.1" +version = "1.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d9f76183f91ecfb55e1d7d5602bd1d979e38a3a522fe900241cf195624d67ae" +checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" dependencies = [ - "autocfg", + "backtrace", "bytes", "libc", - "memchr", "mio", "num_cpus", - "parking_lot 0.12.1", + "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2", + "socket2 0.5.4", "tokio-macros", - "windows-sys 0.42.0", + "windows-sys 0.48.0", ] [[package]] name = "tokio-macros" -version = "1.8.2" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2", + "quote", + "syn 2.0.37", ] [[package]] name = "tokio-native-tls" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" dependencies = [ "native-tls", "tokio", @@ -4548,13 +4863,12 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.23.4" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ "rustls", "tokio", - "webpki", ] [[package]] @@ -4571,9 +4885,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.11" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223ce" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" dependencies = [ "futures-core", "pin-project-lite", @@ -4592,14 +4906,14 @@ dependencies = [ "redox_syscall 0.2.16", "tokio", "tokio-stream", - "xattr", + "xattr 0.2.3", ] [[package]] name = "tokio-tungstenite" -version = "0.17.2" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f714dd15bead90401d77e04243611caec13726c2408afd5b31901dfcdcb3b181" +checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" dependencies = [ "futures-util", "log", @@ -4611,9 +4925,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.4" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" +checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" dependencies = [ "bytes", "futures-core", @@ -4632,6 +4946,65 @@ dependencies = [ "serde", ] +[[package]] +name = "toml" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.19.15", +] + +[[package]] +name = "toml" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.20.2", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.0.2", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap 2.0.2", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + [[package]] name = "torut" version = "0.2.1" @@ -4641,7 +5014,7 @@ dependencies = [ "base32", "base64 0.13.1", "derive_more", - "ed25519-dalek", + "ed25519-dalek 1.0.1", "hex", "hmac 0.11.0", "rand 0.7.3", @@ -4660,11 +5033,11 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "ee2ef2af84856a50c1d430afce2fdded0a4ec7eda868db86409b4543df0797f9" dependencies = [ - "cfg-if", + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -4672,20 +5045,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.23" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2", + "quote", + "syn 2.0.37", ] [[package]] name = "tracing-core" -version = "0.1.30" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", @@ -4724,9 +5097,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" +checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" dependencies = [ "matchers", "nu-ansi-term", @@ -4749,31 +5122,11 @@ dependencies = [ "serde_json", ] -[[package]] -name = "trust-dns-client" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c408c32e6a9dbb38037cece35740f2cf23c875d8ca134d33631cec83f74d3fe" -dependencies = [ - "cfg-if", - "data-encoding", - "futures-channel", - "futures-util", - "lazy_static", - "radix_trie", - "rand 0.8.5", - "thiserror", - "time 0.3.17", - "tokio", - "tracing", - "trust-dns-proto", -] - [[package]] name = "trust-dns-proto" -version = "0.22.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f7f83d1e4a0e4358ac54c5c3681e5d7da5efc5a7a632c90bb6d6669ddd9bc26" +checksum = "559ac980345f7f5020883dd3bcacf176355225e01916f8c2efecad7534f682c6" dependencies = [ "async-trait", "cfg-if", @@ -4782,9 +5135,9 @@ dependencies = [ "futures-channel", "futures-io", "futures-util", - "idna 0.2.3", + "idna 0.4.0", "ipnet", - "lazy_static", + "once_cell", "rand 0.8.5", "smallvec", "thiserror", @@ -4796,23 +5149,23 @@ dependencies = [ [[package]] name = "trust-dns-server" -version = "0.22.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1583cf9f8a359c9f16fdf760b79cb2be3f261b98db8027f81959c7a4f6645e2c" +checksum = "f4307166910ddf09378e651e9d4730c44900e9e0e1f157a6b955e48b539cd1d6" dependencies = [ "async-trait", "bytes", "cfg-if", + "drain", "enum-as-inner", "futures-executor", "futures-util", "serde", "thiserror", - "time 0.3.17", + "time", "tokio", - "toml", + "toml 0.7.8", "tracing", - "trust-dns-client", "trust-dns-proto", ] @@ -4824,19 +5177,19 @@ checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "tungstenite" -version = "0.17.3" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e27992fd6a8c29ee7eef28fc78349aa244134e10ad447ce3b9f0ac0ed0fa4ce0" +checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" dependencies = [ - "base64 0.13.1", "byteorder", "bytes", + "data-encoding", "http", "httparse", "log", "native-tls", "rand 0.8.5", - "sha-1", + "sha1", "thiserror", "url", "utf-8", @@ -4844,13 +5197,22 @@ dependencies = [ [[package]] name = "typed-builder" -version = "0.10.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89851716b67b937e393b3daa8423e67ddfc4bbbf1654bcf05488e95e0828db0c" +checksum = "b1c6a006a6d3d6a6f143fda41cf4d1ad35110080687628c9f2117bd3cc7924f3" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "typed-builder-macro", +] + +[[package]] +name = "typed-builder-macro" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fa054ee5e2346187d631d2f1d1fd3b33676772d6d03a2d84e1c5213b31674ee" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", ] [[package]] @@ -4865,6 +5227,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + [[package]] name = "unicase" version = "2.6.0" @@ -4876,9 +5244,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.8" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" @@ -4907,12 +5275,6 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" -[[package]] -name = "unicode-xid" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" - [[package]] name = "unicode-xid" version = "0.2.4" @@ -4927,9 +5289,9 @@ checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" [[package]] name = "unsafe-libyaml" -version = "0.2.5" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc7ed8ba44ca06be78ea1ad2c3682a43349126c8818054231ee6f4748012aed2" +checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" [[package]] name = "untrusted" @@ -4939,21 +5301,21 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" -version = "2.3.1" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", - "idna 0.3.0", + "idna 0.4.0", "percent-encoding", "serde", ] [[package]] name = "urlencoding" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8db7427f936968176eaa7cdf81b7f98b980b18495ec28f1b5791ac3bfe3eea9" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "utf-8" @@ -4963,18 +5325,9 @@ checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] name = "uuid" -version = "0.8.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom 0.2.8", -] - -[[package]] -name = "uuid" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" dependencies = [ "getrandom 0.2.8", ] @@ -5028,12 +5381,6 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -5059,8 +5406,8 @@ dependencies = [ "bumpalo", "log", "once_cell", - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2", + "quote", "syn 1.0.107", "wasm-bindgen-shared", ] @@ -5083,7 +5430,7 @@ version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" dependencies = [ - "quote 1.0.23", + "quote", "wasm-bindgen-macro-support", ] @@ -5093,8 +5440,8 @@ version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2", + "quote", "syn 1.0.107", "wasm-bindgen-backend", "wasm-bindgen-shared", @@ -5129,23 +5476,13 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "webpki" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "webpki-roots" -version = "0.22.6" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" +checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888" dependencies = [ - "webpki", + "rustls-webpki", ] [[package]] @@ -5153,10 +5490,6 @@ name = "whoami" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45dbc71f0cdca27dc261a9bd37ddec174e4a0af2b900b890f378460f745426e3" -dependencies = [ - "wasm-bindgen", - "web-sys", -] [[package]] name = "winapi" @@ -5336,6 +5669,15 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +[[package]] +name = "winnow" +version = "0.5.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3b801d0e0a6726477cc207f60162da452f3a95adb368399bef20a946e06f65c" +dependencies = [ + "memchr", +] + [[package]] name = "winreg" version = "0.50.0" @@ -5364,6 +5706,15 @@ dependencies = [ "libc", ] +[[package]] +name = "xattr" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" +dependencies = [ + "libc", +] + [[package]] name = "yajrc" version = "0.1.0" @@ -5410,9 +5761,9 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.5.7" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f" +checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" dependencies = [ "zeroize_derive", ] @@ -5423,8 +5774,8 @@ version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36c" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2", + "quote", "syn 1.0.107", "synstructure", ] diff --git a/system-images/compat/Makefile b/system-images/compat/Makefile index 3dc8560b8..85e10dfc8 100644 --- a/system-images/compat/Makefile +++ b/system-images/compat/Makefile @@ -17,5 +17,5 @@ docker-images/aarch64.tar: Dockerfile target/aarch64-unknown-linux-musl/release/ docker-images/x86_64.tar: Dockerfile target/x86_64-unknown-linux-musl/release/compat docker-images docker buildx build --build-arg ARCH=aarch64 --tag start9/x_system/compat --platform=linux/amd64 -o type=docker,dest=docker-images/x86_64.tar . -target/aarch64-unknown-linux-musl/release/compat target/x86_64-unknown-linux-musl/release/compat: $(COMPAT_SRC) +target/aarch64-unknown-linux-musl/release/compat target/x86_64-unknown-linux-musl/release/compat: $(COMPAT_SRC) ../../backend/Cargo.lock ./build.sh