diff --git a/core/startos/src/action.rs b/core/startos/src/action.rs index 13a943a60..ff3998c3c 100644 --- a/core/startos/src/action.rs +++ b/core/startos/src/action.rs @@ -26,7 +26,7 @@ pub struct ActionResultV0 { } #[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub enum DockerStatus { Running, Stopped, @@ -48,7 +48,7 @@ pub fn display_action_result(params: WithIoFormat, result: ActionR } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct ActionParams { #[arg(id = "id")] diff --git a/core/startos/src/auth.rs b/core/startos/src/auth.rs index 21cfbd101..4d3c20bd1 100644 --- a/core/startos/src/auth.rs +++ b/core/startos/src/auth.rs @@ -127,7 +127,7 @@ fn gen_pwd() { ) } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct CliLoginParams { password: Option, @@ -179,7 +179,7 @@ pub fn check_password_against_db(db: &DatabaseModel, password: &str) -> Result<( } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct LoginParams { password: Option, @@ -220,7 +220,7 @@ pub async fn login_impl( } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct LogoutParams { session: InternedString, @@ -236,7 +236,7 @@ pub async fn logout( } #[derive(Debug, Clone, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct Session { pub logged_in: DateTime, pub last_active: DateTime, @@ -245,7 +245,7 @@ pub struct Session { } #[derive(Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct SessionList { current: InternedString, sessions: Sessions, @@ -305,7 +305,7 @@ fn display_sessions(params: WithIoFormat, arg: SessionList) { } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct ListParams { #[arg(skip)] @@ -340,7 +340,7 @@ impl AsLogoutSessionId for KillSessionId { } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct KillParams { ids: Vec, @@ -353,12 +353,10 @@ pub async fn kill(ctx: RpcContext, KillParams { ids }: KillParams) -> Result<(), } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct ResetPasswordParams { - #[arg(name = "old-password")] old_password: Option, - #[arg(name = "new-password")] new_password: Option, } diff --git a/core/startos/src/backup/backup_bulk.rs b/core/startos/src/backup/backup_bulk.rs index 8c609f672..b9f1b877e 100644 --- a/core/startos/src/backup/backup_bulk.rs +++ b/core/startos/src/backup/backup_bulk.rs @@ -30,7 +30,7 @@ use crate::util::serde::IoFormat; use crate::version::VersionT; #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct BackupParams { target_id: BackupTargetId, diff --git a/core/startos/src/backup/restore.rs b/core/startos/src/backup/restore.rs index 73d3c8f69..6001c335a 100644 --- a/core/startos/src/backup/restore.rs +++ b/core/startos/src/backup/restore.rs @@ -25,7 +25,7 @@ use crate::service::service_map::DownloadInstallFuture; use crate::util::serde::IoFormat; #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct RestorePackageParams { pub ids: Vec, diff --git a/core/startos/src/backup/target/cifs.rs b/core/startos/src/backup/target/cifs.rs index db332e28f..d4b65b7fe 100644 --- a/core/startos/src/backup/target/cifs.rs +++ b/core/startos/src/backup/target/cifs.rs @@ -36,7 +36,7 @@ impl Map for CifsTargets { } #[derive(Debug, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct CifsBackupTarget { hostname: String, path: PathBuf, @@ -68,7 +68,7 @@ pub fn cifs() -> ParentHandler { } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct AddParams { pub hostname: String, @@ -122,7 +122,7 @@ pub async fn add( } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct UpdateParams { pub id: BackupTargetId, @@ -186,7 +186,7 @@ pub async fn update( } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct RemoveParams { pub id: BackupTargetId, diff --git a/core/startos/src/backup/target/mod.rs b/core/startos/src/backup/target/mod.rs index 72dd45832..ac48d75a6 100644 --- a/core/startos/src/backup/target/mod.rs +++ b/core/startos/src/backup/target/mod.rs @@ -34,9 +34,9 @@ pub mod cifs; #[derive(Debug, Deserialize, Serialize)] #[serde(tag = "type")] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub enum BackupTarget { - #[serde(rename_all = "kebab-case")] + #[serde(rename_all = "camelCase")] Disk { vendor: Option, model: Option, @@ -109,7 +109,7 @@ impl Serialize for BackupTargetId { #[derive(Debug, Deserialize, Serialize)] #[serde(tag = "type")] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub enum BackupTargetFS { Disk(BlockDev), Cifs(Cifs), @@ -190,7 +190,7 @@ pub async fn list(ctx: RpcContext) -> Result>, @@ -198,7 +198,7 @@ pub struct BackupInfo { } #[derive(Clone, Debug, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct PackageBackupInfo { pub title: String, pub version: Version, @@ -243,7 +243,7 @@ fn display_backup_info(params: WithIoFormat, info: BackupInfo) { } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct InfoParams { target_id: BackupTargetId, @@ -277,7 +277,7 @@ lazy_static::lazy_static! { } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct MountParams { target_id: BackupTargetId, @@ -312,7 +312,7 @@ pub async fn mount( } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct UmountParams { target_id: Option, diff --git a/core/startos/src/config/action.rs b/core/startos/src/config/action.rs index b926c940c..ef26571a7 100644 --- a/core/startos/src/config/action.rs +++ b/core/startos/src/config/action.rs @@ -9,14 +9,14 @@ use crate::prelude::*; use crate::status::health_check::HealthCheckId; #[derive(Debug, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct ConfigRes { pub config: Option, pub spec: ConfigSpec, } #[derive(Debug, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct SetResult { pub depends_on: BTreeMap>, } diff --git a/core/startos/src/config/mod.rs b/core/startos/src/config/mod.rs index 522e5c1a7..bcd44193b 100644 --- a/core/startos/src/config/mod.rs +++ b/core/startos/src/config/mod.rs @@ -126,7 +126,7 @@ pub enum MatchError { } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct ConfigParams { pub id: PackageId, @@ -157,7 +157,7 @@ pub async fn get(ctx: RpcContext, _: Empty, id: PackageId) -> Result, diff --git a/core/startos/src/context/setup.rs b/core/startos/src/context/setup.rs index 933aa155c..013dc060b 100644 --- a/core/startos/src/context/setup.rs +++ b/core/startos/src/context/setup.rs @@ -28,7 +28,7 @@ lazy_static::lazy_static! { } #[derive(Clone, Serialize, Deserialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct SetupResult { pub tor_address: String, pub lan_address: String, diff --git a/core/startos/src/control.rs b/core/startos/src/control.rs index 26b227cd2..e37c88ee4 100644 --- a/core/startos/src/control.rs +++ b/core/startos/src/control.rs @@ -10,7 +10,7 @@ use crate::prelude::*; use crate::Error; #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct ControlParams { pub id: PackageId, diff --git a/core/startos/src/db/mod.rs b/core/startos/src/db/mod.rs index 5ef140dcb..874733ca6 100644 --- a/core/startos/src/db/mod.rs +++ b/core/startos/src/db/mod.rs @@ -183,7 +183,7 @@ pub enum RevisionsRes { } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct CliDumpParams { #[arg(long = "include-private", short = 'p')] @@ -216,7 +216,7 @@ async fn cli_dump( } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct DumpParams { #[arg(long = "include-private", short = 'p')] @@ -272,7 +272,7 @@ async fn cli_apply( } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct ApplyParams { expr: String, @@ -310,7 +310,7 @@ pub fn put() -> ParentHandler { ) } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct UiParams { pointer: JsonPointer, diff --git a/core/startos/src/db/model/mod.rs b/core/startos/src/db/model/mod.rs index 24497ed4e..cae1bfe51 100644 --- a/core/startos/src/db/model/mod.rs +++ b/core/startos/src/db/model/mod.rs @@ -20,7 +20,7 @@ pub mod private; pub mod public; #[derive(Debug, Deserialize, Serialize, HasModel)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[model = "Model"] pub struct Database { pub public: Public, diff --git a/core/startos/src/db/model/package.rs b/core/startos/src/db/model/package.rs index 3c7f3b7c7..d9e702a0d 100644 --- a/core/startos/src/db/model/package.rs +++ b/core/startos/src/db/model/package.rs @@ -35,7 +35,7 @@ pub enum ManifestPreference { } #[derive(Debug, Deserialize, Serialize, HasModel)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[serde(tag = "state")] #[model = "Model"] pub enum PackageState { @@ -257,14 +257,14 @@ impl Model { } #[derive(Debug, Deserialize, Serialize, HasModel)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[model = "Model"] pub struct InstallingState { pub installing_info: InstallingInfo, } #[derive(Debug, Deserialize, Serialize, HasModel)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[model = "Model"] pub struct UpdatingState { pub manifest: Manifest, @@ -272,14 +272,14 @@ pub struct UpdatingState { } #[derive(Debug, Deserialize, Serialize, HasModel)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[model = "Model"] pub struct InstalledState { pub manifest: Manifest, } #[derive(Debug, Deserialize, Serialize, HasModel)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[model = "Model"] pub struct InstallingInfo { pub new_manifest: Manifest, @@ -287,7 +287,7 @@ pub struct InstallingInfo { } #[derive(Debug, Deserialize, Serialize, HasModel)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[model = "Model"] pub struct PackageDataEntry { pub state_info: PackageState, @@ -405,7 +405,7 @@ impl Map for CurrentDependencies { } #[derive(Debug, Deserialize, Serialize, HasModel)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[model = "Model"] pub struct StaticDependencyInfo { pub title: String, @@ -413,11 +413,11 @@ pub struct StaticDependencyInfo { } #[derive(Clone, Debug, Deserialize, Serialize, TS)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[serde(tag = "kind")] pub enum CurrentDependencyInfo { Exists, - #[serde(rename_all = "kebab-case")] + #[serde(rename_all = "camelCase")] Running { #[serde(default)] health_checks: BTreeSet, @@ -438,7 +438,7 @@ impl Map for InterfaceAddressMap { } #[derive(Debug, Deserialize, Serialize, HasModel)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[model = "Model"] pub struct InterfaceAddresses { pub tor_address: Option, diff --git a/core/startos/src/db/model/private.rs b/core/startos/src/db/model/private.rs index b9bc51e63..2b8c55dbd 100644 --- a/core/startos/src/db/model/private.rs +++ b/core/startos/src/db/model/private.rs @@ -14,7 +14,7 @@ use crate::ssh::SshKeys; use crate::util::serde::Pem; #[derive(Debug, Deserialize, Serialize, HasModel)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[model = "Model"] pub struct Private { pub key_store: KeyStore, diff --git a/core/startos/src/db/model/public.rs b/core/startos/src/db/model/public.rs index a9cf8d7e2..d618f8d33 100644 --- a/core/startos/src/db/model/public.rs +++ b/core/startos/src/db/model/public.rs @@ -24,7 +24,7 @@ use crate::version::{Current, VersionT}; use crate::{ARCH, PLATFORM}; #[derive(Debug, Deserialize, Serialize, HasModel)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[model = "Model"] // #[macro_debug] pub struct Public { @@ -102,7 +102,7 @@ fn get_platform() -> InternedString { } #[derive(Debug, Deserialize, Serialize, HasModel)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[model = "Model"] pub struct ServerInfo { #[serde(default = "get_arch")] @@ -137,7 +137,7 @@ pub struct ServerInfo { } #[derive(Debug, Deserialize, Serialize, HasModel)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[model = "Model"] pub struct IpInfo { pub ipv4_range: Option, @@ -165,7 +165,7 @@ pub struct BackupProgress { } #[derive(Debug, Default, Deserialize, Serialize, HasModel)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[model = "Model"] pub struct ServerStatus { pub backup_progress: Option>, @@ -178,7 +178,7 @@ pub struct ServerStatus { } #[derive(Debug, Deserialize, Serialize, HasModel)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[model = "Model"] pub struct UpdateProgress { pub size: Option, @@ -186,7 +186,7 @@ pub struct UpdateProgress { } #[derive(Debug, Deserialize, Serialize, HasModel)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[model = "Model"] pub struct WifiInfo { pub ssids: Vec, @@ -195,7 +195,7 @@ pub struct WifiInfo { } #[derive(Debug, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct ServerSpecs { pub cpu: String, pub disk: String, @@ -203,7 +203,7 @@ pub struct ServerSpecs { } #[derive(Debug, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct ConnectionAddresses { pub tor: Vec, pub clearnet: Vec, diff --git a/core/startos/src/dependencies.rs b/core/startos/src/dependencies.rs index a22411244..168713f61 100644 --- a/core/startos/src/dependencies.rs +++ b/core/startos/src/dependencies.rs @@ -36,7 +36,7 @@ impl Map for Dependencies { } #[derive(Clone, Debug, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[serde(tag = "type")] pub enum DependencyRequirement { OptIn { how: String }, @@ -50,7 +50,7 @@ impl DependencyRequirement { } #[derive(Clone, Debug, Deserialize, Serialize, HasModel)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[model = "Model"] pub struct DepInfo { pub version: VersionRange, @@ -61,12 +61,10 @@ pub struct DepInfo { } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct ConfigureParams { - #[arg(name = "dependent-id")] dependent_id: PackageId, - #[arg(name = "dependency-id")] dependency_id: PackageId, } pub fn configure() -> ParentHandler { @@ -111,7 +109,7 @@ pub async fn configure_impl( } #[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct ConfigDryRes { pub old_config: Config, pub new_config: Config, diff --git a/core/startos/src/diagnostic.rs b/core/startos/src/diagnostic.rs index f9f715bfe..b0820b293 100644 --- a/core/startos/src/diagnostic.rs +++ b/core/startos/src/diagnostic.rs @@ -41,7 +41,7 @@ pub fn error(ctx: DiagnosticContext) -> Result, Error> { } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct LogsParams { limit: Option, diff --git a/core/startos/src/disk/mod.rs b/core/startos/src/disk/mod.rs index 7d31d06db..be2d07bce 100644 --- a/core/startos/src/disk/mod.rs +++ b/core/startos/src/disk/mod.rs @@ -17,7 +17,7 @@ pub const BOOT_RW_PATH: &str = "/media/boot-rw"; pub const REPAIR_DISK_PATH: &str = "/media/embassy/config/repair-disk"; #[derive(Clone, Debug, Default, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct OsPartitionInfo { pub efi: Option, pub bios: Option, diff --git a/core/startos/src/disk/mount/filesystem/block_dev.rs b/core/startos/src/disk/mount/filesystem/block_dev.rs index ada7b2c8e..96e9d79a7 100644 --- a/core/startos/src/disk/mount/filesystem/block_dev.rs +++ b/core/startos/src/disk/mount/filesystem/block_dev.rs @@ -10,7 +10,7 @@ use super::FileSystem; use crate::prelude::*; #[derive(Debug, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct BlockDev> { logicalname: LogicalName, } diff --git a/core/startos/src/disk/mount/filesystem/cifs.rs b/core/startos/src/disk/mount/filesystem/cifs.rs index ada7aa80b..e125b9a90 100644 --- a/core/startos/src/disk/mount/filesystem/cifs.rs +++ b/core/startos/src/disk/mount/filesystem/cifs.rs @@ -63,7 +63,7 @@ pub async fn mount_cifs( } #[derive(Debug, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct Cifs { pub hostname: String, pub path: PathBuf, diff --git a/core/startos/src/disk/mount/filesystem/httpdirfs.rs b/core/startos/src/disk/mount/filesystem/httpdirfs.rs index 8c7d3b058..df9416774 100644 --- a/core/startos/src/disk/mount/filesystem/httpdirfs.rs +++ b/core/startos/src/disk/mount/filesystem/httpdirfs.rs @@ -22,7 +22,7 @@ pub async fn mount_httpdirfs(url: &Url, mountpoint: impl AsRef) -> Result< } #[derive(Debug, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct HttpDirFS { url: Url, } diff --git a/core/startos/src/disk/mount/filesystem/idmapped.rs b/core/startos/src/disk/mount/filesystem/idmapped.rs index 0f4074a8e..dc6a6e9ab 100644 --- a/core/startos/src/disk/mount/filesystem/idmapped.rs +++ b/core/startos/src/disk/mount/filesystem/idmapped.rs @@ -14,7 +14,7 @@ use crate::prelude::*; use crate::util::Invoke; #[derive(Debug, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct IdMapped { filesystem: Fs, from_id: u32, diff --git a/core/startos/src/disk/mount/filesystem/loop_dev.rs b/core/startos/src/disk/mount/filesystem/loop_dev.rs index 7cad174c6..1728ef2c7 100644 --- a/core/startos/src/disk/mount/filesystem/loop_dev.rs +++ b/core/startos/src/disk/mount/filesystem/loop_dev.rs @@ -12,7 +12,7 @@ use super::FileSystem; use crate::prelude::*; #[derive(Debug, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct LoopDev> { logicalname: LogicalName, offset: u64, diff --git a/core/startos/src/disk/util.rs b/core/startos/src/disk/util.rs index 7d73ac974..be0b16a6b 100644 --- a/core/startos/src/disk/util.rs +++ b/core/startos/src/disk/util.rs @@ -24,14 +24,14 @@ use crate::util::{Invoke, Version}; use crate::{Error, ResultExt as _}; #[derive(Clone, Copy, Debug, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub enum PartitionTable { Mbr, Gpt, } #[derive(Clone, Debug, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct DiskInfo { pub logicalname: PathBuf, pub partition_table: Option, @@ -43,7 +43,7 @@ pub struct DiskInfo { } #[derive(Clone, Debug, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct PartitionInfo { pub logicalname: PathBuf, pub label: Option, @@ -54,7 +54,7 @@ pub struct PartitionInfo { } #[derive(Clone, Debug, Default, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct EmbassyOsRecoveryInfo { pub version: Version, pub full: bool, diff --git a/core/startos/src/firmware.rs b/core/startos/src/firmware.rs index 86f576cce..20347bcff 100644 --- a/core/startos/src/firmware.rs +++ b/core/startos/src/firmware.rs @@ -14,7 +14,7 @@ use crate::PLATFORM; /// Part of the Firmware, look there for more about #[derive(Clone, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct VersionMatcher { /// Strip this prefix on the version matcher semver_prefix: Option, @@ -28,7 +28,7 @@ pub struct VersionMatcher { /// wanted a structure that could help decide what to do /// for each of the firmware versions #[derive(Clone, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct Firmware { id: String, /// This is the platform(s) the firmware was built for diff --git a/core/startos/src/inspect.rs b/core/startos/src/inspect.rs index d88f90a06..3fe84d06f 100644 --- a/core/startos/src/inspect.rs +++ b/core/startos/src/inspect.rs @@ -24,7 +24,7 @@ pub fn inspect() -> ParentHandler { } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct HashParams { path: PathBuf, @@ -39,11 +39,11 @@ pub async fn hash(_: CliContext, HashParams { path }: HashParams) -> Result Result { } #[derive(Debug, Clone, Copy, serde::Deserialize, serde::Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub enum MinMax { Min, Max, @@ -103,7 +103,7 @@ impl std::fmt::Display for MinMax { } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct InstallParams { id: PackageId, @@ -165,7 +165,7 @@ pub async fn install( } #[derive(Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct SideloadResponse { pub upload: RequestGuid, pub progress: RequestGuid, @@ -275,7 +275,7 @@ pub async fn sideload(ctx: RpcContext) -> Result { } #[derive(Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub enum CliInstallParams { Marketplace(InstallParams), Sideload(PathBuf), @@ -392,7 +392,7 @@ pub async fn cli_install(ctx: CliContext, params: CliInstallParams) -> Result<() } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct UninstallParams { id: PackageId, diff --git a/core/startos/src/lib.rs b/core/startos/src/lib.rs index 35b373e91..d19f9c61a 100644 --- a/core/startos/src/lib.rs +++ b/core/startos/src/lib.rs @@ -80,7 +80,7 @@ use crate::context::CliContext; use crate::util::serde::HandlerExtSerde; #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct EchoParams { message: String, diff --git a/core/startos/src/logs.rs b/core/startos/src/logs.rs index 0431274ac..1cd84c331 100644 --- a/core/startos/src/logs.rs +++ b/core/startos/src/logs.rs @@ -102,14 +102,14 @@ async fn ws_handler( } #[derive(serde::Serialize, serde::Deserialize, Debug, Clone)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct LogResponse { entries: Reversible, start_cursor: Option, end_cursor: Option, } #[derive(serde::Serialize, serde::Deserialize, Debug, Clone)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct LogFollowResponse { start_cursor: Option, guid: RequestGuid, @@ -211,7 +211,7 @@ pub enum LogSource { pub const SYSTEM_UNIT: &str = "startd"; #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct LogsParam { id: PackageId, diff --git a/core/startos/src/middleware/auth.rs b/core/startos/src/middleware/auth.rs index 2eddcd3ad..30ae56744 100644 --- a/core/startos/src/middleware/auth.rs +++ b/core/startos/src/middleware/auth.rs @@ -26,7 +26,7 @@ use crate::prelude::*; pub const LOCAL_AUTH_COOKIE_PATH: &str = "/run/embassy/rpc.authcookie"; #[derive(Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct LoginRes { pub session: InternedString, } @@ -245,7 +245,7 @@ impl Borrow for HashSessionToken { } #[derive(Deserialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct Metadata { #[serde(default = "const_true")] authenticated: bool, diff --git a/core/startos/src/middleware/db.rs b/core/startos/src/middleware/db.rs index b90055f7c..b8cdaa231 100644 --- a/core/startos/src/middleware/db.rs +++ b/core/startos/src/middleware/db.rs @@ -7,7 +7,7 @@ use serde::Deserialize; use crate::context::RpcContext; #[derive(Deserialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct Metadata { #[serde(default)] sync_db: bool, diff --git a/core/startos/src/net/dhcp.rs b/core/startos/src/net/dhcp.rs index d66448406..f36df0e28 100644 --- a/core/startos/src/net/dhcp.rs +++ b/core/startos/src/net/dhcp.rs @@ -61,7 +61,7 @@ pub fn dhcp() -> ParentHandler { ) } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct UpdateParams { interface: String, diff --git a/core/startos/src/net/ssl.rs b/core/startos/src/net/ssl.rs index 49ab74cfc..0756114c5 100644 --- a/core/startos/src/net/ssl.rs +++ b/core/startos/src/net/ssl.rs @@ -29,7 +29,7 @@ use crate::SOURCE_DATE; #[derive(Debug, Deserialize, Serialize, HasModel)] #[model = "Model"] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct CertStore { pub root_key: Pem>, pub root_cert: Pem, diff --git a/core/startos/src/net/tor.rs b/core/startos/src/net/tor.rs index 171404ceb..72b05e2aa 100644 --- a/core/startos/src/net/tor.rs +++ b/core/startos/src/net/tor.rs @@ -105,7 +105,7 @@ pub fn tor() -> ParentHandler { ) } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct ResetParams { #[arg(name = "wipe-state", short = 'w', long = "wipe-state")] @@ -143,7 +143,7 @@ pub async fn list_services(ctx: RpcContext, _: Empty) -> Result ParentHandler { } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct AddParams { ssid: String, @@ -139,7 +139,7 @@ pub async fn add(ctx: RpcContext, AddParams { ssid, password }: AddParams) -> Re Ok(()) } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct SsidParams { ssid: String, @@ -217,7 +217,7 @@ pub async fn delete(ctx: RpcContext, SsidParams { ssid }: SsidParams) -> Result< Ok(()) } #[derive(serde::Serialize, serde::Deserialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct WiFiInfo { ssids: HashMap, connected: Option, @@ -226,13 +226,13 @@ pub struct WiFiInfo { available_wifi: Vec, } #[derive(serde::Serialize, serde::Deserialize, Clone)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct WifiListInfo { strength: SignalStrength, security: Vec, } #[derive(serde::Serialize, serde::Deserialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct WifiListOut { ssid: Ssid, strength: SignalStrength, @@ -403,7 +403,7 @@ pub async fn get_available(ctx: RpcContext, _: Empty) -> Result } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct SetCountryParams { #[arg(value_parser = CountryCodeParser)] diff --git a/core/startos/src/notifications.rs b/core/startos/src/notifications.rs index f696b27b7..e774d912e 100644 --- a/core/startos/src/notifications.rs +++ b/core/startos/src/notifications.rs @@ -49,7 +49,7 @@ pub fn notification() -> ParentHandler { } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct ListParams { before: Option, @@ -111,7 +111,7 @@ pub async fn list( } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct DeleteParams { id: u32, @@ -126,7 +126,7 @@ pub async fn delete(ctx: RpcContext, DeleteParams { id }: DeleteParams) -> Resul .await } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct DeleteBeforeParams { before: u32, @@ -149,7 +149,7 @@ pub async fn delete_before( } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct CreateParams { package: Option, @@ -173,7 +173,7 @@ pub async fn create( } #[derive(Debug, Clone, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub enum NotificationLevel { Success, Info, @@ -225,7 +225,7 @@ impl fmt::Display for InvalidNotificationLevel { } #[derive(Debug, Default, Serialize, Deserialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct Notifications(pub BTreeMap); impl Notifications { pub fn new() -> Self { @@ -244,7 +244,7 @@ impl Map for Notifications { } #[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct Notification { package_id: Option, created_at: DateTime, @@ -256,7 +256,7 @@ pub struct Notification { } #[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct NotificationWithId { id: u32, #[serde(flatten)] diff --git a/core/startos/src/os_install/mod.rs b/core/startos/src/os_install/mod.rs index 6bb5c5470..55c333fba 100644 --- a/core/startos/src/os_install/mod.rs +++ b/core/startos/src/os_install/mod.rs @@ -24,7 +24,7 @@ mod gpt; mod mbr; #[derive(Debug, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct PostInstallConfig { os_partitions: OsPartitionInfo, ethernet_interface: String, @@ -120,7 +120,7 @@ async fn partition(disk: &mut DiskInfo, overwrite: bool) -> Result Url { } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct GetParams { url: Url, diff --git a/core/startos/src/s9pk/v1/docker.rs b/core/startos/src/s9pk/v1/docker.rs index be93905fb..7f1507703 100644 --- a/core/startos/src/s9pk/v1/docker.rs +++ b/core/startos/src/s9pk/v1/docker.rs @@ -13,7 +13,7 @@ use crate::util::io::from_cbor_async_reader; use crate::{Error, ErrorKind, ARCH}; #[derive(Default, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct DockerMultiArch { pub default: String, pub available: BTreeSet, diff --git a/core/startos/src/s9pk/v1/manifest.rs b/core/startos/src/s9pk/v1/manifest.rs index b2fa85a5e..381a446fe 100644 --- a/core/startos/src/s9pk/v1/manifest.rs +++ b/core/startos/src/s9pk/v1/manifest.rs @@ -18,7 +18,7 @@ fn current_version() -> Version { } #[derive(Clone, Debug, Deserialize, Serialize, HasModel)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[model = "Model"] pub struct Manifest { #[serde(default = "current_version")] @@ -53,7 +53,7 @@ pub struct Manifest { } #[derive(Clone, Debug, Default, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct Assets { #[serde(default)] pub license: Option, diff --git a/core/startos/src/s9pk/v1/mod.rs b/core/startos/src/s9pk/v1/mod.rs index ca49ca597..2f95f0813 100644 --- a/core/startos/src/s9pk/v1/mod.rs +++ b/core/startos/src/s9pk/v1/mod.rs @@ -13,7 +13,7 @@ pub mod reader; pub const SIG_CONTEXT: &[u8] = b"s9pk"; #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct VerifyParams { pub path: PathBuf, diff --git a/core/startos/src/s9pk/v2/manifest.rs b/core/startos/src/s9pk/v2/manifest.rs index d9affae9c..119bbb466 100644 --- a/core/startos/src/s9pk/v2/manifest.rs +++ b/core/startos/src/s9pk/v2/manifest.rs @@ -53,7 +53,7 @@ pub struct Manifest { } #[derive(Clone, Debug, Default, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct HardwareRequirements { #[serde(default)] device: BTreeMap, @@ -85,7 +85,7 @@ impl Description { } #[derive(Clone, Debug, Default, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct Alerts { pub install: Option, pub uninstall: Option, diff --git a/core/startos/src/service/service_effect_handler.rs b/core/startos/src/service/service_effect_handler.rs index 913634dd5..c3a49ac64 100644 --- a/core/startos/src/service/service_effect_handler.rs +++ b/core/startos/src/service/service_effect_handler.rs @@ -257,7 +257,7 @@ struct RemoveAddressParams { #[ts(export)] #[serde(rename_all = "kebab-case")] enum AllowedStatuses { - OnlyRunning, + OnlyRunning, // onlyRunning OnlyStopped, Any, } @@ -1090,20 +1090,19 @@ enum DependencyKind { #[serde(rename_all = "camelCase", tag = "kind")] #[ts(export)] enum DependencyRequirement { + #[serde(rename_all = "camelCase")] Running { #[ts(type = "string")] id: PackageId, #[ts(type = "string[]")] - #[serde(rename = "healthChecks")] health_checks: BTreeSet, - #[serde(rename = "versionSpec")] version_spec: String, url: String, }, + #[serde(rename_all = "camelCase")] Exists { #[ts(type = "string")] id: PackageId, - #[serde(rename = "versionSpec")] version_spec: String, url: String, }, diff --git a/core/startos/src/setup.rs b/core/startos/src/setup.rs index ed3a4661d..2e5c7b3ad 100644 --- a/core/startos/src/setup.rs +++ b/core/startos/src/setup.rs @@ -100,7 +100,7 @@ async fn setup_init( } #[derive(Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct AttachParams { #[serde(rename = "embassy-password")] password: Option, @@ -185,7 +185,7 @@ pub async fn attach( } #[derive(Debug, Clone, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct SetupStatus { pub bytes_transferred: u64, pub total_bytes: Option, @@ -211,7 +211,7 @@ pub fn cifs() -> ParentHandler { } #[derive(Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct VerifyCifsParams { hostname: String, path: PathBuf, @@ -247,14 +247,14 @@ pub async fn verify_cifs( #[derive(Debug, Deserialize, Serialize)] #[serde(tag = "type")] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub enum RecoverySource { Migrate { guid: String }, Backup { target: BackupTargetFS }, } #[derive(Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct ExecuteParams { embassy_logicalname: PathBuf, embassy_password: EncryptedWire, diff --git a/core/startos/src/ssh.rs b/core/startos/src/ssh.rs index 711d2ede9..aaf941e1f 100644 --- a/core/startos/src/ssh.rs +++ b/core/startos/src/ssh.rs @@ -48,7 +48,7 @@ impl ValueParserFactory for SshPubKey { } #[derive(serde::Serialize, serde::Deserialize)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct SshKeyResponse { pub alg: String, pub fingerprint: InternedString, @@ -103,7 +103,7 @@ pub fn ssh() -> ParentHandler { } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct AddParams { key: SshPubKey, @@ -136,7 +136,7 @@ pub async fn add(ctx: RpcContext, AddParams { key }: AddParams) -> Result); impl Map for DependencyConfigErrors { @@ -37,7 +37,7 @@ impl Map for DependencyConfigErrors { #[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq)] #[serde(tag = "status")] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub enum MainStatus { Stopped, Restarting, diff --git a/core/startos/src/system.rs b/core/startos/src/system.rs index 2525491f6..faead0738 100644 --- a/core/startos/src/system.rs +++ b/core/startos/src/system.rs @@ -74,7 +74,7 @@ pub async fn enable_zram() -> Result<(), Error> { } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct ZramParams { enable: bool, @@ -136,7 +136,7 @@ fn display_governor_info(params: WithIoFormat, result: GovernorI } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct GovernorParams { set: Option, @@ -230,7 +230,7 @@ pub async fn time(ctx: RpcContext, _: Empty) -> Result { }) } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct LogsParams { #[arg(short = 'l', long = "limit")] @@ -314,7 +314,7 @@ pub async fn logs_follow( follow_logs(ctx, LogSource::System, limit).await } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct KernelLogsParams { #[arg(short = 'l', long = "limit")] @@ -509,12 +509,12 @@ impl<'de> Deserialize<'de> for GigaBytes { } #[derive(Deserialize, Serialize, Clone, Debug)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct MetricsGeneral { pub temperature: Option, } #[derive(Deserialize, Serialize, Clone, Debug)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct MetricsMemory { pub percentage_used: Percentage, pub total: MebiBytes, @@ -525,7 +525,7 @@ pub struct MetricsMemory { pub zram_used: MebiBytes, } #[derive(Deserialize, Serialize, Clone, Debug)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct MetricsCpu { percentage_used: Percentage, idle: Percentage, @@ -534,7 +534,7 @@ pub struct MetricsCpu { wait: Percentage, } #[derive(Deserialize, Serialize, Clone, Debug)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct MetricsDisk { percentage_used: Percentage, used: GigaBytes, @@ -542,7 +542,7 @@ pub struct MetricsDisk { capacity: GigaBytes, } #[derive(Deserialize, Serialize, Clone, Debug)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub struct Metrics { general: MetricsGeneral, memory: MetricsMemory, diff --git a/core/startos/src/update/mod.rs b/core/startos/src/update/mod.rs index c327bbb61..26bf0357d 100644 --- a/core/startos/src/update/mod.rs +++ b/core/startos/src/update/mod.rs @@ -35,7 +35,7 @@ lazy_static! { } #[derive(Deserialize, Serialize, Parser)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] #[command(rename_all = "kebab-case")] pub struct UpdateSystemParams { marketplace_url: Url, @@ -60,7 +60,7 @@ pub async fn update_system( /// What is the status of the updates? #[derive(serde::Serialize, serde::Deserialize, Clone, Debug)] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub enum UpdateResult { NoUpdates, Updating, diff --git a/core/startos/src/util/lshw.rs b/core/startos/src/util/lshw.rs index dd260f644..2a658a8c8 100644 --- a/core/startos/src/util/lshw.rs +++ b/core/startos/src/util/lshw.rs @@ -8,7 +8,7 @@ const KNOWN_CLASSES: &[&str] = &["processor", "display"]; #[derive(Debug, Deserialize, Serialize)] #[serde(tag = "class")] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub enum LshwDevice { Processor(LshwProcessor), Display(LshwDisplay), diff --git a/core/startos/src/volume.rs b/core/startos/src/volume.rs index 2f8969a73..a631e68e6 100644 --- a/core/startos/src/volume.rs +++ b/core/startos/src/volume.rs @@ -111,25 +111,25 @@ pub fn cert_dir(pkg_id: &PackageId, host_id: &HostId) -> PathBuf { #[derive(Clone, Debug, Deserialize, Serialize)] #[serde(tag = "type")] -#[serde(rename_all = "kebab-case")] +#[serde(rename_all = "camelCase")] pub enum Volume { - #[serde(rename_all = "kebab-case")] + #[serde(rename_all = "camelCase")] Data { #[serde(skip)] readonly: bool, }, - #[serde(rename_all = "kebab-case")] + #[serde(rename_all = "camelCase")] Assets {}, - #[serde(rename_all = "kebab-case")] + #[serde(rename_all = "camelCase")] Pointer { package_id: PackageId, volume_id: VolumeId, path: PathBuf, readonly: bool, }, - #[serde(rename_all = "kebab-case")] + #[serde(rename_all = "camelCase")] Certificate { interface_id: HostId }, - #[serde(rename_all = "kebab-case")] + #[serde(rename_all = "camelCase")] Backup { readonly: bool }, } impl Volume { diff --git a/sdk/lib/StartSdk.ts b/sdk/lib/StartSdk.ts index 59a8715a6..43dc3ba5f 100644 --- a/sdk/lib/StartSdk.ts +++ b/sdk/lib/StartSdk.ts @@ -21,8 +21,6 @@ import { MaybePromise, ServiceInterfaceId, PackageId, - EnsureStorePath, - ExtractStore, ValidIfNoStupidEscape, } from "./types" import * as patterns from "./util/patterns" @@ -60,7 +58,6 @@ import { setupInterfaces, } from "./interfaces/setupInterfaces" import { successFailure } from "./trigger/successFailure" -import { SetupExports } from "./inits/setupExports" import { HealthReceipt } from "./health/HealthReceipt" import { MultiHost, Scheme, SingleHost, StaticHost } from "./interfaces/Host" import { ServiceInterfaceBuilder } from "./interfaces/ServiceInterfaceBuilder" @@ -78,6 +75,8 @@ import { Mounts } from "./mainFn/Mounts" import { Dependency } from "./Dependency" import * as T from "./types" import { Checker, EmVer } from "./emverLite/mod" +import { ExposedStorePaths } from "./store/setupExposeStore" +import { PathBuilder, extractJsonPath, pathBuilder } from "./store/PathBuilder" // prettier-ignore type AnyNeverCond = @@ -150,25 +149,29 @@ export class StartSdk { }, store: { - get: ( + get: ( effects: E, packageId: string, - path: EnsureStorePath, + path: PathBuilder, ) => removeConstType()( - getStore(effects, path as any, { + getStore(effects, path, { packageId, }), ), - getOwn: ( + getOwn: ( effects: E, - path: EnsureStorePath, - ) => removeConstType()(getStore(effects, path as any)), - setOwn: ( + path: PathBuilder, + ) => removeConstType()(getStore(effects, path)), + setOwn: >( effects: E, - path: EnsureStorePath, - value: ExtractStore, - ) => effects.store.set({ value, path: path as any }), + path: Path, + value: Path extends PathBuilder ? Value : never, + ) => + effects.store.set({ + value, + path: extractJsonPath(path), + }), }, host: { @@ -179,7 +182,41 @@ export class StartSdk { multi: (effects: Effects, id: string) => new MultiHost({ id, effects }), }, nullIfEmpty, + runCommand: async ( + effects: Effects, + imageId: Manifest["images"][number], + command: ValidIfNoStupidEscape | [string, ...string[]], + options: CommandOptions & { + mounts?: { path: string; options: MountOptions }[] + }, + ): Promise<{ stdout: string | Buffer; stderr: string | Buffer }> => { + return runCommand(effects, imageId, command, options) + }, + createAction: < + ConfigType extends + | Record + | Config + | Config, + Type extends Record = ExtractConfigType, + >( + id: string, + metaData: Omit & { + input: Config | Config + }, + fn: (options: { + effects: Effects + input: Type + }) => Promise, + ) => { + const { input, ...rest } = metaData + return createAction( + id, + rest, + fn, + input, + ) + }, configConstants: { smtpConfig }, createInterface: ( effects: Effects, @@ -197,42 +234,8 @@ export class StartSdk { masked: boolean }, ) => new ServiceInterfaceBuilder({ ...options, effects }), - createAction: < - ConfigType extends - | Record - | Config - | Config, - Type extends Record = ExtractConfigType, - >( - id: string, - metadata: Omit & { - input: Config | Config - }, - fn: (options: { - effects: Effects - input: Type - }) => Promise, - ) => { - const { input, ...rest } = metadata - return createAction( - id, - rest, - fn, - input, - ) - }, getSystemSmtp: (effects: E) => removeConstType()(new GetSystemSmtp(effects)), - runCommand: async ( - effects: Effects, - imageId: Manifest["images"][number], - command: ValidIfNoStupidEscape | [string, ...string[]], - options: CommandOptions & { - mounts?: { path: string; options: MountOptions }[] - }, - ): Promise<{ stdout: string | Buffer; stderr: string | Buffer }> => { - return runCommand(effects, imageId, command, options) - }, createDynamicAction: < ConfigType extends @@ -242,7 +245,7 @@ export class StartSdk { Type extends Record = ExtractConfigType, >( id: string, - metadata: (options: { + metaData: (options: { effects: Effects }) => MaybePromise>, fn: (options: { @@ -253,7 +256,7 @@ export class StartSdk { ) => { return createAction( id, - metadata, + metaData, fn, input, ) @@ -343,7 +346,6 @@ export class StartSdk { }) } }, - setupExports: (fn: SetupExports) => fn, setupInit: ( migrations: Migrations, install: Install, @@ -353,15 +355,15 @@ export class StartSdk { effects: Effects input: any }) => Promise, - setupExports: SetupExports, + exposedStore: ExposedStorePaths, ) => setupInit( migrations, install, uninstall, setInterfaces, - setupExports, setDependencies, + exposedStore, ), setupInstall: (fn: InstallFn) => Install.of(fn), setupInterfaces: < @@ -386,6 +388,12 @@ export class StartSdk { this.manifest, ...migrations, ), + setupProperties: + ( + fn: (options: { effects: Effects }) => Promise, + ): T.ExpectedExports.Properties => + (options) => + fn(options).then(nullifyProperties), setupUninstall: (fn: UninstallFn) => setupUninstall(fn), trigger: { @@ -538,6 +546,7 @@ export class StartSdk { down: (opts: { effects: Effects }) => Promise }) => Migration.of(options), }, + StorePath: pathBuilder(), Value: { toggle: Value.toggle, text: Value.text, @@ -746,3 +755,20 @@ export async function runCommand( await overlay.destroy() } } +function nullifyProperties(value: T.SdkPropertiesReturn): T.PropertiesReturn { + return Object.fromEntries( + Object.entries(value).map(([k, v]) => [k, nullifyProperties_(v)]), + ) +} +function nullifyProperties_(value: T.SdkPropertiesValue): T.PropertiesValue { + if (value.type === "string") { + return { description: null, copyable: null, qr: null, ...value } + } + return { + description: null, + ...value, + value: Object.fromEntries( + Object.entries(value.value).map(([k, v]) => [k, nullifyProperties_(v)]), + ), + } +} diff --git a/sdk/lib/config/builder/index.ts b/sdk/lib/config/builder/index.ts index a0d794b16..6b6ddc730 100644 --- a/sdk/lib/config/builder/index.ts +++ b/sdk/lib/config/builder/index.ts @@ -1,4 +1,6 @@ -import "./config" -import "./list" -import "./value" -import "./variants" +import { Config } from "./config" +import { List } from "./list" +import { Value } from "./value" +import { Variants } from "./variants" + +export { Config, List, Value, Variants } diff --git a/sdk/lib/config/builder/list.ts b/sdk/lib/config/builder/list.ts index 23de0c495..8a251069d 100644 --- a/sdk/lib/config/builder/list.ts +++ b/sdk/lib/config/builder/list.ts @@ -6,7 +6,6 @@ import { UniqueBy, ValueSpecList, ValueSpecListOf, - ValueSpecText, } from "../configTypes" import { Parser, arrayOf, number, string } from "ts-matches" /** diff --git a/sdk/lib/config/index.ts b/sdk/lib/config/index.ts index 510dc1ca0..35c3e274e 100644 --- a/sdk/lib/config/index.ts +++ b/sdk/lib/config/index.ts @@ -1,5 +1,3 @@ -import "./builder" - -import "./setupConfig" -import "./configDependencies" -import "./configConstants" +export * as constants from "./configConstants" +export * as types from "./configTypes" +export * as builder from "./builder" diff --git a/sdk/lib/config/setupConfig.ts b/sdk/lib/config/setupConfig.ts index 8519eb358..a49e545a8 100644 --- a/sdk/lib/config/setupConfig.ts +++ b/sdk/lib/config/setupConfig.ts @@ -3,7 +3,6 @@ import { SDKManifest } from "../manifest/ManifestTypes" import * as D from "./configDependencies" import { Config, ExtractConfigType } from "./builder/config" import nullIfEmpty from "../util/nullIfEmpty" -import { InterfaceReceipt } from "../interfaces/interfaceReceipt" import { InterfacesReceipt as InterfacesReceipt } from "../interfaces/setupInterfaces" declare const dependencyProof: unique symbol diff --git a/sdk/lib/index.ts b/sdk/lib/index.ts index 0cb6ce0ed..e89d45457 100644 --- a/sdk/lib/index.ts +++ b/sdk/lib/index.ts @@ -4,11 +4,12 @@ export { Overlay } from "./util/Overlay" export { StartSdk } from "./StartSdk" export { setupManifest } from "./manifest/setupManifest" export { FileHelper } from "./util/fileHelper" +export { setupExposeStore } from "./store/setupExposeStore" export * as actions from "./actions" export * as backup from "./backup" export * as config from "./config" -export * as configBuilder from "./config/builder" -export * as configTypes from "./config/configTypes" +export * as CB from "./config/builder" +export * as CT from "./config/configTypes" export * as dependencyConfig from "./dependencyConfig" export * as daemons from "./mainFn/Daemons" export * as health from "./health" diff --git a/sdk/lib/inits/setupExports.ts b/sdk/lib/inits/setupExports.ts deleted file mode 100644 index 089f8a41d..000000000 --- a/sdk/lib/inits/setupExports.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Effects, ExposeServicePaths, ExposeUiPaths } from "../types" - -export type SetupExports = (opts: { effects: Effects }) => - | { - ui: { [k: string]: ExposeUiPaths } - services: ExposeServicePaths["paths"] - } - | Promise<{ - ui: { [k: string]: ExposeUiPaths } - services: ExposeServicePaths["paths"] - }> - -export const setupExports = (fn: (opts: SetupExports) => void) => - fn diff --git a/sdk/lib/inits/setupInit.ts b/sdk/lib/inits/setupInit.ts index af085e17b..03a7085c5 100644 --- a/sdk/lib/inits/setupInit.ts +++ b/sdk/lib/inits/setupInit.ts @@ -1,14 +1,9 @@ import { DependenciesReceipt } from "../config/setupConfig" import { SetInterfaces } from "../interfaces/setupInterfaces" import { SDKManifest } from "../manifest/ManifestTypes" -import { - Effects, - ExpectedExports, - ExposeUiPaths, - ExposeUiPathsAll, -} from "../types" +import { ExposedStorePaths } from "../store/setupExposeStore" +import { Effects, ExpectedExports } from "../types" import { Migrations } from "./migrations/setupMigrations" -import { SetupExports } from "./setupExports" import { Install } from "./setupInstall" import { Uninstall } from "./setupUninstall" @@ -17,11 +12,11 @@ export function setupInit( install: Install, uninstall: Uninstall, setInterfaces: SetInterfaces, - setupExports: SetupExports, setDependencies: (options: { effects: Effects input: any }) => Promise, + exposedStore: ExposedStorePaths, ): { init: ExpectedExports.init uninit: ExpectedExports.uninit @@ -34,9 +29,7 @@ export function setupInit( ...opts, input: null, }) - const { services, ui } = await setupExports(opts) - await opts.effects.exposeForDependents({ paths: services }) - await opts.effects.exposeUi(forExpose(ui)) + await opts.effects.exposeForDependents({ paths: exposedStore }) await setDependencies({ effects: opts.effects, input: null }) }, uninit: async (opts) => { @@ -45,30 +38,3 @@ export function setupInit( }, } } -function forExpose(ui: { [key: string]: ExposeUiPaths }) { - return Object.fromEntries( - Object.entries(ui).map(([key, value]) => [key, forExpose_(value)]), - ) -} - -function forExpose_(ui: ExposeUiPaths): ExposeUiPathsAll { - if (ui.type === ("object" as const)) { - return { - type: "object" as const, - value: Object.fromEntries( - Object.entries(ui.value).map(([key, value]) => [ - key, - forExpose_(value), - ]), - ), - description: ui.description ?? null, - } - } - return { - description: null, - - copyable: null, - qr: null, - ...ui, - } -} diff --git a/sdk/lib/store/PathBuilder.ts b/sdk/lib/store/PathBuilder.ts new file mode 100644 index 000000000..038fa5ac2 --- /dev/null +++ b/sdk/lib/store/PathBuilder.ts @@ -0,0 +1,38 @@ +import { Affine } from "../util" + +const pathValue = Symbol("pathValue") +export type PathValue = typeof pathValue + +export type PathBuilderStored = { + [K in PathValue]: [AllStore, Store] +} + +export type PathBuilder = (Store extends Record< + string, + unknown +> + ? { + [K in keyof Store]: PathBuilder + } + : {}) & + PathBuilderStored + +export type StorePath = string & Affine<"StorePath"> +const privateSymbol = Symbol("jsonPath") +export const extractJsonPath = (builder: PathBuilder) => { + return (builder as any)[privateSymbol] as StorePath +} + +export const pathBuilder = ( + paths: string[] = [], +): PathBuilder => { + return new Proxy({} as PathBuilder, { + get(target, prop) { + if (prop === privateSymbol) { + if (paths.length === 0) return "" + return `/${paths.join("/")}` + } + return pathBuilder([...paths, prop as string]) + }, + }) as PathBuilder +} diff --git a/sdk/lib/store/getStore.ts b/sdk/lib/store/getStore.ts index 4ea3a9419..38265c7fd 100644 --- a/sdk/lib/store/getStore.ts +++ b/sdk/lib/store/getStore.ts @@ -1,9 +1,10 @@ -import { Effects, EnsureStorePath } from "../types" +import { Effects } from "../types" +import { PathBuilder, extractJsonPath } from "./PathBuilder" -export class GetStore { +export class GetStore { constructor( readonly effects: Effects, - readonly path: Path & EnsureStorePath, + readonly path: PathBuilder, readonly options: { /** Defaults to what ever the package currently in */ packageId?: string | undefined @@ -14,9 +15,9 @@ export class GetStore { * Returns the value of Store at the provided path. Restart the service if the value changes */ const() { - return this.effects.store.get({ + return this.effects.store.get({ ...this.options, - path: this.path as any, + path: extractJsonPath(this.path), callback: this.effects.restart, }) } @@ -24,9 +25,9 @@ export class GetStore { * Returns the value of Store at the provided path. Does nothing if the value changes */ once() { - return this.effects.store.get({ + return this.effects.store.get({ ...this.options, - path: this.path as any, + path: extractJsonPath(this.path), callback: () => {}, }) } @@ -40,22 +41,22 @@ export class GetStore { const waitForNext = new Promise((resolve) => { callback = resolve }) - yield await this.effects.store.get({ + yield await this.effects.store.get({ ...this.options, - path: this.path as any, + path: extractJsonPath(this.path), callback: () => callback(), }) await waitForNext } } } -export function getStore( +export function getStore( effects: Effects, - path: Path & EnsureStorePath, + path: PathBuilder, options: { /** Defaults to what ever the package currently in */ packageId?: string | undefined } = {}, ) { - return new GetStore(effects, path as any, options) + return new GetStore(effects, path, options) } diff --git a/sdk/lib/store/setupExposeStore.ts b/sdk/lib/store/setupExposeStore.ts new file mode 100644 index 000000000..9272a9a6b --- /dev/null +++ b/sdk/lib/store/setupExposeStore.ts @@ -0,0 +1,12 @@ +import { Affine, _ } from "../util" +import { PathBuilder, extractJsonPath, pathBuilder } from "./PathBuilder" + +export type ExposedStorePaths = string[] & Affine<"ExposedStorePaths"> + +export const setupExposeStore = >( + fn: (pathBuilder: PathBuilder) => PathBuilder[], +) => { + return fn(pathBuilder()).map( + (x) => extractJsonPath(x) as string, + ) as ExposedStorePaths +} diff --git a/sdk/lib/test/configBuilder.test.ts b/sdk/lib/test/configBuilder.test.ts index cd14d6a18..2df40b95c 100644 --- a/sdk/lib/test/configBuilder.test.ts +++ b/sdk/lib/test/configBuilder.test.ts @@ -425,7 +425,9 @@ describe("values", () => { const value = Value.dynamicDatetime<{ test: "a" }>( async ({ effects }) => { ;async () => { - ;(await sdk.store.getOwn(effects, "/test").once()) satisfies "a" + ;(await sdk.store + .getOwn(effects, sdk.StorePath.test) + .once()) satisfies "a" } return { diff --git a/sdk/lib/test/startosTypeValidation.test.ts b/sdk/lib/test/startosTypeValidation.test.ts index 0bd78defa..f2e86de74 100644 --- a/sdk/lib/test/startosTypeValidation.test.ts +++ b/sdk/lib/test/startosTypeValidation.test.ts @@ -49,7 +49,6 @@ describe("startosTypeValidation ", () => { setConfigured: {} as SetConfigured, setHealth: {} as SetHealth, exposeForDependents: {} as ExposeForDependentsParams, - exposeUi: {} as { [key: string]: ExposedUI }, getSslCertificate: {} as GetSslCertificateParams, getSslKey: {} as GetSslKeyParams, getServiceInterface: {} as GetServiceInterfaceParams, diff --git a/sdk/lib/test/store.test.ts b/sdk/lib/test/store.test.ts index c41f3c85a..fa7bc4a4c 100644 --- a/sdk/lib/test/store.test.ts +++ b/sdk/lib/test/store.test.ts @@ -1,4 +1,5 @@ import { MainEffects, StartSdk } from "../StartSdk" +import { extractJsonPath } from "../store/PathBuilder" import { Effects } from "../types" type Store = { @@ -17,19 +18,21 @@ const sdk = StartSdk.of() .withStore() .build(true) +const storePath = sdk.StorePath + describe("Store", () => { test("types", async () => { ;async () => { - sdk.store.setOwn(todo(), "/config", { + sdk.store.setOwn(todo(), storePath.config, { someValue: "a", }) - sdk.store.setOwn(todo(), "/config/someValue", "b") - sdk.store.setOwn(todo(), "", { + sdk.store.setOwn(todo(), storePath.config.someValue, "b") + sdk.store.setOwn(todo(), storePath, { config: { someValue: "b" }, }) sdk.store.setOwn( todo(), - "/config/someValue", + storePath.config.someValue, // @ts-expect-error Type is wrong for the setting value 5, @@ -41,48 +44,42 @@ describe("Store", () => { "someValue", ) - todo().store.set({ - path: "/config/someValue", + todo().store.set({ + path: extractJsonPath(storePath.config.someValue), value: "b", }) todo().store.set({ - //@ts-expect-error Path is wrong - path: "/config/someValue", + path: extractJsonPath(storePath.config.someValue), //@ts-expect-error Path is wrong value: "someValueIn", }) - todo().store.set({ - //@ts-expect-error Path is wrong - path: "/config/some2Value", - value: "a", - }) ;(await sdk.store - .getOwn(todo(), "/config/someValue") + .getOwn(todo(), storePath.config.someValue) .const()) satisfies string ;(await sdk.store - .getOwn(todo(), "/config") + .getOwn(todo(), storePath.config) .const()) satisfies Store["config"] await sdk.store // @ts-expect-error Path is wrong .getOwn(todo(), "/config/somdsfeValue") .const() /// ----------------- ERRORS ----------------- - sdk.store.setOwn(todo(), "", { + sdk.store.setOwn(todo(), storePath, { // @ts-expect-error Type is wrong for the setting value config: { someValue: "notInAOrB" }, }) sdk.store.setOwn( todo(), - "/config/someValue", + sdk.StorePath.config.someValue, // @ts-expect-error Type is wrong for the setting value "notInAOrB", ) ;(await sdk.store - .getOwn(todo(), "/config/someValue") + .getOwn(todo(), storePath.config.someValue) // @ts-expect-error Const should normally not be callable .const()) satisfies string ;(await sdk.store - .getOwn(todo(), "/config") + .getOwn(todo(), storePath.config) // @ts-expect-error Const should normally not be callable .const()) satisfies Store["config"] await sdk.store // @ts-expect-error Path is wrong @@ -92,14 +89,14 @@ describe("Store", () => { /// ;(await sdk.store - .getOwn(todo(), "/config/someValue") + .getOwn(todo(), storePath.config.someValue) // @ts-expect-error satisfies type is wrong .const()) satisfies number - ;(await sdk.store // @ts-expect-error Path is wrong - .getOwn(todo(), "/config/") - .const()) satisfies Store["config"] - ;(await todo().store.get({ - path: "/config/someValue", + await sdk.store // @ts-expect-error Path is wrong + .getOwn(todo(), extractJsonPath(storePath.config)) + .const() + ;(await todo().store.get({ + path: extractJsonPath(storePath.config.someValue), callback: noop, })) satisfies string await todo().store.get({ diff --git a/sdk/lib/types.ts b/sdk/lib/types.ts index ee0574164..ce3143ab6 100644 --- a/sdk/lib/types.ts +++ b/sdk/lib/types.ts @@ -5,6 +5,8 @@ import { InputSpec } from "./config/configTypes" import { DependenciesReceipt } from "./config/setupConfig" import { BindOptions, Scheme } from "./interfaces/Host" import { Daemons } from "./mainFn/Daemons" +import { PathBuilder, StorePath } from "./store/PathBuilder" +import { ExposedStorePaths } from "./store/setupExposeStore" import { UrlString } from "./util/getServiceInterface" export { SDKManifest } from "./manifest/ManifestTypes" @@ -93,6 +95,10 @@ export namespace ExpectedExports { * that this service could use. */ export type dependencyConfig = Record + + export type Properties = (options: { + effects: Effects + }) => Promise } export type TimeMs = number export type VersionString = string @@ -249,31 +255,21 @@ export type ServiceInterfaceWithHostInfo = ServiceInterface & { hostInfo: HostInfo } -// prettier-ignore -export type ExposeAllServicePaths = - Store extends never ? string : - Store extends Record ? {[K in keyof Store & string]: ExposeAllServicePaths}[keyof Store & string] : - PreviousPath -// prettier-ignore -export type ExposeAllUiPaths = - Store extends Record ? {[K in keyof Store & string]: ExposeAllUiPaths}[keyof Store & string] : - Store extends string ? PreviousPath : - never export type ExposeServicePaths = { /** The path to the value in the Store. [JsonPath](https://jsonpath.com/) */ - paths: Store extends never ? string[] : ExposeAllServicePaths[] + paths: ExposedStorePaths } -export type ExposeUiPaths = +export type SdkPropertiesValue = | { type: "object" - value: { [k: string]: ExposeUiPaths } + value: { [k: string]: SdkPropertiesValue } description?: string } | { type: "string" - /** The path to the value in the Store. [JsonPath](https://jsonpath.com/) */ - path: ExposeAllUiPaths + /** Value */ + value: string /** A human readable description or explanation of the value */ description?: string /** (string/number only) Whether or not to mask the value, for example, when displaying a password */ @@ -283,16 +279,21 @@ export type ExposeUiPaths = /** (string/number only) Whether or not to include a button for displaying the value as a QR code */ qr?: boolean } -export type ExposeUiPathsAll = + +export type SdkPropertiesReturn = { + [key: string]: SdkPropertiesValue +} + +export type PropertiesValue = | { type: "object" - value: { [k: string]: ExposeUiPathsAll } + value: { [k: string]: PropertiesValue } description: string | null } | { type: "string" - /** The path to the value in the Store. [JsonPath](https://jsonpath.com/) */ - path: string + /** Value */ + value: string /** A human readable description or explanation of the value */ description: string | null /** (string/number only) Whether or not to mask the value, for example, when displaying a password */ @@ -303,6 +304,10 @@ export type ExposeUiPathsAll = qr: boolean | null } +export type PropertiesReturn = { + [key: string]: PropertiesValue +} + /** Used to reach out from the pure js runtime */ export type Effects = { executeAction(opts: { @@ -362,18 +367,18 @@ export type Effects = { store: { /** Get a value in a json like data, can be observed and subscribed */ - get(options: { + get(options: { /** If there is no packageId it is assumed the current package */ packageId?: string /** The path defaults to root level, using the [JsonPath](https://jsonpath.com/) */ - path: Path & EnsureStorePath + path: StorePath callback: (config: unknown, previousConfig: unknown) => void - }): Promise> + }): Promise /** Used to store values that can be accessed and subscribed to */ - set(options: { + set(options: { /** Sets the value for the wrapper at the path, it will override, using the [JsonPath](https://jsonpath.com/) */ - path: Path & EnsureStorePath - value: ExtractStore + path: StorePath + value: ExtractStore }): Promise } @@ -400,7 +405,6 @@ export type Effects = { exposeForDependents(options: { paths: string[] }): Promise - exposeUi(options: { [key: string]: ExposeUiPathsAll }): Promise /** * There are times that we want to see the addresses that where exported * @param options.addressId If we want to filter the address id @@ -525,22 +529,6 @@ export type Effects = { stopped(options: { packageId: string | null }): Promise } -// prettier-ignore -export type ExtractStore = - Path extends `/${infer A }/${infer Rest }` ? (A extends keyof Store ? ExtractStore : never) : - Path extends `/${infer A }` ? (A extends keyof Store ? Store[A] : never) : - Path extends '' ? Store : - never - -// prettier-ignore -type _EnsureStorePath = - Path extends`/${infer A }/${infer Rest}` ? (Store extends {[K in A & string]: infer NextStore} ? _EnsureStorePath : never) : - Path extends `/${infer A }` ? (Store extends {[K in A]: infer B} ? Origin : never) : - Path extends '' ? Origin : - never -// prettier-ignore -export type EnsureStorePath = _EnsureStorePath - /** rsync options: https://linux.die.net/man/1/rsync */ export type BackupOptions = { diff --git a/sdk/lib/util/index.ts b/sdk/lib/util/index.ts index aa69b9dc7..bd144f35a 100644 --- a/sdk/lib/util/index.ts +++ b/sdk/lib/util/index.ts @@ -23,6 +23,8 @@ export const isKnownError = (e: unknown): e is T.KnownError => declare const affine: unique symbol +export type Affine = { [affine]: A } + type NeverPossible = { [affine]: string } export type NoAny = NeverPossible extends A ? keyof NeverPossible extends keyof A