feat: iv and key on manifest

This commit is contained in:
DecDuck
2025-12-18 19:07:32 +11:00
parent 066e962930
commit 7faef9147f
5 changed files with 59 additions and 219 deletions

228
Cargo.lock generated
View File

@@ -74,7 +74,7 @@ checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
"synstructure",
]
@@ -86,7 +86,7 @@ checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
"synstructure",
]
@@ -98,7 +98,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
]
[[package]]
@@ -109,7 +109,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
]
[[package]]
@@ -185,7 +185,7 @@ dependencies = [
"once_cell",
"pollster",
"portable-atomic",
"rand 0.8.5",
"rand",
"regress",
"rustc-hash",
"ryu-js",
@@ -236,7 +236,7 @@ checksum = "9fd3f870829131332587f607a7ff909f1af5fc523fd1b192db55fbbdf52e8d3c"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
"synstructure",
]
@@ -280,9 +280,9 @@ dependencies = [
[[package]]
name = "bumpalo"
version = "3.19.0"
version = "3.19.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510"
[[package]]
name = "bytemuck"
@@ -301,7 +301,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
]
[[package]]
@@ -312,9 +312,9 @@ checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3"
[[package]]
name = "cc"
version = "1.2.48"
version = "1.2.49"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c481bdbf0ed3b892f6f806287d72acd515b352a4ec27a208489b8c1bc839633a"
checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215"
dependencies = [
"find-msvc-tools",
"shlex",
@@ -388,9 +388,9 @@ dependencies = [
[[package]]
name = "ctor"
version = "0.6.2"
version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb230974aaf0aca4d71665bed0aca156cf43b764fcb9583b69c6c3e686f35e72"
checksum = "424e0138278faeb2b401f174ad17e715c829512d74f3d1e81eb43365c2e0590e"
dependencies = [
"ctor-proc-macro",
"dtor",
@@ -477,7 +477,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
]
[[package]]
@@ -487,31 +487,24 @@ dependencies = [
"anyhow",
"boa_engine",
"droplet-rs",
"format-bytes",
"hashing-reader",
"hex",
"humansize",
"napi",
"napi-build",
"napi-derive",
"rhai",
"serde",
"serde_json",
"sha2",
"tokio",
"tokio-util",
"uuid",
]
[[package]]
name = "droplet-rs"
version = "0.11.2"
source = "git+https://github.com/Drop-OSS/droplet-rs.git#8db15b1e42dd84a9ec5214d2ca85e4846a090269"
version = "0.12.0"
source = "git+https://github.com/Drop-OSS/droplet-rs.git#cb3649eefa3bc8bf0cdeb947445fe357103730be"
dependencies = [
"anyhow",
"async-trait",
"dyn-clone",
"futures",
"getrandom 0.3.4",
"hex",
"humansize",
"rcgen",
@@ -522,10 +515,6 @@ dependencies = [
"time",
"tokio",
"uuid",
<<<<<<< Updated upstream
"webpki",
=======
>>>>>>> Stashed changes
"x509-parser 0.17.0",
]
@@ -586,26 +575,6 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
[[package]]
name = "format-bytes"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48942366ef93975da38e175ac9e10068c6fc08ca9e85930d4f098f4d5b14c2fd"
dependencies = [
"format-bytes-macros",
]
[[package]]
name = "format-bytes-macros"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "203aadebefcc73d12038296c228eabf830f99cba991b0032adf20e9fa6ce7e4f"
dependencies = [
"proc-macro2",
"quote",
"syn 1.0.109",
]
[[package]]
name = "futures"
version = "0.3.31"
@@ -662,7 +631,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
]
[[package]]
@@ -756,17 +725,6 @@ dependencies = [
"foldhash 0.2.0",
]
[[package]]
name = "hashing-reader"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "490b80ea8c6d700506827951d7196fede236081b9c976a42b30598fa77377d15"
dependencies = [
"digest",
"pin-project",
"tokio",
]
[[package]]
name = "hex"
version = "0.4.3"
@@ -897,7 +855,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
]
[[package]]
@@ -1019,9 +977,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "mio"
version = "1.1.0"
version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc"
dependencies = [
"libc",
"wasi",
@@ -1030,9 +988,9 @@ dependencies = [
[[package]]
name = "napi"
version = "3.6.1"
version = "3.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3af30fe8e799dda3a555c496c59e960e4cff1e931b63acbaf3a3b25d9fad22b6"
checksum = "f27a163b545fd2184d2efdccf3d3df56acdb63465f2fcfebcaee0463c1e91783"
dependencies = [
"anyhow",
"bitflags",
@@ -1064,7 +1022,7 @@ dependencies = [
"napi-derive-backend",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
]
[[package]]
@@ -1077,7 +1035,7 @@ dependencies = [
"proc-macro2",
"quote",
"semver",
"syn 2.0.111",
"syn",
]
[[package]]
@@ -1159,7 +1117,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
]
[[package]]
@@ -1244,7 +1202,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
dependencies = [
"phf_shared",
"rand 0.8.5",
"rand",
]
[[package]]
@@ -1257,7 +1215,7 @@ dependencies = [
"phf_shared",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
]
[[package]]
@@ -1269,26 +1227,6 @@ dependencies = [
"siphasher",
]
[[package]]
name = "pin-project"
version = "1.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a"
dependencies = [
"pin-project-internal",
]
[[package]]
name = "pin-project-internal"
version = "1.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
]
[[package]]
name = "pin-project-lite"
version = "0.2.16"
@@ -1368,18 +1306,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"libc",
"rand_chacha 0.3.1",
"rand_core 0.6.4",
]
[[package]]
name = "rand"
version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
dependencies = [
"rand_chacha 0.9.0",
"rand_core 0.9.3",
"rand_chacha",
"rand_core",
]
[[package]]
@@ -1389,17 +1317,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
"rand_core 0.6.4",
]
[[package]]
name = "rand_chacha"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
dependencies = [
"ppv-lite86",
"rand_core 0.9.3",
"rand_core",
]
[[package]]
@@ -1411,15 +1329,6 @@ dependencies = [
"getrandom 0.2.16",
]
[[package]]
name = "rand_core"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
dependencies = [
"getrandom 0.3.4",
]
[[package]]
name = "rcgen"
version = "0.13.2"
@@ -1478,7 +1387,7 @@ checksum = "d4322a2a4e8cf30771dd9f27f7f37ca9ac8fe812dddd811096a98483080dabe6"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
]
[[package]]
@@ -1512,9 +1421,9 @@ dependencies = [
[[package]]
name = "rustls-pki-types"
version = "1.13.1"
version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "708c0f9d5f54ba0272468c1d306a52c495b31fa155e91bc25371e6df7996908c"
checksum = "21e6f2ab2928ca4291b86736a8bd920a277a399bba1589409d72154ff87c1282"
dependencies = [
"zeroize",
]
@@ -1576,7 +1485,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
]
[[package]]
@@ -1665,17 +1574,6 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
[[package]]
name = "syn"
version = "1.0.109"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "syn"
version = "2.0.111"
@@ -1695,7 +1593,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
]
[[package]]
@@ -1736,7 +1634,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
]
[[package]]
@@ -1747,7 +1645,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
]
[[package]]
@@ -1826,7 +1724,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
]
[[package]]
@@ -1840,33 +1738,20 @@ dependencies = [
"tokio",
]
[[package]]
name = "tokio-util"
version = "0.7.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594"
dependencies = [
"bytes",
"futures-core",
"futures-sink",
"pin-project-lite",
"tokio",
]
[[package]]
name = "toml_datetime"
version = "0.7.3"
version = "0.7.4+spec-1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533"
checksum = "fe3cea6b2aa3b910092f6abd4053ea464fab5f9c170ba5e9a6aead16ec4af2b6"
dependencies = [
"serde_core",
]
[[package]]
name = "toml_edit"
version = "0.23.7"
version = "0.23.10+spec-1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d"
checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269"
dependencies = [
"indexmap",
"toml_datetime",
@@ -1876,9 +1761,9 @@ dependencies = [
[[package]]
name = "toml_parser"
version = "1.0.4"
version = "1.0.5+spec-1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e"
checksum = "4c03bee5ce3696f31250db0bbaff18bc43301ce0e8db2ed1f07cbb2acf89984c"
dependencies = [
"winnow",
]
@@ -1927,22 +1812,9 @@ checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a"
dependencies = [
"getrandom 0.3.4",
"js-sys",
"rand 0.9.2",
"uuid-macro-internal",
"wasm-bindgen",
]
[[package]]
name = "uuid-macro-internal"
version = "1.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39d11901c36b3650df7acb0f9ebe624f35b5ac4e1922ecd3c57f444648429594"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
]
[[package]]
name = "version_check"
version = "0.9.5"
@@ -1996,7 +1868,7 @@ dependencies = [
"bumpalo",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
"wasm-bindgen-shared",
]
@@ -2189,7 +2061,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
"synstructure",
]
@@ -2210,7 +2082,7 @@ checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
]
[[package]]
@@ -2230,7 +2102,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
"synstructure",
]
@@ -2259,5 +2131,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn",
]

View File

@@ -17,31 +17,13 @@ napi = { version = "3.0.0-beta.11", default-features = false, features = [
"error_anyhow",
] }
napi-derive = "3.0.0-beta.11"
hex = "0.4.3"
tokio = { version = "1.45.1", features = ["fs", "io-util"] }
tokio-util = { version = "0.7.15", features = ["codec"] }
rhai = "1.22.2"
# mlua = { version = "0.11.2", features = ["luajit"] }
boa_engine = "0.20.0"
serde_json = "1.0.143"
anyhow = "*"
droplet-rs = { git = "https://github.com/Drop-OSS/droplet-rs.git" }
hashing-reader = "0.1.0"
sha2 = "0.10.9"
format-bytes = "0.3.0"
humansize = "2.1.3"
[dependencies.serde]
version = "1.0.210"
features = ["serde_derive"]
[dependencies.uuid]
version = "1.10.0"
features = [
"v4", # Lets you generate random UUIDs
"fast-rng", # Use a faster (but still sufficiently random) RNG
"macro-diagnostics", # Enable better diagnostics for compile-time UUIDs
]
[build-dependencies]
napi-build = "2.0.1"

View File

@@ -1,6 +1,6 @@
{
"name": "@drop-oss/droplet",
"version": "5.0.0",
"version": "5.1.0",
"main": "index.js",
"types": "index.d.ts",
"napi": {

View File

@@ -1,21 +1,12 @@
use std::{collections::HashMap, path::PathBuf, sync::Arc, thread};
use std::{path::PathBuf, sync::Arc, thread};
use anyhow::anyhow;
use droplet_rs::{manifest::generate_manifest_rusty, versions::types::VersionFile};
use hashing_reader::HashingReader;
use hex::ToHex;
use humansize::{format_size, BINARY};
use droplet_rs::manifest::generate_manifest_rusty;
use napi::{
threadsafe_function::{ThreadsafeFunction, ThreadsafeFunctionCallMode},
Result,
};
use serde::Serialize;
use serde_json::json;
use sha2::{Digest, Sha256};
use tokio::io::AsyncReadExt as _;
use uuid::Uuid;
use crate::version::create_backend_for_path;
#[napi]
pub fn call_alt_thread_func(tsfn: Arc<ThreadsafeFunction<()>>) -> Result<(), String> {
@@ -32,7 +23,7 @@ pub async fn generate_manifest(
progress_sfn: ThreadsafeFunction<f32>,
log_sfn: ThreadsafeFunction<String>,
) -> anyhow::Result<String> {
generate_manifest_rusty(
Ok(json!(generate_manifest_rusty(
&PathBuf::from(dir),
|progress| {
progress_sfn.call(Ok(progress), ThreadsafeFunctionCallMode::Blocking);
@@ -41,5 +32,5 @@ pub async fn generate_manifest(
log_sfn.call(Ok(logline), ThreadsafeFunctionCallMode::Blocking);
},
)
.await
.await?).to_string())
}

View File

@@ -1,9 +1,6 @@
use std::{
collections::HashMap,
fs::File,
path::Path,
process::{Command, ExitStatus},
};
use std::
path::Path
;
use anyhow::anyhow;
use droplet_rs::versions::{
@@ -12,11 +9,9 @@ use droplet_rs::versions::{
};
use napi::{
bindgen_prelude::*,
sys::napi_value__,
tokio_stream::{wrappers::ReceiverStream, StreamExt},
tokio_stream::wrappers::ReceiverStream,
};
use tokio::io::{AsyncReadExt, BufReader};
use tokio_util::codec::{BytesCodec, FramedRead};
pub fn create_backend_for_path(path: String) -> Option<Box<dyn VersionBackend + Send>> {
let fs_path = Path::new(&path);