Merge branch 'spacedriveapp:main' into navbar-transition

This commit is contained in:
matt authored and GitHub committed 2022-08-25 20:46:53 -05:00
commit ee69ec77f9
71 files changed
+1426 -766

No files matched your search

-20
View File
@@ -1,20 +0,0 @@
module.exports = {
root: true,
parser: '@typescript-eslint/parser',
parserOptions: {
project: [
'apps/desktop/tsconfig.json',
'apps/web/tsconfig.json',
'apps/landing/tsconfig.json',
'apps/mobile/tsconfig.json',
'packages/client/tsconfig.json',
'packages/interface/tsconfig.json',
'packages/ui/tsconfig.json'
]
},
plugins: ['@typescript-eslint'],
extends: ['standard-with-typescript', 'prettier'],
rules: {
'@typescript-eslint/explicit-function-return-type': 'off'
}
};
-4
View File
@@ -48,10 +48,6 @@ jobs:
working-directory: core
if: steps.cache-prisma.outputs.cache-hit != 'true'
run: cargo run -p prisma-cli --release -- generate
# This is do the proc-macro `tauri::generate_context!()` doesn't panic
- name: Create fake `dist` folder
run: mkdir ./apps/desktop/dist
- name: Run Clippy
uses: actions-rs/clippy-check@v1
+2 -2
View File
@@ -1,6 +1,7 @@
node_modules
.next
dist
!apps/desktop/dist
*.tsbuildinfo
package-lock.json
.eslintcache
@@ -15,7 +16,6 @@ storybook-static/
cache
.env
vendor/
dist
data
node_modules
packages/turbo-server/data/
@@ -61,4 +61,4 @@ todos.md
examples/*/*.lock
/target
/sdserver_data
/sdserver_data
Generated
+344 -100
View File
@@ -172,6 +172,15 @@ dependencies = [
"system-deps 6.0.2",
]
[[package]]
name = "atomic-shim"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67cd4b51d303cf3501c301e8125df442128d3c6d7c69f71b27833d253de47e77"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "attohttpc"
version = "0.19.1"
@@ -342,6 +351,15 @@ version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitmaps"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2"
dependencies = [
"typenum",
]
[[package]]
name = "bitvec"
version = "0.22.3"
@@ -755,8 +773,8 @@ dependencies = [
"crossbeam-channel",
"crossbeam-deque",
"crossbeam-epoch",
"crossbeam-queue 0.3.6",
"crossbeam-utils 0.8.11",
"crossbeam-queue",
"crossbeam-utils",
]
[[package]]
@@ -766,7 +784,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"
dependencies = [
"cfg-if 1.0.0",
"crossbeam-utils 0.8.11",
"crossbeam-utils",
]
[[package]]
@@ -777,7 +795,7 @@ checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
dependencies = [
"cfg-if 1.0.0",
"crossbeam-epoch",
"crossbeam-utils 0.8.11",
"crossbeam-utils",
]
[[package]]
@@ -788,23 +806,12 @@ checksum = "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1"
dependencies = [
"autocfg",
"cfg-if 1.0.0",
"crossbeam-utils 0.8.11",
"crossbeam-utils",
"memoffset",
"once_cell",
"scopeguard",
]
[[package]]
name = "crossbeam-queue"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570"
dependencies = [
"cfg-if 0.1.10",
"crossbeam-utils 0.7.2",
"maybe-uninit",
]
[[package]]
name = "crossbeam-queue"
version = "0.3.6"
@@ -812,18 +819,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1cd42583b04998a5363558e5f9291ee5a5ff6b49944332103f251e7479a82aa7"
dependencies = [
"cfg-if 1.0.0",
"crossbeam-utils 0.8.11",
]
[[package]]
name = "crossbeam-utils"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
dependencies = [
"autocfg",
"cfg-if 0.1.10",
"lazy_static",
"crossbeam-utils",
]
[[package]]
@@ -954,19 +950,20 @@ checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57"
[[package]]
name = "datamodel"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"bigdecimal 0.2.2",
"chrono",
"datamodel-connector",
"diagnostics",
"dml",
"either",
"enumflags2",
"indoc",
"itertools",
"mongodb-datamodel-connector",
"once_cell",
"parser-database",
"pest",
"regex",
"schema-ast",
"serde",
@@ -977,10 +974,11 @@ dependencies = [
[[package]]
name = "datamodel-connector"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"diagnostics",
"enumflags2",
"lsp-types",
"parser-database",
"serde_json",
"url",
@@ -1043,11 +1041,10 @@ dependencies = [
[[package]]
name = "diagnostics"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"colored",
"pest",
"thiserror",
]
[[package]]
@@ -1111,7 +1108,7 @@ checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
[[package]]
name = "dml"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"chrono",
"cuid",
@@ -1127,10 +1124,14 @@ dependencies = [
[[package]]
name = "dmmf"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"bigdecimal 0.2.2",
"datamodel",
"indexmap",
"prisma-models",
"schema",
"schema-builder",
"serde",
"serde_json",
]
@@ -1248,6 +1249,12 @@ dependencies = [
"cfg-if 1.0.0",
]
[[package]]
name = "endian-type"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"
[[package]]
name = "enum-as-inner"
version = "0.4.0"
@@ -2177,7 +2184,7 @@ version = "0.4.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d"
dependencies = [
"crossbeam-utils 0.8.11",
"crossbeam-utils",
"globset",
"lazy_static",
"log",
@@ -2191,13 +2198,16 @@ dependencies = [
[[package]]
name = "im"
version = "13.0.0"
version = "15.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8db49f8bc08d5cc4e2bb0f7d25a6d1db2c79bc6f7d7c86c96c657eb3d214125f"
checksum = "d0acd33ff0285af998aaf9b57342af478078f53492322fafc47450e09397e0e9"
dependencies = [
"rustc_version 0.2.3",
"bitmaps",
"rand_core 0.6.3",
"rand_xoshiro",
"sized-chunks",
"typenum",
"version_check",
]
[[package]]
@@ -2684,6 +2694,19 @@ dependencies = [
"linked-hash-map",
]
[[package]]
name = "lsp-types"
version = "0.91.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2368312c59425dd133cb9a327afee65be0a633a8ce471d248e2202a48f8f68ae"
dependencies = [
"bitflags",
"serde",
"serde_json",
"serde_repr",
"url",
]
[[package]]
name = "mac"
version = "0.1.1"
@@ -2703,6 +2726,15 @@ dependencies = [
"time 0.3.11",
]
[[package]]
name = "mach"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa"
dependencies = [
"libc",
]
[[package]]
name = "malloc_buf"
version = "0.0.6"
@@ -2753,12 +2785,6 @@ version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73cbba799671b762df5a175adf59ce145165747bb891505c43d09aefbbf38beb"
[[package]]
name = "maybe-uninit"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
[[package]]
name = "md-5"
version = "0.10.1"
@@ -2791,18 +2817,90 @@ dependencies = [
[[package]]
name = "metrics"
version = "0.12.1"
version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51b70227ece8711a1aa2f99655efd795d0cff297a5b9fe39645a93aacf6ad39d"
checksum = "2e52eb6380b6d2a10eb3434aec0885374490f5b82c8aaf5cd487a183c98be834"
dependencies = [
"metrics-core",
"ahash",
"metrics-macros",
]
[[package]]
name = "metrics-core"
version = "0.5.2"
name = "metrics"
version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c064b3a1ff41f4bf6c91185c8a0caeccf8a8a27e9d0f92cc54cf3dbec812f48"
checksum = "142c53885123b68d94108295a09d4afe1a1388ed95b54d5dacd9a454753030f2"
dependencies = [
"ahash",
"metrics-macros",
]
[[package]]
name = "metrics-exporter-prometheus"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "953cbbb6f9ba4b9304f4df79b98cdc9d14071ed93065a9fca11c00c5d9181b66"
dependencies = [
"hyper",
"indexmap",
"ipnet",
"metrics 0.19.0",
"metrics-util 0.13.0",
"parking_lot 0.11.2",
"quanta",
"thiserror",
"tokio",
"tracing",
]
[[package]]
name = "metrics-macros"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49e30813093f757be5cf21e50389a24dc7dbb22c49f23b7e8f51d69b508a5ffa"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "metrics-util"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "65a9e83b833e1d2e07010a386b197c13aa199bbd0fca5cf69bfa147972db890a"
dependencies = [
"aho-corasick",
"atomic-shim",
"crossbeam-epoch",
"crossbeam-utils",
"hashbrown 0.11.2",
"indexmap",
"metrics 0.18.1",
"num_cpus",
"ordered-float",
"parking_lot 0.11.2",
"quanta",
"radix_trie",
"sketches-ddsketch",
]
[[package]]
name = "metrics-util"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd1f4b69bef1e2b392b2d4a12902f2af90bb438ba4a66aa222d1023fa6561b50"
dependencies = [
"atomic-shim",
"crossbeam-epoch",
"crossbeam-utils",
"hashbrown 0.11.2",
"metrics 0.19.0",
"num_cpus",
"parking_lot 0.11.2",
"quanta",
"sketches-ddsketch",
]
[[package]]
name = "mime"
@@ -2840,7 +2938,7 @@ dependencies = [
[[package]]
name = "mobc"
version = "0.7.3"
source = "git+https://github.com/prisma/mobc?tag=1.0.0#75c68f1054b30e4aa22180c95eca1ccad96868cc"
source = "git+https://github.com/prisma/mobc?tag=1.0.5#d50fd5de25f80880b0f533bcb48cc65f2c4960b0"
dependencies = [
"async-trait",
"futures-channel",
@@ -2848,8 +2946,11 @@ dependencies = [
"futures-timer",
"futures-util",
"log",
"metrics 0.18.1",
"thiserror",
"tokio",
"tracing",
"tracing-subscriber",
]
[[package]]
@@ -2901,7 +3002,7 @@ dependencies = [
[[package]]
name = "mongodb-client"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"mongodb",
"once_cell",
@@ -2912,7 +3013,7 @@ dependencies = [
[[package]]
name = "mongodb-datamodel-connector"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"datamodel-connector",
"enumflags2",
@@ -2924,7 +3025,7 @@ dependencies = [
[[package]]
name = "mongodb-query-connector"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"anyhow",
"async-trait",
@@ -2935,6 +3036,8 @@ dependencies = [
"futures",
"indexmap",
"itertools",
"metrics 0.18.1",
"metrics-util 0.12.1",
"mongodb",
"mongodb-client",
"native-types",
@@ -3061,7 +3164,7 @@ dependencies = [
[[package]]
name = "native-types"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"serde",
"serde_json",
@@ -3101,6 +3204,15 @@ version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
[[package]]
name = "nibble_vec"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43"
dependencies = [
"smallvec",
]
[[package]]
name = "nix"
version = "0.24.2"
@@ -3347,6 +3459,15 @@ version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]]
name = "openssl-src"
version = "111.22.0+1.1.1q"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f31f0d509d1c1ae9cada2f9539ff8f37933831fd5098879e482aa687d659853"
dependencies = [
"cc",
]
[[package]]
name = "openssl-sys"
version = "0.9.75"
@@ -3356,19 +3477,22 @@ dependencies = [
"autocfg",
"cc",
"libc",
"openssl-src",
"pkg-config",
"vcpkg",
]
[[package]]
name = "opentelemetry"
version = "0.16.0"
version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1cf9b1c4e9a6c4de793c632496fa490bdc0e1eea73f0c91394f7b6990935d22"
checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8"
dependencies = [
"async-trait",
"crossbeam-channel",
"futures",
"futures-channel",
"futures-executor",
"futures-util",
"js-sys",
"lazy_static",
"percent-encoding",
@@ -3469,6 +3593,17 @@ dependencies = [
"parking_lot_core 0.7.2",
]
[[package]]
name = "parking_lot"
version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
dependencies = [
"instant",
"lock_api 0.4.7",
"parking_lot_core 0.8.5",
]
[[package]]
name = "parking_lot"
version = "0.12.1"
@@ -3493,6 +3628,20 @@ dependencies = [
"winapi",
]
[[package]]
name = "parking_lot_core"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216"
dependencies = [
"cfg-if 1.0.0",
"instant",
"libc",
"redox_syscall 0.2.16",
"smallvec",
"winapi",
]
[[package]]
name = "parking_lot_core"
version = "0.9.3"
@@ -3509,9 +3658,10 @@ dependencies = [
[[package]]
name = "parser-database"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"diagnostics",
"either",
"enumflags2",
"indexmap",
"schema-ast",
@@ -3859,16 +4009,19 @@ dependencies = [
[[package]]
name = "prisma-client-rust"
version = "0.6.0"
source = "git+https://github.com/Brendonovich/prisma-client-rust.git?branch=0.6.0#f6799c685662135a6fb6728e1fe188168cdbd219"
source = "git+https://github.com/Brendonovich/prisma-client-rust.git?rev=6a0119bce951c8d956542a59b2f783fc5a591fc7#6a0119bce951c8d956542a59b2f783fc5a591fc7"
dependencies = [
"base64 0.13.0",
"bigdecimal 0.2.2",
"chrono",
"datamodel",
"dmmf",
"indexmap",
"prisma-models",
"query-connector",
"query-core",
"rspc",
"schema",
"serde",
"serde-value",
"serde_json",
@@ -3880,7 +4033,7 @@ dependencies = [
[[package]]
name = "prisma-client-rust-cli"
version = "0.6.0"
source = "git+https://github.com/Brendonovich/prisma-client-rust.git?branch=0.6.0#f6799c685662135a6fb6728e1fe188168cdbd219"
source = "git+https://github.com/Brendonovich/prisma-client-rust.git?rev=6a0119bce951c8d956542a59b2f783fc5a591fc7#6a0119bce951c8d956542a59b2f783fc5a591fc7"
dependencies = [
"datamodel",
"prisma-client-rust-sdk",
@@ -3898,11 +4051,12 @@ dependencies = [
[[package]]
name = "prisma-client-rust-sdk"
version = "0.6.0"
source = "git+https://github.com/Brendonovich/prisma-client-rust.git?branch=0.6.0#f6799c685662135a6fb6728e1fe188168cdbd219"
source = "git+https://github.com/Brendonovich/prisma-client-rust.git?rev=6a0119bce951c8d956542a59b2f783fc5a591fc7#6a0119bce951c8d956542a59b2f783fc5a591fc7"
dependencies = [
"convert_case 0.5.0",
"datamodel",
"directories",
"dmmf",
"flate2",
"http",
"prisma-models",
@@ -3918,50 +4072,34 @@ dependencies = [
"syn",
]
[[package]]
name = "prisma-inflector"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
dependencies = [
"once_cell",
"regex",
"unicode-segmentation",
]
[[package]]
name = "prisma-models"
version = "0.0.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"bigdecimal 0.2.2",
"chrono",
"cuid",
"datamodel",
"itertools",
"once_cell",
"prisma-value",
"quaint",
"rand 0.7.3",
"serde",
"serde_derive",
"serde_json",
"thiserror",
"uuid 0.8.2",
]
[[package]]
name = "prisma-value"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"base64 0.12.3",
"bigdecimal 0.2.2",
"chrono",
"once_cell",
"quaint",
"regex",
"serde",
"serde_derive",
"serde_json",
"uuid 0.8.2",
]
@@ -4027,7 +4165,7 @@ dependencies = [
[[package]]
name = "quaint"
version = "0.2.0-alpha.13"
source = "git+https://github.com/prisma/quaint?rev=a0722f26311669377ca9069843e8866a1706c42a#a0722f26311669377ca9069843e8866a1706c42a"
source = "git+https://github.com/prisma/quaint?rev=fb4fe90682b4fecb485fd0d6975dd15a3bc9616b#fb4fe90682b4fecb485fd0d6975dd15a3bc9616b"
dependencies = [
"async-trait",
"base64 0.12.3",
@@ -4042,7 +4180,7 @@ dependencies = [
"hex",
"libsqlite3-sys",
"lru-cache",
"metrics",
"metrics 0.18.1",
"mobc",
"mysql_async",
"native-tls",
@@ -4052,6 +4190,7 @@ dependencies = [
"postgres-types",
"rusqlite",
"serde_json",
"sqlformat",
"thiserror",
"tiberius",
"tokio",
@@ -4063,10 +4202,26 @@ dependencies = [
"uuid 0.8.2",
]
[[package]]
name = "quanta"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20afe714292d5e879d8b12740aa223c6a88f118af41870e8b6196e39a02238a8"
dependencies = [
"crossbeam-utils",
"libc",
"mach",
"once_cell",
"raw-cpuid",
"wasi 0.10.0+wasi-snapshot-preview1",
"web-sys",
"winapi",
]
[[package]]
name = "query-connector"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"anyhow",
"async-trait",
@@ -4086,14 +4241,14 @@ dependencies = [
[[package]]
name = "query-core"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"async-trait",
"base64 0.12.3",
"bigdecimal 0.2.2",
"chrono",
"connection-string",
"crossbeam-queue 0.2.3",
"crossbeam-queue",
"cuid",
"datamodel",
"datamodel-connector",
@@ -4102,15 +4257,22 @@ dependencies = [
"indexmap",
"itertools",
"lazy_static",
"lru",
"metrics 0.18.1",
"metrics-exporter-prometheus",
"metrics-util 0.12.1",
"mongodb-client",
"mongodb-query-connector",
"once_cell",
"opentelemetry",
"parking_lot 0.12.1",
"petgraph",
"pin-utils",
"prisma-inflector",
"prisma-models",
"prisma-value",
"query-connector",
"schema",
"schema-builder",
"serde",
"serde_json",
"sql-query-connector",
@@ -4118,6 +4280,8 @@ dependencies = [
"tokio",
"tracing",
"tracing-futures",
"tracing-opentelemetry",
"tracing-subscriber",
"url",
"user-facing-errors",
"uuid 0.8.2",
@@ -4144,6 +4308,16 @@ version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb"
[[package]]
name = "radix_trie"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd"
dependencies = [
"endian-type",
"nibble_vec",
]
[[package]]
name = "rand"
version = "0.7.3"
@@ -4225,6 +4399,24 @@ dependencies = [
"rand_core 0.5.1",
]
[[package]]
name = "rand_xoshiro"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa"
dependencies = [
"rand_core 0.6.3",
]
[[package]]
name = "raw-cpuid"
version = "10.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6aa2540135b6a94f74c7bc90ad4b794f822026a894f3d7bcd185c100d13d4ad6"
dependencies = [
"bitflags",
]
[[package]]
name = "raw-window-handle"
version = "0.4.3"
@@ -4254,7 +4446,7 @@ checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f"
dependencies = [
"crossbeam-channel",
"crossbeam-deque",
"crossbeam-utils 0.8.11",
"crossbeam-utils",
"num_cpus",
]
@@ -4322,7 +4514,7 @@ dependencies = [
[[package]]
name = "request-handlers"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"bigdecimal 0.2.2",
"connection-string",
@@ -4623,16 +4815,39 @@ dependencies = [
"windows-sys",
]
[[package]]
name = "schema"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"datamodel-connector",
"once_cell",
"prisma-models",
]
[[package]]
name = "schema-ast"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"diagnostics",
"pest",
"pest_derive",
]
[[package]]
name = "schema-builder"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"datamodel-connector",
"itertools",
"lazy_static",
"once_cell",
"prisma-models",
"schema",
]
[[package]]
name = "scoped-tls"
version = "1.0.0"
@@ -4994,13 +5209,20 @@ checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
[[package]]
name = "sized-chunks"
version = "0.3.1"
version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f01db57d7ee89c8e053245deb77040a6cc8508311f381c88749c33d4b9b78785"
checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e"
dependencies = [
"bitmaps",
"typenum",
]
[[package]]
name = "sketches-ddsketch"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04d2ecae5fcf33b122e2e6bd520a57ccf152d2dde3b38c71039df1a6867264ee"
[[package]]
name = "slab"
version = "0.4.7"
@@ -5113,10 +5335,13 @@ dependencies = [
[[package]]
name = "sql-datamodel-connector"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"connection-string",
"datamodel-connector",
"either",
"enumflags2",
"lsp-types",
"native-types",
"once_cell",
"regex",
@@ -5126,7 +5351,7 @@ dependencies = [
[[package]]
name = "sql-query-connector"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"anyhow",
"async-trait",
@@ -5145,6 +5370,7 @@ dependencies = [
"rand 0.7.3",
"serde",
"serde_json",
"sql-datamodel-connector",
"thiserror",
"tokio",
"tracing",
@@ -5154,6 +5380,17 @@ dependencies = [
"uuid 0.8.2",
]
[[package]]
name = "sqlformat"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f87e292b4291f154971a43c3774364e2cbcaec599d3f5bf6fa9d122885dbc38a"
dependencies = [
"itertools",
"nom",
"unicode_categories",
]
[[package]]
name = "stable_deref_trait"
version = "1.2.0"
@@ -5658,9 +5895,9 @@ dependencies = [
[[package]]
name = "tiberius"
version = "0.7.3"
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "833311bc8e26e96c73ad1b5c1f488c588808c747a318905ec67e43d422ea2c08"
checksum = "31d6bfb7b1de4275b4cf566bad8d0c133d800e3d8b35d256407371fab49cfed6"
dependencies = [
"async-native-tls",
"async-trait",
@@ -5980,10 +6217,11 @@ dependencies = [
[[package]]
name = "tracing-opentelemetry"
version = "0.16.0"
version = "0.17.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ffbf13a0f8b054a4e59df3a173b818e9c6177c02789871f2073977fd0062076"
checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f"
dependencies = [
"once_cell",
"opentelemetry",
"tracing",
"tracing-core",
@@ -6149,6 +6387,12 @@ version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99"
[[package]]
name = "unicode_categories"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e"
[[package]]
name = "unreachable"
version = "1.0.0"
@@ -6180,7 +6424,7 @@ dependencies = [
[[package]]
name = "user-facing-error-macros"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"proc-macro2",
"quote",
@@ -6190,7 +6434,7 @@ dependencies = [
[[package]]
name = "user-facing-errors"
version = "0.1.0"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=5d34c9a567aaec4065a48d8cf6c2ee885e6ca281#5d34c9a567aaec4065a48d8cf6c2ee885e6ca281"
source = "git+https://github.com/Brendonovich/prisma-engines?rev=dcea2c532cb777afb290a613f769140647a16804#dcea2c532cb777afb290a613f769140647a16804"
dependencies = [
"backtrace",
"indoc",
+6 -5
View File
@@ -1,8 +1,9 @@
[workspace]
members = [
"apps/desktop/src-tauri",
"core",
"core/prisma",
"core/derive",
"apps/server"
"apps/desktop/src-tauri",
"core",
"core/prisma",
"core/derive",
"apps/server",
]
resolver = "2"
+5
View File
@@ -0,0 +1,5 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore
# This is done so that Tauri never complains that '../dist does not exist'
+1 -1
View File
@@ -29,7 +29,7 @@ function App() {
}
}
const [platform, setPlatform] = useState<Platform>('macOS');
const [platform, setPlatform] = useState<Platform>('unknown');
const [focused, setFocused] = useState(true);
useEffect(() => {
+8
View File
@@ -0,0 +1,8 @@
module.exports = {
...require('@sd/config/eslint-react.js'),
parserOptions: {
tsconfigRootDir: __dirname,
project: './tsconfig.json'
},
ignorePatterns: ['**/*.js', '**/*.json', 'node_modules', 'public', 'dist']
};
+3 -1
View File
@@ -6,7 +6,8 @@
"vercel-build": "./vercel/deploy.sh",
"build": "vite build && vite build --ssr && vite-plugin-ssr prerender",
"server": "ts-node ./server",
"server:prod": "cross-env NODE_ENV=production ts-node ./server"
"server:prod": "cross-env NODE_ENV=production ts-node ./server",
"lint": "eslint src/**/*.{ts,tsx} && tsc --noEmit"
},
"dependencies": {
"@heroicons/react": "^1.0.6",
@@ -39,6 +40,7 @@
"vite-plugin-ssr": "^0.4.15"
},
"devDependencies": {
"@sd/config": "link:../../packages/config",
"@tailwindcss/line-clamp": "^0.4.0",
"@tailwindcss/typography": "^0.5.4",
"@types/prismjs": "^1.26.0",
+2 -3
View File
@@ -1,3 +1,4 @@
/* eslint-disable react-hooks/exhaustive-deps */
import clsx from 'clsx';
import React, { useEffect, useRef, useState } from 'react';
@@ -87,9 +88,7 @@ const AppEmbed = () => {
/>
)}
{renderImage && (
<div className="z-40 h-full sm:w-auto fade-in-app-embed landing-img" />
)}
{renderImage && <div className="z-40 h-full sm:w-auto fade-in-app-embed landing-img" />}
</div>
</div>
</div>
+1
View File
@@ -16,6 +16,7 @@ function FooterLink(props: { children: string | JSX.Element; link: string; blank
href={props.link}
target={props.blank ? '_blank' : ''}
className="text-gray-300 hover:text-white"
rel="noreferrer"
>
{props.children}
</a>
+4 -2
View File
@@ -15,6 +15,7 @@ function NavLink(props: { link?: string; children: string }) {
href={props.link ?? '#'}
target={props.link?.startsWith('http') ? '_blank' : undefined}
className="p-4 text-gray-300 no-underline transition cursor-pointer hover:text-gray-50"
rel="noreferrer"
>
{props.children}
</a>
@@ -54,6 +55,7 @@ export default function NavBar() {
setTimeout(onScroll, 0);
getWindow()?.addEventListener('scroll', onScroll);
return () => getWindow()?.removeEventListener('scroll', onScroll);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return (
@@ -136,10 +138,10 @@ export default function NavBar() {
buttonProps={{ className: '!p-1 ml-[140px]' }}
/>
<div className="absolute flex-row hidden space-x-5 right-3 lg:flex">
<a href="https://discord.gg/gTaF2Z44f5" target="_blank">
<a href="https://discord.gg/gTaF2Z44f5" target="_blank" rel="noreferrer">
<Discord className="text-white" />
</a>
<a href="https://github.com/spacedriveapp/spacedrive" target="_blank">
<a href="https://github.com/spacedriveapp/spacedrive" target="_blank" rel="noreferrer">
<Github className="text-white" />
</a>
</div>
+1 -1
View File
@@ -36,7 +36,7 @@ function Link(props: LinkProps) {
<a
className="duration-300 hover:scale-105 hover:opacity-80"
href={props.href}
rel="noreferer"
rel="noreferrer"
target="_blank"
>
{props.children}
+26 -26
View File
@@ -7,35 +7,35 @@ const ghostURL = import.meta.env.VITE_API_URL;
export const blogEnabled = !!(ghostURL && ghostKey);
export const api = blogEnabled
? new GhostContentAPI({
url: ghostURL,
key: ghostKey,
version: 'v4'
})
: null;
? new GhostContentAPI({
url: ghostURL,
key: ghostKey,
version: 'v5.0'
})
: null;
export async function getPosts() {
if (!api) {
return [];
}
const posts = await api.posts
.browse({
include: ['tags', 'authors']
})
.catch(() => []);
return posts;
if (!api) {
return [];
}
const posts = await api.posts
.browse({
include: ['tags', 'authors']
})
.catch(() => []);
return posts;
}
export async function getPost(slug: string) {
if (!api) {
return null;
}
return await api.posts
.read(
{ slug },
{
include: ['tags', 'authors']
}
)
.catch(() => null);
if (!api) {
return null;
}
return await api.posts
.read(
{ slug },
{
include: ['tags', 'authors']
}
)
.catch(() => null);
}
@@ -1,22 +1,27 @@
import { getPosts } from './api';
import { blogEnabled, getPosts } from './api';
export async function onBeforeRender() {
const posts = await getPosts();
const posts = await getPosts();
return {
pageContext: {
pageProps: {
posts
}
}
};
return {
pageContext: {
pageProps: {
posts
}
}
};
}
export async function prerender() {
const posts = await getPosts();
const posts = await getPosts();
return {
url: '/blog',
pageContext: { pageProps: { posts } }
};
const individualPosts = posts.map((post) => ({
url: `/blog/${post.slug}`,
pageContext: { pageProps: { post } }
}));
return [...individualPosts, {
url: '/blog',
pageContext: { pageProps: { posts } }
}];
}
+5 -4
View File
@@ -8,7 +8,7 @@ import { blogEnabled } from './api';
function Page({ posts }: { posts: PostOrPage[] }) {
if (!blogEnabled) {
let window = getWindow();
const window = getWindow();
if (!window) return;
window.location.href = '/blog-not-enabled';
return <></>;
@@ -28,6 +28,7 @@ function Page({ posts }: { posts: PostOrPage[] }) {
{posts.map((post) => {
return (
<div
key={post.id}
onClick={() => {
window.location.href = `/blog/${post.slug}`;
}}
@@ -49,9 +50,9 @@ function Page({ posts }: { posts: PostOrPage[] }) {
{new Date(post.published_at ?? '').toLocaleDateString()}
</p>
<div className="flex flex-wrap gap-2 mt-4">
{post.tags?.map((tag: Tag) => {
return <BlogTag tag={tag} />;
})}
{post.tags?.map((tag: Tag) => (
<BlogTag key={tag.id} tag={tag} />
))}
</div>
</div>
</div>
@@ -3,22 +3,13 @@ import { PageContextBuiltIn } from 'vite-plugin-ssr';
import { getPost, getPosts } from './api';
export async function onBeforeRender(pageContext: PageContextBuiltIn) {
const post = await getPost(pageContext.routeParams['slug']);
const post = await getPost(pageContext.routeParams['slug']);
return {
pageContext: {
pageProps: {
post
}
}
};
}
export async function prerender() {
const posts = await getPosts();
return posts.map((post) => ({
url: `/blog/${post.slug}`,
pageContext: { pageProps: { post } }
}));
return {
pageContext: {
pageProps: {
post
}
}
};
}
+5 -5
View File
@@ -12,10 +12,10 @@ function MarkdownPage({ post }: { post: PostOrPage }) {
Prism.highlightAll();
}, []);
let description =
const description =
post?.excerpt?.length || 0 > 160 ? post?.excerpt?.substring(0, 160) + '...' : post?.excerpt;
let featured_image =
const featured_image =
post?.feature_image ||
'https://raw.githubusercontent.com/spacedriveapp/.github/main/profile/spacedrive_icon.png';
@@ -50,9 +50,9 @@ function MarkdownPage({ post }: { post: PostOrPage }) {
</p>
</div>
<div className="flex flex-wrap gap-2">
{post?.tags?.map((tag: Tag) => {
return <BlogTag tag={tag} />;
})}
{post?.tags?.map((tag: Tag) => (
<BlogTag key={tag.id} tag={tag} />
))}
</div>
</section>
<article
+12 -5
View File
@@ -118,8 +118,11 @@ function Page() {
<h2 className="px-2 mb-0 text-4xl font-black leading-tight text-center">Our Values</h2>
<p className="mt-2 mb-4">What drives us daily.</p>
<div className="grid w-full grid-cols-1 gap-4 mt-5 sm:grid-cols-2">
{values.map((value) => (
<div className="flex flex-col p-10 bg-opacity-50 border border-gray-500 rounded-md bg-gray-550">
{values.map((value, index) => (
<div
key={value.title + index}
className="flex flex-col p-10 bg-opacity-50 border border-gray-500 rounded-md bg-gray-550"
>
<value.icon className="w-8 m-0" />
<h3 className="mt-4 mb-1 leading-snug text-2xl font-bold">{value.title}</h3>
<p className="mt-1 mb-0 text-gray-350">{value.desc}</p>
@@ -132,8 +135,9 @@ function Page() {
</h2>
<p className="mt-2 mb-4">We're behind you 100%.</p>
<div className="grid w-full grid-cols-1 gap-4 mt-5 sm:grid-cols-3">
{perks.map((value) => (
{perks.map((value, index) => (
<div
key={value.title + index}
style={{ backgroundColor: value.color + '10', borderColor: value.color + '30' }}
className="flex flex-col p-8 border rounded-md bg-gray-550 bg-opacity-30"
>
@@ -154,8 +158,11 @@ function Page() {
There are no positions open at this time. Please check back later!
</p>
) : (
positions.map((value) => (
<div className="flex flex-col p-10 bg-opacity-50 border border-gray-500 rounded-md bg-gray-550">
positions.map((value, index) => (
<div
key={value.name + index}
className="flex flex-col p-10 bg-opacity-50 border border-gray-500 rounded-md bg-gray-550"
>
<div className="flex flex-col sm:flex-row">
<h3 className="m-0 text-2xl leading-tight">{value.name}</h3>
<div className="mt-3 sm:mt-0.5">
+9 -6
View File
@@ -20,7 +20,7 @@ interface SectionProps {
}
function Section(props: SectionProps = { orientation: 'left' }) {
let info = (
const info = (
<div className="px-4 py-10 sm:px-10">
{props.heading && <h1 className="text-2xl font-black sm:text-4xl">{props.heading}</h1>}
{props.description && (
@@ -100,11 +100,13 @@ function Page() {
</Helmet>
<div className="mt-22 lg:mt-28" id="content" aria-hidden="true" />
<div className="mt-24 lg:mt-5" />
<NewBanner
headline="Spacedrive raises $2M led by OSS Capital"
href="/blog/spacedrive-funding-announcement"
link="Read post"
/>
{/* Disabled while blog post is not available */}
{/* TODO: re-enable */}
{/* <NewBanner */}
{/* headline="Spacedrive raises $2M led by OSS Capital" */}
{/* href="/blog/spacedrive-funding-announcement" */}
{/* link="Read post" */}
{/* /> */}
{unsubscribedFromWaitlist && (
<div
className={
@@ -144,6 +146,7 @@ function Page() {
className="transition text-primary-600 hover:text-primary-500"
href="https://github.com/spacedriveapp"
target="_blank"
rel="noreferrer"
>
Find out more →
</a>
+1 -1
View File
@@ -245,7 +245,7 @@ function Page() {
<a
href="https://github.com/spacedriveapp/spacedrive/graphs/contributors"
target="_blank"
rel="noreferer"
rel="noreferrer"
className="duration-200 oss-credit-gradient hover:opacity-75"
>
open source contributors
+9 -9
View File
@@ -1,11 +1,11 @@
export type PageProps = {}
export type PageProps = Record<string, unknown>;
// The `pageContext` that are available in both on the server-side and browser-side
export type PageContext = {
Page: (pageProps: PageProps) => React.ReactElement
pageProps: PageProps
urlPathname: string
documentProps?: {
title?: string
description?: string
}
}
Page: (pageProps: PageProps) => React.ReactElement;
pageProps: PageProps;
urlPathname: string;
documentProps?: {
title?: string;
description?: string;
};
};
+2 -2
View File
@@ -6,9 +6,9 @@ export function getWindow(): (Window & typeof globalThis) | null {
return typeof window !== 'undefined' ? window : null;
}
// eslint-disable-next-line no-useless-escape
const FILE_NAME_REGEX = /^.*[\\\/]/;
/**
* Extracts the file name including its extension from a file path
*/
@@ -19,7 +19,7 @@ export function filename(path: string) {
/**
* Takes the result of `import.meta.globEager` and returns an object
* with the keys being the file names and the values being the imported file.
*
*
* Does not work with directories.
*/
export function resolveFilesGlob(files: Record<string, any>): Record<string, string> {
-4
View File
@@ -1,4 +0,0 @@
node_modules/
android/
ios/
.expo
+42
View File
@@ -0,0 +1,42 @@
module.exports = {
env: {
'react-native/react-native': true
},
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaFeatures: {
jsx: true
},
ecmaVersion: 12,
sourceType: 'module'
},
extends: [
'eslint:recommended',
'plugin:react/recommended',
'plugin:react-hooks/recommended',
'plugin:@typescript-eslint/recommended'
],
plugins: ['react', 'react-native'],
rules: {
'react/display-name': 'off',
'react/prop-types': 'off',
'react/no-unescaped-entities': 'off',
'react/react-in-jsx-scope': 'off',
'react-hooks/rules-of-hooks': 'error',
'react-hooks/exhaustive-deps': 'warn',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/ban-ts-comment': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-var-requires': 'off',
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/explicit-module-boundary-types': 'off',
'no-control-regex': 'off',
'no-mixed-spaces-and-tabs': ['warn', 'smart-tabs']
},
ignorePatterns: ['**/*.js', '**/*.json', 'node_modules', 'android', 'ios', '.expo'],
settings: {
react: {
version: 'detect'
}
}
};
-44
View File
@@ -1,44 +0,0 @@
{
"env": {
"react-native/react-native": true
},
"extends": [
"eslint:recommended",
"plugin:react/recommended",
"plugin:react-hooks/recommended",
"plugin:@typescript-eslint/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": 12,
"sourceType": "module"
},
"plugins": ["react", "react-native", "react-hooks", "@typescript-eslint"],
"rules": {
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn",
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-unused-vars": "off",
"@typescript-eslint/no-var-requires": "off",
"@typescript-eslint/no-non-null-assertion": "off",
"@typescript-eslint/explicit-module-boundary-types": "off",
"react/display-name": "off",
"react/prop-types": "off",
"no-control-regex": "off",
"no-mixed-spaces-and-tabs": ["warn", "smart-tabs"],
"react/react-in-jsx-scope": "off",
// Aggressively disable some rules for React Native.
"@typescript-eslint/strict-boolean-expressions": "off",
"@typescript-eslint/consistent-type-definitions": "off",
"@typescript-eslint/no-floating-promises": "off"
},
"settings": {
"react": {
"version": "detect" // "detect" automatically picks the version you have installed.
}
}
}
+8 -2
View File
@@ -6,7 +6,8 @@
"scripts": {
"dev": "expo start --dev-client",
"android": "expo run:android",
"ios": "expo run:ios"
"ios": "expo run:ios",
"lint": "eslint src/**/*.{ts,tsx} && tsc --noEmit"
},
"dependencies": {
"@expo/vector-icons": "^13.0.0",
@@ -47,12 +48,17 @@
"@rnx-kit/metro-resolver-symlinks": "^0.1.21",
"@types/react": "~18.0.15",
"@types/react-native": "~0.69.5",
"@typescript-eslint/eslint-plugin": "^5.30.7",
"@typescript-eslint/parser": "^5.30.7",
"eslint": "^8.21.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-react": "^7.30.1",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-native": "^4.0.0",
"metro-minify-terser": "^0.72.0",
"react-native-svg": "^12.4.3",
"react-native-svg-transformer": "^1.0.0"
"react-native-svg-transformer": "^1.0.0",
"typescript": "^4.7.4"
},
"private": true
}
+521 -29
View File
@@ -19,8 +19,12 @@ importers:
'@sd/core': file:../../core
'@types/react': ~18.0.15
'@types/react-native': ~0.69.5
'@typescript-eslint/eslint-plugin': ^5.30.7
'@typescript-eslint/parser': ^5.30.7
byte-size: ^8.1.0
class-variance-authority: ^0.2.3
eslint: ^8.21.0
eslint-config-prettier: ^8.5.0
eslint-plugin-react: ^7.30.1
eslint-plugin-react-hooks: ^4.6.0
eslint-plugin-react-native: ^4.0.0
@@ -43,6 +47,7 @@ importers:
react-native-svg: ^12.3.0
react-native-svg-transformer: ^1.0.0
twrnc: ^3.4.0
typescript: ^4.7.4
use-count-up: ^3.0.1
zustand: ^4.0.0
dependencies:
@@ -56,7 +61,7 @@ importers:
'@sd/assets': file:../../packages/assets
'@sd/core': file:../../core
byte-size: 8.1.0
class-variance-authority: 0.2.3
class-variance-authority: 0.2.3_typescript@4.7.4
expo: 46.0.2_@babel+core@7.18.10
expo-font: 10.2.0_expo@46.0.2
expo-linking: 3.2.2_expo@46.0.2
@@ -83,11 +88,16 @@ importers:
'@rnx-kit/metro-resolver-symlinks': 0.1.21
'@types/react': 18.0.15
'@types/react-native': 0.69.5
eslint-plugin-react: 7.30.1
eslint-plugin-react-hooks: 4.6.0
eslint-plugin-react-native: 4.0.0
'@typescript-eslint/eslint-plugin': 5.33.0_njno5y7ry2l2lcmiu4tywxkwnq
'@typescript-eslint/parser': 5.33.0_qugx7qdu5zevzvxaiqyxfiwquq
eslint: 8.21.0
eslint-config-prettier: 8.5.0_eslint@8.21.0
eslint-plugin-react: 7.30.1_eslint@8.21.0
eslint-plugin-react-hooks: 4.6.0_eslint@8.21.0
eslint-plugin-react-native: 4.0.0_eslint@8.21.0
metro-minify-terser: 0.72.0
react-native-svg-transformer: 1.0.0_rgv7y333vc7y3x4ecunq34lwky
typescript: 4.7.4
packages:
@@ -1391,6 +1401,23 @@ packages:
dev: false
optional: true
/@eslint/eslintrc/1.3.0:
resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
debug: 4.3.4
espree: 9.3.3
globals: 13.17.0
ignore: 5.2.0
import-fresh: 3.3.0
js-yaml: 4.1.0
minimatch: 3.1.2
strip-json-comments: 3.1.1
transitivePeerDependencies:
- supports-color
dev: true
/@expo/bunyan/4.0.0:
resolution: {integrity: sha512-Ydf4LidRB/EBI+YrB+cVLqIseiRfjUI/AeHBgjGMtq3GroraDu81OV7zqophRgupngoL3iS3JUMDMnxO7g39qA==}
engines: {'0': node >=0.10.0}
@@ -1825,6 +1852,25 @@ packages:
dependencies:
'@hapi/hoek': 9.3.0
/@humanwhocodes/config-array/0.10.4:
resolution: {integrity: sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==}
engines: {node: '>=10.10.0'}
dependencies:
'@humanwhocodes/object-schema': 1.2.1
debug: 4.3.4
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
dev: true
/@humanwhocodes/gitignore-to-minimatch/1.0.2:
resolution: {integrity: sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==}
dev: true
/@humanwhocodes/object-schema/1.2.1:
resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
dev: true
/@jest/create-cache-key-function/27.5.1:
resolution: {integrity: sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -2549,6 +2595,10 @@ packages:
dependencies:
'@types/istanbul-lib-report': 3.0.0
/@types/json-schema/7.0.11:
resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
dev: true
/@types/node/18.6.4:
resolution: {integrity: sha512-I4BD3L+6AWiUobfxZ49DlU43gtI+FTHSv9pE2Zekg6KjMpre4ByusaljW3vYSLJrvQ1ck1hUaeVu8HVlY3vzHg==}
@@ -2595,6 +2645,132 @@ packages:
dependencies:
'@types/yargs-parser': 21.0.0
/@typescript-eslint/eslint-plugin/5.33.0_njno5y7ry2l2lcmiu4tywxkwnq:
resolution: {integrity: sha512-jHvZNSW2WZ31OPJ3enhLrEKvAZNyAFWZ6rx9tUwaessTc4sx9KmgMNhVcqVAl1ETnT5rU5fpXTLmY9YvC1DCNg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
'@typescript-eslint/parser': ^5.0.0
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@typescript-eslint/parser': 5.33.0_qugx7qdu5zevzvxaiqyxfiwquq
'@typescript-eslint/scope-manager': 5.33.0
'@typescript-eslint/type-utils': 5.33.0_qugx7qdu5zevzvxaiqyxfiwquq
'@typescript-eslint/utils': 5.33.0_qugx7qdu5zevzvxaiqyxfiwquq
debug: 4.3.4
eslint: 8.21.0
functional-red-black-tree: 1.0.1
ignore: 5.2.0
regexpp: 3.2.0
semver: 7.3.7
tsutils: 3.21.0_typescript@4.7.4
typescript: 4.7.4
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/parser/5.33.0_qugx7qdu5zevzvxaiqyxfiwquq:
resolution: {integrity: sha512-cgM5cJrWmrDV2KpvlcSkelTBASAs1mgqq+IUGKJvFxWrapHpaRy5EXPQz9YaKF3nZ8KY18ILTiVpUtbIac86/w==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@typescript-eslint/scope-manager': 5.33.0
'@typescript-eslint/types': 5.33.0
'@typescript-eslint/typescript-estree': 5.33.0_typescript@4.7.4
debug: 4.3.4
eslint: 8.21.0
typescript: 4.7.4
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/scope-manager/5.33.0:
resolution: {integrity: sha512-/Jta8yMNpXYpRDl8EwF/M8It2A9sFJTubDo0ATZefGXmOqlaBffEw0ZbkbQ7TNDK6q55NPHFshGBPAZvZkE8Pw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
'@typescript-eslint/types': 5.33.0
'@typescript-eslint/visitor-keys': 5.33.0
dev: true
/@typescript-eslint/type-utils/5.33.0_qugx7qdu5zevzvxaiqyxfiwquq:
resolution: {integrity: sha512-2zB8uEn7hEH2pBeyk3NpzX1p3lF9dKrEbnXq1F7YkpZ6hlyqb2yZujqgRGqXgRBTHWIUG3NGx/WeZk224UKlIA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: '*'
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@typescript-eslint/utils': 5.33.0_qugx7qdu5zevzvxaiqyxfiwquq
debug: 4.3.4
eslint: 8.21.0
tsutils: 3.21.0_typescript@4.7.4
typescript: 4.7.4
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/types/5.33.0:
resolution: {integrity: sha512-nIMt96JngB4MYFYXpZ/3ZNU4GWPNdBbcB5w2rDOCpXOVUkhtNlG2mmm8uXhubhidRZdwMaMBap7Uk8SZMU/ppw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@typescript-eslint/typescript-estree/5.33.0_typescript@4.7.4:
resolution: {integrity: sha512-tqq3MRLlggkJKJUrzM6wltk8NckKyyorCSGMq4eVkyL5sDYzJJcMgZATqmF8fLdsWrW7OjjIZ1m9v81vKcaqwQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@typescript-eslint/types': 5.33.0
'@typescript-eslint/visitor-keys': 5.33.0
debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
semver: 7.3.7
tsutils: 3.21.0_typescript@4.7.4
typescript: 4.7.4
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/utils/5.33.0_qugx7qdu5zevzvxaiqyxfiwquq:
resolution: {integrity: sha512-JxOAnXt9oZjXLIiXb5ZIcZXiwVHCkqZgof0O8KPgz7C7y0HS42gi75PdPlqh1Tf109M0fyUw45Ao6JLo7S5AHw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
'@types/json-schema': 7.0.11
'@typescript-eslint/scope-manager': 5.33.0
'@typescript-eslint/types': 5.33.0
'@typescript-eslint/typescript-estree': 5.33.0_typescript@4.7.4
eslint: 8.21.0
eslint-scope: 5.1.1
eslint-utils: 3.0.0_eslint@8.21.0
transitivePeerDependencies:
- supports-color
- typescript
dev: true
/@typescript-eslint/visitor-keys/5.33.0:
resolution: {integrity: sha512-/XsqCzD4t+Y9p5wd9HZiptuGKBlaZO5showwqODii5C0nZawxWLF+Q6k5wYHBrQv96h6GYKyqqMHCSTqta8Kiw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
'@typescript-eslint/types': 5.33.0
eslint-visitor-keys: 3.3.0
dev: true
/@urql/core/2.3.6_graphql@15.8.0:
resolution: {integrity: sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==}
peerDependencies:
@@ -2640,6 +2816,14 @@ packages:
mime-types: 2.1.35
negotiator: 0.6.3
/acorn-jsx/5.3.2_acorn@8.8.0:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
acorn: 8.8.0
dev: true
/acorn-node/1.8.2:
resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==}
dependencies:
@@ -2673,6 +2857,15 @@ packages:
indent-string: 4.0.0
dev: false
/ajv/6.12.6:
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
dependencies:
fast-deep-equal: 3.1.3
fast-json-stable-stringify: 2.1.0
json-schema-traverse: 0.4.1
uri-js: 4.4.1
dev: true
/anser/1.4.10:
resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==}
@@ -2775,7 +2968,6 @@ packages:
/array-union/2.1.0:
resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
engines: {node: '>=8'}
dev: false
/array-unique/0.3.2:
resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==}
@@ -2851,7 +3043,7 @@ packages:
/babel-plugin-dynamic-import-node/2.3.3:
resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==}
dependencies:
object.assign: 4.1.2
object.assign: 4.1.3
/babel-plugin-module-resolver/4.1.0:
resolution: {integrity: sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==}
@@ -3264,13 +3456,15 @@ packages:
isobject: 3.0.1
static-extend: 0.1.2
/class-variance-authority/0.2.3:
/class-variance-authority/0.2.3_typescript@4.7.4:
resolution: {integrity: sha512-q3VGDidOOFp5yqNpUljA8L6N78gdOPhP5oeFJPaGRnCAPRmyAw65qo+Kw2WVfKq9uiR1de7HzlcvTN871Gks/g==}
peerDependencies:
typescript: '>= 4.5.5 < 5'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
typescript: 4.7.4
dev: false
/clean-stack/2.2.0:
@@ -3500,6 +3694,15 @@ packages:
shebang-command: 1.2.0
which: 1.3.1
/cross-spawn/7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
dependencies:
path-key: 3.1.1
shebang-command: 2.0.0
which: 2.0.2
dev: true
/crypt/0.0.2:
resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==}
dev: false
@@ -3613,6 +3816,10 @@ packages:
engines: {node: '>=4.0.0'}
dev: false
/deep-is/0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
dev: true
/deepmerge/3.3.0:
resolution: {integrity: sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==}
engines: {node: '>=0.10.0'}
@@ -3724,7 +3931,6 @@ packages:
engines: {node: '>=8'}
dependencies:
path-type: 4.0.0
dev: false
/dlv/1.1.3:
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
@@ -3737,6 +3943,13 @@ packages:
esutils: 2.0.3
dev: true
/doctrine/3.0.0:
resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
engines: {node: '>=6.0.0'}
dependencies:
esutils: 2.0.3
dev: true
/dom-serializer/1.4.1:
resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
dependencies:
@@ -3870,7 +4083,7 @@ packages:
is-weakref: 1.0.2
object-inspect: 1.12.2
object-keys: 1.1.1
object.assign: 4.1.2
object.assign: 4.1.3
regexp.prototype.flags: 1.4.3
string.prototype.trimend: 1.0.5
string.prototype.trimstart: 1.0.5
@@ -3906,31 +4119,42 @@ packages:
/escape-string-regexp/4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
dev: false
/eslint-plugin-react-hooks/4.6.0:
/eslint-config-prettier/8.5.0_eslint@8.21.0:
resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==}
hasBin: true
peerDependencies:
eslint: '>=7.0.0'
dependencies:
eslint: 8.21.0
dev: true
/eslint-plugin-react-hooks/4.6.0_eslint@8.21.0:
resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
engines: {node: '>=10'}
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
dependencies:
eslint: 8.21.0
dev: true
/eslint-plugin-react-native-globals/0.1.2:
resolution: {integrity: sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==}
dev: true
/eslint-plugin-react-native/4.0.0:
/eslint-plugin-react-native/4.0.0_eslint@8.21.0:
resolution: {integrity: sha512-kMmdxrSY7A1WgdqaGC+rY/28rh7kBGNBRsk48ovqkQmdg5j4K+DaFmegENDzMrdLkoufKGRNkKX6bgSwQTCAxQ==}
peerDependencies:
eslint: ^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8
dependencies:
'@babel/traverse': 7.18.11
eslint: 8.21.0
eslint-plugin-react-native-globals: 0.1.2
transitivePeerDependencies:
- supports-color
dev: true
/eslint-plugin-react/7.30.1:
/eslint-plugin-react/7.30.1_eslint@8.21.0:
resolution: {integrity: sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==}
engines: {node: '>=4'}
peerDependencies:
@@ -3939,8 +4163,9 @@ packages:
array-includes: 3.1.5
array.prototype.flatmap: 1.3.0
doctrine: 2.1.0
eslint: 8.21.0
estraverse: 5.3.0
jsx-ast-utils: 3.3.2
jsx-ast-utils: 3.3.3
minimatch: 3.1.2
object.entries: 1.1.5
object.fromentries: 2.0.5
@@ -3952,11 +4177,123 @@ packages:
string.prototype.matchall: 4.0.7
dev: true
/eslint-scope/5.1.1:
resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
engines: {node: '>=8.0.0'}
dependencies:
esrecurse: 4.3.0
estraverse: 4.3.0
dev: true
/eslint-scope/7.1.1:
resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
esrecurse: 4.3.0
estraverse: 5.3.0
dev: true
/eslint-utils/3.0.0_eslint@8.21.0:
resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
peerDependencies:
eslint: '>=5'
dependencies:
eslint: 8.21.0
eslint-visitor-keys: 2.1.0
dev: true
/eslint-visitor-keys/2.1.0:
resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
engines: {node: '>=10'}
dev: true
/eslint-visitor-keys/3.3.0:
resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/eslint/8.21.0:
resolution: {integrity: sha512-/XJ1+Qurf1T9G2M5IHrsjp+xrGT73RZf23xA1z5wB1ZzzEAWSZKvRwhWxTFp1rvkvCfwcvAUNAP31bhKTTGfDA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
hasBin: true
dependencies:
'@eslint/eslintrc': 1.3.0
'@humanwhocodes/config-array': 0.10.4
'@humanwhocodes/gitignore-to-minimatch': 1.0.2
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
debug: 4.3.4
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.1.1
eslint-utils: 3.0.0_eslint@8.21.0
eslint-visitor-keys: 3.3.0
espree: 9.3.3
esquery: 1.4.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
file-entry-cache: 6.0.1
find-up: 5.0.0
functional-red-black-tree: 1.0.1
glob-parent: 6.0.2
globals: 13.17.0
globby: 11.1.0
grapheme-splitter: 1.0.4
ignore: 5.2.0
import-fresh: 3.3.0
imurmurhash: 0.1.4
is-glob: 4.0.3
js-yaml: 4.1.0
json-stable-stringify-without-jsonify: 1.0.1
levn: 0.4.1
lodash.merge: 4.6.2
minimatch: 3.1.2
natural-compare: 1.4.0
optionator: 0.9.1
regexpp: 3.2.0
strip-ansi: 6.0.1
strip-json-comments: 3.1.1
text-table: 0.2.0
v8-compile-cache: 2.3.0
transitivePeerDependencies:
- supports-color
dev: true
/espree/9.3.3:
resolution: {integrity: sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
acorn: 8.8.0
acorn-jsx: 5.3.2_acorn@8.8.0
eslint-visitor-keys: 3.3.0
dev: true
/esprima/4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
engines: {node: '>=4'}
hasBin: true
/esquery/1.4.0:
resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==}
engines: {node: '>=0.10'}
dependencies:
estraverse: 5.3.0
dev: true
/esrecurse/4.3.0:
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
engines: {node: '>=4.0'}
dependencies:
estraverse: 5.3.0
dev: true
/estraverse/4.3.0:
resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
engines: {node: '>=4.0'}
dev: true
/estraverse/5.3.0:
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
engines: {node: '>=4.0'}
@@ -4190,7 +4527,6 @@ packages:
/fast-deep-equal/3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: false
/fast-glob/3.2.11:
resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==}
@@ -4202,6 +4538,14 @@ packages:
merge2: 1.4.1
micromatch: 4.0.5
/fast-json-stable-stringify/2.1.0:
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
dev: true
/fast-levenshtein/2.0.6:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
dev: true
/fastq/1.13.0:
resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==}
dependencies:
@@ -4242,6 +4586,13 @@ packages:
resolution: {integrity: sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==}
dev: false
/file-entry-cache/6.0.1:
resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
engines: {node: ^10.12.0 || >=12.0.0}
dependencies:
flat-cache: 3.0.4
dev: true
/fill-range/4.0.0:
resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==}
engines: {node: '>=0.10.0'}
@@ -4318,6 +4669,18 @@ packages:
micromatch: 4.0.5
dev: false
/flat-cache/3.0.4:
resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
engines: {node: ^10.12.0 || >=12.0.0}
dependencies:
flatted: 3.2.6
rimraf: 3.0.2
dev: true
/flatted/3.2.6:
resolution: {integrity: sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==}
dev: true
/flow-parser/0.121.0:
resolution: {integrity: sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg==}
engines: {node: '>=0.4.0'}
@@ -4442,6 +4805,10 @@ packages:
functions-have-names: 1.2.3
dev: true
/functional-red-black-tree/1.0.1:
resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==}
dev: true
/functions-have-names/1.2.3:
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
dev: true
@@ -4500,7 +4867,6 @@ packages:
engines: {node: '>=10.13.0'}
dependencies:
is-glob: 4.0.3
dev: false
/glob/6.0.4:
resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==}
@@ -4538,6 +4904,13 @@ packages:
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
engines: {node: '>=4'}
/globals/13.17.0:
resolution: {integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==}
engines: {node: '>=8'}
dependencies:
type-fest: 0.20.2
dev: true
/globby/11.1.0:
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
engines: {node: '>=10'}
@@ -4548,11 +4921,14 @@ packages:
ignore: 5.2.0
merge2: 1.4.1
slash: 3.0.0
dev: false
/graceful-fs/4.2.10:
resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
/grapheme-splitter/1.0.4:
resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
dev: true
/graphql-tag/2.12.6_graphql@15.8.0:
resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==}
engines: {node: '>=10'}
@@ -4697,7 +5073,6 @@ packages:
/ignore/5.2.0:
resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==}
engines: {node: '>= 4'}
dev: false
/image-size/0.6.3:
resolution: {integrity: sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==}
@@ -5232,6 +5607,14 @@ packages:
valid-url: 1.0.9
dev: false
/json-schema-traverse/0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
dev: true
/json-stable-stringify-without-jsonify/1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
dev: true
/json5/0.5.1:
resolution: {integrity: sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==}
hasBin: true
@@ -5267,12 +5650,12 @@ packages:
graceful-fs: 4.2.10
dev: false
/jsx-ast-utils/3.3.2:
resolution: {integrity: sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q==}
/jsx-ast-utils/3.3.3:
resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==}
engines: {node: '>=4.0'}
dependencies:
array-includes: 3.1.5
object.assign: 4.1.2
object.assign: 4.1.3
dev: true
/kind-of/3.2.2:
@@ -5308,6 +5691,14 @@ packages:
resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
engines: {node: '>=6'}
/levn/0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
dependencies:
prelude-ls: 1.2.1
type-check: 0.4.0
dev: true
/lilconfig/2.0.6:
resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==}
engines: {node: '>=10'}
@@ -5342,6 +5733,10 @@ packages:
resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
dev: false
/lodash.merge/4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
dev: true
/lodash.throttle/4.1.1:
resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==}
@@ -5381,7 +5776,6 @@ packages:
engines: {node: '>=10'}
dependencies:
yallist: 4.0.0
dev: false
/make-dir/2.1.0:
resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
@@ -5900,6 +6294,10 @@ packages:
transitivePeerDependencies:
- supports-color
/natural-compare/1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
dev: true
/ncp/2.0.0:
resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==}
hasBin: true
@@ -6022,8 +6420,8 @@ packages:
dependencies:
isobject: 3.0.1
/object.assign/4.1.2:
resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==}
/object.assign/4.1.3:
resolution: {integrity: sha512-ZFJnX3zltyjcYJL0RoCJuzb+11zWGyaDbjgxZbdV7rFEcHQuYxrZqhow67aA7xpes6LhojyFDaBKAFfogQrikA==}
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.2
@@ -6120,6 +6518,18 @@ packages:
is-wsl: 2.2.0
dev: false
/optionator/0.9.1:
resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==}
engines: {node: '>= 0.8.0'}
dependencies:
deep-is: 0.1.4
fast-levenshtein: 2.0.6
levn: 0.4.1
prelude-ls: 1.2.1
type-check: 0.4.0
word-wrap: 1.2.3
dev: true
/ora/3.4.0:
resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==}
engines: {node: '>=6'}
@@ -6281,6 +6691,11 @@ packages:
resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==}
engines: {node: '>=4'}
/path-key/3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
dev: true
/path-parse/1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
@@ -6440,6 +6855,11 @@ packages:
source-map-js: 1.0.2
dev: false
/prelude-ls/1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
dev: true
/pretty-bytes/5.6.0:
resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==}
engines: {node: '>=6'}
@@ -6502,6 +6922,11 @@ packages:
end-of-stream: 1.4.4
once: 1.4.0
/punycode/2.1.1:
resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
engines: {node: '>=6'}
dev: true
/qrcode-terminal/0.11.0:
resolution: {integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==}
hasBin: true
@@ -6868,6 +7293,11 @@ packages:
functions-have-names: 1.2.3
dev: true
/regexpp/3.2.0:
resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
engines: {node: '>=8'}
dev: true
/regexpu-core/5.1.0:
resolution: {integrity: sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==}
engines: {node: '>=4'}
@@ -7022,7 +7452,6 @@ packages:
hasBin: true
dependencies:
glob: 7.2.3
dev: false
/run-parallel/1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
@@ -7083,7 +7512,6 @@ packages:
hasBin: true
dependencies:
lru-cache: 6.0.0
dev: false
/send/0.18.0:
resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
@@ -7162,10 +7590,22 @@ packages:
dependencies:
shebang-regex: 1.0.0
/shebang-command/2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
dependencies:
shebang-regex: 3.0.0
dev: true
/shebang-regex/1.0.0:
resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
engines: {node: '>=0.10.0'}
/shebang-regex/3.0.0:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
dev: true
/shell-quote/1.7.3:
resolution: {integrity: sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==}
@@ -7422,6 +7862,11 @@ packages:
engines: {node: '>=0.10.0'}
dev: false
/strip-json-comments/3.1.1:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
dev: true
/structured-headers/0.4.1:
resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==}
dev: false
@@ -7621,7 +8066,6 @@ packages:
/text-table/0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: false
/thenify-all/1.6.0:
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
@@ -7713,11 +8157,20 @@ packages:
/tslib/1.14.1:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
dev: false
/tslib/2.4.0:
resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==}
/tsutils/3.21.0_typescript@4.7.4:
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
engines: {node: '>= 6'}
peerDependencies:
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
dependencies:
tslib: 1.14.1
typescript: 4.7.4
dev: true
/twrnc/3.4.0_react-native@0.69.3:
resolution: {integrity: sha512-zJzueyC+LUphbrUEyeVmbR7VfAFObq2mr6ALfMytusHxzHJnOMCdxsw2GCTD67nThP1V22QFp9CZ/DulcZMl1g==}
peerDependencies:
@@ -7729,6 +8182,13 @@ packages:
- ts-node
dev: false
/type-check/0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
dependencies:
prelude-ls: 1.2.1
dev: true
/type-fest/0.12.0:
resolution: {integrity: sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==}
engines: {node: '>=10'}
@@ -7739,6 +8199,11 @@ packages:
engines: {node: '>=10'}
dev: false
/type-fest/0.20.2:
resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
engines: {node: '>=10'}
dev: true
/type-fest/0.21.3:
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
engines: {node: '>=10'}
@@ -7761,6 +8226,11 @@ packages:
mime-types: 2.1.35
dev: false
/typescript/4.7.4:
resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==}
engines: {node: '>=4.2.0'}
hasBin: true
/ua-parser-js/0.7.31:
resolution: {integrity: sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==}
dev: false
@@ -7872,6 +8342,12 @@ packages:
escalade: 3.1.1
picocolors: 1.0.0
/uri-js/4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
punycode: 2.1.1
dev: true
/urix/0.1.0:
resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==}
deprecated: Please see https://github.com/lydell/urix#deprecated
@@ -7938,6 +8414,10 @@ packages:
hasBin: true
dev: false
/v8-compile-cache/2.3.0:
resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==}
dev: true
/valid-url/1.0.9:
resolution: {integrity: sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==}
dev: false
@@ -8000,10 +8480,23 @@ packages:
dependencies:
isexe: 2.0.0
/which/2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
hasBin: true
dependencies:
isexe: 2.0.0
dev: true
/wonka/4.0.15:
resolution: {integrity: sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg==}
dev: false
/word-wrap/1.2.3:
resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
engines: {node: '>=0.10.0'}
dev: true
/wrap-ansi/6.2.0:
resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
engines: {node: '>=8'}
@@ -8102,7 +8595,6 @@ packages:
/yallist/4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
dev: false
/yaml/1.10.2:
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
@@ -11,6 +11,7 @@ interface BrowseLocationItemProps {
const BrowseLocationItem: React.FC<BrowseLocationItemProps> = (props) => {
const { folderName, onPress } = props;
return (
<Pressable onPress={onPress}>
<View style={tw.style('flex mb-[4px] flex-row items-center py-2 px-2 rounded')}>
+1
View File
@@ -8,6 +8,7 @@ declare module '*.svg' {
// This declaration is used by useNavigation, Link, ref etc.
declare global {
namespace ReactNavigation {
// eslint-disable-next-line @typescript-eslint/no-empty-interface
interface RootParamList extends RootStackParamList {}
}
}
+14 -4
View File
@@ -8,7 +8,8 @@ repository = "https://github.com/spacedriveapp/spacedrive"
edition = "2021"
[features]
p2p = [] # This feature controlls whether the Spacedrive Core contains the Peer to Peer syncing engine (It isn't required for the hosted core so we can disable it).
p2p = [
] # This feature controlls whether the Spacedrive Core contains the Peer to Peer syncing engine (It isn't required for the hosted core so we can disable it).
[dependencies]
hostname = "0.3.1"
@@ -26,8 +27,17 @@ rmp = "^0.8.11"
rmp-serde = "^1.1.0"
# Project dependencies
prisma-client-rust = { git = "https://github.com/Brendonovich/prisma-client-rust.git", branch = "0.6.0", features = ["rspc"] }
rspc = { version = "0.0.4", features = ["axum", "tauri", "uuid", "chrono", "tracing"] }
prisma-client-rust = { git = "https://github.com/Brendonovich/prisma-client-rust.git", rev = "6a0119bce951c8d956542a59b2f783fc5a591fc7", features = [
"rspc",
"sqlite-create-many",
] }
rspc = { version = "0.0.4", features = [
"axum",
"tauri",
"uuid",
"chrono",
"tracing",
] }
walkdir = "^2.3.2"
uuid = { version = "1.1.2", features = ["v4", "serde"] }
sysinfo = "0.23.9"
@@ -42,7 +52,7 @@ webp = "0.2.2"
ffmpeg-next = "5.0.3"
fs_extra = "1.2.0"
tracing = "0.1.35"
tracing-subscriber = "0.3.14"
tracing-subscriber = { version = "0.3.14", features = ["env-filter"] }
async-stream = "0.3.3"
once_cell = "1.13.0"
ctor = "0.1.22"
+4 -1
View File
@@ -4,4 +4,7 @@ version = "0.1.0"
edition = "2021"
[dependencies]
prisma-client-rust-cli = { git = "https://github.com/Brendonovich/prisma-client-rust.git", branch = "0.6.0", features = ["rspc"] }
prisma-client-rust-cli = { git = "https://github.com/Brendonovich/prisma-client-rust.git", rev = "6a0119bce951c8d956542a59b2f783fc5a591fc7", features = [
"rspc",
"sqlite-create-many",
] }
+6 -6
View File
@@ -26,8 +26,7 @@ pub(crate) fn mount() -> RouterBuilder {
library
.db
.file()
.find_unique(file::id::equals(args.id))
.update(vec![file::note::set(args.note)])
.update(file::id::equals(args.id), vec![file::note::set(args.note)])
.exec()
.await?;
@@ -54,8 +53,10 @@ pub(crate) fn mount() -> RouterBuilder {
library
.db
.file()
.find_unique(file::id::equals(args.id))
.update(vec![file::favorite::set(args.favorite)])
.update(
file::id::equals(args.id),
vec![file::favorite::set(args.favorite)],
)
.exec()
.await?;
@@ -82,8 +83,7 @@ pub(crate) fn mount() -> RouterBuilder {
library
.db
.file()
.find_unique(file::id::equals(id))
.delete()
.delete(file::id::equals(id))
.exec()
.await?;
+6 -6
View File
@@ -133,8 +133,10 @@ pub(crate) fn mount() -> RouterBuilder {
library
.db
.location()
.find_unique(location::id::equals(args.id))
.update(vec![location::name::set(args.name)])
.update(
location::id::equals(args.id),
vec![location::name::set(args.name)],
)
.exec()
.await?;
@@ -147,16 +149,14 @@ pub(crate) fn mount() -> RouterBuilder {
library
.db
.file_path()
.find_many(vec![file_path::location_id::equals(Some(location_id))])
.delete()
.delete_many(vec![file_path::location_id::equals(Some(location_id))])
.exec()
.await?;
library
.db
.location()
.find_unique(location::id::equals(location_id))
.delete()
.delete(location::id::equals(location_id))
.exec()
.await?;
+5 -9
View File
@@ -97,8 +97,10 @@ pub(crate) fn mount() -> RouterBuilder {
library
.db
.tag()
.find_unique(tag::id::equals(args.id))
.update(vec![tag::name::set(args.name), tag::color::set(args.color)])
.update(
tag::id::equals(args.id),
vec![tag::name::set(args.name), tag::color::set(args.color)],
)
.exec()
.await?;
@@ -117,13 +119,7 @@ pub(crate) fn mount() -> RouterBuilder {
.mutation("delete", |ctx, arg: LibraryArgs<i32>| async move {
let (id, library) = arg.get_library(&ctx).await?;
library
.db
.tag()
.find_unique(tag::id::equals(id))
.delete()
.exec()
.await?;
library.db.tag().delete(tag::id::equals(id)).exec().await?;
invalidate_query!(
library,
+14 -12
View File
@@ -3,7 +3,7 @@ use super::checksum::generate_cas_id;
use crate::{
job::{JobError, JobReportUpdate, JobResult, JobState, StatefulJob, WorkerContext},
library::LibraryContext,
prisma::{self, file, file_path, location},
prisma::{file, file_path, location},
};
use chrono::{DateTime, FixedOffset};
use prisma_client_rust::{prisma_models::PrismaValue, raw, raw::Raw, Direction};
@@ -160,10 +160,10 @@ impl StatefulJob for FileIdentifierJob {
if let Err(e) = library_ctx
.db
.file_path()
.find_unique(file_path::id::equals(
*cas_lookup.get(&existing_file.cas_id).unwrap(),
))
.update(vec![file_path::file_id::set(Some(existing_file.id))])
.update(
file_path::id::equals(*cas_lookup.get(&existing_file.cas_id).unwrap()),
vec![file_path::file_id::set(Some(existing_file.id))],
)
.exec()
.await
{
@@ -205,6 +205,7 @@ impl StatefulJob for FileIdentifierJob {
),
values,
))
.exec()
.await
.unwrap_or_else(|e| {
error!("Error inserting files: {:#?}", e);
@@ -219,10 +220,10 @@ impl StatefulJob for FileIdentifierJob {
.library_ctx()
.db
.file_path()
.find_unique(file_path::id::equals(
*cas_lookup.get(&created_file.cas_id).unwrap(),
))
.update(vec![file_path::file_id::set(Some(created_file.id))])
.update(
file_path::id::equals(*cas_lookup.get(&created_file.cas_id).unwrap()),
vec![file_path::file_id::set(Some(created_file.id))],
)
.exec()
.await
{
@@ -277,12 +278,13 @@ struct CountRes {
pub async fn count_orphan_file_paths(
ctx: &LibraryContext,
location_id: i64,
) -> Result<usize, prisma::QueryError> {
) -> Result<usize, prisma_client_rust::QueryError> {
let files_count = ctx.db
._query_raw::<CountRes>(raw!(
"SELECT COUNT(*) AS count FROM file_paths WHERE file_id IS NULL AND is_dir IS FALSE AND location_id = {}",
PrismaValue::Int(location_id)
))
.exec()
.await?;
Ok(files_count[0].count.unwrap_or(0))
}
@@ -290,7 +292,7 @@ pub async fn count_orphan_file_paths(
pub async fn get_orphan_file_paths(
ctx: &LibraryContext,
cursor: i32,
) -> Result<Vec<file_path::Data>, prisma::QueryError> {
) -> Result<Vec<file_path::Data>, prisma_client_rust::QueryError> {
info!(
"discovering {} orphan file paths at cursor: {:?}",
CHUNK_SIZE, cursor
@@ -302,7 +304,7 @@ pub async fn get_orphan_file_paths(
file_path::is_dir::equals(false),
])
.order_by(file_path::id::order(Direction::Asc))
.cursor(file_path::id::cursor(cursor))
.cursor(file_path::id::equals(cursor))
.take(CHUNK_SIZE as i64)
.exec()
.await
+2 -1
View File
@@ -86,6 +86,7 @@ impl StatefulJob for IndexerJob {
.library_ctx()
.db
._query_raw::<QueryRes>(raw!("SELECT MAX(id) id FROM file_paths"))
.exec()
.await
{
Ok(rows) => rows[0].id.unwrap_or(0),
@@ -241,7 +242,7 @@ impl StatefulJob for IndexerJob {
files
);
let count = ctx.library_ctx().db._execute_raw(raw).await;
let count = ctx.library_ctx().db._execute_raw(raw).exec().await;
info!("Inserted {:?} records", count);
+15 -11
View File
@@ -6,7 +6,7 @@ use crate::{
},
job::{worker::Worker, DynJob, Job, JobError},
library::LibraryContext,
prisma::{self, job, node},
prisma::{job, node},
};
use int_enum::IntEnum;
use rspc::Type;
@@ -117,7 +117,9 @@ impl JobManager {
ret
}
pub async fn get_history(ctx: &LibraryContext) -> Result<Vec<JobReport>, prisma::QueryError> {
pub async fn get_history(
ctx: &LibraryContext,
) -> Result<Vec<JobReport>, prisma_client_rust::QueryError> {
let jobs = ctx
.db
.job()
@@ -291,15 +293,17 @@ impl JobReport {
pub async fn update(&self, ctx: &LibraryContext) -> Result<(), JobError> {
ctx.db
.job()
.find_unique(job::id::equals(self.id.as_bytes().to_vec()))
.update(vec![
job::status::set(self.status.int_value()),
job::data::set(self.data.clone()),
job::task_count::set(self.task_count),
job::completed_task_count::set(self.completed_task_count),
job::date_modified::set(chrono::Utc::now().into()),
job::seconds_elapsed::set(self.seconds_elapsed),
])
.update(
job::id::equals(self.id.as_bytes().to_vec()),
vec![
job::status::set(self.status.int_value()),
job::data::set(self.data.clone()),
job::task_count::set(self.task_count),
job::completed_task_count::set(self.completed_task_count),
job::date_modified::set(chrono::Utc::now().into()),
job::seconds_elapsed::set(self.seconds_elapsed),
],
)
.exec()
.await?;
Ok(())
+2 -2
View File
@@ -1,4 +1,4 @@
use crate::{prisma, sys::LocationError};
use crate::sys::LocationError;
use rmp_serde::{decode::Error as DecodeError, encode::Error as EncodeError};
use serde::{de::DeserializeOwned, Deserialize, Serialize};
use std::{collections::VecDeque, fmt::Debug};
@@ -14,7 +14,7 @@ pub use worker::*;
#[derive(Error, Debug)]
pub enum JobError {
#[error("Database error: {0}")]
DatabaseError(#[from] prisma::QueryError),
DatabaseError(#[from] prisma_client_rust::QueryError),
#[error("Location error: {0}")]
LocationError(#[from] LocationError),
#[error("I/O error: {0}")]
+2 -6
View File
@@ -10,11 +10,7 @@ use tokio::sync::RwLock;
use uuid::Uuid;
use crate::{
invalidate_query,
node::Platform,
prisma::{self, node},
util::db::load_and_migrate,
NodeContext,
invalidate_query, node::Platform, prisma::node, util::db::load_and_migrate, NodeContext,
};
use super::{LibraryConfig, LibraryConfigWrapped, LibraryContext};
@@ -36,7 +32,7 @@ pub enum LibraryManagerError {
#[error("error serializing or deserializing the JSON in the config file")]
Json(#[from] serde_json::Error),
#[error("Database error: {0}")]
Database(#[from] prisma::QueryError),
Database(#[from] prisma_client_rust::QueryError),
#[error("Library not found error")]
LibraryNotFound,
#[error("error migrating the config file")]
+2 -2
View File
@@ -8,7 +8,7 @@ use crate::{
invalidate_query,
job::Job,
library::LibraryContext,
prisma::{self, location},
prisma::location,
};
use rspc::ErrorCode;
@@ -195,7 +195,7 @@ pub enum LocationError {
#[error("Failed to connect to database (error: {0:?})")]
IOError(io::Error),
#[error("Database error")]
DatabaseError(#[from] prisma::QueryError),
DatabaseError(#[from] prisma_client_rust::QueryError),
}
impl From<LocationError> for rspc::Error {
+2 -5
View File
@@ -1,7 +1,4 @@
use crate::{
library::LibraryContext,
prisma::{self, volume::*},
};
use crate::{library::LibraryContext, prisma::volume::*};
use rspc::Type;
use serde::{Deserialize, Serialize};
use thiserror::Error;
@@ -24,7 +21,7 @@ pub struct Volume {
#[derive(Error, Debug)]
pub enum VolumeError {
#[error("Database error: {0}")]
DatabaseErr(#[from] prisma::QueryError),
DatabaseErr(#[from] prisma_client_rust::QueryError),
#[error("FromUtf8Error: {0}")]
FromUtf8Error(#[from] std::string::FromUtf8Error),
}
+8 -5
View File
@@ -14,7 +14,7 @@ pub enum MigrationError {
#[error("An error occurred while initialising a new database connection")]
DatabaseInitialization(#[from] NewClientError),
#[error("An error occurred with the database while applying migrations")]
DatabaseError(#[from] prisma_client_rust::queries::Error),
DatabaseError(#[from] prisma_client_rust::QueryError),
#[error("An error occurred reading the embedded migration files. {0}. Please report to Spacedrive developers!")]
InvalidEmbeddedMigration(&'static str),
}
@@ -27,11 +27,12 @@ pub async fn load_and_migrate(db_url: &str) -> Result<PrismaClient, MigrationErr
._query_raw::<serde_json::Value>(raw!(
"SELECT name FROM sqlite_master WHERE type='table' AND name='_migrations'"
))
.exec()
.await?
.is_empty();
if migrations_table_missing {
client._execute_raw(raw!(INIT_MIGRATION)).await?;
client._execute_raw(raw!(INIT_MIGRATION)).exec().await?;
}
let mut migration_directories = MIGRATIONS_DIR
@@ -102,11 +103,13 @@ pub async fn load_and_migrate(db_url: &str) -> Result<PrismaClient, MigrationErr
let steps = migration_file_raw.split(';').collect::<Vec<&str>>();
let steps = &steps[0..steps.len() - 1];
for (i, step) in steps.iter().enumerate() {
client._execute_raw(raw!(*step)).await?;
client._execute_raw(raw!(*step)).exec().await?;
client
.migration()
.find_unique(migration::checksum::equals(checksum.clone()))
.update(vec![migration::steps_applied::set(i as i32 + 1)])
.update(
migration::checksum::equals(checksum.clone()),
vec![migration::steps_applied::set(i as i32 + 1)],
)
.exec()
.await?;
}
-8
View File
@@ -26,15 +26,7 @@
"@cspell/dict-typescript": "^2.0.1",
"@evilmartians/lefthook": "^1.0.5",
"@trivago/prettier-plugin-sort-imports": "^3.3.0",
"@typescript-eslint/eslint-plugin": "^5.30.7",
"@typescript-eslint/parser": "^5.30.7",
"cspell": "^6.4.0",
"eslint": "^8.20.0",
"eslint-config-prettier": "^8.5.0",
"eslint-config-standard-with-typescript": "^22.0.0",
"eslint-plugin-import": ">=2.25.2 <3.0.0",
"eslint-plugin-n": ">=15.0.0 <16.0.0",
"eslint-plugin-promise": ">=6.0.0 <7.0.0",
"markdown-link-check": "^3.10.2",
"prettier": "^2.7.1",
"typescript": "^4.7.4"
@@ -2,7 +2,7 @@ import { createContext } from 'react';
export const AppPropsContext = createContext<AppProps | null>(null);
export type Platform = 'browser' | 'macOS' | 'windows' | 'linux';
export type Platform = 'browser' | 'macOS' | 'windows' | 'linux' | 'unknown';
export type CdnUrl = 'internal' | string;
export interface AppProps {
-11
View File
@@ -1,11 +0,0 @@
module.exports = {
extends: ['next', 'prettier'],
settings: {
next: {
rootDir: ['apps/*/', 'packages/*/']
}
},
rules: {
'no-html-link-for-pages': 'off'
}
};
+44
View File
@@ -0,0 +1,44 @@
module.exports = {
env: {
browser: true,
node: true
},
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaFeatures: {
jsx: true
},
ecmaVersion: 12,
sourceType: 'module'
},
extends: [
'eslint:recommended',
'plugin:react/recommended',
'plugin:react-hooks/recommended',
'plugin:@typescript-eslint/recommended',
'prettier'
],
plugins: ['react'],
rules: {
'react/display-name': 'off',
'react/prop-types': 'off',
'react/no-unescaped-entities': 'off',
'react/react-in-jsx-scope': 'off',
'react-hooks/rules-of-hooks': 'error',
'react-hooks/exhaustive-deps': 'warn',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/ban-ts-comment': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-var-requires': 'off',
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/explicit-module-boundary-types': 'off',
'no-control-regex': 'off',
'no-mixed-spaces-and-tabs': ['warn', 'smart-tabs']
},
ignorePatterns: ['**/*.js', '**/*.json', 'node_modules'],
settings: {
react: {
version: 'detect'
}
}
};
+10 -2
View File
@@ -4,6 +4,14 @@
"main": "index.js",
"license": "GPL-3.0-only",
"files": [
"eslint-preset.js"
]
"eslint-react.js"
],
"devDependencies": {
"eslint": "^8.21.0",
"@typescript-eslint/eslint-plugin": "^5.30.7",
"@typescript-eslint/parser": "^5.30.7",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-react": "^7.30.1",
"eslint-plugin-react-hooks": "^4.6.0"
}
}
+7
View File
@@ -0,0 +1,7 @@
module.exports = {
...require('@sd/config/eslint-react.js'),
parserOptions: {
tsconfigRootDir: __dirname,
project: './tsconfig.json'
}
};
+3 -1
View File
@@ -11,7 +11,8 @@
"./components/*": "./src/components/*"
},
"scripts": {
"icons": "./scripts/generateSvgImports.mjs"
"icons": "./scripts/generateSvgImports.mjs",
"lint": "eslint src/**/*.{ts,tsx} && tsc --noEmit"
},
"dependencies": {
"@apollo/client": "^3.6.9",
@@ -67,6 +68,7 @@
"zustand": "4.0.0"
},
"devDependencies": {
"@sd/config": "workspace:*",
"@types/babel-core": "^6.25.7",
"@types/byte-size": "^8.1.0",
"@types/lodash": "^4.14.182",
+15 -6
View File
@@ -6,7 +6,7 @@ import {
useBridgeQuery,
useInvalidateQuery
} from '@sd/client';
import { QueryClientProvider } from '@tanstack/react-query';
import { QueryClientProvider, defaultContext } from '@tanstack/react-query';
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
import React, { useEffect, useState } from 'react';
import { ErrorBoundary } from 'react-error-boundary';
@@ -21,10 +21,10 @@ function RouterContainer(props: { props: AppProps }) {
const { data: client } = useBridgeQuery(['getNode']);
useEffect(() => {
setAppProps({
setAppProps((appProps) => ({
...appProps,
data_path: client?.data_path
});
}));
}, [client?.data_path]);
return (
@@ -39,10 +39,19 @@ function RouterContainer(props: { props: AppProps }) {
export default function SpacedriveInterface(props: AppProps) {
useInvalidateQuery();
// hotfix for bug where props are not updated, not sure of the cause
if (props.platform === 'unknown') {
// this should be a loading screen if we can't fix the issue above
return <></>;
}
return (
<ErrorBoundary FallbackComponent={ErrorFallback} onReset={() => {}}>
<QueryClientProvider client={queryClient}>
{import.meta.env.MODE === 'development' && <ReactQueryDevtools position="bottom-right" />}
<ErrorBoundary FallbackComponent={ErrorFallback}>
<QueryClientProvider client={queryClient} contextSharing={true}>
{/* The `context={defaultContext}` part is required for this to work on Windows. Why, idk, don't question it */}
{import.meta.env.MODE === 'development' && (
<ReactQueryDevtools position="bottom-right" context={defaultContext} />
)}
<RouterContainer props={props} />
</QueryClientProvider>
</ErrorBoundary>
+1 -1
View File
@@ -44,7 +44,7 @@ export function AppRouter() {
if (libraryState.currentLibraryUuid === null && libraries && libraries.length > 0) {
libraryState.switchLibrary(libraries[0].uuid);
}
}, [libraryState.currentLibraryUuid, libraries]);
}, [libraryState, libraryState.currentLibraryUuid, libraries]);
return (
<>
@@ -73,10 +73,11 @@ export const FileList: React.FC<{ location_id: number; path: string; limit: numb
index: goingUp ? selectedRowIndex - 1 : selectedRowIndex
});
}
}, [selectedRowIndex]);
}, [goingUp, selectedRowIndex]);
useEffect(() => {
setLocationId(props.location_id);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [props.location_id]);
useKey('ArrowUp', (e) => {
@@ -168,7 +169,7 @@ interface RenderItemProps {
const RenderGridItem: React.FC<RenderItemProps> = ({ item, index, dirId }) => {
const { selectedRowIndex, setSelectedRowIndex } = useExplorerStore();
let [_, setSearchParams] = useSearchParams();
const [_, setSearchParams] = useSearchParams();
return (
<FileItem
@@ -189,7 +190,7 @@ const RenderGridItem: React.FC<RenderItemProps> = ({ item, index, dirId }) => {
const RenderRow: React.FC<RenderItemProps> = ({ item, index, dirId }) => {
const { selectedRowIndex, setSelectedRowIndex } = useExplorerStore();
const isActive = selectedRowIndex === index;
let [_, setSearchParams] = useSearchParams();
const [_, setSearchParams] = useSearchParams();
return useMemo(
() => (
@@ -217,6 +218,7 @@ const RenderRow: React.FC<RenderItemProps> = ({ item, index, dirId }) => {
))}
</div>
),
// eslint-disable-next-line react-hooks/exhaustive-deps
[item.id, isActive]
);
};
@@ -32,7 +32,7 @@ export default function FileThumb(props: {
}
if (icons[props.file.extension as keyof typeof icons]) {
let Icon = icons[props.file.extension as keyof typeof icons];
const Icon = icons[props.file.extension as keyof typeof icons];
return <Icon className={clsx('max-w-[170px] w-full h-full', props.className)} />;
}
return <div></div>;
@@ -62,6 +62,7 @@ export const Inspector = (props: {
return () => {
clearTimeout(handler);
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [note]);
const toggleFavorite = () => {
@@ -18,7 +18,7 @@ import RunningJobsWidget from '../jobs/RunningJobsWidget';
import { MacTrafficLights } from '../os/TrafficLights';
import { DefaultProps } from '../primitive/types';
interface SidebarProps extends DefaultProps {}
type SidebarProps = DefaultProps;
export const SidebarLink = (props: NavLinkProps & { children: React.ReactNode }) => (
<NavLink {...props}>
@@ -88,6 +88,7 @@ export const Sidebar: React.FC<SidebarProps> = (props) => {
useEffect(() => {
if (libraries && !currentLibraryUuid) initLibraries(libraries);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [libraries, currentLibraryUuid]);
const { mutate: createLocation } = useLibraryMutation('locations.create');
@@ -55,8 +55,9 @@ export default function RunningJobsWidget() {
return (
<div className="flex flex-col space-y-4">
{jobs?.map((job) => (
{jobs?.map((job, index) => (
<Transition
key={job.id + index}
show={true}
enter="transition-translate ease-in-out duration-200"
enterFrom="translate-y-24"
@@ -9,7 +9,7 @@ import { useNavigate } from 'react-router-dom';
import { Shortcut } from '../primitive/Shortcut';
import { DefaultProps } from '../primitive/types';
export interface TopBarProps extends DefaultProps {}
export type TopBarProps = DefaultProps;
export interface TopBarButtonProps
extends DetailedHTMLProps<HTMLAttributes<HTMLButtonElement>, HTMLButtonElement> {
icon: React.ComponentType<IconProps>;
@@ -18,7 +18,7 @@ export interface TopBarButtonProps
left?: boolean;
right?: boolean;
}
interface SearchBarProps extends DefaultProps {}
type SearchBarProps = DefaultProps;
const TopBarButton: React.FC<TopBarButtonProps> = ({
icon: Icon,
@@ -90,7 +90,7 @@ export const TopBar: React.FC<TopBarProps> = (props) => {
}
});
let navigate = useNavigate();
const navigate = useNavigate();
return (
<>
<div
@@ -1,7 +1,7 @@
import React from 'react';
import ReactJson, { ReactJsonViewProps } from 'react-json-view';
export interface CodeBlockProps extends ReactJsonViewProps {}
export type CodeBlockProps = ReactJsonViewProps;
export default function CodeBlock(props: CodeBlockProps) {
return (
@@ -16,7 +16,7 @@ export default function Listbox(props: { options: ListboxOption[]; className?: s
if (!selected) {
setSelected(props.options[0]);
}
}, [props.options]);
}, [props.options, selected]);
return (
<>
+1 -1
View File
@@ -1,6 +1,6 @@
import React from 'react';
export const ContentScreen: React.FC<{}> = (props) => {
export const ContentScreen: React.FC<unknown> = (props) => {
// const [address, setAddress] = React.useState('');
return (
<div className="flex flex-col w-full h-screen p-5 custom-scroll page-scroll">
+1 -1
View File
@@ -4,7 +4,7 @@ import React, { useContext } from 'react';
import CodeBlock from '../components/primitive/Codeblock';
export const DebugScreen: React.FC<{}> = (props) => {
export const DebugScreen: React.FC<unknown> = (props) => {
const appPropsContext = useContext(AppPropsContext);
const { data: nodeState } = useBridgeQuery(['getNode']);
const { data: libraryState } = useBridgeQuery(['library.get']);
+5 -5
View File
@@ -6,12 +6,12 @@ import { FileList } from '../components/file/FileList';
import { Inspector } from '../components/file/Inspector';
import { TopBar } from '../components/layout/TopBar';
export const ExplorerScreen: React.FC<{}> = () => {
let [searchParams] = useSearchParams();
let path = searchParams.get('path') || '';
export const ExplorerScreen: React.FC<unknown> = () => {
const [searchParams] = useSearchParams();
const path = searchParams.get('path') || '';
let { id } = useParams();
let location_id = Number(id);
const { id } = useParams();
const location_id = Number(id);
const [limit, setLimit] = React.useState(100);
+3 -2
View File
@@ -70,7 +70,7 @@ const StatItem: React.FC<StatItemProps> = (props) => {
setCount((count) => count + 1);
}, quadratic(appProps?.demoMode ? 1000 : 500, +size.value, count));
}
}, [count, size]);
}, [appProps?.demoMode, count, size]);
return (
<div
@@ -139,6 +139,7 @@ export const OverviewScreen = () => {
setOverviewStats(newStatistics);
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [appProps, libraryStatistics]);
// useEffect(() => {
@@ -187,7 +188,7 @@ export const OverviewScreen = () => {
<Dialog
title="Add Device"
description="Connect a new device to your library. Either enter another device's code or copy this one."
ctaAction={() => {}}
// ctaAction={() => {}}
ctaLabel="Connect"
trigger={
<Button
+1 -1
View File
@@ -1,6 +1,6 @@
import React from 'react';
export const PhotosScreen: React.FC<{}> = (props) => {
export const PhotosScreen: React.FC<unknown> = (props) => {
return (
<div className="flex flex-col w-full h-screen p-5 custom-scroll page-scroll">
<div className="flex flex-col space-y-5 pb-7">
@@ -12,6 +12,7 @@ export const RedirectPage: React.FC<RedirectPageProps> = (props) => {
useEffect(() => {
navigate(destination);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return null;
+2 -2
View File
@@ -1,8 +1,8 @@
import React from 'react';
import { useParams } from 'react-router-dom';
export const TagScreen: React.FC<{}> = () => {
let { id } = useParams();
export const TagScreen: React.FC<unknown> = () => {
const { id } = useParams();
return (
<div className="w-full p-5">
@@ -35,6 +35,7 @@ export default function LibraryGeneralSettings() {
});
}
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [nameDebounced, descriptionDebounced]);
useEffect(() => {
@@ -42,6 +43,7 @@ export default function LibraryGeneralSettings() {
setName(currentLibrary.config.name);
setDescription(currentLibrary.config.description);
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [libraries]);
useEffect(() => {
@@ -50,6 +52,7 @@ export default function LibraryGeneralSettings() {
setName(currentLibrary.config.name);
setDescription(currentLibrary.config.description);
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [currentLibraryUuid]);
useEffect(() => {
@@ -47,10 +47,11 @@ export default function TagsSettings() {
if (!currentTag && tags?.length) {
setSelectedTag(tags[0].id);
}
}, [tags]);
}, [currentTag, tags]);
useEffect(() => {
reset(currentTag);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [currentTag]);
const { register, handleSubmit, watch, reset, control } = useForm({
@@ -59,6 +60,7 @@ export default function TagsSettings() {
const submitTagUpdate = handleSubmit((data) => updateTag(data));
// eslint-disable-next-line react-hooks/exhaustive-deps
const autoUpdateTag = useCallback(useDebounce(submitTagUpdate, 500), []);
useEffect(() => {
@@ -39,7 +39,7 @@ function LibraryListItem(props: { library: LibraryConfigWrapped }) {
ctaDanger
ctaLabel="Delete"
trigger={
<Button variant="gray" className="!p-1.5" onClick={() => {}}>
<Button variant="gray" className="!p-1.5">
<TrashIcon className="w-4 h-4" />
</Button>
}
+180 -334
View File
File diff suppressed because it is too large. Load diff