diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_Mjk0MjQ1NjA5 b/.aspect/rules/external_repository_action_cache/npm_translate_lock_Mjk0MjQ1NjA5 index 3ed6484fb..c25c84f81 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_Mjk0MjQ1NjA5 +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_Mjk0MjQ1NjA5 @@ -2,5 +2,5 @@ # Input hashes for repository rule npm_translate_lock(name = "npm", pnpm_lock = "//web:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. web/.npmrc=-592547263 -web/pnpm-lock.yaml=650287389 -web/package.json=-1951177577 +web/pnpm-lock.yaml=617050615 +web/package.json=1641941332 diff --git a/Cargo.bzl.lock b/Cargo.bzl.lock index 1c4b21101..24344121e 100644 --- a/Cargo.bzl.lock +++ b/Cargo.bzl.lock @@ -1,5 +1,5 @@ { - "checksum": "93a0ff13829e56a960acc76805cc729c50f6826a7453333e31cce58052d0cdac", + "checksum": "da1410dc3f3529097e6278705a99a983f3261ad19d02d7a665cd1cbfce81a537", "crates": { "addr2line 0.20.0": { "name": "addr2line", @@ -3316,53 +3316,6 @@ }, "license": "MIT OR Apache-2.0" }, - "bollard-stubs 1.41.0": { - "name": "bollard-stubs", - "version": "1.41.0", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/bollard-stubs/1.41.0/download", - "sha256": "ed2f2e73fffe9455141e170fb9c1feb0ac521ec7e7dcd47a7cab72a658490fb8" - } - }, - "targets": [ - { - "Library": { - "crate_name": "bollard_stubs", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "bollard_stubs", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "chrono 0.4.26", - "target": "chrono" - }, - { - "id": "serde 1.0.171", - "target": "serde" - }, - { - "id": "serde_with 1.14.0", - "target": "serde_with" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "1.41.0" - }, - "license": "Apache-2.0" - }, "bumpalo 3.13.0": { "name": "bumpalo", "version": "3.13.0", @@ -3632,6 +3585,10 @@ "id": "eyre 0.6.8", "target": "eyre" }, + { + "id": "promptly 0.3.1", + "target": "promptly" + }, { "id": "serde_json 1.0.100", "target": "serde_json" @@ -3640,6 +3597,14 @@ "id": "serde_yaml 0.9.22", "target": "serde_yaml" }, + { + "id": "simple_tables 0.3.0", + "target": "simple_tables" + }, + { + "id": "sqlx 0.7.1", + "target": "sqlx" + }, { "id": "sysinfo 0.29.4", "target": "sysinfo" @@ -3745,7 +3710,7 @@ "target": "serde" }, { - "id": "sqlx 0.7.0", + "id": "sqlx 0.7.1", "target": "sqlx" }, { @@ -3890,6 +3855,15 @@ "**/*.rs" ] } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } } ], "library_target_name": "charted_database", @@ -3903,6 +3877,10 @@ "id": "argon2 0.5.1", "target": "argon2" }, + { + "id": "charted-database 0.0.0-devel.0", + "target": "build_script_build" + }, { "id": "eyre 0.6.8", "target": "eyre" @@ -3924,7 +3902,7 @@ "target": "serde" }, { - "id": "sqlx 0.7.0", + "id": "sqlx 0.7.1", "target": "sqlx" }, { @@ -3954,6 +3932,11 @@ }, "version": "0.0.0-devel.0" }, + "build_script_attrs": { + "data_glob": [ + "**" + ] + }, "license": null }, "charted-helm-charts 0.0.0-devel.0": { @@ -4353,7 +4336,7 @@ "target": "serde_yaml" }, { - "id": "sqlx 0.7.0", + "id": "sqlx 0.7.1", "target": "sqlx" }, { @@ -4451,78 +4434,6 @@ }, "license": null }, - "charted-testcontainers 0.0.0-devel.0": { - "name": "charted-testcontainers", - "version": "0.0.0-devel.0", - "repository": null, - "targets": [ - { - "Library": { - "crate_name": "charted_testcontainers", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "charted_testcontainers", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "testcontainers 0.14.0", - "target": "testcontainers" - } - ], - "selects": {} - }, - "edition": "2021", - "version": "0.0.0-devel.0" - }, - "license": null - }, - "charted-testcontainers-macros 0.0.0-devel.0": { - "name": "charted-testcontainers-macros", - "version": "0.0.0-devel.0", - "repository": null, - "targets": [ - { - "ProcMacro": { - "crate_name": "charted_testcontainers_macros", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "charted_testcontainers_macros", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "quote 1.0.29", - "target": "quote" - }, - { - "id": "syn 2.0.25", - "target": "syn" - } - ], - "selects": {} - }, - "edition": "2021", - "version": "0.0.0-devel.0" - }, - "license": null - }, "chrono 0.4.26": { "name": "chrono", "version": "0.4.26", @@ -4876,6 +4787,55 @@ }, "license": "MIT OR Apache-2.0" }, + "clipboard-win 4.5.0": { + "name": "clipboard-win", + "version": "4.5.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/clipboard-win/4.5.0/download", + "sha256": "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362" + } + }, + "targets": [ + { + "Library": { + "crate_name": "clipboard_win", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "clipboard_win", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [], + "selects": { + "cfg(windows)": [ + { + "id": "error-code 2.3.1", + "target": "error_code" + }, + { + "id": "str-buf 1.0.6", + "target": "str_buf" + }, + { + "id": "winapi 0.3.9", + "target": "winapi" + } + ] + } + }, + "edition": "2018", + "version": "4.5.0" + }, + "license": "BSL-1.0" + }, "color-eyre 0.6.2": { "name": "color-eyre", "version": "0.6.2", @@ -5835,61 +5795,6 @@ }, "license": "MIT OR Apache-2.0" }, - "darling 0.13.4": { - "name": "darling", - "version": "0.13.4", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/darling/0.13.4/download", - "sha256": "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" - } - }, - "targets": [ - { - "Library": { - "crate_name": "darling", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "darling", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "crate_features": { - "common": [ - "default", - "suggestions" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "darling_core 0.13.4", - "target": "darling_core" - } - ], - "selects": {} - }, - "edition": "2018", - "proc_macro_deps": { - "common": [ - { - "id": "darling_macro 0.13.4", - "target": "darling_macro" - } - ], - "selects": {} - }, - "version": "0.13.4" - }, - "license": "MIT" - }, "darling 0.14.4": { "name": "darling", "version": "0.14.4", @@ -5945,13 +5850,13 @@ }, "license": "MIT" }, - "darling_core 0.13.4": { + "darling_core 0.14.4": { "name": "darling_core", - "version": "0.13.4", + "version": "0.14.4", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/darling_core/0.13.4/download", - "sha256": "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" + "url": "https://crates.io/api/v1/crates/darling_core/0.14.4/download", + "sha256": "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" } }, "targets": [ @@ -6007,23 +5912,23 @@ "selects": {} }, "edition": "2018", - "version": "0.13.4" + "version": "0.14.4" }, "license": "MIT" }, - "darling_core 0.14.4": { - "name": "darling_core", + "darling_macro 0.14.4": { + "name": "darling_macro", "version": "0.14.4", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/darling_core/0.14.4/download", - "sha256": "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" + "url": "https://crates.io/api/v1/crates/darling_macro/0.14.4/download", + "sha256": "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" } }, "targets": [ { - "Library": { - "crate_name": "darling_core", + "ProcMacro": { + "crate_name": "darling_macro", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -6031,40 +5936,21 @@ } } ], - "library_target_name": "darling_core", + "library_target_name": "darling_macro", "common_attrs": { "compile_data_glob": [ "**" ], - "crate_features": { - "common": [ - "strsim", - "suggestions" - ], - "selects": {} - }, "deps": { "common": [ { - "id": "fnv 1.0.7", - "target": "fnv" - }, - { - "id": "ident_case 1.0.1", - "target": "ident_case" - }, - { - "id": "proc-macro2 1.0.63", - "target": "proc_macro2" + "id": "darling_core 0.14.4", + "target": "darling_core" }, { "id": "quote 1.0.29", "target": "quote" }, - { - "id": "strsim 0.10.0", - "target": "strsim" - }, { "id": "syn 1.0.109", "target": "syn" @@ -6077,107 +5963,13 @@ }, "license": "MIT" }, - "darling_macro 0.13.4": { - "name": "darling_macro", - "version": "0.13.4", + "debugid 0.8.0": { + "name": "debugid", + "version": "0.8.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/darling_macro/0.13.4/download", - "sha256": "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" - } - }, - "targets": [ - { - "ProcMacro": { - "crate_name": "darling_macro", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "darling_macro", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "darling_core 0.13.4", - "target": "darling_core" - }, - { - "id": "quote 1.0.29", - "target": "quote" - }, - { - "id": "syn 1.0.109", - "target": "syn" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "0.13.4" - }, - "license": "MIT" - }, - "darling_macro 0.14.4": { - "name": "darling_macro", - "version": "0.14.4", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/darling_macro/0.14.4/download", - "sha256": "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" - } - }, - "targets": [ - { - "ProcMacro": { - "crate_name": "darling_macro", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "darling_macro", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "darling_core 0.14.4", - "target": "darling_core" - }, - { - "id": "quote 1.0.29", - "target": "quote" - }, - { - "id": "syn 1.0.109", - "target": "syn" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "0.14.4" - }, - "license": "MIT" - }, - "debugid 0.8.0": { - "name": "debugid", - "version": "0.8.0", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/debugid/0.8.0/download", - "sha256": "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" + "url": "https://crates.io/api/v1/crates/debugid/0.8.0/download", + "sha256": "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" } }, "targets": [ @@ -6509,6 +6301,49 @@ }, "license": "MIT OR Apache-2.0" }, + "dirs-next 2.0.0": { + "name": "dirs-next", + "version": "2.0.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/dirs-next/2.0.0/download", + "sha256": "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" + } + }, + "targets": [ + { + "Library": { + "crate_name": "dirs_next", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "dirs_next", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "cfg-if 1.0.0", + "target": "cfg_if" + }, + { + "id": "dirs-sys-next 0.1.2", + "target": "dirs_sys_next" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "2.0.0" + }, + "license": "MIT OR Apache-2.0" + }, "dirs-sys 0.4.1": { "name": "dirs-sys", "version": "0.4.1", @@ -6567,6 +6402,59 @@ }, "license": "MIT OR Apache-2.0" }, + "dirs-sys-next 0.1.2": { + "name": "dirs-sys-next", + "version": "0.1.2", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/dirs-sys-next/0.1.2/download", + "sha256": "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" + } + }, + "targets": [ + { + "Library": { + "crate_name": "dirs_sys_next", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "dirs_sys_next", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [], + "selects": { + "cfg(target_os = \"redox\")": [ + { + "id": "redox_users 0.4.3", + "target": "redox_users" + } + ], + "cfg(unix)": [ + { + "id": "libc 0.2.147", + "target": "libc" + } + ], + "cfg(windows)": [ + { + "id": "winapi 0.3.9", + "target": "winapi" + } + ] + } + }, + "edition": "2018", + "version": "0.1.2" + }, + "license": "MIT OR Apache-2.0" + }, "dotenv 0.15.0": { "name": "dotenv", "version": "0.15.0", @@ -6720,6 +6608,36 @@ }, "license": "(Apache-2.0 OR MIT) AND BSD-3-Clause" }, + "endian-type 0.1.2": { + "name": "endian-type", + "version": "0.1.2", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/endian-type/0.1.2/download", + "sha256": "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + } + }, + "targets": [ + { + "Library": { + "crate_name": "endian_type", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "endian_type", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "edition": "2015", + "version": "0.1.2" + }, + "license": "MIT" + }, "equivalent 1.0.0": { "name": "equivalent", "version": "1.0.0", @@ -6881,6 +6799,49 @@ }, "license": "MIT" }, + "error-code 2.3.1": { + "name": "error-code", + "version": "2.3.1", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/error-code/2.3.1/download", + "sha256": "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21" + } + }, + "targets": [ + { + "Library": { + "crate_name": "error_code", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "error_code", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "libc 0.2.147", + "target": "libc" + }, + { + "id": "str-buf 1.0.6", + "target": "str_buf" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "2.3.1" + }, + "license": "BSL-1.0" + }, "etcetera 0.8.0": { "name": "etcetera", "version": "0.8.0", @@ -7101,6 +7062,58 @@ }, "license": "Apache-2.0 OR MIT" }, + "fd-lock 3.0.13": { + "name": "fd-lock", + "version": "3.0.13", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/fd-lock/3.0.13/download", + "sha256": "ef033ed5e9bad94e55838ca0ca906db0e043f517adda0c8b79c7a8c66c93c1b5" + } + }, + "targets": [ + { + "Library": { + "crate_name": "fd_lock", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "fd_lock", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "cfg-if 1.0.0", + "target": "cfg_if" + } + ], + "selects": { + "cfg(unix)": [ + { + "id": "rustix 0.38.2", + "target": "rustix" + } + ], + "cfg(windows)": [ + { + "id": "windows-sys 0.48.0", + "target": "windows_sys" + } + ] + } + }, + "edition": "2018", + "version": "3.0.13" + }, + "license": "MIT OR Apache-2.0" + }, "findshlibs 0.10.2": { "name": "findshlibs", "version": "0.10.2", @@ -10572,6 +10585,74 @@ }, "license": "Unlicense/MIT" }, + "memoffset 0.6.5": { + "name": "memoffset", + "version": "0.6.5", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/memoffset/0.6.5/download", + "sha256": "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" + } + }, + "targets": [ + { + "Library": { + "crate_name": "memoffset", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + }, + { + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "memoffset", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "memoffset 0.6.5", + "target": "build_script_build" + } + ], + "selects": {} + }, + "edition": "2015", + "version": "0.6.5" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "autocfg 1.1.0", + "target": "autocfg" + } + ], + "selects": {} + } + }, + "license": "MIT" + }, "memoffset 0.9.0": { "name": "memoffset", "version": "0.9.0", @@ -10977,16 +11058,146 @@ } }, { - "BuildScript": { - "crate_name": "build_script_build", - "crate_root": "build.rs", + "BuildScript": { + "crate_name": "build_script_build", + "crate_root": "build.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "native_tls", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "native-tls 0.2.11", + "target": "build_script_build" + } + ], + "selects": { + "cfg(any(target_os = \"macos\", target_os = \"ios\"))": [ + { + "id": "lazy_static 1.4.0", + "target": "lazy_static" + }, + { + "id": "libc 0.2.147", + "target": "libc" + }, + { + "id": "security-framework 2.9.1", + "target": "security_framework" + }, + { + "id": "security-framework-sys 2.9.0", + "target": "security_framework_sys" + }, + { + "id": "tempfile 3.6.0", + "target": "tempfile" + } + ], + "cfg(not(any(target_os = \"windows\", target_os = \"macos\", target_os = \"ios\")))": [ + { + "id": "log 0.4.19", + "target": "log" + }, + { + "id": "openssl 0.10.55", + "target": "openssl" + }, + { + "id": "openssl-probe 0.1.5", + "target": "openssl_probe" + }, + { + "id": "openssl-sys 0.9.90", + "target": "openssl_sys" + } + ], + "cfg(target_os = \"windows\")": [ + { + "id": "schannel 0.1.22", + "target": "schannel" + } + ] + } + }, + "edition": "2015", + "version": "0.2.11" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ] + }, + "license": "MIT/Apache-2.0" + }, + "nibble_vec 0.1.0": { + "name": "nibble_vec", + "version": "0.1.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/nibble_vec/0.1.0/download", + "sha256": "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" + } + }, + "targets": [ + { + "Library": { + "crate_name": "nibble_vec", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "nibble_vec", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "smallvec 1.10.0", + "target": "smallvec" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.1.0" + }, + "license": "MIT" + }, + "nix 0.23.2": { + "name": "nix", + "version": "0.23.2", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/nix/0.23.2/download", + "sha256": "8f3790c00a0150112de0f4cd161e3d7fc4b2d8a5542ffc35f099a2562aecb35c" + } + }, + "targets": [ + { + "Library": { + "crate_name": "nix", + "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" ] } } ], - "library_target_name": "native_tls", + "library_target_name": "nix", "common_attrs": { "compile_data_glob": [ "**" @@ -10994,68 +11205,31 @@ "deps": { "common": [ { - "id": "native-tls 0.2.11", - "target": "build_script_build" + "id": "bitflags 1.3.2", + "target": "bitflags" + }, + { + "id": "cfg-if 1.0.0", + "target": "cfg_if" + }, + { + "id": "libc 0.2.147", + "target": "libc" } ], "selects": { - "cfg(any(target_os = \"macos\", target_os = \"ios\"))": [ - { - "id": "lazy_static 1.4.0", - "target": "lazy_static" - }, - { - "id": "libc 0.2.147", - "target": "libc" - }, - { - "id": "security-framework 2.9.1", - "target": "security_framework" - }, - { - "id": "security-framework-sys 2.9.0", - "target": "security_framework_sys" - }, - { - "id": "tempfile 3.6.0", - "target": "tempfile" - } - ], - "cfg(not(any(target_os = \"windows\", target_os = \"macos\", target_os = \"ios\")))": [ - { - "id": "log 0.4.19", - "target": "log" - }, - { - "id": "openssl 0.10.55", - "target": "openssl" - }, - { - "id": "openssl-probe 0.1.5", - "target": "openssl_probe" - }, - { - "id": "openssl-sys 0.9.90", - "target": "openssl_sys" - } - ], - "cfg(target_os = \"windows\")": [ + "cfg(not(target_os = \"redox\"))": [ { - "id": "schannel 0.1.22", - "target": "schannel" + "id": "memoffset 0.6.5", + "target": "memoffset" } ] } }, - "edition": "2015", - "version": "0.2.11" - }, - "build_script_attrs": { - "data_glob": [ - "**" - ] + "edition": "2018", + "version": "0.23.2" }, - "license": "MIT/Apache-2.0" + "license": "MIT" }, "nom 7.1.3": { "name": "nom", @@ -12937,6 +13111,51 @@ }, "license": "MIT OR Apache-2.0" }, + "promptly 0.3.1": { + "name": "promptly", + "version": "0.3.1", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/promptly/0.3.1/download", + "sha256": "9acbc6c5a5b029fe58342f58445acb00ccfe24624e538894bc2f04ce112980ba" + } + }, + "targets": [ + { + "Library": { + "crate_name": "promptly", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "promptly", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "rustyline 9.1.2", + "target": "rustyline" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.3.1" + }, + "license": "MIT" + }, "quote 1.0.29": { "name": "quote", "version": "1.0.29", @@ -13001,6 +13220,49 @@ }, "license": "MIT OR Apache-2.0" }, + "radix_trie 0.2.1": { + "name": "radix_trie", + "version": "0.2.1", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/radix_trie/0.2.1/download", + "sha256": "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" + } + }, + "targets": [ + { + "Library": { + "crate_name": "radix_trie", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "radix_trie", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "endian-type 0.1.2", + "target": "endian_type" + }, + { + "id": "nibble_vec 0.1.0", + "target": "nibble_vec" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.2.1" + }, + "license": "MIT" + }, "rand 0.8.5": { "name": "rand", "version": "0.8.5", @@ -14533,7 +14795,71 @@ "termios", "use-libc-auxv" ], - "selects": {} + "selects": { + "aarch64-apple-darwin": [ + "fs" + ], + "aarch64-apple-ios": [ + "fs" + ], + "aarch64-apple-ios-sim": [ + "fs" + ], + "aarch64-fuchsia": [ + "fs" + ], + "aarch64-linux-android": [ + "fs" + ], + "aarch64-unknown-linux-gnu": [ + "fs" + ], + "arm-unknown-linux-gnueabi": [ + "fs" + ], + "armv7-linux-androideabi": [ + "fs" + ], + "armv7-unknown-linux-gnueabi": [ + "fs" + ], + "i686-apple-darwin": [ + "fs" + ], + "i686-linux-android": [ + "fs" + ], + "i686-unknown-freebsd": [ + "fs" + ], + "i686-unknown-linux-gnu": [ + "fs" + ], + "powerpc-unknown-linux-gnu": [ + "fs" + ], + "s390x-unknown-linux-gnu": [ + "fs" + ], + "x86_64-apple-darwin": [ + "fs" + ], + "x86_64-apple-ios": [ + "fs" + ], + "x86_64-fuchsia": [ + "fs" + ], + "x86_64-linux-android": [ + "fs" + ], + "x86_64-unknown-freebsd": [ + "fs" + ], + "x86_64-unknown-linux-gnu": [ + "fs" + ] + } }, "deps": { "common": [ @@ -14805,21 +15131,133 @@ "deps": { "common": [ { - "id": "rustversion 1.0.13", - "target": "build_script_build" + "id": "rustversion 1.0.13", + "target": "build_script_build" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "1.0.13" + }, + "build_script_attrs": { + "data_glob": [ + "**" + ] + }, + "license": "MIT OR Apache-2.0" + }, + "rustyline 9.1.2": { + "name": "rustyline", + "version": "9.1.2", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/rustyline/9.1.2/download", + "sha256": "db7826789c0e25614b03e5a54a0717a86f9ff6e6e5247f92b369472869320039" + } + }, + "targets": [ + { + "Library": { + "crate_name": "rustyline", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "rustyline", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default", + "dirs-next", + "with-dirs" + ], + "selects": {} + }, + "deps": { + "common": [ + { + "id": "bitflags 1.3.2", + "target": "bitflags" + }, + { + "id": "cfg-if 1.0.0", + "target": "cfg_if" + }, + { + "id": "dirs-next 2.0.0", + "target": "dirs_next" + }, + { + "id": "fd-lock 3.0.13", + "target": "fd_lock" + }, + { + "id": "libc 0.2.147", + "target": "libc" + }, + { + "id": "log 0.4.19", + "target": "log" + }, + { + "id": "memchr 2.5.0", + "target": "memchr" + }, + { + "id": "radix_trie 0.2.1", + "target": "radix_trie" + }, + { + "id": "smallvec 1.10.0", + "target": "smallvec" + }, + { + "id": "unicode-segmentation 1.10.1", + "target": "unicode_segmentation" + }, + { + "id": "unicode-width 0.1.10", + "target": "unicode_width" } ], - "selects": {} + "selects": { + "cfg(unix)": [ + { + "id": "nix 0.23.2", + "target": "nix" + }, + { + "id": "utf8parse 0.2.1", + "target": "utf8parse" + } + ], + "cfg(windows)": [ + { + "id": "clipboard-win 4.5.0", + "target": "clipboard_win" + }, + { + "id": "scopeguard 1.1.0", + "target": "scopeguard" + }, + { + "id": "winapi 0.3.9", + "target": "winapi" + } + ] + } }, "edition": "2018", - "version": "1.0.13" + "version": "9.1.2" }, - "build_script_attrs": { - "data_glob": [ - "**" - ] - }, - "license": "MIT OR Apache-2.0" + "license": "MIT" }, "ryu 1.0.14": { "name": "ryu", @@ -14915,6 +15353,23 @@ "compile_data_glob": [ "**" ], + "crate_features": { + "common": [], + "selects": { + "aarch64-pc-windows-msvc": [ + "default", + "use_std" + ], + "i686-pc-windows-msvc": [ + "default", + "use_std" + ], + "x86_64-pc-windows-msvc": [ + "default", + "use_std" + ] + } + }, "edition": "2015", "version": "1.1.0" }, @@ -16029,113 +16484,6 @@ }, "license": "MIT/Apache-2.0" }, - "serde_with 1.14.0": { - "name": "serde_with", - "version": "1.14.0", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/serde_with/1.14.0/download", - "sha256": "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" - } - }, - "targets": [ - { - "Library": { - "crate_name": "serde_with", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "serde_with", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "crate_features": { - "common": [ - "default", - "macros", - "serde_with_macros" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "serde 1.0.171", - "target": "serde" - } - ], - "selects": {} - }, - "edition": "2018", - "proc_macro_deps": { - "common": [ - { - "id": "serde_with_macros 1.5.2", - "target": "serde_with_macros" - } - ], - "selects": {} - }, - "version": "1.14.0" - }, - "license": "MIT OR Apache-2.0" - }, - "serde_with_macros 1.5.2": { - "name": "serde_with_macros", - "version": "1.5.2", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/serde_with_macros/1.5.2/download", - "sha256": "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" - } - }, - "targets": [ - { - "ProcMacro": { - "crate_name": "serde_with_macros", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "serde_with_macros", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "darling 0.13.4", - "target": "darling" - }, - { - "id": "proc-macro2 1.0.63", - "target": "proc_macro2" - }, - { - "id": "quote 1.0.29", - "target": "quote" - }, - { - "id": "syn 1.0.109", - "target": "syn" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "1.5.2" - }, - "license": "MIT OR Apache-2.0" - }, "serde_yaml 0.9.22": { "name": "serde_yaml", "version": "0.9.22", @@ -16333,21 +16681,142 @@ "edition": "2018", "version": "0.10.7" }, - "license": "MIT OR Apache-2.0" + "license": "MIT OR Apache-2.0" + }, + "sharded-slab 0.1.4": { + "name": "sharded-slab", + "version": "0.1.4", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/sharded-slab/0.1.4/download", + "sha256": "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" + } + }, + "targets": [ + { + "Library": { + "crate_name": "sharded_slab", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "sharded_slab", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "lazy_static 1.4.0", + "target": "lazy_static" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.1.4" + }, + "license": "MIT" + }, + "signal-hook-registry 1.4.1": { + "name": "signal-hook-registry", + "version": "1.4.1", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/signal-hook-registry/1.4.1/download", + "sha256": "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" + } + }, + "targets": [ + { + "Library": { + "crate_name": "signal_hook_registry", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "signal_hook_registry", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "libc 0.2.147", + "target": "libc" + } + ], + "selects": {} + }, + "edition": "2015", + "version": "1.4.1" + }, + "license": "Apache-2.0/MIT" + }, + "signature 2.1.0": { + "name": "signature", + "version": "2.1.0", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/signature/2.1.0/download", + "sha256": "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" + } + }, + "targets": [ + { + "Library": { + "crate_name": "signature", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "signature", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "digest 0.10.7", + "target": "digest" + }, + { + "id": "rand_core 0.6.4", + "target": "rand_core" + } + ], + "selects": {} + }, + "edition": "2021", + "version": "2.1.0" + }, + "license": "Apache-2.0 OR MIT" }, - "sharded-slab 0.1.4": { - "name": "sharded-slab", - "version": "0.1.4", + "simple_tables 0.3.0": { + "name": "simple_tables", + "version": "0.3.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/sharded-slab/0.1.4/download", - "sha256": "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" + "url": "https://crates.io/api/v1/crates/simple_tables/0.3.0/download", + "sha256": "a1248aa113774f3193c5ad090ee8a429005d32fcdb722f114dce7a74356cce4c" } }, "targets": [ { "Library": { - "crate_name": "sharded_slab", + "crate_name": "simple_tables", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -16355,7 +16824,7 @@ } } ], - "library_target_name": "sharded_slab", + "library_target_name": "simple_tables", "common_attrs": { "compile_data_glob": [ "**" @@ -16363,30 +16832,39 @@ "deps": { "common": [ { - "id": "lazy_static 1.4.0", - "target": "lazy_static" + "id": "simple_tables-core 0.3.0", + "target": "simple_tables_core" } ], "selects": {} }, - "edition": "2018", - "version": "0.1.4" + "edition": "2021", + "proc_macro_deps": { + "common": [ + { + "id": "simple_tables-derive 0.3.0", + "target": "simple_tables_derive" + } + ], + "selects": {} + }, + "version": "0.3.0" }, - "license": "MIT" + "license": "MIT OR Apache-2.0" }, - "signal-hook-registry 1.4.1": { - "name": "signal-hook-registry", - "version": "1.4.1", + "simple_tables-core 0.3.0": { + "name": "simple_tables-core", + "version": "0.3.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/signal-hook-registry/1.4.1/download", - "sha256": "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" + "url": "https://crates.io/api/v1/crates/simple_tables-core/0.3.0/download", + "sha256": "3e7d16173bdde70a696f9eaf1b49bb38f41ea7445c800ab46e6d8ac08c157551" } }, "targets": [ { "Library": { - "crate_name": "signal_hook_registry", + "crate_name": "simple_tables_core", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -16394,38 +16872,29 @@ } } ], - "library_target_name": "signal_hook_registry", + "library_target_name": "simple_tables_core", "common_attrs": { "compile_data_glob": [ "**" ], - "deps": { - "common": [ - { - "id": "libc 0.2.147", - "target": "libc" - } - ], - "selects": {} - }, - "edition": "2015", - "version": "1.4.1" + "edition": "2021", + "version": "0.3.0" }, - "license": "Apache-2.0/MIT" + "license": "MIT OR Apache-2.0" }, - "signature 2.1.0": { - "name": "signature", - "version": "2.1.0", + "simple_tables-derive 0.3.0": { + "name": "simple_tables-derive", + "version": "0.3.0", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/signature/2.1.0/download", - "sha256": "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" + "url": "https://crates.io/api/v1/crates/simple_tables-derive/0.3.0/download", + "sha256": "add2dda7ba63477aabd1ff151a8f570ebbea9c12444d07bf6ec1a7c5858bd0e7" } }, "targets": [ { - "Library": { - "crate_name": "signature", + "ProcMacro": { + "crate_name": "simple_tables_derive", "crate_root": "src/lib.rs", "srcs": [ "**/*.rs" @@ -16433,7 +16902,7 @@ } } ], - "library_target_name": "signature", + "library_target_name": "simple_tables_derive", "common_attrs": { "compile_data_glob": [ "**" @@ -16441,20 +16910,28 @@ "deps": { "common": [ { - "id": "digest 0.10.7", - "target": "digest" + "id": "proc-macro2 1.0.63", + "target": "proc_macro2" }, { - "id": "rand_core 0.6.4", - "target": "rand_core" + "id": "quote 1.0.29", + "target": "quote" + }, + { + "id": "simple_tables-core 0.3.0", + "target": "simple_tables_core" + }, + { + "id": "syn 1.0.109", + "target": "syn" } ], "selects": {} }, "edition": "2021", - "version": "2.1.0" + "version": "0.3.0" }, - "license": "Apache-2.0 OR MIT" + "license": "MIT OR Apache-2.0" }, "slab 0.4.8": { "name": "slab", @@ -16771,13 +17248,13 @@ }, "license": "MIT OR Apache-2.0" }, - "sqlx 0.7.0": { + "sqlx 0.7.1": { "name": "sqlx", - "version": "0.7.0", + "version": "0.7.1", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/sqlx/0.7.0/download", - "sha256": "91ef53c86d2066e04f0ac6b1364f16d13d82388e2d07f11a5c71782345555761" + "url": "https://crates.io/api/v1/crates/sqlx/0.7.1/download", + "sha256": "8e58421b6bc416714d5115a2ca953718f6c621a51b68e4f4922aea5a4391a721" } }, "targets": [ @@ -16816,11 +17293,11 @@ "deps": { "common": [ { - "id": "sqlx-core 0.7.0", + "id": "sqlx-core 0.7.1", "target": "sqlx_core" }, { - "id": "sqlx-postgres 0.7.0", + "id": "sqlx-postgres 0.7.1", "target": "sqlx_postgres" } ], @@ -16830,23 +17307,23 @@ "proc_macro_deps": { "common": [ { - "id": "sqlx-macros 0.7.0", + "id": "sqlx-macros 0.7.1", "target": "sqlx_macros" } ], "selects": {} }, - "version": "0.7.0" + "version": "0.7.1" }, "license": "MIT OR Apache-2.0" }, - "sqlx-core 0.7.0": { + "sqlx-core 0.7.1": { "name": "sqlx-core", - "version": "0.7.0", + "version": "0.7.1", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/sqlx-core/0.7.0/download", - "sha256": "8a22fd81e9c1ad53c562edb869ff042b215d4eadefefc4784bacfbfd19835945" + "url": "https://crates.io/api/v1/crates/sqlx-core/0.7.1/download", + "sha256": "dd4cef4251aabbae751a3710927945901ee1d97ee96d757f6880ebb9a79bfd53" } }, "targets": [ @@ -17032,17 +17509,17 @@ ], "selects": {} }, - "version": "0.7.0" + "version": "0.7.1" }, "license": "MIT OR Apache-2.0" }, - "sqlx-macros 0.7.0": { + "sqlx-macros 0.7.1": { "name": "sqlx-macros", - "version": "0.7.0", + "version": "0.7.1", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/sqlx-macros/0.7.0/download", - "sha256": "00bb7c096a202b8164c175614cbfb79fe0e1e0a3d50e0374526183ef2974e4a2" + "url": "https://crates.io/api/v1/crates/sqlx-macros/0.7.1/download", + "sha256": "208e3165167afd7f3881b16c1ef3f2af69fa75980897aac8874a0696516d12c2" } }, "targets": [ @@ -17084,11 +17561,11 @@ "target": "quote" }, { - "id": "sqlx-core 0.7.0", + "id": "sqlx-core 0.7.1", "target": "sqlx_core" }, { - "id": "sqlx-macros-core 0.7.0", + "id": "sqlx-macros-core 0.7.1", "target": "sqlx_macros_core" }, { @@ -17099,17 +17576,17 @@ "selects": {} }, "edition": "2021", - "version": "0.7.0" + "version": "0.7.1" }, "license": "MIT OR Apache-2.0" }, - "sqlx-macros-core 0.7.0": { + "sqlx-macros-core 0.7.1": { "name": "sqlx-macros-core", - "version": "0.7.0", + "version": "0.7.1", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/sqlx-macros-core/0.7.0/download", - "sha256": "37d644623ab9699014e5b3cb61a040d16caa50fd477008f63f1399ae35498a58" + "url": "https://crates.io/api/v1/crates/sqlx-macros-core/0.7.1/download", + "sha256": "8a4a8336d278c62231d87f24e8a7a74898156e34c1c18942857be2acb29c7dfc" } }, "targets": [ @@ -17185,11 +17662,11 @@ "target": "sha2" }, { - "id": "sqlx-core 0.7.0", + "id": "sqlx-core 0.7.1", "target": "sqlx_core" }, { - "id": "sqlx-postgres 0.7.0", + "id": "sqlx-postgres 0.7.1", "target": "sqlx_postgres" }, { @@ -17212,17 +17689,17 @@ "selects": {} }, "edition": "2021", - "version": "0.7.0" + "version": "0.7.1" }, "license": "MIT OR Apache-2.0" }, - "sqlx-mysql 0.7.0": { + "sqlx-mysql 0.7.1": { "name": "sqlx-mysql", - "version": "0.7.0", + "version": "0.7.1", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/sqlx-mysql/0.7.0/download", - "sha256": "8264c59b28b6858796acfcedc660aa4c9075cc6e4ec8eb03cdca2a3e725726db" + "url": "https://crates.io/api/v1/crates/sqlx-mysql/0.7.1/download", + "sha256": "8ca69bf415b93b60b80dc8fda3cb4ef52b2336614d8da2de5456cc942a110482" } }, "targets": [ @@ -17364,7 +17841,7 @@ "target": "smallvec" }, { - "id": "sqlx-core 0.7.0", + "id": "sqlx-core 0.7.1", "target": "sqlx_core" }, { @@ -17387,17 +17864,17 @@ "selects": {} }, "edition": "2021", - "version": "0.7.0" + "version": "0.7.1" }, "license": "MIT OR Apache-2.0" }, - "sqlx-postgres 0.7.0": { + "sqlx-postgres 0.7.1": { "name": "sqlx-postgres", - "version": "0.7.0", + "version": "0.7.1", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/sqlx-postgres/0.7.0/download", - "sha256": "1cab6147b81ca9213a7578f1b4c9d24c449a53953cd2222a7b5d7cd29a5c3139" + "url": "https://crates.io/api/v1/crates/sqlx-postgres/0.7.1/download", + "sha256": "a0db2df1b8731c3651e204629dd55e52adbae0462fa1bdcbed56a2302c18181e" } }, "targets": [ @@ -17533,7 +18010,7 @@ "target": "smallvec" }, { - "id": "sqlx-core 0.7.0", + "id": "sqlx-core 0.7.1", "target": "sqlx_core" }, { @@ -17563,17 +18040,17 @@ } }, "edition": "2021", - "version": "0.7.0" + "version": "0.7.1" }, "license": "MIT OR Apache-2.0" }, - "sqlx-sqlite 0.7.0": { + "sqlx-sqlite 0.7.1": { "name": "sqlx-sqlite", - "version": "0.7.0", + "version": "0.7.1", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/sqlx-sqlite/0.7.0/download", - "sha256": "59fba60afa64718104b71eec6984f8779d4caffff3b30cde91a75843c7efc126" + "url": "https://crates.io/api/v1/crates/sqlx-sqlite/0.7.1/download", + "sha256": "be4c21bf34c7cae5b283efb3ac1bcc7670df7561124dc2f8bdc0b59be40f79a2" } }, "targets": [ @@ -17643,7 +18120,7 @@ "target": "serde" }, { - "id": "sqlx-core 0.7.0", + "id": "sqlx-core 0.7.1", "target": "sqlx_core" }, { @@ -17658,10 +18135,40 @@ "selects": {} }, "edition": "2021", - "version": "0.7.0" + "version": "0.7.1" }, "license": "MIT OR Apache-2.0" }, + "str-buf 1.0.6": { + "name": "str-buf", + "version": "1.0.6", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/str-buf/1.0.6/download", + "sha256": "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0" + } + }, + "targets": [ + { + "Library": { + "crate_name": "str_buf", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "str_buf", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "edition": "2018", + "version": "1.0.6" + }, + "license": "BSL-1.0" + }, "stringprep 0.1.2": { "name": "stringprep", "version": "0.1.2", @@ -18112,83 +18619,6 @@ }, "license": "MIT OR Apache-2.0" }, - "testcontainers 0.14.0": { - "name": "testcontainers", - "version": "0.14.0", - "repository": { - "Http": { - "url": "https://crates.io/api/v1/crates/testcontainers/0.14.0/download", - "sha256": "0e2b1567ca8a2b819ea7b28c92be35d9f76fb9edb214321dcc86eb96023d1f87" - } - }, - "targets": [ - { - "Library": { - "crate_name": "testcontainers", - "crate_root": "src/lib.rs", - "srcs": [ - "**/*.rs" - ] - } - } - ], - "library_target_name": "testcontainers", - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "crate_features": { - "common": [ - "default" - ], - "selects": {} - }, - "deps": { - "common": [ - { - "id": "bollard-stubs 1.41.0", - "target": "bollard_stubs" - }, - { - "id": "futures 0.3.28", - "target": "futures" - }, - { - "id": "hex 0.4.3", - "target": "hex" - }, - { - "id": "hmac 0.12.1", - "target": "hmac" - }, - { - "id": "log 0.4.19", - "target": "log" - }, - { - "id": "rand 0.8.5", - "target": "rand" - }, - { - "id": "serde 1.0.171", - "target": "serde" - }, - { - "id": "serde_json 1.0.100", - "target": "serde_json" - }, - { - "id": "sha2 0.10.7", - "target": "sha2" - } - ], - "selects": {} - }, - "edition": "2021", - "version": "0.14.0" - }, - "license": "MIT OR Apache-2.0" - }, "thiserror 1.0.43": { "name": "thiserror", "version": "1.0.43", @@ -19871,6 +20301,42 @@ }, "license": "MIT/Apache-2.0" }, + "unicode-width 0.1.10": { + "name": "unicode-width", + "version": "0.1.10", + "repository": { + "Http": { + "url": "https://crates.io/api/v1/crates/unicode-width/0.1.10/download", + "sha256": "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + } + }, + "targets": [ + { + "Library": { + "crate_name": "unicode_width", + "crate_root": "src/lib.rs", + "srcs": [ + "**/*.rs" + ] + } + } + ], + "library_target_name": "unicode_width", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "crate_features": { + "common": [ + "default" + ], + "selects": {} + }, + "edition": "2015", + "version": "0.1.10" + }, + "license": "MIT/Apache-2.0" + }, "unicode_categories 0.1.1": { "name": "unicode_categories", "version": "0.1.1", @@ -21210,6 +21676,7 @@ ], "crate_features": { "common": [ + "basetsd", "cfg", "combaseapi", "consoleapi", @@ -21225,6 +21692,7 @@ "inaddr", "ioapiset", "iphlpapi", + "knownfolders", "libloaderapi", "lmaccess", "lmapibuf", @@ -21237,6 +21705,7 @@ "ntlsa", "ntsecapi", "ntstatus", + "objbase", "objidl", "oleauto", "pdh", @@ -21249,12 +21718,15 @@ "sddl", "securitybaseapi", "shellapi", + "shlobj", "std", + "stringapiset", "synchapi", "sysinfoapi", "timezoneapi", "wbemcli", "winbase", + "wincon", "windef", "winerror", "winioctl", @@ -22108,9 +22580,7 @@ "charted-search-elasticsearch 0.0.0-devel.0": "crates/search/elasticsearch", "charted-search-meilisearch 0.0.0-devel.0": "crates/search/meilisearch", "charted-server 0.0.0-devel.0": "server", - "charted-storage 0.0.0-devel.0": "crates/storage", - "charted-testcontainers 0.0.0-devel.0": "test/containers", - "charted-testcontainers-macros 0.0.0-devel.0": "test/proc-macro-libs/containers" + "charted-storage 0.0.0-devel.0": "crates/storage" }, "conditions": { "aarch64-linux-android": [ @@ -22596,6 +23066,39 @@ "x86_64-unknown-linux-gnu", "x86_64-unknown-none" ], + "cfg(not(target_os = \"redox\"))": [ + "aarch64-apple-darwin", + "aarch64-apple-ios", + "aarch64-apple-ios-sim", + "aarch64-fuchsia", + "aarch64-linux-android", + "aarch64-pc-windows-msvc", + "aarch64-unknown-linux-gnu", + "arm-unknown-linux-gnueabi", + "armv7-linux-androideabi", + "armv7-unknown-linux-gnueabi", + "i686-apple-darwin", + "i686-linux-android", + "i686-pc-windows-msvc", + "i686-unknown-freebsd", + "i686-unknown-linux-gnu", + "powerpc-unknown-linux-gnu", + "riscv32imc-unknown-none-elf", + "riscv64gc-unknown-none-elf", + "s390x-unknown-linux-gnu", + "thumbv7em-none-eabi", + "thumbv8m.main-none-eabi", + "wasm32-unknown-unknown", + "wasm32-wasi", + "x86_64-apple-darwin", + "x86_64-apple-ios", + "x86_64-fuchsia", + "x86_64-linux-android", + "x86_64-pc-windows-msvc", + "x86_64-unknown-freebsd", + "x86_64-unknown-linux-gnu", + "x86_64-unknown-none" + ], "cfg(not(windows))": [ "aarch64-apple-darwin", "aarch64-apple-ios", diff --git a/Cargo.lock b/Cargo.lock index d2b7abc57..41a5b54fa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -675,17 +675,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "bollard-stubs" -version = "1.41.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2f2e73fffe9455141e170fb9c1feb0ac521ec7e7dcd47a7cab72a658490fb8" -dependencies = [ - "chrono", - "serde", - "serde_with", -] - [[package]] name = "bumpalo" version = "3.13.0" @@ -742,8 +731,11 @@ dependencies = [ "color-eyre", "dotenv", "eyre", + "promptly", "serde_json", "serde_yaml", + "simple_tables", + "sqlx", "sysinfo", "tokio", "tracing", @@ -928,22 +920,6 @@ dependencies = [ "remi-s3", ] -[[package]] -name = "charted-testcontainers" -version = "0.0.0-devel.0" -dependencies = [ - "charted-testcontainers-macros", - "testcontainers", -] - -[[package]] -name = "charted-testcontainers-macros" -version = "0.0.0-devel.0" -dependencies = [ - "quote", - "syn 2.0.25", -] - [[package]] name = "chrono" version = "0.4.26" @@ -1010,6 +986,17 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +[[package]] +name = "clipboard-win" +version = "4.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362" +dependencies = [ + "error-code", + "str-buf", + "winapi", +] + [[package]] name = "color-eyre" version = "0.6.2" @@ -1152,7 +1139,7 @@ dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", - "memoffset", + "memoffset 0.9.0", "scopeguard", ] @@ -1185,38 +1172,14 @@ dependencies = [ "typenum", ] -[[package]] -name = "darling" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" -dependencies = [ - "darling_core 0.13.4", - "darling_macro 0.13.4", -] - [[package]] name = "darling" version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" dependencies = [ - "darling_core 0.14.4", - "darling_macro 0.14.4", -] - -[[package]] -name = "darling_core" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 1.0.109", + "darling_core", + "darling_macro", ] [[package]] @@ -1233,24 +1196,13 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "darling_macro" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" -dependencies = [ - "darling_core 0.13.4", - "quote", - "syn 1.0.109", -] - [[package]] name = "darling_macro" version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" dependencies = [ - "darling_core 0.14.4", + "darling_core", "quote", "syn 1.0.109", ] @@ -1291,7 +1243,7 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f" dependencies = [ - "darling 0.14.4", + "darling", "proc-macro2", "quote", "syn 1.0.109", @@ -1328,6 +1280,16 @@ dependencies = [ "dirs-sys", ] +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + [[package]] name = "dirs-sys" version = "0.4.1" @@ -1340,6 +1302,17 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + [[package]] name = "dotenv" version = "0.15.0" @@ -1370,6 +1343,12 @@ 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 = "equivalent" version = "1.0.0" @@ -1397,6 +1376,16 @@ dependencies = [ "libc", ] +[[package]] +name = "error-code" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21" +dependencies = [ + "libc", + "str-buf", +] + [[package]] name = "etcetera" version = "0.8.0" @@ -1439,6 +1428,17 @@ dependencies = [ "instant", ] +[[package]] +name = "fd-lock" +version = "3.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef033ed5e9bad94e55838ca0ca906db0e043f517adda0c8b79c7a8c66c93c1b5" +dependencies = [ + "cfg-if", + "rustix 0.38.2", + "windows-sys", +] + [[package]] name = "findshlibs" version = "0.10.2" @@ -2060,6 +2060,15 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + [[package]] name = "memoffset" version = "0.9.0" @@ -2147,6 +2156,28 @@ dependencies = [ "tempfile", ] +[[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.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f3790c00a0150112de0f4cd161e3d7fc4b2d8a5542ffc35f099a2562aecb35c" +dependencies = [ + "bitflags 1.3.2", + "cc", + "cfg-if", + "libc", + "memoffset 0.6.5", +] + [[package]] name = "nom" version = "7.1.3" @@ -2481,6 +2512,15 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "promptly" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9acbc6c5a5b029fe58342f58445acb00ccfe24624e538894bc2f04ce112980ba" +dependencies = [ + "rustyline", +] + [[package]] name = "quote" version = "1.0.29" @@ -2490,6 +2530,16 @@ dependencies = [ "proc-macro2", ] +[[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.8.5" @@ -2825,6 +2875,30 @@ version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc31bd9b61a32c31f9650d18add92aa83a49ba979c143eefd27fe7177b05bd5f" +[[package]] +name = "rustyline" +version = "9.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db7826789c0e25614b03e5a54a0717a86f9ff6e6e5247f92b369472869320039" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "clipboard-win", + "dirs-next", + "fd-lock", + "libc", + "log", + "memchr", + "nix", + "radix_trie", + "scopeguard", + "smallvec", + "unicode-segmentation", + "unicode-width", + "utf8parse", + "winapi", +] + [[package]] name = "ryu" version = "1.0.14" @@ -3064,28 +3138,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_with" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" -dependencies = [ - "serde", - "serde_with_macros", -] - -[[package]] -name = "serde_with_macros" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" -dependencies = [ - "darling 0.13.4", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "serde_yaml" version = "0.9.22" @@ -3155,6 +3207,34 @@ dependencies = [ "rand_core", ] +[[package]] +name = "simple_tables" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1248aa113774f3193c5ad090ee8a429005d32fcdb722f114dce7a74356cce4c" +dependencies = [ + "simple_tables-core", + "simple_tables-derive", +] + +[[package]] +name = "simple_tables-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e7d16173bdde70a696f9eaf1b49bb38f41ea7445c800ab46e6d8ac08c157551" + +[[package]] +name = "simple_tables-derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "add2dda7ba63477aabd1ff151a8f570ebbea9c12444d07bf6ec1a7c5858bd0e7" +dependencies = [ + "proc-macro2", + "quote", + "simple_tables-core", + "syn 1.0.109", +] + [[package]] name = "slab" version = "0.4.8" @@ -3218,9 +3298,9 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ef53c86d2066e04f0ac6b1364f16d13d82388e2d07f11a5c71782345555761" +checksum = "8e58421b6bc416714d5115a2ca953718f6c621a51b68e4f4922aea5a4391a721" dependencies = [ "sqlx-core", "sqlx-macros", @@ -3231,9 +3311,9 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a22fd81e9c1ad53c562edb869ff042b215d4eadefefc4784bacfbfd19835945" +checksum = "dd4cef4251aabbae751a3710927945901ee1d97ee96d757f6880ebb9a79bfd53" dependencies = [ "ahash", "atoi", @@ -3273,9 +3353,9 @@ dependencies = [ [[package]] name = "sqlx-macros" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00bb7c096a202b8164c175614cbfb79fe0e1e0a3d50e0374526183ef2974e4a2" +checksum = "208e3165167afd7f3881b16c1ef3f2af69fa75980897aac8874a0696516d12c2" dependencies = [ "proc-macro2", "quote", @@ -3286,9 +3366,9 @@ dependencies = [ [[package]] name = "sqlx-macros-core" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d644623ab9699014e5b3cb61a040d16caa50fd477008f63f1399ae35498a58" +checksum = "8a4a8336d278c62231d87f24e8a7a74898156e34c1c18942857be2acb29c7dfc" dependencies = [ "dotenvy", "either", @@ -3312,9 +3392,9 @@ dependencies = [ [[package]] name = "sqlx-mysql" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8264c59b28b6858796acfcedc660aa4c9075cc6e4ec8eb03cdca2a3e725726db" +checksum = "8ca69bf415b93b60b80dc8fda3cb4ef52b2336614d8da2de5456cc942a110482" dependencies = [ "atoi", "base64 0.21.2", @@ -3355,9 +3435,9 @@ dependencies = [ [[package]] name = "sqlx-postgres" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cab6147b81ca9213a7578f1b4c9d24c449a53953cd2222a7b5d7cd29a5c3139" +checksum = "a0db2df1b8731c3651e204629dd55e52adbae0462fa1bdcbed56a2302c18181e" dependencies = [ "atoi", "base64 0.21.2", @@ -3395,9 +3475,9 @@ dependencies = [ [[package]] name = "sqlx-sqlite" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59fba60afa64718104b71eec6984f8779d4caffff3b30cde91a75843c7efc126" +checksum = "be4c21bf34c7cae5b283efb3ac1bcc7670df7561124dc2f8bdc0b59be40f79a2" dependencies = [ "atoi", "chrono", @@ -3416,6 +3496,12 @@ dependencies = [ "url", ] +[[package]] +name = "str-buf" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0" + [[package]] name = "stringprep" version = "0.1.2" @@ -3495,23 +3581,6 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "testcontainers" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e2b1567ca8a2b819ea7b28c92be35d9f76fb9edb214321dcc86eb96023d1f87" -dependencies = [ - "bollard-stubs", - "futures", - "hex", - "hmac", - "log", - "rand", - "serde", - "serde_json", - "sha2", -] - [[package]] name = "thiserror" version = "1.0.43" @@ -3837,6 +3906,12 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" +[[package]] +name = "unicode-width" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + [[package]] name = "unicode_categories" version = "0.1.1" diff --git a/Cargo.toml b/Cargo.toml index 7cdccf7d9..78529cc88 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,7 +29,5 @@ members = [ "crates/search/elasticsearch", "crates/search/meilisearch", "crates/storage", - "test/proc-macro-libs/containers", - "test/containers", "tools/helm-plugin" ] diff --git a/WORKSPACE b/WORKSPACE index 401c379d9..ed0d78eed 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -20,8 +20,8 @@ load("//:build/utils.bzl", "get_cargo_manifests") http_archive( name = "rules_rust", - sha256 = "0c2ff9f58bbd6f2a4fc4fbea3a34e85fe848e7e4317357095551a18b2405a01c", - urls = ["https://github.com/bazelbuild/rules_rust/releases/download/0.25.0/rules_rust-v0.25.0.tar.gz"], + sha256 = "4a9cb4fda6ccd5b5ec393b2e944822a62e050c7c06f1ea41607f14c4fdec57a2", + urls = ["https://github.com/bazelbuild/rules_rust/releases/download/0.25.1/rules_rust-v0.25.1.tar.gz"], ) http_archive( @@ -52,7 +52,7 @@ rules_rust_dependencies() rust_register_toolchains( edition = "2021", - versions = ["1.70.0"], + versions = ["1.71.0"], ) load("@rules_rust//cargo:defs.bzl", "cargo_bootstrap_repository") diff --git a/build/rust_project.bzl b/build/rust_project.bzl index 62fb2f15a..7ef0a542f 100644 --- a/build/rust_project.bzl +++ b/build/rust_project.bzl @@ -22,6 +22,7 @@ load("@crate_index//:defs.bzl", "aliases") def rust_project( name, deps = [], + external_data = [], proc_macro_deps = [], include_tests = False, include_doctests = False, @@ -35,6 +36,7 @@ def rust_project( Args: name: The name of the project. deps: A list of dependencies to use in the `rust_library`, `rust_binary` (if enabled), and `rust_test` (if enabled) macro(s). + external_data: List of targets to use to embed data into `rust_library`. proc_macro_deps: A list of proc-macro related dependencies to use. include_tests: If the `rust_test` macro should be included. This will always be `{name}_test` when used with the `bazel test` command. @@ -55,6 +57,7 @@ def rust_project( # without using 'extern crate {name}'! name = "charted_{name}".format(name = name), aliases = aliases(), + data = external_data, srcs = native.glob(["src/**/*.rs"], exclude = ["src/main.rs"]), deps = deps, proc_macro_deps = proc_macro_deps, diff --git a/build/utils.bzl b/build/utils.bzl index 3535a97c4..8d56154f2 100644 --- a/build/utils.bzl +++ b/build/utils.bzl @@ -34,8 +34,6 @@ def get_cargo_manifests(): "crates/search/meilisearch", "crates/storage", "tools/helm-plugin", - "test/proc-macro-libs/containers", - "test/containers", "server", "cli", "", diff --git a/cli/BUILD.bazel b/cli/BUILD.bazel index cee5cefeb..813bf3264 100644 --- a/cli/BUILD.bazel +++ b/cli/BUILD.bazel @@ -31,8 +31,11 @@ rust_project( "@crate_index//:color-eyre", "@crate_index//:dotenv", "@crate_index//:eyre", + "@crate_index//:promptly", "@crate_index//:serde_json", "@crate_index//:serde_yaml", + "@crate_index//:simple_tables", + "@crate_index//:sqlx", "@crate_index//:sysinfo", "@crate_index//:tokio", "@crate_index//:tracing", diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 62331f837..901f7af72 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -29,14 +29,17 @@ clap = { version = "4.3.10", features = ["derive", "env"] } clap_complete = "4.3.1" charted-common = { path = "../crates/common", version = "0.0.0-devel.0" } charted-config = { path = "../crates/config", version = "0.0.0-devel.0" } +charted-logging = { version = "0.0.0-devel.0", path = "../crates/logging" } charted-server = { path = "../server", version = "0.0.0-devel.0" } color-eyre = { version = "0.6.2", features = ["issue-url", "track-caller"] } dotenv = "0.15.0" eyre = "0.6.8" -tokio = { version = "1.29.1", features = ["full"] } -sysinfo = "0.29.4" +promptly = "0.3.1" serde_json = "1.0.100" serde_yaml = "0.9.22" -charted-logging = { version = "0.0.0-devel.0", path = "../crates/logging" } +simple_tables = "0.3.0" +sqlx = { version = "0.7.1", features = ["postgres", "runtime-tokio", "tls-native-tls"] } +sysinfo = "0.29.4" +tokio = { version = "1.29.1", features = ["full"] } tracing = "0.1.37" tracing-subscriber = "0.3.17" diff --git a/cli/src/commands/generate_config.rs b/cli/src/commands/generate_config.rs index e69de29bb..311351cbe 100644 --- a/cli/src/commands/generate_config.rs +++ b/cli/src/commands/generate_config.rs @@ -0,0 +1,57 @@ +// 🐻‍❄️📦 charted-server: Free, open source, and reliable Helm Chart registry made in Rust +// Copyright 2022-2023 Noelware, LLC. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use super::models::AsyncExecute; +use charted_config::Config; +use eyre::Result; +use std::{io::Write, path::PathBuf}; +use tokio::{ + fs::{File, OpenOptions}, + io::AsyncWriteExt, +}; + +/// Writes a new configuration file in the specified `path`. Bails out +/// if the path already exists. +#[derive(Debug, Clone, clap::Parser)] +pub struct GenerateConfig { + /// Path location to write a configuration file. + path: PathBuf, +} + +#[async_trait] +impl AsyncExecute for GenerateConfig { + async fn execute(&self) -> Result<()> { + println!("Writing configuration in {:?}...", self.path); + if self.path.exists() { + eprintln!("fatal: path already exists, bailing"); + return Ok(()); + } + + let mut file = OpenOptions::new() + .create(true) + .read(true) + .write(true) + .append(false) + .open(self.path.clone()) + .await?; + + let config = Config::default(); + let serialized = serde_yaml::to_string(&config)?; + file.write_all(serialized.as_ref()).await?; + + println!("Wrote configuration in {:?}", self.path); + Ok(()) + } +} diff --git a/cli/src/commands/mod.rs b/cli/src/commands/mod.rs index cea9e31f5..aa09b4979 100644 --- a/cli/src/commands/mod.rs +++ b/cli/src/commands/mod.rs @@ -13,11 +13,15 @@ // See the License for the specific language governing permissions and // limitations under the License. +mod generate_config; mod models; +mod openapi; mod server; mod version; +use crate::commands::generate_config::*; use crate::commands::models::*; +use crate::commands::openapi::*; use crate::commands::server::*; use crate::commands::version::*; use clap::Subcommand; @@ -25,6 +29,10 @@ use eyre::Result; #[derive(Debug, Clone, Subcommand)] pub enum Commands { + GenerateConfig(GenerateConfig), + + #[command(name = "openapi")] + OpenAPI(OpenAPI), Server(Box), Version(Version), } @@ -33,5 +41,7 @@ pub async fn execute(command: &Commands) -> Result<()> { match command { Commands::Server(server) => server.execute().await, Commands::Version(version) => version.execute(), + Commands::OpenAPI(openapi) => openapi.execute(), + Commands::GenerateConfig(generate) => generate.execute().await, } } diff --git a/cli/src/commands/openapi.rs b/cli/src/commands/openapi.rs index e69de29bb..7e066dd4c 100644 --- a/cli/src/commands/openapi.rs +++ b/cli/src/commands/openapi.rs @@ -0,0 +1,62 @@ +// 🐻‍❄️📦 charted-server: Free, open source, and reliable Helm Chart registry made in Rust +// Copyright 2022-2023 Noelware, LLC. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use super::models::Execute; +use charted_config::Config; +use charted_server::openapi::document; +use eyre::Result; +use std::{fs::File, io::Write as _, path::PathBuf}; + +#[derive(Debug, Clone, clap::Parser)] +#[command(about = "Generates the OpenAPI document without running the API server")] +pub struct OpenAPI { + #[arg(help = "Output file to use. If this is not specified, then it will be written to stdout.")] + output: Option, + + #[arg(long, help = "Whether if we should encode the OpenAPI document in YAML or not.")] + yaml: bool, +} + +impl Execute for OpenAPI { + fn execute(&self) -> Result<()> { + // Set a temporary config so we can grab the OpenAPI document without + // panics. + Config::temporary(); + + let doc = document(); + let serialized = if self.yaml { + serde_yaml::to_string(&doc)? + } else { + serde_json::to_string_pretty(&doc)? + }; + + match self.output.clone() { + Some(file) => { + println!("Writing document in {file:?}..."); + + let mut fd = File::options().write(true).create(true).open(file.clone())?; + write!(fd, "{serialized}")?; + + println!("Written OpenAPI document in {file:?}"); + Ok(()) + } + + None => { + println!("{serialized}"); + Ok(()) + } + } + } +} diff --git a/cli/src/lib.rs b/cli/src/lib.rs index 79bf57562..1f30460c5 100644 --- a/cli/src/lib.rs +++ b/cli/src/lib.rs @@ -30,6 +30,7 @@ pub use commands::execute; #[derive(Debug, Clone, Parser)] #[clap( + name = "charted", about = "🐻‍❄️📦 Free, open source, and reliable Helm Chart registry made in Rust", author = "Noelware, LLC.", override_usage = "charted [...ARGS]", diff --git a/cli/src/main.rs b/cli/src/main.rs index b8c0bd570..0cdce2d74 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -19,11 +19,7 @@ use charted_logging::generic::GenericLayer; use clap::Parser; use color_eyre::config::HookBuilder; use eyre::Result; -use std::{ - env::{set_var, var}, - time::SystemTime, -}; -use tracing::debug; +use std::env::{set_var, var}; use tracing_subscriber::prelude::*; #[tokio::main] @@ -45,8 +41,5 @@ async fn main() -> Result<()> { )?; } - let now = SystemTime::now(); - execute(&cli.command) - .await - .map(|_| debug!("took {:?} to run command", now.elapsed().unwrap())) + execute(&cli.command).await } diff --git a/crates/config/src/config.rs b/crates/config/src/config.rs index eb2955ebe..426c97d4f 100644 --- a/crates/config/src/config.rs +++ b/crates/config/src/config.rs @@ -125,6 +125,14 @@ impl Config { } } + /// Sets a temporary [`Config`] that allows you to use the `get() -> Config` + /// command without it panic. + pub fn temporary() { + if CONFIG.get().is_none() { + CONFIG.set(Config::default()).unwrap(); + } + } + /// Returns a reference of the already-initialized configuration. /// /// ## Panics diff --git a/crates/database/BUILD.bazel b/crates/database/BUILD.bazel index cbba0533a..702678ea0 100644 --- a/crates/database/BUILD.bazel +++ b/crates/database/BUILD.bazel @@ -15,11 +15,17 @@ load("//:build/rust_project.bzl", "rust_project") +exports_files(["migrations"]) + rust_project( name = "database", + build_script = True, + build_script_data = [":migrations"], + external_data = [":migrations"], include_tests = True, proc_macro_deps = ["@crate_index//:async-trait"], deps = [ + ":buildscript", "//crates/common:charted_common", "@crate_index//:argon2", "@crate_index//:eyre", diff --git a/test/containers/src/lib.rs b/crates/database/build.rs similarity index 90% rename from test/containers/src/lib.rs rename to crates/database/build.rs index 9a7e1f1fe..c86b26049 100644 --- a/test/containers/src/lib.rs +++ b/crates/database/build.rs @@ -13,7 +13,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -mod context; - -pub use charted_testcontainers_macros::*; -pub use context::*; +fn main() { + println!("cargo:rerun-if-changed=migrations"); +} diff --git a/crates/database/migrations/20230717000403_init.sql b/crates/database/migrations/20230717000403_init.sql new file mode 100644 index 000000000..66cc4f273 --- /dev/null +++ b/crates/database/migrations/20230717000403_init.sql @@ -0,0 +1,188 @@ +/* + * 🐻‍❄️📦 charted-server: Free, open source, and reliable Helm Chart registry made in Rust + * Copyright 2022-2023 Noelware, LLC. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +CREATE OR REPLACE FUNCTION updated_entity_timestamp() +RETURNS TRIGGER AS $body$ + BEGIN + NEW.updated_at = NOW(); + return NEW; + END +$body$ +LANGUAGE plpgsql; + +-- Create users table +CREATE TABLE IF NOT EXISTS users( + verified_publisher BOOLEAN NOT NULL DEFAULT false, + gravatar_email TEXT NULL DEFAULT null, + description VARCHAR(240) NULL DEFAULT null, + avatar_hash TEXT NULL DEFAULT null, + created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT(NOW()), + updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT(NOW()), + username VARCHAR(64) NOT NULL, + password TEXT NULL DEFAULT NULL, + email TEXT NOT NULL, + admin BOOLEAN NOT NULL DEFAULT false, + name VARCHAR(64) NULL DEFAULT NULL, + id BIGINT NOT NULL PRIMARY KEY +); + +CREATE UNIQUE INDEX idx_users_username ON users(username); +CREATE UNIQUE INDEX idx_users_email ON users(email); +CREATE TRIGGER update_users_updated_at + BEFORE UPDATE ON users + FOR EACH ROW EXECUTE PROCEDURE updated_entity_timestamp(); + +CREATE TABLE IF NOT EXISTS user_connections( + noelware_account_id BIGINT NULL DEFAULT NULL, + google_account_id TEXT NOT NULL DEFAULT NULL, + github_account_id TEXT NOT NULL DEFAULT NULL, + apple_account_id TEXT NOT NULL DEFAULT NULL, + created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT(NOW()), + updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT(NOW()), + id BIGINT PRIMARY KEY NOT NULL +); + +CREATE TRIGGER update_users_connections_updated_at + BEFORE UPDATE ON user_connections + FOR EACH ROW EXECUTE PROCEDURE updated_entity_timestamp(); + +CREATE TYPE chart_type AS ENUM('application', 'library', 'operator'); +CREATE TABLE IF NOT EXISTS repositories( + description VARCHAR(64) NULL DEFAULT NULL, + deprecated BOOLEAN NOT NULL DEFAULT false, + created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT(NOW()), + updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT(NOW()), + icon_hash TEXT NULL DEFAULT NULL, + private BOOLEAN NOT NULL DEFAULT false, + owner BIGINT NOT NULL, + name VARCHAR(32) NOT NULL, + type chart_type NOT NULL DEFAULT('application'), + id BIGINT NOT NULL PRIMARY KEY +); + +CREATE UNIQUE INDEX idx_repositories_owner_id ON repositories(owner); +CREATE UNIQUE INDEX idx_repositories_name ON repositories(name); +CREATE TRIGGER update_repositories_updated_at + BEFORE UPDATE ON repositories + FOR EACH ROW EXECUTE PROCEDURE updated_entity_timestamp(); + +CREATE TABLE IF NOT EXISTS repository_releases( + repository BIGINT NOT NULL UNIQUE REFERENCES repositories(id), + update_text TEXT NULL DEFAULT NULL, + created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT(NOW()), + updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT(NOW()), + tag TEXT NOT NULL, + id BIGINT NOT NULL PRIMARY KEY +); + +ALTER TABLE repository_releases +ADD CONSTRAINT fk_repository_release_owner +FOREIGN KEY(repository) REFERENCES repositories(id); + +CREATE TRIGGER update_repository_releases_updated_at +BEFORE UPDATE ON repository_releases +FOR EACH ROW EXECUTE PROCEDURE updated_entity_timestamp(); + +CREATE TABLE IF NOT EXISTS repository_members( + public_visibility BOOLEAN NOT NULL DEFAULT false, + display_name VARCHAR(32) NULL DEFAULT NULL, + permissions BIGINT NOT NULL DEFAULT 0, + repository BIGINT NOT NULL REFERENCES repositories(id), + updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT(NOW()), + joined_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT(NOW()), + account BIGINT NOT NULL REFERENCES users(id), + id BIGINT NOT NULL PRIMARY KEY, +); + +ALTER TABLE repository_members +ADD CONSTRAINT fk_repository_members_repository_id +FOREIGN KEY(repository) REFERENCES repositories(id); + +ALTER TABLE repository_members +ADD CONSTRAINT fk_repository_members_account_id +FOREIGN KEY(account) REFERENCES users(id); + +CREATE TRIGGER update_repository_members_updated_at +BEFORE UPDATE ON repository_members +FOR EACH ROW EXECUTE PROCEDURE updated_entity_timestamp(); + +CREATE TABLE IF NOT EXISTS organizations( + verified_publisher BOOLEAN NOT NULL DEFAULT false, + twitter_handle TEXT NULL DEFAULT NULL, + gravatar_email TEXT NULL DEFAULT NULL, + display_name VARCHAR(32) NULL DEFAULT NULL, + created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT(NOW()), + updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT(NOW()), + icon_hash TEXT NULL DEFAULT NULL, + private BOOLEAN NOT NULL DEFAULT false, + owner BIGINT NOT NULL REFERENCES users(id), + name VARCHAR(32) NOT NULL UNIQUE, + id BIGINT NOT NULL PRIMARY KEY, +); + +ALTER TABLE organizations +ADD CONSTRAINT fk_organization_owner_id +FOREIGN KEY(owner) REFERENCES users(id); + +CREATE UNIQUE INDEX idx_organizations_name ON organizations(name); + +CREATE TRIGGER update_organizations_updated_at +BEFORE UPDATE ON organizations +FOR EACH ROW EXECUTE PROCEDURE updated_entity_timestamp(); + +CREATE TABLE IF NOT EXISTS organization_members( + public_visibility BOOLEAN NOT NULL DEFAULT false, + display_name VARCHAR(32) NULL DEFAULT NULL, + organization BIGINT NOT NULL REFERENCES organizations(id), + permissions BIGINT NOT NULL DEFAULT 0, + updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT(NOW()), + joined_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT(NOW()), + account BIGINT NOT NULL REFERENCES users(id), + id BIGINT NOT NULL PRIMARY KEY, +); + +ALTER TABLE organization_members +ADD CONSTRAINT fk_organization_members_organization_id +FOREIGN KEY(organization) REFERENCES repositories(id); + +ALTER TABLE organization_members +ADD CONSTRAINT fk_organization_members_account_id +FOREIGN KEY(account) REFERENCES users(id); + +CREATE TRIGGER update_organization_members_updated_at +BEFORE UPDATE ON organization_members +FOR EACH ROW EXECUTE PROCEDURE updated_entity_timestamp(); + +CREATE TABLE IF NOT EXISTS api_keys( + description VARCHAR(140) NULL DEFAULT NULL, + created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT(NOW()), + updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT(NOW()), + expires_in TIMESTAMP WITHOUT TIME ZONE NULL DEFAULT NULL, + scopes BIGINT NOT NULL DEFAULT 0, + owner BIGINT NOT NULL REFERENCES users(id), + token TEXT NOT NULL, + name VARCHAR(32) NOT NULL, + id BIGINT NOT NULL PRIMARY KEY, +); + +ALTER TABLE api_keys +ADD CONSTRAINT fk_api_keys_owner_id +FOREIGN KEY(owner) REFERENCES users(id); + +CREATE TRIGGER update_api_keys_updated_at +BEFORE UPDATE ON api_keys +FOR EACH ROW EXECUTE PROCEDURE updated_entity_timestamp(); diff --git a/crates/database/src/lib.rs b/crates/database/src/lib.rs index 0c7707d2a..7f397ad56 100644 --- a/crates/database/src/lib.rs +++ b/crates/database/src/lib.rs @@ -13,4 +13,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +use sqlx::{migrate, migrate::Migrator}; + pub mod controllers; + +/// A static [`Migrator`] instance for migrations that are embedded +/// in this crate. +pub static MIGRATIONS: Migrator = migrate!(); diff --git a/crates/storage/src/lib.rs b/crates/storage/src/lib.rs index 4c7fd893f..4d4139efc 100644 --- a/crates/storage/src/lib.rs +++ b/crates/storage/src/lib.rs @@ -28,7 +28,7 @@ pub enum MultiStorageService { macro_rules! gen_methods { ( - $(fn $name:ident($($arg_name:ident: $ty:ty,)*)$(-> $return_:ty)?;)* + $(fn $name:ident($($arg_name:ident: $ty:ty),*)$(-> $return_:ty)?;)* ) => { $( fn $name<'life0, 'async_trait>(&'life0 self,$($arg_name: $ty,)*)$(-> ::std::pin::Pin + Send + 'async_trait>>)? @@ -58,11 +58,11 @@ impl StorageService for MultiStorageService { gen_methods! { fn init() -> Result<()>; - fn open(path: impl AsRef<::std::path::Path> + Send + 'async_trait,) -> Result>; - fn blob(path: impl AsRef<::std::path::Path> + Send + 'async_trait,) -> Result>; - fn blobs(path: Option + Send + 'async_trait>, options: Option,) -> Result>; - fn delete(path: impl AsRef<::std::path::Path> + Send + 'async_trait,) -> Result<()>; - fn exists(path: impl AsRef<::std::path::Path> + Send + 'async_trait,) -> Result; - fn upload(path: impl AsRef<::std::path::Path> + Send + 'async_trait, options: remi_core::UploadRequest,) -> Result<()>; + fn open(path: impl AsRef<::std::path::Path> + Send + 'async_trait) -> Result>; + fn blob(path: impl AsRef<::std::path::Path> + Send + 'async_trait) -> Result>; + fn blobs(path: Option + Send + 'async_trait>, options: Option) -> Result>; + fn delete(path: impl AsRef<::std::path::Path> + Send + 'async_trait) -> Result<()>; + fn exists(path: impl AsRef<::std::path::Path> + Send + 'async_trait) -> Result; + fn upload(path: impl AsRef<::std::path::Path> + Send + 'async_trait, options: remi_core::UploadRequest) -> Result<()>; } } diff --git a/distribution/docker/alpine.Dockerfile b/distribution/docker/alpine.Dockerfile index 53491a38a..1f7c59b92 100644 --- a/distribution/docker/alpine.Dockerfile +++ b/distribution/docker/alpine.Dockerfile @@ -13,7 +13,17 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM cr.floofy.dev/noel/bazel:6-alpine +FROM cr.floofy.dev/noel/bazel:6-alpine AS web + +RUN apk update && apk add --no-cache git ca-certificates +WORKDIR /build + +COPY . . +RUN bazel build //web:vite_build_release --compilation_mode=fastbuild +RUN mkdir -p /build/output && cp $(bazel cquery //cli:release_bin --output=files &>/dev/null | grep --color=never bazel-out) /build/output/charted +RUN bazel shutdown + +FROM cr.floofy.dev/noel/bazel:6-alpine AS build RUN apk update && apk add --no-cache git ca-certificates WORKDIR /build diff --git a/server/src/server.rs b/server/src/server.rs index 356a6328c..07bfb059c 100644 --- a/server/src/server.rs +++ b/server/src/server.rs @@ -18,6 +18,7 @@ use charted_common::{Snowflake, COMMIT_HASH, VERSION}; use charted_config::{Config, ConfigExt, StorageConfig}; use charted_database::controllers::users::UserDatabaseController; use charted_database::controllers::DatabaseController; +use charted_database::MIGRATIONS; use charted_storage::MultiStorageService; use eyre::Result; use remi_core::StorageService; @@ -80,6 +81,16 @@ impl Server { ) .await?; + { + let pool = pool.clone(); + let _guard = info_span!("database.migrate.run"); + + info!("running migrations"); + MIGRATIONS.run(&pool).await?; + + info!("done!"); + } + // TODO(@auguwu): create cluster of snowflakes with 1023 nodes per // server instance? let snowflake = Snowflake::new(0); diff --git a/test/containers/BUILD.bazel b/test/containers/BUILD.bazel deleted file mode 100644 index ceb007045..000000000 --- a/test/containers/BUILD.bazel +++ /dev/null @@ -1,22 +0,0 @@ -# 🐻‍❄️📦 charted-server: Free, open source, and reliable Helm Chart registry made in Rust -# Copyright 2022-2023 Noelware, LLC. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("//:build/rust_project.bzl", "rust_project") - -rust_project( - name = "testcontainers", - proc_macro_deps = ["//test/proc-macro-libs/containers:charted_testcontainers_macros"], - deps = ["@crate_index//:testcontainers"], -) diff --git a/test/containers/Cargo.toml b/test/containers/Cargo.toml deleted file mode 100644 index b3ddf4028..000000000 --- a/test/containers/Cargo.toml +++ /dev/null @@ -1,26 +0,0 @@ -# 🐻‍❄️📦 charted-server: Free, open source, and reliable Helm Chart registry made in Rust -# Copyright 2022-2023 Noelware, LLC. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -[package] -name = "charted-testcontainers" -description = "🐻‍❄️📦 Proc Macro to creating Testcontainers via `#[testcontainers]` attribute macro" -version = "0.0.0-devel.0" -edition = "2021" -homepage = "https://charts.noelware.org" -authors = ["Noel Towa ", "Noelware Team "] - -[dependencies] -charted-testcontainers-macros = { version = "0.0.0-devel.0", path = "../proc-macro-libs/containers" } -testcontainers = "0.14.0" diff --git a/test/containers/src/context.rs b/test/containers/src/context.rs deleted file mode 100644 index 789722371..000000000 --- a/test/containers/src/context.rs +++ /dev/null @@ -1,60 +0,0 @@ -// 🐻‍❄️📦 charted-server: Free, open source, and reliable Helm Chart registry made in Rust -// Copyright 2022-2023 Noelware, LLC. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -use std::sync::Arc; -use testcontainers::clients::Cli; - -/// Represents a context that should be re-used through out -/// tests, and can be used with the `#[testcontainers]` macro -/// via the `configure` proc-macro attribute. -/// -/// ## Example -/// ```no_run -/// # use charted_testcontainers::{testcontainers, Context}; -/// # -/// # #[cfg(test)] -/// # mod tests { -/// # use charted_testcontainers::{testcontainers, Context}; -/// # -/// async fn configure(ctx: Context) { -/// let ctx = Context::default(); -/// if !ctx.is_enabled { -/// return; -/// } -/// } -/// # } -/// ``` -#[derive(Debug, Clone)] -pub struct Context { - pub enabled: bool, - docker_client: Arc>, -} - -impl Context { - pub fn new(client: Option) -> Context { - Context { - enabled: client.is_some(), - docker_client: Arc::new(client), - } - } - - pub fn cli(&self) -> Arc> { - Arc::clone(&self.docker_client) - } - - pub fn is_enabled(&self) -> bool { - self.enabled - } -} diff --git a/test/proc-macro-libs/containers/BUILD.bazel b/test/proc-macro-libs/containers/BUILD.bazel deleted file mode 100644 index 1f0342ee9..000000000 --- a/test/proc-macro-libs/containers/BUILD.bazel +++ /dev/null @@ -1,24 +0,0 @@ -# 🐻‍❄️📦 charted-server: Free, open source, and reliable Helm Chart registry made in Rust -# Copyright 2022-2023 Noelware, LLC. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -load("//:build/rust_project.bzl", "rust_project") - -rust_project( - name = "testcontainers_macros", - deps = [ - "@crate_index//:quote", - "@crate_index//:syn", - ], -) diff --git a/test/proc-macro-libs/containers/Cargo.toml b/test/proc-macro-libs/containers/Cargo.toml deleted file mode 100644 index 5c0c0afee..000000000 --- a/test/proc-macro-libs/containers/Cargo.toml +++ /dev/null @@ -1,29 +0,0 @@ -# 🐻‍❄️📦 charted-server: Free, open source, and reliable Helm Chart registry made in Rust -# Copyright 2022-2023 Noelware, LLC. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -[package] -name = "charted-testcontainers-macros" -description = "🐻‍❄️📦 Proc Macro to creating Testcontainers via `#[testcontainers]` attribute macro" -version = "0.0.0-devel.0" -edition = "2021" -homepage = "https://charts.noelware.org" -authors = ["Noel Towa ", "Noelware Team "] - -[lib] -proc-macro = true - -[dependencies] -quote = "1.0.29" -syn = "2.0.25" diff --git a/test/proc-macro-libs/containers/README.md b/test/proc-macro-libs/containers/README.md deleted file mode 100644 index dbc0b3e3d..000000000 --- a/test/proc-macro-libs/containers/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# [Testcontainers](https://github.com/testcontainers/testcontainers-rs) Proc Macros -This directory is the source code for implementing the `#[charted_testcontainers::test]` macro. This is supposed to be similar in how the [@Testcontainers annotation](https://java.testcontainers.org/test_framework_integration/junit_5) from the JUnit5 integration of [Testcontainers (Java)](https://github.com/testcontainers/testcontainers-java) work. - -## Usage -```py -load("//:build/rust_project.bzl", "rust_project") - -rust_project( - name = "some_rust_project", - include_tests = True, - test_proc_macro_deps = ["//test/containers:charted_testcontainers"] -) -``` - -```toml -[dependencies] -charted-testcontainers = { version = "0.0.0-devel.0", path = "../test/containers" } -``` - -```rs -#[cfg(test)] -mod tests { - use charted_testcontainers::{testcontainers, Context}; - use testcontainers::Container; - - /// Method to configure the testcontainers macro. This is where - /// you initialize your containers. - fn configure() {} - - #[testcontainers(configure)] - async fn test(ctx: &Context) { - let postgres_container = ctx.container::(); - assert!(postgres_container.is_some()); - } -} -``` diff --git a/test/proc-macro-libs/containers/src/args.rs b/test/proc-macro-libs/containers/src/args.rs deleted file mode 100644 index 32a0ec16d..000000000 --- a/test/proc-macro-libs/containers/src/args.rs +++ /dev/null @@ -1,70 +0,0 @@ -// 🐻‍❄️📦 charted-server: Free, open source, and reliable Helm Chart registry made in Rust -// Copyright 2022-2023 Noelware, LLC. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -use syn::{ - parse::{Parse, ParseStream}, - punctuated::Punctuated, - spanned::Spanned, - Error, Expr, Meta, Path, Result, Token, -}; - -/// Arguments to a `#[testcontainers]` proc-macro. -pub struct Args { - /// [`ItemFn`] to use to configure the test beforehand. - pub configure: Option, -} - -impl Parse for Args { - fn parse(input: ParseStream) -> Result { - let mut args = Args { configure: None }; - let meta = Punctuated::::parse_terminated(input)?; - while let Some(arg) = meta.iter().next() { - match arg { - Meta::NameValue(nv) => { - let ident = nv - .path - .get_ident() - .ok_or_else(|| Error::new(nv.span(), "expected ident as key"))? - .to_string() - .to_lowercase(); - - match ident.as_str() { - "configure" => { - if args.configure.is_some() { - return Err(Error::new_spanned(ident, "`configure` cannot be overwritten twice")); - } - - let path = match nv.value.clone() { - Expr::Path(path) => path, - other => return Err(Error::new_spanned(other, "unknown expr for `configure`")), - }; - - args.configure = Some(path.path); - } - other => return Err(Error::new_spanned(other, "unknown attribute config key")), - } - } - other => { - return Err(Error::new_spanned( - other, - "unknown attribute in #[testcontainers] macro!", - )) - } - } - } - - Ok(args) - } -} diff --git a/test/proc-macro-libs/containers/src/lib.rs b/test/proc-macro-libs/containers/src/lib.rs deleted file mode 100644 index 19b0e192b..000000000 --- a/test/proc-macro-libs/containers/src/lib.rs +++ /dev/null @@ -1,50 +0,0 @@ -// 🐻‍❄️📦 charted-server: Free, open source, and reliable Helm Chart registry made in Rust -// Copyright 2022-2023 Noelware, LLC. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -mod args; - -use args::Args; -use proc_macro::TokenStream; -use quote::quote; -use syn::{parse_macro_input, spanned::Spanned, Error, ItemFn}; - -#[proc_macro_attribute] -pub fn testcontainers(args: TokenStream, rust: TokenStream) -> TokenStream { - let args = parse_macro_input!(args as Args); - let func = parse_macro_input!(rust as ItemFn); - - if func.sig.asyncness.is_none() { - return Error::new(func.sig.span(), "missing `async` keyword in fn declaration") - .to_compile_error() - .into(); - } - - let header = quote! { #[::tokio::test] }; - let name = func.sig.ident; - let actual_body = func.block; - let configure_body = match args.configure { - Some(path) => quote! { #path().await.unwrap(); }, - None => quote!(), - }; - - quote! { - #header - async fn #name() { - #configure_body - #actual_body - } - } - .into() -} diff --git a/web/package.json b/web/package.json index 330e9aa5c..32ccd8e43 100644 --- a/web/package.json +++ b/web/package.json @@ -5,6 +5,16 @@ "private": true, "author": "Noelware, LLC. ", "repository": "https://github.com/charted-dev/charted/tree/main/web", - "bugs": "https://github.com/charted-dev/charted/issues/new?label=web,bug", - "maintainers": ["Noel "] + "bugs": "https://github.com/charted-dev/charted/issues/new", + "maintainers": [ + "Noel Towa ", + "Noelware Team " + ], + "dependencies": { + "@fontsource/cantarell": "^5.0.5", + "@fontsource/inter": "^5.0.5", + "@fontsource/jetbrains-mono": "^5.0.5", + "@ncharts/types": "0.1.0-unstable", + "@tanstack/vue-query": "^4.29.25" + } } diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 7e0e5afb4..03e1a4985 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -3,3 +3,256 @@ lockfileVersion: '6.1' settings: autoInstallPeers: true excludeLinksFromLockfile: false + +dependencies: + '@fontsource/cantarell': + specifier: ^5.0.5 + version: 5.0.5 + '@fontsource/inter': + specifier: ^5.0.5 + version: 5.0.5 + '@fontsource/jetbrains-mono': + specifier: ^5.0.5 + version: 5.0.5 + '@ncharts/types': + specifier: 0.1.0-unstable + version: 0.1.0-unstable + '@tanstack/vue-query': + specifier: ^4.29.25 + version: 4.29.25(vue@3.3.4) + +packages: + + /@babel/helper-string-parser@7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helper-validator-identifier@7.22.5: + resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/parser@7.22.7: + resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.22.5 + dev: false + + /@babel/types@7.22.5: + resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + to-fast-properties: 2.0.0 + dev: false + + /@fontsource/cantarell@5.0.5: + resolution: {integrity: sha512-BGhN4UrfJFYHtdF5+PVHLzhW6Co3otDxEP2uZJyDErcj9n6Q3ff3eMvAAFe+Hw7VdKOBoxaOF0YkCjwZ3d/90A==} + dev: false + + /@fontsource/inter@5.0.5: + resolution: {integrity: sha512-RE1JmWRB6Kxo+1nXUnORSSH5uKgUZ2QEQE+h/nsNt758C+17G9y26E9QiAsIqsG13NpKhwn22EeECfyC+da5ew==} + dev: false + + /@fontsource/jetbrains-mono@5.0.5: + resolution: {integrity: sha512-Smuppiu7QzNCatnccTXdUYbxUmEVywklM/hntWKhig0Q+hm7SYzQpNpxCR1Gm8npE8jpaKslhIsBPGuTBGZgdA==} + dev: false + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: false + + /@ncharts/types@0.1.0-unstable: + resolution: {integrity: sha512-6J9Pqo2+53CMl99mDh8TRIvnIpHCjLbp10es0PkkoCGfeH8tdOAPaayrka4gnWOQWAo/fZpHIWzgIgARW1OVdA==} + dev: false + + /@tanstack/match-sorter-utils@8.8.4: + resolution: {integrity: sha512-rKH8LjZiszWEvmi01NR72QWZ8m4xmXre0OOwlRGnjU01Eqz/QnN+cqpty2PJ0efHblq09+KilvyR7lsbzmXVEw==} + engines: {node: '>=12'} + dependencies: + remove-accents: 0.4.2 + dev: false + + /@tanstack/query-core@4.29.25: + resolution: {integrity: sha512-DI4y4VC6Uw4wlTpOocEXDky69xeOScME1ezLKsj+hOk7DguC9fkqXtp6Hn39BVb9y0b5IBrY67q6kIX623Zj4Q==} + dev: false + + /@tanstack/vue-query@4.29.25(vue@3.3.4): + resolution: {integrity: sha512-gTEjPDOgT9be+WwkO8+7yKLzwlR3FDA4g9p+CzXmdkxbAZAeBxFpyvayiegqGYh5mhJKfC3FnkQ3uqII7GIOpA==} + peerDependencies: + '@vue/composition-api': ^1.1.2 + vue: ^2.5.0 || ^3.0.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + '@tanstack/match-sorter-utils': 8.8.4 + '@tanstack/query-core': 4.29.25 + '@vue/devtools-api': 6.5.0 + vue: 3.3.4 + vue-demi: 0.13.11(vue@3.3.4) + dev: false + + /@vue/compiler-core@3.3.4: + resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} + dependencies: + '@babel/parser': 7.22.7 + '@vue/shared': 3.3.4 + estree-walker: 2.0.2 + source-map-js: 1.0.2 + dev: false + + /@vue/compiler-dom@3.3.4: + resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==} + dependencies: + '@vue/compiler-core': 3.3.4 + '@vue/shared': 3.3.4 + dev: false + + /@vue/compiler-sfc@3.3.4: + resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==} + dependencies: + '@babel/parser': 7.22.7 + '@vue/compiler-core': 3.3.4 + '@vue/compiler-dom': 3.3.4 + '@vue/compiler-ssr': 3.3.4 + '@vue/reactivity-transform': 3.3.4 + '@vue/shared': 3.3.4 + estree-walker: 2.0.2 + magic-string: 0.30.1 + postcss: 8.4.26 + source-map-js: 1.0.2 + dev: false + + /@vue/compiler-ssr@3.3.4: + resolution: {integrity: sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==} + dependencies: + '@vue/compiler-dom': 3.3.4 + '@vue/shared': 3.3.4 + dev: false + + /@vue/devtools-api@6.5.0: + resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} + dev: false + + /@vue/reactivity-transform@3.3.4: + resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==} + dependencies: + '@babel/parser': 7.22.7 + '@vue/compiler-core': 3.3.4 + '@vue/shared': 3.3.4 + estree-walker: 2.0.2 + magic-string: 0.30.1 + dev: false + + /@vue/reactivity@3.3.4: + resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==} + dependencies: + '@vue/shared': 3.3.4 + dev: false + + /@vue/runtime-core@3.3.4: + resolution: {integrity: sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==} + dependencies: + '@vue/reactivity': 3.3.4 + '@vue/shared': 3.3.4 + dev: false + + /@vue/runtime-dom@3.3.4: + resolution: {integrity: sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==} + dependencies: + '@vue/runtime-core': 3.3.4 + '@vue/shared': 3.3.4 + csstype: 3.1.2 + dev: false + + /@vue/server-renderer@3.3.4(vue@3.3.4): + resolution: {integrity: sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==} + peerDependencies: + vue: 3.3.4 + dependencies: + '@vue/compiler-ssr': 3.3.4 + '@vue/shared': 3.3.4 + vue: 3.3.4 + dev: false + + /@vue/shared@3.3.4: + resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} + dev: false + + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + dev: false + + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: false + + /magic-string@0.30.1: + resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: false + + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: false + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: false + + /postcss@8.4.26: + resolution: {integrity: sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + + /remove-accents@0.4.2: + resolution: {integrity: sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==} + dev: false + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: false + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: false + + /vue-demi@0.13.11(vue@3.3.4): + resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.3.4 + dev: false + + /vue@3.3.4: + resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==} + dependencies: + '@vue/compiler-dom': 3.3.4 + '@vue/compiler-sfc': 3.3.4 + '@vue/runtime-dom': 3.3.4 + '@vue/server-renderer': 3.3.4(vue@3.3.4) + '@vue/shared': 3.3.4 + dev: false