From cc1aa20f9e1c8848c1781c0ef68db84db3f9a6d2 Mon Sep 17 00:00:00 2001 From: aumetra Date: Sat, 21 Oct 2023 16:51:50 +0200 Subject: [PATCH] Basic UI functionality (#365) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * begin implementing home timeline * up * yarn up * flake.lock: Update Flake lock file updates: • Updated input 'nixpkgs': 'github:nixos/nixpkgs/f5892ddac112a1e9b3612c39af1b72987ee5783a' (2023-09-29) → 'github:nixos/nixpkgs/81e8f48ebdecf07aab321182011b067aafc78896' (2023-10-03) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/611ccdceed92b4d94ae75328148d84ee4a5b462d' (2023-10-03) → 'github:oxalica/rust-overlay/126829788e99c188be4eeb805f144d73d8a00f2c' (2023-10-07) * begin implementing post component * virtual scrolling * infinite scrolling * cleanup * nice effects, post progress * add attachment rendering * add post page * add changing titles * some i18n, new post modal * add move to thread view * add character limit calculation, fix bundle size * up * progress * flake.lock: Update Flake lock file updates: • Updated input 'nixpkgs': 'github:nixos/nixpkgs/81e8f48ebdecf07aab321182011b067aafc78896' (2023-10-03) → 'github:nixos/nixpkgs/f99e5f03cc0aa231ab5950a15ed02afec45ed51a' (2023-10-09) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/126829788e99c188be4eeb805f144d73d8a00f2c' (2023-10-07) → 'github:oxalica/rust-overlay/aa7584f5bbf5947716ad8ec14eccc0334f0d28f0' (2023-10-12) * remove obsolete tokens * create glitchedelement wrapper that respects the reduced motion directive * remove vue logo * fix lints * remove templated html pages * remove conditional wrapper * remove unused css and templates * remove google fonts reference * update oauth forms * fix templates up * up * flake.lock: Update Flake lock file updates: • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/dce60ca7fca201014868c08a612edb73a998310f' (2023-10-14) → 'github:oxalica/rust-overlay/e494404d36a41247987eeb1bfc2f1ca903e97764' (2023-10-15) * add local timeline, add global timeline, add infinite scrolling * fix infinite scroll * fix up styling * fix modal style * up --- .vscode/settings.json | 2 +- Cargo.lock | 88 +- Cargo.toml | 1 - crates/kitsune-cache/Cargo.toml | 6 +- crates/kitsune-captcha/Cargo.toml | 4 +- crates/kitsune-core/Cargo.toml | 6 +- crates/kitsune-db/Cargo.toml | 6 +- crates/kitsune-email/Cargo.toml | 4 +- crates/kitsune-embed/Cargo.toml | 4 +- crates/kitsune-http-signatures/Cargo.toml | 6 +- crates/kitsune-messaging/Cargo.toml | 2 +- crates/kitsune-search/Cargo.toml | 6 +- flake.lock | 12 +- kitsune-fe/.prettierrc | 5 +- kitsune-fe/index.html | 2 +- kitsune-fe/package.json | 31 +- kitsune-fe/public/vite.svg | 1 - kitsune-fe/src/App.vue | 2 + kitsune-fe/src/assets/.gitkeep | 0 kitsune-fe/src/assets/vue.svg | 1 - kitsune-fe/src/components/AuthForms.vue | 43 +- kitsune-fe/src/components/BaseModal.vue | 40 - kitsune-fe/src/components/BaseTimeline.vue | 83 ++ .../src/components/CaptchaComponent.vue | 6 +- kitsune-fe/src/components/GenericFooter.vue | 6 +- kitsune-fe/src/components/GlitchedElement.vue | 21 + .../src/components/LanguageSelector.vue | 7 + kitsune-fe/src/components/NavBar.vue | 30 +- kitsune-fe/src/components/NavBarLink.vue | 18 +- kitsune-fe/src/components/Post.vue | 144 ++ kitsune-fe/src/components/modal/BaseModal.vue | 59 + .../src/components/modal/NewPostModal.vue | 123 ++ kitsune-fe/src/consts.ts | 22 +- kitsune-fe/src/graphql/instance-info.ts | 9 +- kitsune-fe/src/graphql/post.ts | 40 + kitsune-fe/src/graphql/timeline.ts | 89 ++ kitsune-fe/src/graphql/types/gql.ts | 30 +- kitsune-fe/src/graphql/types/graphql.ts | 568 ++++++- kitsune-fe/src/i18n/en-cyberpunk.ts | 22 + kitsune-fe/src/i18n/en.ts | 23 + kitsune-fe/src/i18n/index.ts | 32 + kitsune-fe/src/main.ts | 6 + kitsune-fe/src/router.ts | 62 +- kitsune-fe/src/styles/_breakpoints.scss | 9 + kitsune-fe/src/styles/_fonts.scss | 2 +- kitsune-fe/src/styles/_mixins.scss | 5 +- kitsune-fe/src/styles/root.scss | 15 +- kitsune-fe/src/urql.ts | 17 +- kitsune-fe/src/views/AboutPage.vue | 4 +- kitsune-fe/src/views/MainPage.vue | 66 +- kitsune-fe/src/views/MessagePage.vue | 3 + kitsune-fe/src/views/NotFound.vue | 102 +- kitsune-fe/src/views/NotificationPage.vue | 3 + kitsune-fe/src/views/PostPage.vue | 29 + .../src/views/timeline/FederatedPage.vue | 24 + kitsune-fe/src/views/timeline/HomePage.vue | 24 + kitsune-fe/src/views/timeline/LocalPage.vue | 24 + kitsune-fe/src/virtual-scroller.d.ts | 1 + kitsune-fe/src/zxcvbn.ts | 2 +- kitsune-fe/yarn.lock | 1317 ++++++++++++----- kitsune-job-runner/Cargo.toml | 2 +- kitsune/Cargo.toml | 10 +- kitsune/src/http/cond.rs | 68 - kitsune/src/http/graphql/query/instance.rs | 2 + kitsune/src/http/graphql/query/timeline.rs | 4 +- kitsune/src/http/graphql/types/instance.rs | 3 +- kitsune/src/http/handler/posts/mod.rs | 51 +- kitsune/src/http/handler/users/mod.rs | 85 +- kitsune/src/http/mod.rs | 2 - kitsune/src/http/page.rs | 121 -- kitsune/templates/base.html | 24 + kitsune/templates/components/post.html | 32 - kitsune/templates/oauth/consent.html | 51 +- kitsune/templates/oauth/login.html | 27 +- kitsune/templates/oauth/token.html | 24 +- kitsune/templates/pages/footer.html | 3 - kitsune/templates/pages/posts.html | 33 - kitsune/templates/pages/users.html | 28 - lib/athena/Cargo.toml | 6 +- lib/speedy-uuid/Cargo.toml | 4 +- public/colours.css | 9 - public/post-style.css | 69 - public/template.css | 10 +- public/user-style.css | 27 - 84 files changed, 2773 insertions(+), 1241 deletions(-) delete mode 100644 kitsune-fe/public/vite.svg create mode 100644 kitsune-fe/src/assets/.gitkeep delete mode 100644 kitsune-fe/src/assets/vue.svg delete mode 100644 kitsune-fe/src/components/BaseModal.vue create mode 100644 kitsune-fe/src/components/BaseTimeline.vue create mode 100644 kitsune-fe/src/components/GlitchedElement.vue create mode 100644 kitsune-fe/src/components/LanguageSelector.vue create mode 100644 kitsune-fe/src/components/Post.vue create mode 100644 kitsune-fe/src/components/modal/BaseModal.vue create mode 100644 kitsune-fe/src/components/modal/NewPostModal.vue create mode 100644 kitsune-fe/src/graphql/post.ts create mode 100644 kitsune-fe/src/graphql/timeline.ts create mode 100644 kitsune-fe/src/i18n/en-cyberpunk.ts create mode 100644 kitsune-fe/src/i18n/en.ts create mode 100644 kitsune-fe/src/i18n/index.ts create mode 100644 kitsune-fe/src/styles/_breakpoints.scss create mode 100644 kitsune-fe/src/views/MessagePage.vue create mode 100644 kitsune-fe/src/views/NotificationPage.vue create mode 100644 kitsune-fe/src/views/PostPage.vue create mode 100644 kitsune-fe/src/views/timeline/FederatedPage.vue create mode 100644 kitsune-fe/src/views/timeline/HomePage.vue create mode 100644 kitsune-fe/src/views/timeline/LocalPage.vue create mode 100644 kitsune-fe/src/virtual-scroller.d.ts delete mode 100644 kitsune/src/http/cond.rs delete mode 100644 kitsune/src/http/page.rs create mode 100644 kitsune/templates/base.html delete mode 100644 kitsune/templates/components/post.html delete mode 100644 kitsune/templates/pages/footer.html delete mode 100644 kitsune/templates/pages/posts.html delete mode 100644 kitsune/templates/pages/users.html delete mode 100644 public/colours.css delete mode 100644 public/post-style.css delete mode 100644 public/user-style.css diff --git a/.vscode/settings.json b/.vscode/settings.json index 3d162824f..4c6d93bce 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -12,4 +12,4 @@ "rust-analyzer.server.extraEnv": { "CARGO_TARGET_DIR": "target-analyzer" } -} \ No newline at end of file +} diff --git a/Cargo.lock b/Cargo.lock index d9f29c1cf..27c9ec4bd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -276,9 +276,9 @@ dependencies = [ [[package]] name = "async-graphql" -version = "6.0.7" +version = "6.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1addb0b551c59640e15de99e7566a4e3a1186cf42269e160c485ba6d8b43fe30" +checksum = "117113a7ff4a98f2a864fa7a5274033b0907fce65dc8464993c75033f8074f90" dependencies = [ "async-graphql-derive", "async-graphql-parser", @@ -312,9 +312,9 @@ dependencies = [ [[package]] name = "async-graphql-axum" -version = "6.0.7" +version = "6.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c21af134ab9419aae6658298f819a28e4737ac81f96cde8008f9d49db1802662" +checksum = "0ddd7767f83c3273a6d26a36cbdd562c6009aae87c6fa2c0f1eebb76f60c4151" dependencies = [ "async-graphql", "async-trait", @@ -330,9 +330,9 @@ dependencies = [ [[package]] name = "async-graphql-derive" -version = "6.0.7" +version = "6.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e1121ff0be2feea705c24f6940162c4f14a077e50a217b16e091e6534a8c08a" +checksum = "6e4bb7b7b2344d24af860776b7fe4e4ee4a67cd965f076048d023f555703b854" dependencies = [ "Inflector", "async-graphql-parser", @@ -347,9 +347,9 @@ dependencies = [ [[package]] name = "async-graphql-parser" -version = "6.0.7" +version = "6.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0b6713fd4ffd610b8b6f6e911bf31277cbb84b7c2a9cdeeb39d1b3eed3b88e4" +checksum = "c47e1c1ff6cb7cae62c9cd768d76475cc68f156d8234b024fd2499ad0e91da21" dependencies = [ "async-graphql-value", "pest", @@ -359,9 +359,9 @@ dependencies = [ [[package]] name = "async-graphql-value" -version = "6.0.7" +version = "6.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d74240f9daa8c1e8f73e9cfcc338d20a88d00bbeb83ded49ce8e5b4dcec0f5" +checksum = "2270df3a642efce860ed06fbcf61fc6db10f83c2ecb5613127fb453c82e012a4" dependencies = [ "bytes", "indexmap 2.0.2", @@ -1187,9 +1187,9 @@ checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpufeatures" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "3fbc60abd742b35f2492f808e1abbb83d45f72db402e14c55057edc9c7b1e9e4" dependencies = [ "libc", ] @@ -1338,7 +1338,7 @@ dependencies = [ "openssl-probe", "openssl-sys", "schannel", - "socket2 0.4.9", + "socket2 0.4.10", "winapi", ] @@ -1463,7 +1463,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.1", + "hashbrown 0.14.2", "lock_api", "once_cell", "parking_lot_core", @@ -1625,9 +1625,9 @@ dependencies = [ [[package]] name = "diesel_full_text_search" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3975708a44577929dd7d921e5a4c1f95eef7c6a22d3e236d7d92fa108b535fdd" +checksum = "8b44a057e441a6a5d802feea2646a6730cc6df99c75b7e02857a41ea90f2b30b" dependencies = [ "diesel", ] @@ -2305,9 +2305,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" +checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" [[package]] name = "headers" @@ -2486,7 +2486,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.9", + "socket2 0.4.10", "tokio", "tower-service", "tracing", @@ -2593,7 +2593,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" dependencies = [ "equivalent", - "hashbrown 0.14.1", + "hashbrown 0.14.2", "serde", ] @@ -3035,7 +3035,7 @@ dependencies = [ "pem", "pkcs8", "rayon", - "ring 0.17.4", + "ring 0.17.5", "thiserror", "time", "tokio", @@ -3192,7 +3192,7 @@ dependencies = [ "quoted_printable", "rustls", "rustls-pemfile", - "socket2 0.5.4", + "socket2 0.5.5", "tokio", "tokio-rustls", "tracing", @@ -4609,7 +4609,7 @@ dependencies = [ "rustls-native-certs", "ryu", "sha1_smol", - "socket2 0.4.9", + "socket2 0.4.10", "tokio", "tokio-retry", "tokio-rustls", @@ -4734,9 +4734,9 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.4" +version = "0.17.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fce3045ffa7c981a6ee93f640b538952e155f1ae3a1a02b84547fc7a56b7059a" +checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b" dependencies = [ "cc", "getrandom", @@ -4860,9 +4860,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.19" +version = "0.38.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "745ecfa778e66b2b63c88a61cb36e0eea109e803b0b86bf9879fbc77c70e86ed" +checksum = "67ce50cb2e16c2903e30d1cbccfd8387a74b9d4c938b6a4c5ec6cc7556f7a8a0" dependencies = [ "bitflags 2.4.1", "errno", @@ -5399,9 +5399,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ "libc", "winapi", @@ -5409,9 +5409,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" dependencies = [ "libc", "windows-sys 0.48.0", @@ -5638,18 +5638,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.49" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.49" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", @@ -5736,7 +5736,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.4", + "socket2 0.5.5", "tokio-macros", "windows-sys 0.48.0", ] @@ -5772,7 +5772,7 @@ dependencies = [ "postgres-protocol", "postgres-types", "rand", - "socket2 0.5.4", + "socket2 0.5.5", "tokio", "tokio-util", "whoami", @@ -5955,9 +5955,9 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.39" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2ef2af84856a50c1d430afce2fdded0a4ec7eda868db86409b4543df0797f9" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ "log", "pin-project-lite", @@ -6066,16 +6066,18 @@ dependencies = [ [[package]] name = "typed-builder" -version = "0.17.0" -source = "git+https://github.com/idanarye/rust-typed-builder.git?rev=fd1bd8336aeb0dc334060635e2a6a1d8dc329e3c#fd1bd8336aeb0dc334060635e2a6a1d8dc329e3c" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e47c0496149861b7c95198088cbf36645016b1a0734cf350c50e2a38e070f38a" dependencies = [ "typed-builder-macro", ] [[package]] name = "typed-builder-macro" -version = "0.17.0" -source = "git+https://github.com/idanarye/rust-typed-builder.git?rev=fd1bd8336aeb0dc334060635e2a6a1d8dc329e3c#fd1bd8336aeb0dc334060635e2a6a1d8dc329e3c" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "982ee4197351b5c9782847ef5ec1fdcaf50503fb19d68f9771adae314e72b492" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 2f6dc0bb2..871fb7d1f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -42,4 +42,3 @@ version = "0.0.1-pre.3" [patch.crates-io] redis = { git = "https://github.com/aumetra/redis-rs.git", rev = "3c4ee09d432a69e1d87d66dcba14c519467c9b81" } -typed-builder = { git = "https://github.com/idanarye/rust-typed-builder.git", rev = "fd1bd8336aeb0dc334060635e2a6a1d8dc329e3c" } diff --git a/crates/kitsune-cache/Cargo.toml b/crates/kitsune-cache/Cargo.toml index acf5a1061..a3dd34760 100644 --- a/crates/kitsune-cache/Cargo.toml +++ b/crates/kitsune-cache/Cargo.toml @@ -11,9 +11,9 @@ moka = { version = "0.12.1", features = ["sync"] } redis = "0.23.3" serde = "1.0.189" simd-json = "0.12.0" -thiserror = "1.0.49" -tracing = "0.1.39" -typed-builder = "0.17.0" +thiserror = "1.0.50" +tracing = "0.1.40" +typed-builder = "0.18.0" [dev-dependencies] tokio = { version = "1.33.0", features = ["macros", "rt"] } diff --git a/crates/kitsune-captcha/Cargo.toml b/crates/kitsune-captcha/Cargo.toml index a56ee3b9f..3c7a0383c 100644 --- a/crates/kitsune-captcha/Cargo.toml +++ b/crates/kitsune-captcha/Cargo.toml @@ -12,5 +12,5 @@ serde = { version = "1.0.189", features = ["derive"] } serde_urlencoded = "0.7.1" simd-json = "0.12.0" strum = { version = "0.25.0", features = ["derive"] } -thiserror = "1.0.49" -typed-builder = "0.17.0" +thiserror = "1.0.50" +typed-builder = "0.18.0" diff --git a/crates/kitsune-core/Cargo.toml b/crates/kitsune-core/Cargo.toml index 51ba686dd..a37af9816 100644 --- a/crates/kitsune-core/Cargo.toml +++ b/crates/kitsune-core/Cargo.toml @@ -62,12 +62,12 @@ sha2 = { version = "0.10.8", features = ["asm"] } simd-json = "0.12.0" smol_str = "0.2.0" speedy-uuid = { path = "../../lib/speedy-uuid", features = ["diesel"] } -thiserror = "1.0.49" +thiserror = "1.0.50" time = "0.3.30" tokio = { version = "1.33.0", features = ["macros", "rt"] } toml = { version = "0.8.2", default-features = false, features = ["parse"] } -tracing = "0.1.39" -typed-builder = "0.17.0" +tracing = "0.1.40" +typed-builder = "0.18.0" url = "2.4.1" zxcvbn = { version = "2.2.2", default-features = false } diff --git a/crates/kitsune-db/Cargo.toml b/crates/kitsune-db/Cargo.toml index ef7c83e2d..b082c3513 100644 --- a/crates/kitsune-db/Cargo.toml +++ b/crates/kitsune-db/Cargo.toml @@ -12,7 +12,7 @@ diesel-async = { version = "0.4.1", features = [ "postgres", "tokio", ] } -diesel_full_text_search = { version = "2.1.0", default-features = false } +diesel_full_text_search = { version = "2.1.1", default-features = false } diesel_migrations = "2.1.0" iso8601-timestamp = { version = "0.2.12", features = ["diesel-pg"] } kitsune-language = { path = "../kitsune-language" } @@ -22,7 +22,7 @@ num-traits = "0.2.17" serde = { version = "1.0.189", features = ["derive"] } simd-json = "0.12.0" speedy-uuid = { path = "../../lib/speedy-uuid", features = ["diesel"] } -thiserror = "1.0.49" +thiserror = "1.0.50" tokio = { version = "1.33.0", features = ["rt"] } tracing-log = "0.1.3" -typed-builder = "0.17.0" +typed-builder = "0.18.0" diff --git a/crates/kitsune-email/Cargo.toml b/crates/kitsune-email/Cargo.toml index 87f907ca9..167a7e442 100644 --- a/crates/kitsune-email/Cargo.toml +++ b/crates/kitsune-email/Cargo.toml @@ -23,5 +23,5 @@ mrml = { version = "2.0.0-rc4", default-features = false, features = [ "parse", "render", ] } -thiserror = "1.0.49" -typed-builder = "0.17.0" +thiserror = "1.0.50" +typed-builder = "0.18.0" diff --git a/crates/kitsune-embed/Cargo.toml b/crates/kitsune-embed/Cargo.toml index 18c8bf173..8cbec7212 100644 --- a/crates/kitsune-embed/Cargo.toml +++ b/crates/kitsune-embed/Cargo.toml @@ -14,5 +14,5 @@ kitsune-http-client = { path = "../kitsune-http-client" } once_cell = "1.18.0" scraper = { version = "0.17.1", default-features = false } smol_str = "0.2.0" -thiserror = "1.0.49" -typed-builder = "0.17.0" +thiserror = "1.0.50" +typed-builder = "0.18.0" diff --git a/crates/kitsune-http-signatures/Cargo.toml b/crates/kitsune-http-signatures/Cargo.toml index 943b99839..3a46c677d 100644 --- a/crates/kitsune-http-signatures/Cargo.toml +++ b/crates/kitsune-http-signatures/Cargo.toml @@ -8,14 +8,14 @@ base64-simd = "0.8.0" derive_builder = "0.12.0" http = "0.2.9" rayon = "1.8.0" -ring = { version = "0.17.4", features = ["std"] } +ring = { version = "0.17.5", features = ["std"] } time = { version = "0.3.30", default-features = false, features = [ "formatting", "parsing", ] } -thiserror = "1.0.49" +thiserror = "1.0.50" tokio = { version = "1.33.0", features = ["sync"] } -typed-builder = "0.17.0" +typed-builder = "0.18.0" [dev-dependencies] pem = "3.0.2" diff --git a/crates/kitsune-messaging/Cargo.toml b/crates/kitsune-messaging/Cargo.toml index 2ab50482a..57937d35d 100644 --- a/crates/kitsune-messaging/Cargo.toml +++ b/crates/kitsune-messaging/Cargo.toml @@ -18,4 +18,4 @@ serde = "1.0.189" simd-json = "0.12.0" tokio = { version = "1.33.0", features = ["macros", "rt", "sync"] } tokio-stream = { version = "0.1.14", features = ["sync"] } -tracing = "0.1.39" +tracing = "0.1.40" diff --git a/crates/kitsune-search/Cargo.toml b/crates/kitsune-search/Cargo.toml index 7ee143136..c4cb6230d 100644 --- a/crates/kitsune-search/Cargo.toml +++ b/crates/kitsune-search/Cargo.toml @@ -7,7 +7,7 @@ version.workspace = true async-trait = "0.1.74" diesel = "2.1.3" diesel-async = "0.4.1" -diesel_full_text_search = { version = "2.1.0", default-features = false } +diesel_full_text_search = { version = "2.1.1", default-features = false } enum_dispatch = "0.3.12" futures-util = "0.3.28" kitsune-db = { path = "../kitsune-db" } @@ -15,8 +15,8 @@ kitsune-language = { path = "../kitsune-language" } serde = { version = "1.0.189", features = ["derive"] } speedy-uuid = { path = "../../lib/speedy-uuid" } strum = { version = "0.25.0", features = ["derive"] } -thiserror = "1.0.49" -tracing = "0.1.39" +thiserror = "1.0.50" +tracing = "0.1.40" # "meilisearch" feature meilisearch-sdk = { version = "0.24.2", optional = true } diff --git a/flake.lock b/flake.lock index ab7d3adbb..5eecfbfb7 100644 --- a/flake.lock +++ b/flake.lock @@ -140,11 +140,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1697059129, - "narHash": "sha256-9NJcFF9CEYPvHJ5ckE8kvINvI84SZZ87PvqMbH6pro0=", + "lastModified": 1697723726, + "narHash": "sha256-SaTWPkI8a5xSHX/rrKzUe+/uVNy6zCGMXgoeMb7T9rg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "5e4c2ada4fcd54b99d56d7bd62f384511a7e2593", + "rev": "7c9cc5a6e5d38010801741ac830a3f8fd667a7a0", "type": "github" }, "original": { @@ -232,11 +232,11 @@ ] }, "locked": { - "lastModified": 1697249410, - "narHash": "sha256-OmsnxNsjBB1DJlUuJyzDJJ7psbm4/VzokNT+o0ajzFQ=", + "lastModified": 1697854201, + "narHash": "sha256-H+0Wb20PQx/8N7X/OfwwAVPeN9TbfjcyG0sXbdgsh50=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "dce60ca7fca201014868c08a612edb73a998310f", + "rev": "6e8e3332433847cd56186b1f6fc8c47603cf5b46", "type": "github" }, "original": { diff --git a/kitsune-fe/.prettierrc b/kitsune-fe/.prettierrc index b35ebd27a..2eb0f18c4 100644 --- a/kitsune-fe/.prettierrc +++ b/kitsune-fe/.prettierrc @@ -3,7 +3,10 @@ "importOrder": ["^\\w", "^[./|~/]"], "importOrderSeparation": true, "importOrderParserPlugins": ["typescript"], - "plugins": ["@trivago/prettier-plugin-sort-imports"], + "plugins": [ + "@trivago/prettier-plugin-sort-imports", + "prettier-plugin-css-order" + ], "semi": true, "singleQuote": true, "vueIndentScriptAndStyle": true diff --git a/kitsune-fe/index.html b/kitsune-fe/index.html index ce2fe6911..a5972eaba 100644 --- a/kitsune-fe/index.html +++ b/kitsune-fe/index.html @@ -2,7 +2,7 @@ - + Kitsune diff --git a/kitsune-fe/package.json b/kitsune-fe/package.json index 8f7f53a7f..dc9b046e4 100644 --- a/kitsune-fe/package.json +++ b/kitsune-fe/package.json @@ -19,17 +19,25 @@ "@fortawesome/vue-fontawesome": "^3.0.2", "@hcaptcha/vue3-hcaptcha": "^1.3.0", "@mcaptcha/vanilla-glue": "^0.1.0-alpha-3", + "@tiptap/pm": "^2.1.12", + "@tiptap/starter-kit": "^2.1.12", + "@tiptap/vue-3": "^2.1.12", + "@urql/exchange-graphcache": "^6.3.3", "@urql/vue": "^1.1.2", - "@vueuse/core": "^10.4.1", + "@vueuse/core": "^10.5.0", "@zxcvbn-ts/core": "^3.0.4", "@zxcvbn-ts/language-common": "^3.0.4", "@zxcvbn-ts/language-en": "^3.0.2", "floating-vue": "^2.0.0-beta.24", "graphql": "^16.8.1", "lodash": "^4.17.21", - "pinia": "^2.1.6", + "pinia": "^2.1.7", "pinia-plugin-persistedstate": "^3.2.0", - "vue": "^3.2.41", + "tiptap-markdown": "^0.8.2", + "unhead": "^1.7.4", + "vue": "^3.3.6", + "vue-i18n": "^9.5.0", + "vue-powerglitch": "^1.0.0", "vue-router": "^4.2.5", "vue-virtual-scroller": "^2.0.0-beta.8" }, @@ -38,20 +46,21 @@ "@graphql-codegen/client-preset": "^4.1.0", "@parcel/watcher": "^2.3.0", "@trivago/prettier-plugin-sort-imports": "^4.2.0", - "@types/lodash": "^4.14.199", - "@typescript-eslint/eslint-plugin": "^6.7.4", - "@typescript-eslint/parser": "^6.7.4", + "@types/lodash": "^4.14.200", + "@typescript-eslint/eslint-plugin": "^6.8.0", + "@typescript-eslint/parser": "^6.8.0", "@vitejs/plugin-vue": "^4.4.0", "@vue/eslint-config-prettier": "^8.0.0", "@vue/eslint-config-typescript": "^12.0.0", - "eslint": "^8.50.0", + "eslint": "^8.52.0", "eslint-config-prettier": "^9.0.0", - "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-prettier": "^5.0.1", "eslint-plugin-vue": "^9.17.0", "prettier": "^3.0.3", - "sass": "^1.68.0", + "prettier-plugin-css-order": "^2.0.1", + "sass": "^1.69.4", "typescript": "^5.2.2", - "vite": "^4.4.10", - "vue-tsc": "^1.8.15" + "vite": "^4.5.0", + "vue-tsc": "^1.8.19" } } diff --git a/kitsune-fe/public/vite.svg b/kitsune-fe/public/vite.svg deleted file mode 100644 index e7b8dfb1b..000000000 --- a/kitsune-fe/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/kitsune-fe/src/App.vue b/kitsune-fe/src/App.vue index 717c4dbca..d05562139 100644 --- a/kitsune-fe/src/App.vue +++ b/kitsune-fe/src/App.vue @@ -1,9 +1,11 @@ - - diff --git a/kitsune-fe/src/components/BaseTimeline.vue b/kitsune-fe/src/components/BaseTimeline.vue new file mode 100644 index 000000000..ce7d67490 --- /dev/null +++ b/kitsune-fe/src/components/BaseTimeline.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/kitsune-fe/src/components/CaptchaComponent.vue b/kitsune-fe/src/components/CaptchaComponent.vue index 598e7b3b8..52d11620f 100644 --- a/kitsune-fe/src/components/CaptchaComponent.vue +++ b/kitsune-fe/src/components/CaptchaComponent.vue @@ -7,7 +7,7 @@ /> { - if (props.backend == CaptchaBackend.MCaptcha) { + if (props.backend === CaptchaBackend.MCaptcha) { const config = { widgetLink: new URL(props.sitekey), }; @@ -77,7 +77,7 @@ @use '../styles/colours' as *; #mcaptcha__widget-container { - height: 80px; border: 1px solid $shade1dark; + height: 80px; } diff --git a/kitsune-fe/src/components/GenericFooter.vue b/kitsune-fe/src/components/GenericFooter.vue index 18bb4eb97..b146fd135 100644 --- a/kitsune-fe/src/components/GenericFooter.vue +++ b/kitsune-fe/src/components/GenericFooter.vue @@ -1,7 +1,10 @@ + + + diff --git a/kitsune-fe/src/components/Post.vue b/kitsune-fe/src/components/Post.vue new file mode 100644 index 000000000..cbfea895a --- /dev/null +++ b/kitsune-fe/src/components/Post.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/kitsune-fe/src/components/modal/BaseModal.vue b/kitsune-fe/src/components/modal/BaseModal.vue new file mode 100644 index 000000000..13eade896 --- /dev/null +++ b/kitsune-fe/src/components/modal/BaseModal.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/kitsune-fe/src/components/modal/NewPostModal.vue b/kitsune-fe/src/components/modal/NewPostModal.vue new file mode 100644 index 000000000..dbe4e0ff0 --- /dev/null +++ b/kitsune-fe/src/components/modal/NewPostModal.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/kitsune-fe/src/consts.ts b/kitsune-fe/src/consts.ts index e27188c5d..912d11e8f 100644 --- a/kitsune-fe/src/consts.ts +++ b/kitsune-fe/src/consts.ts @@ -1,2 +1,22 @@ -export const BACKEND_PREFIX = +const BACKEND_PREFIX = import.meta.env.VITE_BACKEND_PREFIX ?? window.location.origin; + +const DEFAULT_PROFILE_PICTURE_URL = + BACKEND_PREFIX + '/public/assets/default-avatar.png'; + +const MAX_UUID = 'FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF'; + +const TEMPLATE_PARAMS = { + separator: '-', + siteName: 'Kitsune', +}; + +const TITLE_TEMPLATE = '%s %separator %siteName'; + +export { + BACKEND_PREFIX, + DEFAULT_PROFILE_PICTURE_URL, + MAX_UUID, + TEMPLATE_PARAMS, + TITLE_TEMPLATE, +}; diff --git a/kitsune-fe/src/graphql/instance-info.ts b/kitsune-fe/src/graphql/instance-info.ts index fb756d283..d6d612cd1 100644 --- a/kitsune-fe/src/graphql/instance-info.ts +++ b/kitsune-fe/src/graphql/instance-info.ts @@ -9,6 +9,11 @@ function useInstanceInfo() { query: graphql(` query getInstanceInfo { instance { + captcha { + backend + key + } + characterLimit description domain localPostCount @@ -16,10 +21,6 @@ function useInstanceInfo() { name userCount version - captcha { - backend - key - } } } `), diff --git a/kitsune-fe/src/graphql/post.ts b/kitsune-fe/src/graphql/post.ts new file mode 100644 index 000000000..1aa5cb252 --- /dev/null +++ b/kitsune-fe/src/graphql/post.ts @@ -0,0 +1,40 @@ +import { useQuery } from '@urql/vue'; + +import { computed } from 'vue'; + +import { graphql } from './types'; + +function getPostById(id: string) { + const { data } = useQuery({ + query: graphql(` + query getPostById($id: UUID!) { + getPostById(id: $id) { + id + subject + content + account { + id + displayName + username + avatar { + url + } + url + } + attachments { + contentType + description + url + } + } + } + `), + variables: { + id, + }, + }); + + return computed(() => data.value?.getPostById); +} + +export { getPostById }; diff --git a/kitsune-fe/src/graphql/timeline.ts b/kitsune-fe/src/graphql/timeline.ts new file mode 100644 index 000000000..b1533ed92 --- /dev/null +++ b/kitsune-fe/src/graphql/timeline.ts @@ -0,0 +1,89 @@ +import { useQuery } from '@urql/vue'; + +import { Ref } from 'vue'; + +import { graphql } from './types'; + +function getHome(after: Ref) { + const { data } = useQuery({ + query: graphql(` + query getHomeTimeline($after: String!) { + homeTimeline(after: $after) @_relayPagination(mergeMode: "after") { + nodes { + id + subject + content + url + account { + id + avatar { + url + } + displayName + username + url + } + attachments { + contentType + description + url + } + } + pageInfo { + startCursor + endCursor + } + } + } + `), + variables: { + after: after as unknown as string, // Weird cast to allow reactivity + }, + }); + + return data; +} + +function getPublic(after: Ref, onlyLocal: boolean) { + const { data } = useQuery({ + query: graphql(` + query getPublicTimeline($after: String!, $onlyLocal: Boolean!) { + publicTimeline(after: $after, onlyLocal: $onlyLocal) + @_relayPagination(mergeMode: "after") { + nodes { + id + subject + content + url + account { + id + avatar { + url + } + displayName + username + url + } + attachments { + contentType + description + url + } + } + pageInfo { + startCursor + endCursor + } + } + } + `), + variables: { + after: after as unknown as string, + onlyLocal, + }, + }); + + return data; +} + +export { getHome, getPublic }; diff --git a/kitsune-fe/src/graphql/types/gql.ts b/kitsune-fe/src/graphql/types/gql.ts index a21178e55..eea442607 100644 --- a/kitsune-fe/src/graphql/types/gql.ts +++ b/kitsune-fe/src/graphql/types/gql.ts @@ -16,8 +16,14 @@ import * as types from './graphql'; const documents = { '\n mutation registerUser(\n $username: String!\n $email: String!\n $password: String!\n $captchaToken: String\n ) {\n registerUser(\n username: $username\n email: $email\n password: $password\n captchaToken: $captchaToken\n ) {\n id\n }\n }\n ': types.RegisterUserDocument, - '\n query getInstanceInfo {\n instance {\n description\n domain\n localPostCount\n registrationsOpen\n name\n userCount\n version\n captcha {\n backend\n key\n }\n }\n }\n ': + '\n query getInstanceInfo {\n instance {\n captcha {\n backend\n key\n }\n characterLimit\n description\n domain\n localPostCount\n registrationsOpen\n name\n userCount\n version\n }\n }\n ': types.GetInstanceInfoDocument, + '\n query getPostById($id: UUID!) {\n getPostById(id: $id) {\n id\n subject\n content\n account {\n id\n displayName\n username\n avatar {\n url\n }\n url\n }\n attachments {\n contentType\n description\n url\n }\n }\n }\n ': + types.GetPostByIdDocument, + '\n query getHomeTimeline($after: String!) {\n homeTimeline(after: $after) @_relayPagination(mergeMode: "after") {\n nodes {\n id\n subject\n content\n url\n account {\n id\n avatar {\n url\n }\n displayName\n username\n url\n }\n attachments {\n contentType\n description\n url\n }\n }\n pageInfo {\n startCursor\n endCursor\n }\n }\n }\n ': + types.GetHomeTimelineDocument, + '\n query getPublicTimeline($after: String!, $onlyLocal: Boolean!) {\n publicTimeline(after: $after, onlyLocal: $onlyLocal)\n @_relayPagination(mergeMode: "after") {\n nodes {\n id\n subject\n content\n url\n account {\n id\n avatar {\n url\n }\n displayName\n username\n url\n }\n attachments {\n contentType\n description\n url\n }\n }\n pageInfo {\n startCursor\n endCursor\n }\n }\n }\n ': + types.GetPublicTimelineDocument, '\n mutation registerOauthApplication(\n $name: String!\n $redirect_uri: String!\n ) {\n registerOauthApplication(name: $name, redirectUri: $redirect_uri) {\n id\n secret\n redirectUri\n }\n }\n ': types.RegisterOauthApplicationDocument, }; @@ -46,8 +52,26 @@ export function graphql( * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ export function graphql( - source: '\n query getInstanceInfo {\n instance {\n description\n domain\n localPostCount\n registrationsOpen\n name\n userCount\n version\n captcha {\n backend\n key\n }\n }\n }\n ', -): (typeof documents)['\n query getInstanceInfo {\n instance {\n description\n domain\n localPostCount\n registrationsOpen\n name\n userCount\n version\n captcha {\n backend\n key\n }\n }\n }\n ']; + source: '\n query getInstanceInfo {\n instance {\n captcha {\n backend\n key\n }\n characterLimit\n description\n domain\n localPostCount\n registrationsOpen\n name\n userCount\n version\n }\n }\n ', +): (typeof documents)['\n query getInstanceInfo {\n instance {\n captcha {\n backend\n key\n }\n characterLimit\n description\n domain\n localPostCount\n registrationsOpen\n name\n userCount\n version\n }\n }\n ']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n query getPostById($id: UUID!) {\n getPostById(id: $id) {\n id\n subject\n content\n account {\n id\n displayName\n username\n avatar {\n url\n }\n url\n }\n attachments {\n contentType\n description\n url\n }\n }\n }\n ', +): (typeof documents)['\n query getPostById($id: UUID!) {\n getPostById(id: $id) {\n id\n subject\n content\n account {\n id\n displayName\n username\n avatar {\n url\n }\n url\n }\n attachments {\n contentType\n description\n url\n }\n }\n }\n ']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n query getHomeTimeline($after: String!) {\n homeTimeline(after: $after) @_relayPagination(mergeMode: "after") {\n nodes {\n id\n subject\n content\n url\n account {\n id\n avatar {\n url\n }\n displayName\n username\n url\n }\n attachments {\n contentType\n description\n url\n }\n }\n pageInfo {\n startCursor\n endCursor\n }\n }\n }\n ', +): (typeof documents)['\n query getHomeTimeline($after: String!) {\n homeTimeline(after: $after) @_relayPagination(mergeMode: "after") {\n nodes {\n id\n subject\n content\n url\n account {\n id\n avatar {\n url\n }\n displayName\n username\n url\n }\n attachments {\n contentType\n description\n url\n }\n }\n pageInfo {\n startCursor\n endCursor\n }\n }\n }\n ']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n query getPublicTimeline($after: String!, $onlyLocal: Boolean!) {\n publicTimeline(after: $after, onlyLocal: $onlyLocal)\n @_relayPagination(mergeMode: "after") {\n nodes {\n id\n subject\n content\n url\n account {\n id\n avatar {\n url\n }\n displayName\n username\n url\n }\n attachments {\n contentType\n description\n url\n }\n }\n pageInfo {\n startCursor\n endCursor\n }\n }\n }\n ', +): (typeof documents)['\n query getPublicTimeline($after: String!, $onlyLocal: Boolean!) {\n publicTimeline(after: $after, onlyLocal: $onlyLocal)\n @_relayPagination(mergeMode: "after") {\n nodes {\n id\n subject\n content\n url\n account {\n id\n avatar {\n url\n }\n displayName\n username\n url\n }\n attachments {\n contentType\n description\n url\n }\n }\n pageInfo {\n startCursor\n endCursor\n }\n }\n }\n ']; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ diff --git a/kitsune-fe/src/graphql/types/graphql.ts b/kitsune-fe/src/graphql/types/graphql.ts index 3a652b455..770b64fca 100644 --- a/kitsune-fe/src/graphql/types/graphql.ts +++ b/kitsune-fe/src/graphql/types/graphql.ts @@ -87,6 +87,7 @@ export type CaptchaInfo = { export type Instance = { __typename?: 'Instance'; captcha?: Maybe; + characterLimit: Scalars['Int']['output']; description: Scalars['String']['output']; domain: Scalars['String']['output']; localPostCount: Scalars['Int']['output']; @@ -270,6 +271,7 @@ export type GetInstanceInfoQuery = { __typename?: 'RootQuery'; instance: { __typename?: 'Instance'; + characterLimit: number; description: string; domain: string; localPostCount: number; @@ -285,6 +287,109 @@ export type GetInstanceInfoQuery = { }; }; +export type GetPostByIdQueryVariables = Exact<{ + id: Scalars['UUID']['input']; +}>; + +export type GetPostByIdQuery = { + __typename?: 'RootQuery'; + getPostById: { + __typename?: 'Post'; + id: any; + subject?: string | null; + content: string; + account: { + __typename?: 'Account'; + id: any; + displayName?: string | null; + username: string; + url: string; + avatar?: { __typename?: 'MediaAttachment'; url: string } | null; + }; + attachments: Array<{ + __typename?: 'MediaAttachment'; + contentType: string; + description?: string | null; + url: string; + }>; + }; +}; + +export type GetHomeTimelineQueryVariables = Exact<{ + after: Scalars['String']['input']; +}>; + +export type GetHomeTimelineQuery = { + __typename?: 'RootQuery'; + homeTimeline: { + __typename?: 'PostConnection'; + nodes: Array<{ + __typename?: 'Post'; + id: any; + subject?: string | null; + content: string; + url: string; + account: { + __typename?: 'Account'; + id: any; + displayName?: string | null; + username: string; + url: string; + avatar?: { __typename?: 'MediaAttachment'; url: string } | null; + }; + attachments: Array<{ + __typename?: 'MediaAttachment'; + contentType: string; + description?: string | null; + url: string; + }>; + }>; + pageInfo: { + __typename?: 'PageInfo'; + startCursor?: string | null; + endCursor?: string | null; + }; + }; +}; + +export type GetPublicTimelineQueryVariables = Exact<{ + after: Scalars['String']['input']; + onlyLocal: Scalars['Boolean']['input']; +}>; + +export type GetPublicTimelineQuery = { + __typename?: 'RootQuery'; + publicTimeline: { + __typename?: 'PostConnection'; + nodes: Array<{ + __typename?: 'Post'; + id: any; + subject?: string | null; + content: string; + url: string; + account: { + __typename?: 'Account'; + id: any; + displayName?: string | null; + username: string; + url: string; + avatar?: { __typename?: 'MediaAttachment'; url: string } | null; + }; + attachments: Array<{ + __typename?: 'MediaAttachment'; + contentType: string; + description?: string | null; + url: string; + }>; + }>; + pageInfo: { + __typename?: 'PageInfo'; + startCursor?: string | null; + endCursor?: string | null; + }; + }; +}; + export type RegisterOauthApplicationMutationVariables = Exact<{ name: Scalars['String']['input']; redirect_uri: Scalars['String']['input']; @@ -430,6 +535,24 @@ export const GetInstanceInfoDocument = { selectionSet: { kind: 'SelectionSet', selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'captcha' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'backend' }, + }, + { kind: 'Field', name: { kind: 'Name', value: 'key' } }, + ], + }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'characterLimit' }, + }, { kind: 'Field', name: { kind: 'Name', value: 'description' } }, { kind: 'Field', name: { kind: 'Name', value: 'domain' } }, { @@ -443,17 +566,265 @@ export const GetInstanceInfoDocument = { { kind: 'Field', name: { kind: 'Name', value: 'name' } }, { kind: 'Field', name: { kind: 'Name', value: 'userCount' } }, { kind: 'Field', name: { kind: 'Name', value: 'version' } }, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode< + GetInstanceInfoQuery, + GetInstanceInfoQueryVariables +>; +export const GetPostByIdDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'query', + name: { kind: 'Name', value: 'getPostById' }, + variableDefinitions: [ + { + kind: 'VariableDefinition', + variable: { kind: 'Variable', name: { kind: 'Name', value: 'id' } }, + type: { + kind: 'NonNullType', + type: { kind: 'NamedType', name: { kind: 'Name', value: 'UUID' } }, + }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'getPostById' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'id' }, + value: { + kind: 'Variable', + name: { kind: 'Name', value: 'id' }, + }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { kind: 'Field', name: { kind: 'Name', value: 'subject' } }, + { kind: 'Field', name: { kind: 'Name', value: 'content' } }, { kind: 'Field', - name: { kind: 'Name', value: 'captcha' }, + name: { kind: 'Name', value: 'account' }, selectionSet: { kind: 'SelectionSet', selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, { kind: 'Field', - name: { kind: 'Name', value: 'backend' }, + name: { kind: 'Name', value: 'displayName' }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'username' }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'avatar' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'url' }, + }, + ], + }, + }, + { kind: 'Field', name: { kind: 'Name', value: 'url' } }, + ], + }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'attachments' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'contentType' }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'description' }, + }, + { kind: 'Field', name: { kind: 'Name', value: 'url' } }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const GetHomeTimelineDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'query', + name: { kind: 'Name', value: 'getHomeTimeline' }, + variableDefinitions: [ + { + kind: 'VariableDefinition', + variable: { + kind: 'Variable', + name: { kind: 'Name', value: 'after' }, + }, + type: { + kind: 'NonNullType', + type: { + kind: 'NamedType', + name: { kind: 'Name', value: 'String' }, + }, + }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'homeTimeline' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'after' }, + value: { + kind: 'Variable', + name: { kind: 'Name', value: 'after' }, + }, + }, + ], + directives: [ + { + kind: 'Directive', + name: { kind: 'Name', value: '_relayPagination' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'mergeMode' }, + value: { + kind: 'StringValue', + value: 'after', + block: false, + }, + }, + ], + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'nodes' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { + kind: 'Field', + name: { kind: 'Name', value: 'subject' }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'content' }, + }, + { kind: 'Field', name: { kind: 'Name', value: 'url' } }, + { + kind: 'Field', + name: { kind: 'Name', value: 'account' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'id' }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'avatar' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'url' }, + }, + ], + }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'displayName' }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'username' }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'url' }, + }, + ], + }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'attachments' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'contentType' }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'description' }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'url' }, + }, + ], + }, + }, + ], + }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'pageInfo' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'startCursor' }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'endCursor' }, }, - { kind: 'Field', name: { kind: 'Name', value: 'key' } }, ], }, }, @@ -465,8 +836,195 @@ export const GetInstanceInfoDocument = { }, ], } as unknown as DocumentNode< - GetInstanceInfoQuery, - GetInstanceInfoQueryVariables + GetHomeTimelineQuery, + GetHomeTimelineQueryVariables +>; +export const GetPublicTimelineDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'query', + name: { kind: 'Name', value: 'getPublicTimeline' }, + variableDefinitions: [ + { + kind: 'VariableDefinition', + variable: { + kind: 'Variable', + name: { kind: 'Name', value: 'after' }, + }, + type: { + kind: 'NonNullType', + type: { + kind: 'NamedType', + name: { kind: 'Name', value: 'String' }, + }, + }, + }, + { + kind: 'VariableDefinition', + variable: { + kind: 'Variable', + name: { kind: 'Name', value: 'onlyLocal' }, + }, + type: { + kind: 'NonNullType', + type: { + kind: 'NamedType', + name: { kind: 'Name', value: 'Boolean' }, + }, + }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'publicTimeline' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'after' }, + value: { + kind: 'Variable', + name: { kind: 'Name', value: 'after' }, + }, + }, + { + kind: 'Argument', + name: { kind: 'Name', value: 'onlyLocal' }, + value: { + kind: 'Variable', + name: { kind: 'Name', value: 'onlyLocal' }, + }, + }, + ], + directives: [ + { + kind: 'Directive', + name: { kind: 'Name', value: '_relayPagination' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'mergeMode' }, + value: { + kind: 'StringValue', + value: 'after', + block: false, + }, + }, + ], + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'nodes' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { + kind: 'Field', + name: { kind: 'Name', value: 'subject' }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'content' }, + }, + { kind: 'Field', name: { kind: 'Name', value: 'url' } }, + { + kind: 'Field', + name: { kind: 'Name', value: 'account' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'id' }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'avatar' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'url' }, + }, + ], + }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'displayName' }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'username' }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'url' }, + }, + ], + }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'attachments' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'contentType' }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'description' }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'url' }, + }, + ], + }, + }, + ], + }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'pageInfo' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'startCursor' }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'endCursor' }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode< + GetPublicTimelineQuery, + GetPublicTimelineQueryVariables >; export const RegisterOauthApplicationDocument = { kind: 'Document', diff --git a/kitsune-fe/src/i18n/en-cyberpunk.ts b/kitsune-fe/src/i18n/en-cyberpunk.ts new file mode 100644 index 000000000..5a783fefe --- /dev/null +++ b/kitsune-fe/src/i18n/en-cyberpunk.ts @@ -0,0 +1,22 @@ +export default { + messages: { + mainPage: { + aboutInstance: "Deets 'bout this megacorp", + }, + newPost: { + title: 'New Transmission', + }, + notFoundPage: { + main: 'Seems like ya wandered behind the blackwall, choom', + link: 'Back to the main page', + }, + timeline: { + title: 'Incoming Transmissions', + }, + }, + stats: { + instance: 'megacorp | megacorps', + post: 'transmission | transmissions', + user: 'choom | chooms', + }, +}; diff --git a/kitsune-fe/src/i18n/en.ts b/kitsune-fe/src/i18n/en.ts new file mode 100644 index 000000000..2389a5f2d --- /dev/null +++ b/kitsune-fe/src/i18n/en.ts @@ -0,0 +1,23 @@ +export default { + messages: { + mainPage: { + aboutInstance: 'About this instance', + }, + newPost: { + title: 'New Post', + }, + notFoundPage: { + main: 'Whoops! It seems that you are lost', + link: 'Back to the main page', + }, + timeline: { + title: 'Posts', + }, + }, + stats: { + title: 'statistics', + instance: 'instance | instances', + post: 'post | posts', + user: 'user | users', + }, +}; diff --git a/kitsune-fe/src/i18n/index.ts b/kitsune-fe/src/i18n/index.ts new file mode 100644 index 000000000..543c01ad3 --- /dev/null +++ b/kitsune-fe/src/i18n/index.ts @@ -0,0 +1,32 @@ +import { usePreferredLanguages } from '@vueuse/core'; + +import { computed, watch } from 'vue'; +import { createI18n, useI18n } from 'vue-i18n'; + +import en from './en'; +import enCyberpunk from './en-cyberpunk'; + +const messages = { + en, + 'en-cyberpunk': enCyberpunk, +}; + +const preferredLanguages = usePreferredLanguages(); +const preferredLanguage = computed( + () => (preferredLanguages.value[0] ?? 'en').split('-')[0], +); + +watch(preferredLanguage, (newPreferredLanguage) => { + const i18n = useI18n(); + if (newPreferredLanguage in i18n.availableLocales) { + i18n.locale.value = newPreferredLanguage; + } +}); + +const i18n = createI18n({ + locale: preferredLanguage.value, + fallbackLocale: 'en', + messages, +}); + +export { i18n }; diff --git a/kitsune-fe/src/main.ts b/kitsune-fe/src/main.ts index b998018e7..34453890a 100644 --- a/kitsune-fe/src/main.ts +++ b/kitsune-fe/src/main.ts @@ -7,15 +7,20 @@ import urql from '@urql/vue'; import { createPinia } from 'pinia'; import piniaPluginPersistedState from 'pinia-plugin-persistedstate'; +import { createHead } from 'unhead'; import { createApp } from 'vue'; +import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'; import App from './App.vue'; +import { i18n } from './i18n'; import './icons'; import { router } from './router'; import './styles/root.scss'; import { urqlClient } from './urql'; import { zxcvbnRule, zxcvbnValidationMessage } from './zxcvbn'; +createHead(); // We need to initialize `unhead` somewhere near the entry point, so yeah + const pinia = createPinia().use(piniaPluginPersistedState); createApp(App) @@ -35,6 +40,7 @@ createApp(App) }, }), ) + .use(i18n) .use(pinia) .use(router) .use(urql, urqlClient) diff --git a/kitsune-fe/src/router.ts b/kitsune-fe/src/router.ts index df9b0e592..7f7c3c634 100644 --- a/kitsune-fe/src/router.ts +++ b/kitsune-fe/src/router.ts @@ -1,29 +1,77 @@ +import { useHead } from 'unhead'; import { createRouter, createWebHistory } from 'vue-router'; +import { TEMPLATE_PARAMS, TITLE_TEMPLATE } from './consts'; + const routes = [ { path: '/', component: () => import('./views/MainPage.vue') }, - { path: '/about', component: () => import('./views/AboutPage.vue') }, - { path: '/messages', component: () => import('./views/MainPage.vue') }, - { path: '/notifications', component: () => import('./views/MainPage.vue') }, + { + path: '/about', + component: () => import('./views/AboutPage.vue'), + meta: { title: 'About' }, + }, + { + path: '/messages', + component: () => import('./views/MessagePage.vue'), + meta: { title: 'Messages' }, + }, + { + path: '/notifications', + component: () => import('./views/NotificationPage.vue'), + meta: { title: 'Notifications' }, + }, { path: '/timeline', children: [ - { path: 'home', component: () => import('./views/MainPage.vue') }, - { path: 'local', component: () => import('./views/MainPage.vue') }, - { path: 'federated', component: () => import('./views/MainPage.vue') }, + { + path: 'home', + component: () => import('./views/timeline/HomePage.vue'), + meta: { title: 'Home' }, + }, + { + path: 'local', + component: () => import('./views/timeline/LocalPage.vue'), + meta: { title: 'Local' }, + }, + { + path: 'federated', + component: () => import('./views/timeline/FederatedPage.vue'), + meta: { title: 'Federated' }, + }, ], }, { path: '/oauth-callback', component: () => import('./views/OAuthCallback.vue'), }, + { + path: '/posts/:id', + component: () => import('./views/PostPage.vue'), + meta: { title: 'Thread view' }, + }, { path: '/:catchAll(.*)', component: () => import('./views/NotFound.vue'), + meta: { title: '404 Not found' }, }, ]; -export const router = createRouter({ +const router = createRouter({ history: createWebHistory(), routes, }); + +router.afterEach((to) => { + const title = to.meta.title; + if (title) { + useHead({ + title, + titleTemplate: TITLE_TEMPLATE, + templateParams: TEMPLATE_PARAMS, + }); + } else { + useHead({ title: TEMPLATE_PARAMS.siteName, titleTemplate: '%s' }); + } +}); + +export { router }; diff --git a/kitsune-fe/src/styles/_breakpoints.scss b/kitsune-fe/src/styles/_breakpoints.scss new file mode 100644 index 000000000..968f4ee7b --- /dev/null +++ b/kitsune-fe/src/styles/_breakpoints.scss @@ -0,0 +1,9 @@ +// Source: Tailwind + +$breakpoints: ( + sm: 640px, + md: 768px, + lg: 1024px, + xl: 1280px, + xxl: 1536px, +); diff --git a/kitsune-fe/src/styles/_fonts.scss b/kitsune-fe/src/styles/_fonts.scss index 88495f0f7..5641d6216 100644 --- a/kitsune-fe/src/styles/_fonts.scss +++ b/kitsune-fe/src/styles/_fonts.scss @@ -1,6 +1,6 @@ // COPYRIGHT INFO @font-face { - font-family: 'BlockZone'; src: url('/BlockZone.ttf') format('truetype'); + font-family: 'BlockZone'; } diff --git a/kitsune-fe/src/styles/_mixins.scss b/kitsune-fe/src/styles/_mixins.scss index a144c334c..153724b30 100644 --- a/kitsune-fe/src/styles/_mixins.scss +++ b/kitsune-fe/src/styles/_mixins.scss @@ -1,5 +1,8 @@ +@use './breakpoints' as *; +@use 'sass:map'; + @mixin only-on-mobile { - @media only screen and (max-width: 850px) { + @media only screen and (max-width: map.get($breakpoints, md)) { @content; } } diff --git a/kitsune-fe/src/styles/root.scss b/kitsune-fe/src/styles/root.scss index 30254a50c..3a15c7714 100644 --- a/kitsune-fe/src/styles/root.scss +++ b/kitsune-fe/src/styles/root.scss @@ -2,18 +2,19 @@ @use 'fonts' as *; * { - font-family: BlockZone; + // font-family: BlockZone; box-sizing: inherit; + font-family: 'Courier New', Courier, monospace; } :root { - font-size: 16px; - line-height: 24px; - font-weight: 400; + background-color: $dark1; + color: white; color-scheme: light dark; - color: white; - background-color: $dark1; + font-weight: 400; + font-size: 16px; + line-height: 24px; font-synthesis: none; -webkit-font-smoothing: antialiased; @@ -24,8 +25,8 @@ } a { - font-weight: 500; color: $shade2light; + font-weight: 500; text-decoration: inherit; } diff --git a/kitsune-fe/src/urql.ts b/kitsune-fe/src/urql.ts index 095f72394..752d4a6a8 100644 --- a/kitsune-fe/src/urql.ts +++ b/kitsune-fe/src/urql.ts @@ -1,10 +1,9 @@ import { - Client, - Exchange, - cacheExchange, - fetchExchange, - mapExchange, -} from '@urql/vue'; + Directive, + cacheExchange as createCacheExchange, +} from '@urql/exchange-graphcache'; +import { relayPagination } from '@urql/exchange-graphcache/extras'; +import { Client, Exchange, fetchExchange, mapExchange } from '@urql/vue'; import { merge } from 'lodash'; @@ -30,6 +29,12 @@ const authExchange: Exchange = mapExchange({ }, }); +const cacheExchange: Exchange = createCacheExchange({ + directives: { + relayPagination: relayPagination, + }, +}); + export const urqlClient = new Client({ url: `${BACKEND_PREFIX}/graphql`, exchanges: [authExchange, cacheExchange, fetchExchange], diff --git a/kitsune-fe/src/views/AboutPage.vue b/kitsune-fe/src/views/AboutPage.vue index 57755e561..6ec2b40b3 100644 --- a/kitsune-fe/src/views/AboutPage.vue +++ b/kitsune-fe/src/views/AboutPage.vue @@ -14,12 +14,10 @@ - diff --git a/kitsune-fe/src/views/NotificationPage.vue b/kitsune-fe/src/views/NotificationPage.vue new file mode 100644 index 000000000..9fa3844ce --- /dev/null +++ b/kitsune-fe/src/views/NotificationPage.vue @@ -0,0 +1,3 @@ + + + diff --git a/kitsune-fe/src/views/PostPage.vue b/kitsune-fe/src/views/PostPage.vue new file mode 100644 index 000000000..60dd6dcd3 --- /dev/null +++ b/kitsune-fe/src/views/PostPage.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/kitsune-fe/src/views/timeline/FederatedPage.vue b/kitsune-fe/src/views/timeline/FederatedPage.vue new file mode 100644 index 000000000..b12ac2c61 --- /dev/null +++ b/kitsune-fe/src/views/timeline/FederatedPage.vue @@ -0,0 +1,24 @@ + + + diff --git a/kitsune-fe/src/views/timeline/HomePage.vue b/kitsune-fe/src/views/timeline/HomePage.vue new file mode 100644 index 000000000..d743f8e2c --- /dev/null +++ b/kitsune-fe/src/views/timeline/HomePage.vue @@ -0,0 +1,24 @@ + + + diff --git a/kitsune-fe/src/views/timeline/LocalPage.vue b/kitsune-fe/src/views/timeline/LocalPage.vue new file mode 100644 index 000000000..18846c05f --- /dev/null +++ b/kitsune-fe/src/views/timeline/LocalPage.vue @@ -0,0 +1,24 @@ + + + diff --git a/kitsune-fe/src/virtual-scroller.d.ts b/kitsune-fe/src/virtual-scroller.d.ts new file mode 100644 index 000000000..6336c06e3 --- /dev/null +++ b/kitsune-fe/src/virtual-scroller.d.ts @@ -0,0 +1 @@ +declare module 'vue-virtual-scroller'; diff --git a/kitsune-fe/src/zxcvbn.ts b/kitsune-fe/src/zxcvbn.ts index 98567b5f2..a0b5580ef 100644 --- a/kitsune-fe/src/zxcvbn.ts +++ b/kitsune-fe/src/zxcvbn.ts @@ -7,7 +7,7 @@ import { merge } from 'lodash'; let message: string | undefined; export const zxcvbnValidationMessage = () => { - return message ? message : ''; + return message || ''; }; export const zxcvbnRule: FormKitValidationRule = merge( diff --git a/kitsune-fe/yarn.lock b/kitsune-fe/yarn.lock index 7b58c9457..3ef879ebb 100644 --- a/kitsune-fe/yarn.lock +++ b/kitsune-fe/yarn.lock @@ -59,24 +59,24 @@ chalk "^2.4.2" "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.9": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.20.tgz#8df6e96661209623f1975d66c35ffca66f3306d0" - integrity sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc" + integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== "@babel/core@^7.14.0", "@babel/core@^7.22.9": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.0.tgz#f8259ae0e52a123eb40f552551e647b506a94d83" - integrity sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" + integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.22.13" "@babel/generator" "^7.23.0" "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-module-transforms" "^7.23.0" - "@babel/helpers" "^7.23.0" + "@babel/helpers" "^7.23.2" "@babel/parser" "^7.23.0" "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.0" + "@babel/traverse" "^7.23.2" "@babel/types" "^7.23.0" convert-source-map "^2.0.0" debug "^4.1.0" @@ -238,13 +238,13 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== -"@babel/helpers@^7.23.0": - version "7.23.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.1.tgz#44e981e8ce2b9e99f8f0b703f3326a4636c16d15" - integrity sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA== +"@babel/helpers@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" + integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== dependencies: "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.0" + "@babel/traverse" "^7.23.2" "@babel/types" "^7.23.0" "@babel/highlight@^7.22.13": @@ -256,7 +256,7 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.14.0", "@babel/parser@^7.16.8", "@babel/parser@^7.17.3", "@babel/parser@^7.20.15", "@babel/parser@^7.20.5", "@babel/parser@^7.21.3", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": +"@babel/parser@^7.14.0", "@babel/parser@^7.16.8", "@babel/parser@^7.17.3", "@babel/parser@^7.20.5", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== @@ -476,9 +476,9 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/runtime@^7.0.0": - version "7.23.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.1.tgz#72741dc4d413338a91dcb044a86f3c0bc402646d" - integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== dependencies: regenerator-runtime "^0.14.0" @@ -507,10 +507,10 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.14.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.0.tgz#18196ddfbcf4ccea324b7f6d3ada00d8c5a99c53" - integrity sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw== +"@babel/traverse@^7.14.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== dependencies: "@babel/code-frame" "^7.22.13" "@babel/generator" "^7.23.0" @@ -677,10 +677,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.50.0": - version "8.50.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.50.0.tgz#9e93b850f0f3fa35f5fa59adfd03adae8488e484" - integrity sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ== +"@eslint/js@8.52.0": + version "8.52.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.52.0.tgz#78fe5f117840f69dc4a353adf9b9cd926353378c" + integrity sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA== "@floating-ui/core@^1.1.0": version "1.5.0" @@ -1033,9 +1033,9 @@ ws "^8.13.0" "@graphql-tools/executor-http@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@graphql-tools/executor-http/-/executor-http-1.0.2.tgz#d7964a6e5ec883842f9a8e3f104f93c9b8f472be" - integrity sha512-JKTB4E3kdQM2/1NEcyrVPyQ8057ZVthCV5dFJiKktqY9IdmF00M8gupFcW3jlbM/Udn78ickeUBsUzA3EouqpA== + version "1.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/executor-http/-/executor-http-1.0.3.tgz#6ee9e43287ef86fd3588a5d4d2398604234d958d" + integrity sha512-5WZIMBevRaxMabZ8U2Ty0dTUPy/PpeYSlMNEmC/YJjKKykgSfc/AwSejx2sE4FFKZ0I2kxRKRenyoWMHRAV49Q== dependencies: "@graphql-tools/utils" "^10.0.2" "@repeaterjs/repeater" "^3.0.4" @@ -1046,15 +1046,15 @@ value-or-promise "^1.0.12" "@graphql-tools/executor-legacy-ws@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@graphql-tools/executor-legacy-ws/-/executor-legacy-ws-1.0.3.tgz#de04eaa816fa27f46b401e8d5c28d9c0562b4993" - integrity sha512-rr3IDeO9Dh+8u8KIro++5kzJJYPHkcrIAWzqXtN663nhInC85iW7Ko91yOYwf7ovBci/7s+4Rqe4ZRyca1LGjQ== + version "1.0.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/executor-legacy-ws/-/executor-legacy-ws-1.0.4.tgz#27fcccba782daf605d4cf34ffa85a675f43c33f6" + integrity sha512-b7aGuRekZDS+m3af3BIvMKxu15bmVPMt5eGQVuP2v5pxmbaPTh+iv5mx9b3Plt32z5Ke5tycBnNm5urSFtW8ng== dependencies: "@graphql-tools/utils" "^10.0.0" "@types/ws" "^8.0.0" isomorphic-ws "5.0.0" tslib "^2.4.0" - ws "8.14.1" + ws "8.14.2" "@graphql-tools/executor@^1.0.0": version "1.2.0" @@ -1223,9 +1223,9 @@ ws "^8.12.0" "@graphql-tools/utils@^10.0.0", "@graphql-tools/utils@^10.0.2", "@graphql-tools/utils@^10.0.5": - version "10.0.6" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-10.0.6.tgz#8a809d6bc0df27ffe8964696f182af2383b5974b" - integrity sha512-hZMjl/BbX10iagovakgf3IiqArx8TPsotq5pwBld37uIX1JiZoSbgbCIFol7u55bh32o6cfDEiiJgfAD5fbeyQ== + version "10.0.7" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-10.0.7.tgz#ed88968b5ce53dabacbdd185df967aaab35f8549" + integrity sha512-KOdeMj6Hd/MENDaqPbws3YJl3wVy0DeYnL7PyUms5Skyf7uzI9INynDwPMhLXfSb0/ph6BXTwMd5zBtWbF8tBQ== dependencies: "@graphql-typed-document-node/core" "^3.1.1" dset "^3.1.2" @@ -1254,12 +1254,12 @@ dependencies: vue "^3.2.19" -"@humanwhocodes/config-array@^0.11.11": - version "0.11.11" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" - integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" + "@humanwhocodes/object-schema" "^2.0.1" debug "^4.1.1" minimatch "^3.0.5" @@ -1268,10 +1268,31 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== + +"@intlify/core-base@9.5.0": + version "9.5.0" + resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.5.0.tgz#cbb17a27029ccfd0a83a837931baee08b887af60" + integrity sha512-y3ufM1RJbI/DSmJf3lYs9ACq3S/iRvaSsE3rPIk0MGH7fp+JxU6rdryv/EYcwfcr3Y1aHFlCBir6S391hRZ57w== + dependencies: + "@intlify/message-compiler" "9.5.0" + "@intlify/shared" "9.5.0" + +"@intlify/message-compiler@9.5.0": + version "9.5.0" + resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.5.0.tgz#1b4916bf11ca7024f9c15be0d6b4de7be5317808" + integrity sha512-CAhVNfEZcOVFg0/5MNyt+OFjvs4J/ARjCj2b+54/FvFP0EDJI5lIqMTSDBE7k0atMROSP0SvWCkwu/AZ5xkK1g== + dependencies: + "@intlify/shared" "9.5.0" + source-map-js "^1.0.2" + +"@intlify/shared@9.5.0": + version "9.5.0" + resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.5.0.tgz#185d9ab9f6b4bb4f4d133cfdd51432e9b94c2c44" + integrity sha512-tAxV14LMXZDZbu32XzLMTsowNlgJNmLwWHYzvMUl6L8gvQeoYiZONjY7AUsqZW8TOZDX9lfvF6adPkk9FSRdDA== "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" @@ -1298,9 +1319,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -1422,13 +1443,13 @@ "@parcel/watcher-win32-x64" "2.3.0" "@peculiar/asn1-schema@^2.3.6": - version "2.3.6" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz#3dd3c2ade7f702a9a94dfb395c192f5fa5d6b922" - integrity sha512-izNRxPoaeJeg/AyH8hER6s+H7p4itk+03QCa4sbxI3lNdseQYCuxzgsuNK8bTXChtLTjpJz6NmXKA73qLa3rCA== + version "2.3.8" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz#04b38832a814e25731232dd5be883460a156da3b" + integrity sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA== dependencies: asn1js "^3.0.5" - pvtsutils "^1.3.2" - tslib "^2.4.0" + pvtsutils "^1.3.5" + tslib "^2.6.2" "@peculiar/json-schema@^1.1.12": version "1.1.12" @@ -1460,11 +1481,213 @@ picocolors "^1.0.0" tslib "^2.6.0" +"@popperjs/core@^2.9.0": + version "2.11.8" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" + integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== + +"@remirror/core-constants@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@remirror/core-constants/-/core-constants-2.0.2.tgz#f05eccdc69e3a65e7d524b52548f567904a11a1a" + integrity sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ== + +"@remirror/core-helpers@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@remirror/core-helpers/-/core-helpers-3.0.0.tgz#3a35c2346bc23ebc3cee585b7840b5567755c5f1" + integrity sha512-tusEgQJIqg4qKj6HSBUFcyRnWnziw3neh4T9wOmsPGHFC3w9kl5KSrDb9UAgE8uX6y32FnS7vJ955mWOl3n50A== + dependencies: + "@remirror/core-constants" "^2.0.2" + "@remirror/types" "^1.0.1" + "@types/object.omit" "^3.0.0" + "@types/object.pick" "^1.3.2" + "@types/throttle-debounce" "^2.1.0" + case-anything "^2.1.13" + dash-get "^1.0.2" + deepmerge "^4.3.1" + fast-deep-equal "^3.1.3" + make-error "^1.3.6" + object.omit "^3.0.0" + object.pick "^1.3.0" + throttle-debounce "^3.0.1" + +"@remirror/types@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@remirror/types/-/types-1.0.1.tgz#768502497a0fbbc23338a1586b893f729310cf70" + integrity sha512-VlZQxwGnt1jtQ18D6JqdIF+uFZo525WEqrfp9BOc3COPpK4+AWCgdnAWL+ho6imWcoINlGjR/+3b6y5C1vBVEA== + dependencies: + type-fest "^2.19.0" + "@repeaterjs/repeater@^3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@repeaterjs/repeater/-/repeater-3.0.4.tgz#a04d63f4d1bf5540a41b01a921c9a7fddc3bd1ca" integrity sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA== +"@tiptap/core@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.1.12.tgz#904fdf147e91b5e60561c76e7563c1b5a32f54ab" + integrity sha512-ZGc3xrBJA9KY8kln5AYTj8y+GDrKxi7u95xIl2eccrqTY5CQeRu6HRNM1yT4mAjuSaG9jmazyjGRlQuhyxCKxQ== + +"@tiptap/extension-blockquote@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.1.12.tgz#97b43419606acf9bfd93b9f482a1827dcac8c3e9" + integrity sha512-Qb3YRlCfugx9pw7VgLTb+jY37OY4aBJeZnqHzx4QThSm13edNYjasokbX0nTwL1Up4NPTcY19JUeHt6fVaVVGg== + +"@tiptap/extension-bold@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.1.12.tgz#5dbf41105fc0fbde8adbff629312187fbebc39b0" + integrity sha512-AZGxIxcGU1/y6V2YEbKsq6BAibL8yQrbRm6EdcBnby41vj1WziewEKswhLGmZx5IKM2r2ldxld03KlfSIlKQZg== + +"@tiptap/extension-bubble-menu@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.1.12.tgz#4103a21a6433e58690c8f742ece39fad78dc26eb" + integrity sha512-gAGi21EQ4wvLmT7klgariAc2Hf+cIjaNU2NWze3ut6Ku9gUo5ZLqj1t9SKHmNf4d5JG63O8GxpErqpA7lHlRtw== + dependencies: + tippy.js "^6.3.7" + +"@tiptap/extension-bullet-list@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.1.12.tgz#7c905a577ce30ef2cb335870a23f9d24fd26f6aa" + integrity sha512-vtD8vWtNlmAZX8LYqt2yU9w3mU9rPCiHmbp4hDXJs2kBnI0Ju/qAyXFx6iJ3C3XyuMnMbJdDI9ee0spAvFz7cQ== + +"@tiptap/extension-code-block@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.1.12.tgz#20416baef1b5fc839490a8416e97fdcbb5fdf918" + integrity sha512-RXtSYCVsnk8D+K80uNZShClfZjvv1EgO42JlXLVGWQdIgaNyuOv/6I/Jdf+ZzhnpsBnHufW+6TJjwP5vJPSPHA== + +"@tiptap/extension-code@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-code/-/extension-code-2.1.12.tgz#86d2eb5f63725af472c5fd858e5a9c7ccae06ef3" + integrity sha512-CRiRq5OTC1lFgSx6IMrECqmtb93a0ZZKujEnaRhzWliPBjLIi66va05f/P1vnV6/tHaC3yfXys6dxB5A4J8jxw== + +"@tiptap/extension-document@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.1.12.tgz#e19e4716dfad60cbeb6abaf2f362fed759963529" + integrity sha512-0QNfAkCcFlB9O8cUNSwTSIQMV9TmoEhfEaLz/GvbjwEq4skXK3bU+OQX7Ih07waCDVXIGAZ7YAZogbvrn/WbOw== + +"@tiptap/extension-dropcursor@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.1.12.tgz#9da0c275291c9d47497d3db41b4d70d96366b4ff" + integrity sha512-0tT/q8nL4NBCYPxr9T0Brck+RQbWuczm9nV0bnxgt0IiQXoRHutfPWdS7GA65PTuVRBS/3LOco30fbjFhkfz/A== + +"@tiptap/extension-floating-menu@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.1.12.tgz#68a658b2b9bdd3a0fc1afc5165231838061a8fde" + integrity sha512-uo0ydCJNg6AWwLT6cMUJYVChfvw2PY9ZfvKRhh9YJlGfM02jS4RUG/bJBts6R37f+a5FsOvAVwg8EvqPlNND1A== + dependencies: + tippy.js "^6.3.7" + +"@tiptap/extension-gapcursor@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.1.12.tgz#63844c3abd1a38af915839cf0c097b6d2e5a86fe" + integrity sha512-zFYdZCqPgpwoB7whyuwpc8EYLYjUE5QYKb8vICvc+FraBUDM51ujYhFSgJC3rhs8EjI+8GcK8ShLbSMIn49YOQ== + +"@tiptap/extension-hard-break@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.1.12.tgz#54d0c9996e1173594852394975a9356eec98bc9a" + integrity sha512-nqKcAYGEOafg9D+2cy1E4gHNGuL12LerVa0eS2SQOb+PT8vSel9OTKU1RyZldsWSQJ5rq/w4uIjmLnrSR2w6Yw== + +"@tiptap/extension-heading@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.1.12.tgz#05ae4684d6f29ae611495ab114038e14a5d1dff6" + integrity sha512-MoANP3POAP68Ko9YXarfDKLM/kXtscgp6m+xRagPAghRNujVY88nK1qBMZ3JdvTVN6b/ATJhp8UdrZX96TLV2w== + +"@tiptap/extension-history@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.1.12.tgz#03bcb9422e8ea2b82dc45207d1a1b0bc0241b055" + integrity sha512-6b7UFVkvPjq3LVoCTrYZAczt5sQrQUaoDWAieVClVZoFLfjga2Fwjcfgcie8IjdPt8YO2hG/sar/c07i9vM0Sg== + +"@tiptap/extension-horizontal-rule@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.1.12.tgz#2191d4ff68ed39381d65971ad8e2aa1be43e6d6b" + integrity sha512-RRuoK4KxrXRrZNAjJW5rpaxjiP0FJIaqpi7nFbAua2oHXgsCsG8qbW2Y0WkbIoS8AJsvLZ3fNGsQ8gpdliuq3A== + +"@tiptap/extension-italic@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.1.12.tgz#e99480eb77f8b4e5444fc236add8a831d5aa2343" + integrity sha512-/XYrW4ZEWyqDvnXVKbgTXItpJOp2ycswk+fJ3vuexyolO6NSs0UuYC6X4f+FbHYL5VuWqVBv7EavGa+tB6sl3A== + +"@tiptap/extension-list-item@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.1.12.tgz#3eb28dc998490a98f14765783770b3cf6587d39e" + integrity sha512-Gk7hBFofAPmNQ8+uw8w5QSsZOMEGf7KQXJnx5B022YAUJTYYxO3jYVuzp34Drk9p+zNNIcXD4kc7ff5+nFOTrg== + +"@tiptap/extension-ordered-list@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.1.12.tgz#f41a45bc66b4d19e379d4833f303f2e0cd6b9d60" + integrity sha512-tF6VGl+D2avCgn9U/2YLJ8qVmV6sPE/iEzVAFZuOSe6L0Pj7SQw4K6AO640QBob/d8VrqqJFHCb6l10amJOnXA== + +"@tiptap/extension-paragraph@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.1.12.tgz#922447b2aa1c7184787d351ceec593a74d24ed03" + integrity sha512-hoH/uWPX+KKnNAZagudlsrr4Xu57nusGekkJWBcrb5MCDE91BS+DN2xifuhwXiTHxnwOMVFjluc0bPzQbkArsw== + +"@tiptap/extension-strike@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.1.12.tgz#2b049aedf2985e9c9e3c3f1cc0b203a574c85bd8" + integrity sha512-HlhrzIjYUT8oCH9nYzEL2QTTn8d1ECnVhKvzAe6x41xk31PjLMHTUy8aYjeQEkWZOWZ34tiTmslV1ce6R3Dt8g== + +"@tiptap/extension-text@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.1.12.tgz#466e3244bdd9b2db2304c0c9a1d51ce59f5327d0" + integrity sha512-rCNUd505p/PXwU9Jgxo4ZJv4A3cIBAyAqlx/dtcY6cjztCQuXJhuQILPhjGhBTOLEEL4kW2wQtqzCmb7O8i2jg== + +"@tiptap/pm@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/pm/-/pm-2.1.12.tgz#88a4b19be0eabb13d42ddd540c19ba1bbe74b322" + integrity sha512-Q3MXXQABG4CZBesSp82yV84uhJh/W0Gag6KPm2HRWPimSFELM09Z9/5WK9RItAYE0aLhe4Krnyiczn9AAa1tQQ== + dependencies: + prosemirror-changeset "^2.2.0" + prosemirror-collab "^1.3.0" + prosemirror-commands "^1.3.1" + prosemirror-dropcursor "^1.5.0" + prosemirror-gapcursor "^1.3.1" + prosemirror-history "^1.3.0" + prosemirror-inputrules "^1.2.0" + prosemirror-keymap "^1.2.0" + prosemirror-markdown "^1.10.1" + prosemirror-menu "^1.2.1" + prosemirror-model "^1.18.1" + prosemirror-schema-basic "^1.2.0" + prosemirror-schema-list "^1.2.2" + prosemirror-state "^1.4.1" + prosemirror-tables "^1.3.0" + prosemirror-trailing-node "^2.0.2" + prosemirror-transform "^1.7.0" + prosemirror-view "^1.28.2" + +"@tiptap/starter-kit@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.1.12.tgz#2bf28091ed08dc8f7b903ba92925e4ffe06257ea" + integrity sha512-+RoP1rWV7rSCit2+3wl2bjvSRiePRJE/7YNKbvH8Faz/+AMO23AFegHoUFynR7U0ouGgYDljGkkj35e0asbSDA== + dependencies: + "@tiptap/core" "^2.1.12" + "@tiptap/extension-blockquote" "^2.1.12" + "@tiptap/extension-bold" "^2.1.12" + "@tiptap/extension-bullet-list" "^2.1.12" + "@tiptap/extension-code" "^2.1.12" + "@tiptap/extension-code-block" "^2.1.12" + "@tiptap/extension-document" "^2.1.12" + "@tiptap/extension-dropcursor" "^2.1.12" + "@tiptap/extension-gapcursor" "^2.1.12" + "@tiptap/extension-hard-break" "^2.1.12" + "@tiptap/extension-heading" "^2.1.12" + "@tiptap/extension-history" "^2.1.12" + "@tiptap/extension-horizontal-rule" "^2.1.12" + "@tiptap/extension-italic" "^2.1.12" + "@tiptap/extension-list-item" "^2.1.12" + "@tiptap/extension-ordered-list" "^2.1.12" + "@tiptap/extension-paragraph" "^2.1.12" + "@tiptap/extension-strike" "^2.1.12" + "@tiptap/extension-text" "^2.1.12" + +"@tiptap/vue-3@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/vue-3/-/vue-3-2.1.12.tgz#20f4d829f6c2487ca82c5a4750f6faa718a12aac" + integrity sha512-yAcfmWw/9jtIUbhb0uGQVI9NoPYgHRasX2sAGWnm9Al+0aJktgmQ3mLCifXfXfjyEbeMF0p2L6Ul8tO7eho7aQ== + dependencies: + "@tiptap/extension-bubble-menu" "^2.1.12" + "@tiptap/extension-floating-menu" "^2.1.12" + "@trivago/prettier-plugin-sort-imports@^4.2.0": version "4.2.0" resolved "https://registry.yarnpkg.com/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.2.0.tgz#b240366f9e2bda8e14edb18b14ea084e0ec25968" @@ -1478,57 +1701,92 @@ lodash "^4.17.21" "@types/js-yaml@^4.0.0": - version "4.0.6" - resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.6.tgz#4b3afd5158b8749095b1f096967b6d0f838d862f" - integrity sha512-ACTuifTSIIbyksx2HTon3aFtCKWcID7/h3XEmRpDYdMCXxPbl+m9GteOJeaAkiAta/NJaSFuA7ahZ0NkwajDSw== + version "4.0.8" + resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.8.tgz#7574e422d70d4a1b41f517d1d9abc61be2299a97" + integrity sha512-m6jnPk1VhlYRiLFm3f8X9Uep761f+CK8mHyS65LutH2OhmBF0BeMEjHgg05usH8PLZMWWc/BUR9RPmkvpWnyRA== "@types/json-schema@^7.0.12": - version "7.0.13" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" - integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== + version "7.0.14" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" + integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== "@types/json-stable-stringify@^1.0.32": - version "1.0.34" - resolved "https://registry.yarnpkg.com/@types/json-stable-stringify/-/json-stable-stringify-1.0.34.tgz#c0fb25e4d957e0ee2e497c1f553d7f8bb668fd75" - integrity sha512-s2cfwagOQAS8o06TcwKfr9Wx11dNGbH2E9vJz1cqV+a/LOyhWNLUNd6JSRYNzvB4d29UuJX2M0Dj9vE1T8fRXw== + version "1.0.35" + resolved "https://registry.yarnpkg.com/@types/json-stable-stringify/-/json-stable-stringify-1.0.35.tgz#9cea8628b50a093ae00a7e73de49676f2f9ade27" + integrity sha512-zlCWqsRBI0+ANN7dzGeDFJ4CHaVFTLqBNRS11GjR2mHCW6XxNtnMxhQzBKMzfsnjI8oI+kWq2vBwinyQpZVSsg== + +"@types/linkify-it@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.4.tgz#def6a9bb0ce78140860602f16ace37a9997f086a" + integrity sha512-hPpIeeHb/2UuCw06kSNAOVWgehBLXEo0/fUs0mw3W2qhqX89PI2yvok83MnuctYGCPrabGIoi0fFso4DQ+sNUQ== -"@types/lodash@^4.14.199": - version "4.14.199" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.199.tgz#c3edb5650149d847a277a8961a7ad360c474e9bf" - integrity sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg== +"@types/lodash@^4.14.200": + version "4.14.200" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.200.tgz#435b6035c7eba9cdf1e039af8212c9e9281e7149" + integrity sha512-YI/M/4HRImtNf3pJgbF+W6FrXovqj+T+/HpENLTooK9PnkacBsDpeP3IpHab40CClUfhNmdM2WTNP2sa2dni5Q== + +"@types/markdown-it@^12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.2.3.tgz#0d6f6e5e413f8daaa26522904597be3d6cd93b51" + integrity sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ== + dependencies: + "@types/linkify-it" "*" + "@types/mdurl" "*" + +"@types/mdurl@*": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.4.tgz#574bfbec51eb41ab5f444116c8555bc4347feba5" + integrity sha512-ARVxjAEX5TARFRzpDRVC6cEk0hUIXCCwaMhz8y7S1/PxU6zZS1UMjyobz7q4w/D/R552r4++EhwmXK1N2rAy0A== "@types/node@*": - version "20.8.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.2.tgz#d76fb80d87d0d8abfe334fc6d292e83e5524efc4" - integrity sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w== + version "20.8.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" + integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== + dependencies: + undici-types "~5.25.1" + +"@types/object.omit@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/object.omit/-/object.omit-3.0.2.tgz#13d23915cc16fa54b0d4cfbcb79840f4fe1474d9" + integrity sha512-BxWU36cMP+FKD3OLFluQaj2cBev2sx2LJaHELuphHwnleq+xnEhTmuYYYx4pOT/1U/ZoR6B+RdvxWh2FD6lGGA== + +"@types/object.pick@^1.3.2": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@types/object.pick/-/object.pick-1.3.3.tgz#f4d4a76e9ef1161e965b963d2bb33c3f6c300125" + integrity sha512-qZqHmdGEALeSATMB1djT1S5szv6Wtpb7DKpHrt2XG4iyKlV7C2Xk8GmDXr1KXakOqUfX6ohw7ceruYt4NVmB1Q== "@types/semver@^7.5.0": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" - integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== + version "7.5.4" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.4.tgz#0a41252ad431c473158b22f9bfb9a63df7541cff" + integrity sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ== -"@types/web-bluetooth@^0.0.17": - version "0.0.17" - resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz#5c9f3c617f64a9735d7b72a7cc671e166d900c40" - integrity sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA== +"@types/throttle-debounce@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz#1c3df624bfc4b62f992d3012b84c56d41eab3776" + integrity sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ== + +"@types/web-bluetooth@^0.0.18": + version "0.0.18" + resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.18.tgz#74bd1c8fd3a2058cb6fc76b188fcded50a83d866" + integrity sha512-v/ZHEj9xh82usl8LMR3GarzFY1IrbXJw5L4QfQhokjRV91q+SelFqxQWSep1ucXEZ22+dSTwLFkXeur25sPIbw== "@types/ws@^8.0.0": - version "8.5.6" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.6.tgz#e9ad51f0ab79b9110c50916c9fcbddc36d373065" - integrity sha512-8B5EO9jLVCy+B58PLHvLDuOD8DRVMgQzq8d55SjLCOn9kqGyqOvy27exVaTio1q1nX5zLu8/6N0n2ThSxOM6tg== + version "8.5.8" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.8.tgz#13efec7bd439d0bdf2af93030804a94f163b1430" + integrity sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg== dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^6.7.0", "@typescript-eslint/eslint-plugin@^6.7.4": - version "6.7.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.4.tgz#057338df21b6062c2f2fc5999fbea8af9973ac6d" - integrity sha512-DAbgDXwtX+pDkAHwiGhqP3zWUGpW49B7eqmgpPtg+BKJXwdct79ut9+ifqOFPJGClGKSHXn2PTBatCnldJRUoA== +"@typescript-eslint/eslint-plugin@^6.7.0", "@typescript-eslint/eslint-plugin@^6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz#06abe4265e7c82f20ade2dcc0e3403c32d4f148b" + integrity sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw== dependencies: "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.7.4" - "@typescript-eslint/type-utils" "6.7.4" - "@typescript-eslint/utils" "6.7.4" - "@typescript-eslint/visitor-keys" "6.7.4" + "@typescript-eslint/scope-manager" "6.8.0" + "@typescript-eslint/type-utils" "6.8.0" + "@typescript-eslint/utils" "6.8.0" + "@typescript-eslint/visitor-keys" "6.8.0" debug "^4.3.4" graphemer "^1.4.0" ignore "^5.2.4" @@ -1536,80 +1794,117 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^6.7.0", "@typescript-eslint/parser@^6.7.4": - version "6.7.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.7.4.tgz#23d1dd4fe5d295c7fa2ab651f5406cd9ad0bd435" - integrity sha512-I5zVZFY+cw4IMZUeNCU7Sh2PO5O57F7Lr0uyhgCJmhN/BuTlnc55KxPonR4+EM3GBdfiCyGZye6DgMjtubQkmA== +"@typescript-eslint/parser@^6.7.0", "@typescript-eslint/parser@^6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.8.0.tgz#bb2a969d583db242f1ee64467542f8b05c2e28cb" + integrity sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg== dependencies: - "@typescript-eslint/scope-manager" "6.7.4" - "@typescript-eslint/types" "6.7.4" - "@typescript-eslint/typescript-estree" "6.7.4" - "@typescript-eslint/visitor-keys" "6.7.4" + "@typescript-eslint/scope-manager" "6.8.0" + "@typescript-eslint/types" "6.8.0" + "@typescript-eslint/typescript-estree" "6.8.0" + "@typescript-eslint/visitor-keys" "6.8.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@6.7.4": - version "6.7.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.7.4.tgz#a484a17aa219e96044db40813429eb7214d7b386" - integrity sha512-SdGqSLUPTXAXi7c3Ob7peAGVnmMoGzZ361VswK2Mqf8UOYcODiYvs8rs5ILqEdfvX1lE7wEZbLyELCW+Yrql1A== +"@typescript-eslint/scope-manager@6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz#5cac7977385cde068ab30686889dd59879811efd" + integrity sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g== dependencies: - "@typescript-eslint/types" "6.7.4" - "@typescript-eslint/visitor-keys" "6.7.4" + "@typescript-eslint/types" "6.8.0" + "@typescript-eslint/visitor-keys" "6.8.0" -"@typescript-eslint/type-utils@6.7.4": - version "6.7.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.7.4.tgz#847cd3b59baf948984499be3e0a12ff07373e321" - integrity sha512-n+g3zi1QzpcAdHFP9KQF+rEFxMb2KxtnJGID3teA/nxKHOVi3ylKovaqEzGBbVY2pBttU6z85gp0D00ufLzViQ== +"@typescript-eslint/type-utils@6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz#50365e44918ca0fd159844b5d6ea96789731e11f" + integrity sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g== dependencies: - "@typescript-eslint/typescript-estree" "6.7.4" - "@typescript-eslint/utils" "6.7.4" + "@typescript-eslint/typescript-estree" "6.8.0" + "@typescript-eslint/utils" "6.8.0" debug "^4.3.4" ts-api-utils "^1.0.1" -"@typescript-eslint/types@6.7.4": - version "6.7.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.7.4.tgz#5d358484d2be986980c039de68e9f1eb62ea7897" - integrity sha512-o9XWK2FLW6eSS/0r/tgjAGsYasLAnOWg7hvZ/dGYSSNjCh+49k5ocPN8OmG5aZcSJ8pclSOyVKP2x03Sj+RrCA== +"@typescript-eslint/types@6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.8.0.tgz#1ab5d4fe1d613e3f65f6684026ade6b94f7e3ded" + integrity sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ== -"@typescript-eslint/typescript-estree@6.7.4": - version "6.7.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.4.tgz#f2baece09f7bb1df9296e32638b2e1130014ef1a" - integrity sha512-ty8b5qHKatlNYd9vmpHooQz3Vki3gG+3PchmtsA4TgrZBKWHNjWfkQid7K7xQogBqqc7/BhGazxMD5vr6Ha+iQ== +"@typescript-eslint/typescript-estree@6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz#9565f15e0cd12f55cf5aa0dfb130a6cb0d436ba1" + integrity sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg== dependencies: - "@typescript-eslint/types" "6.7.4" - "@typescript-eslint/visitor-keys" "6.7.4" + "@typescript-eslint/types" "6.8.0" + "@typescript-eslint/visitor-keys" "6.8.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/utils@6.7.4": - version "6.7.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.7.4.tgz#2236f72b10e38277ee05ef06142522e1de470ff2" - integrity sha512-PRQAs+HUn85Qdk+khAxsVV+oULy3VkbH3hQ8hxLRJXWBEd7iI+GbQxH5SEUSH7kbEoTp6oT1bOwyga24ELALTA== +"@typescript-eslint/utils@6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.8.0.tgz#d42939c2074c6b59844d0982ce26a51d136c4029" + integrity sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q== dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.7.4" - "@typescript-eslint/types" "6.7.4" - "@typescript-eslint/typescript-estree" "6.7.4" + "@typescript-eslint/scope-manager" "6.8.0" + "@typescript-eslint/types" "6.8.0" + "@typescript-eslint/typescript-estree" "6.8.0" semver "^7.5.4" -"@typescript-eslint/visitor-keys@6.7.4": - version "6.7.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.4.tgz#80dfecf820fc67574012375859085f91a4dff043" - integrity sha512-pOW37DUhlTZbvph50x5zZCkFn3xzwkGtNoJHzIM3svpiSkJzwOYr/kVBaXmf+RAQiUDs1AHEZVNPg6UJCJpwRA== +"@typescript-eslint/visitor-keys@6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz#cffebed56ae99c45eba901c378a6447b06be58b8" + integrity sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg== dependencies: - "@typescript-eslint/types" "6.7.4" + "@typescript-eslint/types" "6.8.0" eslint-visitor-keys "^3.4.1" -"@urql/core@^4.0.0": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@urql/core/-/core-4.1.3.tgz#8b61f015425f9c96e8e9368d071d3f663a2bd926" - integrity sha512-Wapa58olpEJtZzSEuZNDxzBxmOmHuivG6Hb/QPc6HjHfCJ6f36gnlWc9a9TsC8Vddle+6PsS6+quMMTuj+bj7A== +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +"@unhead/dom@1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@unhead/dom/-/dom-1.7.4.tgz#d6d5899245a0b4e16b01d08553bcde570f8eb00a" + integrity sha512-xanQMtGmgikqTvDtuyJy6GXgqvUXOdrdnIyqAabpeS8goD8udxo0stzjtbT8ERbMQibzPGSGcN+Ux+MKoWzrjQ== + dependencies: + "@unhead/schema" "1.7.4" + "@unhead/shared" "1.7.4" + +"@unhead/schema@1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@unhead/schema/-/schema-1.7.4.tgz#c70526f481828c5a4217501a544cfc48a85c1e55" + integrity sha512-wUL4CK0NSEm3KH4kYsiqVYQw5xBk1hpBi5tiNj0BTZgpQVrRufICdK5EHA9Fh7OIAR6tOTWwTvsf5+nK0BgQDA== + dependencies: + hookable "^5.5.3" + zhead "^2.1.1" + +"@unhead/shared@1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@unhead/shared/-/shared-1.7.4.tgz#4ebab1809e96e633b18727c40cc042bf3ab6adcc" + integrity sha512-YUNA2UxAuDPnDps41BQ8aEIY5hdyvruSB1Vs3AALhRo07MxMivSq5DjNKfYr/JvRN6593RtfI1NHnP9x5M57xA== + dependencies: + "@unhead/schema" "1.7.4" + +"@urql/core@>=4.1.0", "@urql/core@^4.0.0": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@urql/core/-/core-4.1.4.tgz#d1fe9f278b2d1ff32df2314b00d2d94009271665" + integrity sha512-wFm67yljv4uFAWNtPwcS1NMhF/n+p/68i+kZU6R1dPxhfq2nBW0142p4szeZsBDrtO7pBdOhp7YeSZROFFlXZg== + dependencies: + "@0no-co/graphql.web" "^1.0.1" + wonka "^6.3.2" + +"@urql/exchange-graphcache@^6.3.3": + version "6.3.3" + resolved "https://registry.yarnpkg.com/@urql/exchange-graphcache/-/exchange-graphcache-6.3.3.tgz#6baa66cebb0329a2008d955d5ded3379472ad1e4" + integrity sha512-uD8zzNIrxQHYCSgfIwYxzEmU1Ml4nJ6NTKwrDlpKmTLJa3aYuG3AoiO138HZBK1XGJ2QzV5yQPfcZsmbVFH8Yg== dependencies: "@0no-co/graphql.web" "^1.0.1" + "@urql/core" ">=4.1.0" wonka "^6.3.2" "@urql/vue@^1.1.2": @@ -1625,73 +1920,73 @@ resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.4.0.tgz#8ae96573236cdb12de6850a6d929b5537ec85390" integrity sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg== -"@volar/language-core@1.10.1", "@volar/language-core@~1.10.0": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-1.10.1.tgz#76789c5b0c214eeff8add29cbff0333d89b6fc4a" - integrity sha512-JnsM1mIPdfGPxmoOcK1c7HYAsL6YOv0TCJ4aW3AXPZN/Jb4R77epDyMZIVudSGjWMbvv/JfUa+rQ+dGKTmgwBA== +"@volar/language-core@1.10.4", "@volar/language-core@~1.10.4": + version "1.10.4" + resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-1.10.4.tgz#0340dbbb152fa375978f6af57153ad02f57de752" + integrity sha512-Na69qA6uwVIdA0rHuOc2W3pHtVQQO8hCNim7FOaKNpRJh0oAFnu5r9i7Oopo5C4cnELZkPNjTrbmpcCTiW+CMQ== dependencies: - "@volar/source-map" "1.10.1" + "@volar/source-map" "1.10.4" -"@volar/source-map@1.10.1", "@volar/source-map@~1.10.0": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-1.10.1.tgz#b806845782cc615f2beba94624ff34a700f302f5" - integrity sha512-3/S6KQbqa7pGC8CxPrg69qHLpOvkiPHGJtWPkI/1AXCsktkJ6gIk/5z4hyuMp8Anvs6eS/Kvp/GZa3ut3votKA== +"@volar/source-map@1.10.4", "@volar/source-map@~1.10.4": + version "1.10.4" + resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-1.10.4.tgz#1d5d0daf9c6bbecec4d1ec103f1bb6ed699b143d" + integrity sha512-RxZdUEL+pV8p+SMqnhVjzy5zpb1QRZTlcwSk4bdcBO7yOu4rtEWqDGahVCEj4CcXour+0yJUMrMczfSCpP9Uxg== dependencies: muggle-string "^0.3.1" -"@volar/typescript@~1.10.0": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-1.10.1.tgz#b20341c1cc5785b4de0669ea645e1619c97a4764" - integrity sha512-+iiO9yUSRHIYjlteT+QcdRq8b44qH19/eiUZtjNtuh6D9ailYM7DVR0zO2sEgJlvCaunw/CF9Ov2KooQBpR4VQ== +"@volar/typescript@~1.10.4": + version "1.10.4" + resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-1.10.4.tgz#78c8b56c1a4cc406fed50fc88d92874f947f82d6" + integrity sha512-BCCUEBASBEMCrz7qmNSi2hBEWYsXD0doaktRKpmmhvb6XntM2sAWYu6gbyK/MluLDgluGLFiFRpWgobgzUqolg== dependencies: - "@volar/language-core" "1.10.1" + "@volar/language-core" "1.10.4" -"@vue/compiler-core@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz#7fbf591c1c19e1acd28ffd284526e98b4f581128" - integrity sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g== +"@vue/compiler-core@3.3.6": + version "3.3.6" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.6.tgz#ffc14517e0a7269983b9a93994df9669e9e03506" + integrity sha512-2JNjemwaNwf+MkkatATVZi7oAH1Hx0B04DdPH3ZoZ8vKC1xZVP7nl4HIsk8XYd3r+/52sqqoz9TWzYc3yE9dqA== dependencies: - "@babel/parser" "^7.21.3" - "@vue/shared" "3.3.4" + "@babel/parser" "^7.23.0" + "@vue/shared" "3.3.6" estree-walker "^2.0.2" source-map-js "^1.0.2" -"@vue/compiler-dom@3.3.4", "@vue/compiler-dom@^3.3.0": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz#f56e09b5f4d7dc350f981784de9713d823341151" - integrity sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w== - dependencies: - "@vue/compiler-core" "3.3.4" - "@vue/shared" "3.3.4" - -"@vue/compiler-sfc@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz#b19d942c71938893535b46226d602720593001df" - integrity sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ== - dependencies: - "@babel/parser" "^7.20.15" - "@vue/compiler-core" "3.3.4" - "@vue/compiler-dom" "3.3.4" - "@vue/compiler-ssr" "3.3.4" - "@vue/reactivity-transform" "3.3.4" - "@vue/shared" "3.3.4" +"@vue/compiler-dom@3.3.6", "@vue/compiler-dom@^3.3.0": + version "3.3.6" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.6.tgz#683420cc201c3a48cb0841467bf19a433ffbede6" + integrity sha512-1MxXcJYMHiTPexjLAJUkNs/Tw2eDf2tY3a0rL+LfuWyiKN2s6jvSwywH3PWD8bKICjfebX3GWx2Os8jkRDq3Ng== + dependencies: + "@vue/compiler-core" "3.3.6" + "@vue/shared" "3.3.6" + +"@vue/compiler-sfc@3.3.6": + version "3.3.6" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.6.tgz#00dce2e7aa569101009c5eedec4a69e2f831d8cc" + integrity sha512-/Kms6du2h1VrXFreuZmlvQej8B1zenBqIohP0690IUBkJjsFvJxY0crcvVRJ0UhMgSR9dewB+khdR1DfbpArJA== + dependencies: + "@babel/parser" "^7.23.0" + "@vue/compiler-core" "3.3.6" + "@vue/compiler-dom" "3.3.6" + "@vue/compiler-ssr" "3.3.6" + "@vue/reactivity-transform" "3.3.6" + "@vue/shared" "3.3.6" estree-walker "^2.0.2" - magic-string "^0.30.0" - postcss "^8.1.10" + magic-string "^0.30.5" + postcss "^8.4.31" source-map-js "^1.0.2" -"@vue/compiler-ssr@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz#9d1379abffa4f2b0cd844174ceec4a9721138777" - integrity sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ== +"@vue/compiler-ssr@3.3.6": + version "3.3.6" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.6.tgz#d767602563f2596a03b44b3dea4a32c715f64915" + integrity sha512-QTIHAfDCHhjXlYGkUg5KH7YwYtdUM1vcFl/FxFDlD6d0nXAmnjizka3HITp8DGudzHndv2PjKVS44vqqy0vP4w== dependencies: - "@vue/compiler-dom" "3.3.4" - "@vue/shared" "3.3.4" + "@vue/compiler-dom" "3.3.6" + "@vue/shared" "3.3.6" "@vue/devtools-api@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07" - integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q== + version "6.5.1" + resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.1.tgz#7f71f31e40973eeee65b9a64382b13593fdbd697" + integrity sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA== "@vue/eslint-config-prettier@^8.0.0": version "8.0.0" @@ -1710,97 +2005,97 @@ "@typescript-eslint/parser" "^6.7.0" vue-eslint-parser "^9.3.1" -"@vue/language-core@1.8.15": - version "1.8.15" - resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-1.8.15.tgz#e84536f529f706c072037d495bfd610d4661fbae" - integrity sha512-zche5Aw8kkvp3YaghuLiOZyVIpoWHjSQ0EfjxGSsqHOPMamdCoa9x3HtbenpR38UMUoKJ88wiWuiOrV3B/Yq+A== +"@vue/language-core@1.8.19": + version "1.8.19" + resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-1.8.19.tgz#c52cef2f89ad4b74caa29e97fd07a71d35ac9e60" + integrity sha512-nt3dodGs97UM6fnxeQBazO50yYCKBK53waFWB3qMbLmR6eL3aUryZgQtZoBe1pye17Wl8fs9HysV3si6xMgndQ== dependencies: - "@volar/language-core" "~1.10.0" - "@volar/source-map" "~1.10.0" + "@volar/language-core" "~1.10.4" + "@volar/source-map" "~1.10.4" "@vue/compiler-dom" "^3.3.0" "@vue/reactivity" "^3.3.0" "@vue/shared" "^3.3.0" - minimatch "^9.0.0" + minimatch "^9.0.3" muggle-string "^0.3.1" vue-template-compiler "^2.7.14" -"@vue/reactivity-transform@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz#52908476e34d6a65c6c21cd2722d41ed8ae51929" - integrity sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw== +"@vue/reactivity-transform@3.3.6": + version "3.3.6" + resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.6.tgz#29d615455992d253b8f21b47d084445b5d3f916d" + integrity sha512-RlJl4dHfeO7EuzU1iJOsrlqWyJfHTkJbvYz/IOJWqu8dlCNWtxWX377WI0VsbAgBizjwD+3ZjdnvSyyFW1YVng== dependencies: - "@babel/parser" "^7.20.15" - "@vue/compiler-core" "3.3.4" - "@vue/shared" "3.3.4" + "@babel/parser" "^7.23.0" + "@vue/compiler-core" "3.3.6" + "@vue/shared" "3.3.6" estree-walker "^2.0.2" - magic-string "^0.30.0" + magic-string "^0.30.5" -"@vue/reactivity@3.3.4", "@vue/reactivity@^3.3.0": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.4.tgz#a27a29c6cd17faba5a0e99fbb86ee951653e2253" - integrity sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ== +"@vue/reactivity@3.3.6", "@vue/reactivity@^3.3.0": + version "3.3.6" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.6.tgz#436bd2997673ae2a7b6f4e1c376163f0445f9a5e" + integrity sha512-gtChAumfQz5lSy5jZXfyXbKrIYPf9XEOrIr6rxwVyeWVjFhJwmwPLtV6Yis+M9onzX++I5AVE9j+iPH60U+B8Q== dependencies: - "@vue/shared" "3.3.4" + "@vue/shared" "3.3.6" -"@vue/runtime-core@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz#4bb33872bbb583721b340f3088888394195967d1" - integrity sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA== +"@vue/runtime-core@3.3.6": + version "3.3.6" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.6.tgz#749ff325c95bb3a690c512da0215339fd241872c" + integrity sha512-qp7HTP1iw1UW2ZGJ8L3zpqlngrBKvLsDAcq5lA6JvEXHmpoEmjKju7ahM9W2p/h51h0OT5F2fGlP/gMhHOmbUA== dependencies: - "@vue/reactivity" "3.3.4" - "@vue/shared" "3.3.4" + "@vue/reactivity" "3.3.6" + "@vue/shared" "3.3.6" -"@vue/runtime-dom@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz#992f2579d0ed6ce961f47bbe9bfe4b6791251566" - integrity sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ== +"@vue/runtime-dom@3.3.6": + version "3.3.6" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.6.tgz#30729eac969467c6be6723677d14b873918a467c" + integrity sha512-AoX3Cp8NqMXjLbIG9YR6n/pPLWE9TiDdk6wTJHFnl2GpHzDFH1HLBC9wlqqQ7RlnvN3bVLpzPGAAH00SAtOxHg== dependencies: - "@vue/runtime-core" "3.3.4" - "@vue/shared" "3.3.4" - csstype "^3.1.1" + "@vue/runtime-core" "3.3.6" + "@vue/shared" "3.3.6" + csstype "^3.1.2" -"@vue/server-renderer@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz#ea46594b795d1536f29bc592dd0f6655f7ea4c4c" - integrity sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ== +"@vue/server-renderer@3.3.6": + version "3.3.6" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.6.tgz#b8a4d7254b67a5cc663f2b9e16cde019483620c9" + integrity sha512-kgLoN43W4ERdZ6dpyy+gnk2ZHtcOaIr5Uc/WUP5DRwutgvluzu2pudsZGoD2b7AEJHByUVMa9k6Sho5lLRCykw== dependencies: - "@vue/compiler-ssr" "3.3.4" - "@vue/shared" "3.3.4" + "@vue/compiler-ssr" "3.3.6" + "@vue/shared" "3.3.6" -"@vue/shared@3.3.4", "@vue/shared@^3.3.0": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.4.tgz#06e83c5027f464eef861c329be81454bc8b70780" - integrity sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ== +"@vue/shared@3.3.6", "@vue/shared@^3.3.0": + version "3.3.6" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.6.tgz#bd97c22972c6519250069297d01cbed077054b7e" + integrity sha512-Xno5pEqg8SVhomD0kTSmfh30ZEmV/+jZtyh39q6QflrjdJCXah5lrnOLi9KB6a5k5aAHXMXjoMnxlzUkCNfWLQ== -"@vue/typescript@1.8.15": - version "1.8.15" - resolved "https://registry.yarnpkg.com/@vue/typescript/-/typescript-1.8.15.tgz#ee8f7a99cf93597fa5503dc27125ddad3bcd32a7" - integrity sha512-qWyanQKXOsK84S8rP7QBrqsvUdQ0nZABZmTjXMpb3ox4Bp5IbkscREA3OPUrkgl64mAxwwCzIWcOc3BPTCPjQw== +"@vue/typescript@1.8.19": + version "1.8.19" + resolved "https://registry.yarnpkg.com/@vue/typescript/-/typescript-1.8.19.tgz#e17b7f60080b280fe2e42e584e4a2c230efcb9bc" + integrity sha512-k/SHeeQROUgqsxyHQ8Cs3Zz5TnX57p7BcBDVYR2E0c61QL2DJ2G8CsaBremmNGuGE6o1R5D50IHIxFmroMz8iw== dependencies: - "@volar/typescript" "~1.10.0" - "@vue/language-core" "1.8.15" + "@volar/typescript" "~1.10.4" + "@vue/language-core" "1.8.19" -"@vueuse/core@^10.4.1": - version "10.4.1" - resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.4.1.tgz#fc2c8a83a571c207aaedbe393b22daa6d35123f2" - integrity sha512-DkHIfMIoSIBjMgRRvdIvxsyboRZQmImofLyOHADqiVbQVilP8VVHDhBX2ZqoItOgu7dWa8oXiNnScOdPLhdEXg== +"@vueuse/core@^10.5.0": + version "10.5.0" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.5.0.tgz#04d1e6d26592bb997bb755a4830ea7583c3e8612" + integrity sha512-z/tI2eSvxwLRjOhDm0h/SXAjNm8N5ld6/SC/JQs6o6kpJ6Ya50LnEL8g5hoYu005i28L0zqB5L5yAl8Jl26K3A== dependencies: - "@types/web-bluetooth" "^0.0.17" - "@vueuse/metadata" "10.4.1" - "@vueuse/shared" "10.4.1" - vue-demi ">=0.14.5" + "@types/web-bluetooth" "^0.0.18" + "@vueuse/metadata" "10.5.0" + "@vueuse/shared" "10.5.0" + vue-demi ">=0.14.6" -"@vueuse/metadata@10.4.1": - version "10.4.1" - resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.4.1.tgz#9d2ff5c67abf17a8c07865c2413fbd0e92f7b7d7" - integrity sha512-2Sc8X+iVzeuMGHr6O2j4gv/zxvQGGOYETYXEc41h0iZXIRnRbJZGmY/QP8dvzqUelf8vg0p/yEA5VpCEu+WpZg== +"@vueuse/metadata@10.5.0": + version "10.5.0" + resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.5.0.tgz#7501a88cf5cbf7a515a03f0b8bbe3cecf30cad11" + integrity sha512-fEbElR+MaIYyCkeM0SzWkdoMtOpIwO72x8WsZHRE7IggiOlILttqttM69AS13nrDxosnDBYdyy3C5mR1LCxHsw== -"@vueuse/shared@10.4.1": - version "10.4.1" - resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.4.1.tgz#d5ce33033c156efb60664b5d6034d6cd4e2f530c" - integrity sha512-vz5hbAM4qA0lDKmcr2y3pPdU+2EVw/yzfRsBdu+6+USGa4PxqSQRYIUC9/NcT06y+ZgaTsyURw2I9qOFaaXHAg== +"@vueuse/shared@10.5.0": + version "10.5.0" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.5.0.tgz#b3ac8c190a5dae41db5e1b60fe304a9b4247393c" + integrity sha512-18iyxbbHYLst9MqU1X1QNdMHIjks6wC7XTVf0KNOv5es/Ms6gjVFCAAWTVP2JStuGqydg3DT+ExpFORUEi9yhg== dependencies: - vue-demi ">=0.14.5" + vue-demi ">=0.14.6" "@whatwg-node/events@^0.0.3": version "0.0.3" @@ -2132,9 +2427,9 @@ camelcase@^5.0.0: integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== caniuse-lite@^1.0.30001541: - version "1.0.30001543" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001543.tgz#478a3e9dddbb353c5ab214b0ecb0dbed529ed1d8" - integrity sha512-qxdO8KPWPQ+Zk6bvNpPeQIOH47qZSYdFZd6dXQzb2KzhnSXju4Kd7H1PkSJx6NICSMgo/IhRZRhhfPTHYpJUCA== + version "1.0.30001551" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz#1f2cfa8820bd97c971a57349d7fd8f6e08664a3e" + integrity sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg== capital-case@^1.0.4: version "1.0.4" @@ -2145,6 +2440,11 @@ capital-case@^1.0.4: tslib "^2.0.3" upper-case-first "^2.0.2" +case-anything@^2.1.13: + version "2.1.13" + resolved "https://registry.yarnpkg.com/case-anything/-/case-anything-2.1.13.tgz#0cdc16278cb29a7fcdeb072400da3f342ba329e9" + integrity sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng== + chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -2332,6 +2632,11 @@ cosmiconfig@^8.1.0, cosmiconfig@^8.1.3: parse-json "^5.2.0" path-type "^4.0.0" +crelt@^1.0.0: + version "1.0.6" + resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.6.tgz#7cc898ea74e190fb6ef9dae57f8f81cf7302df72" + integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g== + cross-fetch@^3.1.5: version "3.1.8" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" @@ -2348,16 +2653,26 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +css-declaration-sorter@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.1.1.tgz#9796bcc257b4647c39993bda8d431ce32b666f80" + integrity sha512-dZ3bVTEEc1vxr3Bek9vGwfB5Z6ESPULhcRvO472mfjVnj8jRcTnKO8/JTczlvxM10Myb+wBM++1MtdO76eWcaQ== + cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -csstype@^3.1.1: +csstype@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== +dash-get@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/dash-get/-/dash-get-1.0.2.tgz#4c9e9ad5ef04c4bf9d3c9a451f6f7997298dcc7c" + integrity sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ== + dataloader@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.2.2.tgz#216dc509b5abe39d43a9b9d97e6e5e473dfbe3e0" @@ -2390,6 +2705,11 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== +deepmerge@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + default-browser-id@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" @@ -2468,15 +2788,20 @@ dset@^3.1.2: integrity sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q== electron-to-chromium@^1.4.535: - version "1.4.539" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.539.tgz#5ce6b161e252132cc84501bc35d084995a2a9840" - integrity sha512-wRmWJ8F7rgmINuI32S6r2SLrw/h/bJQsDSvBiq9GBfvc2Lh73qTOwn73r3Cf67mjVgFGJYcYtmERzySa5jIWlg== + version "1.4.563" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.563.tgz#dabb424202754c1fed2d2938ff564b23d3bbf0d3" + integrity sha512-dg5gj5qOgfZNkPNeyKBZQAQitIQ/xwfIDmEQJHCbXaD9ebTZxwJXUsDYcBlAvZGZLi+/354l35J1wkmP6CqYaw== emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +entities@~3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" + integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -2537,10 +2862,10 @@ eslint-config-prettier@^9.0.0: resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz#eb25485946dd0c66cd216a46232dc05451518d1f" integrity sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw== -eslint-plugin-prettier@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz#6887780ed95f7708340ec79acfdf60c35b9be57a" - integrity sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w== +eslint-plugin-prettier@^5.0.0, eslint-plugin-prettier@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz#a3b399f04378f79f066379f544e42d6b73f11515" + integrity sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg== dependencies: prettier-linter-helpers "^1.0.0" synckit "^0.8.5" @@ -2571,18 +2896,19 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@^8.50.0: - version "8.50.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.50.0.tgz#2ae6015fee0240fcd3f83e1e25df0287f487d6b2" - integrity sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg== +eslint@^8.52.0: + version "8.52.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.52.0.tgz#d0cd4a1fac06427a61ef9242b9353f36ea7062fc" + integrity sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.50.0" - "@humanwhocodes/config-array" "^0.11.11" + "@eslint/js" "8.52.0" + "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -2821,15 +3147,15 @@ find-up@^5.0.0: path-exists "^4.0.0" flat-cache@^3.0.4: - version "3.1.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.0.tgz#0e54ab4a1a60fe87e2946b6b00657f1c99e1af3f" - integrity sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew== + version "3.1.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" + integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== dependencies: - flatted "^3.2.7" + flatted "^3.2.9" keyv "^4.5.3" rimraf "^3.0.2" -flatted@^3.2.7: +flatted@^3.2.9: version "3.2.9" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== @@ -2899,9 +3225,9 @@ globals@^11.1.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.19.0: - version "13.22.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.22.0.tgz#0c9fcb9c48a2494fbb5edbfee644285543eba9d8" - integrity sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw== + version "13.23.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== dependencies: type-fest "^0.20.2" @@ -2923,9 +3249,9 @@ graphemer@^1.4.0: integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== graphql-config@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-5.0.2.tgz#7e962f94ccddcc2ee0aa71d75cf4491ec5092bdb" - integrity sha512-7TPxOrlbiG0JplSZYCyxn2XQtqVhXomEjXUmWJVSS5ET1nPhOJSsIb/WTwqWhcYX6G0RlHXSj9PLtGTKmxLNGg== + version "5.0.3" + resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-5.0.3.tgz#d9aa2954cf47a927f9cb83cdc4e42ae55d0b321e" + integrity sha512-BNGZaoxIBkv9yy6Y7omvsaBUHOzfFcII3UN++tpH8MGOKFPFkCPZuwx09ggANMt8FgyWP1Od8SWPmrUEZca4NQ== dependencies: "@graphql-tools/graphql-file-loader" "^8.0.0" "@graphql-tools/json-file-loader" "^8.0.0" @@ -2987,6 +3313,11 @@ header-case@^2.0.4: capital-case "^1.0.4" tslib "^2.0.3" +hookable@^5.5.3: + version "5.5.3" + resolved "https://registry.yarnpkg.com/hookable/-/hookable-5.5.3.tgz#6cfc358984a1ef991e2518cb9ed4a778bbd3215d" + integrity sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ== + http-proxy-agent@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz#e9096c5afd071a3fce56e6252bb321583c124673" @@ -3134,6 +3465,13 @@ is-docker@^3.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== +is-extendable@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -3180,6 +3518,13 @@ is-path-inside@^3.0.3: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + is-relative@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" @@ -3233,6 +3578,11 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + isomorphic-ws@5.0.0, isomorphic-ws@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" @@ -3249,9 +3599,9 @@ jiti@^1.17.1, jiti@^1.18.2: integrity sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA== jose@^4.11.4: - version "4.15.1" - resolved "https://registry.yarnpkg.com/jose/-/jose-4.15.1.tgz#7ccfdf15a4a251e12af32a0924991950d22de41d" - integrity sha512-CinpaEMmwb/59YG0N6SC3DY1imdTU5iNl08HPWR7NdyxACPeFuQbqjaocEjCDGq04KbnxSqQu702vL3ZTvKe5w== + version "4.15.4" + resolved "https://registry.yarnpkg.com/jose/-/jose-4.15.4.tgz#02a9a763803e3872cf55f29ecef0dfdcc218cc03" + integrity sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -3316,9 +3666,9 @@ jsonify@^0.0.1: integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== keyv@^4.5.3: - version "4.5.3" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25" - integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug== + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" @@ -3335,6 +3685,13 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== +linkify-it@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-4.0.1.tgz#01f1d5e508190d06669982ba31a7d9f56a5751ec" + integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw== + dependencies: + uc.micro "^1.0.1" + listr2@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.5.tgz#9dcc50221583e8b4c71c43f9c7dfd0ef546b75d5" @@ -3431,18 +3788,44 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -magic-string@^0.30.0: - version "0.30.4" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.4.tgz#c2c683265fc18dda49b56fc7318d33ca0332c98c" - integrity sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg== +magic-string@^0.30.5: + version "0.30.5" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" + integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" +make-error@^1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + map-cache@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== +markdown-it-task-lists@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/markdown-it-task-lists/-/markdown-it-task-lists-2.1.1.tgz#f68f4d2ac2bad5a2c373ba93081a1a6848417088" + integrity sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA== + +markdown-it@^13.0.1: + version "13.0.2" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.2.tgz#1bc22e23379a6952e5d56217fbed881e0c94d536" + integrity sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w== + dependencies: + argparse "^2.0.1" + entities "~3.0.1" + linkify-it "^4.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" + +mdurl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -3490,7 +3873,7 @@ minimatch@^4.2.3: dependencies: brace-expansion "^1.1.7" -minimatch@^9.0.0: +minimatch@^9.0.3: version "9.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== @@ -3600,6 +3983,20 @@ object-assign@^4.1.0: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +object.omit@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-3.0.0.tgz#0e3edc2fce2ba54df5577ff529f6d97bd8a522af" + integrity sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ== + dependencies: + is-extendable "^1.0.0" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== + dependencies: + isobject "^3.0.1" + once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -3658,6 +4055,11 @@ ora@^5.4.1: strip-ansi "^6.0.0" wcwidth "^1.0.1" +orderedmap@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-2.1.1.tgz#61481269c44031c449915497bf5a4ad273c512d2" + integrity sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g== + os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -3805,14 +4207,24 @@ pinia-plugin-persistedstate@^3.2.0: resolved "https://registry.yarnpkg.com/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.0.tgz#9932ca2ae88aa6c0d6763bebc6447d7bd1f097d0" integrity sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw== -pinia@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/pinia/-/pinia-2.1.6.tgz#e88959f14b61c4debd9c42d0c9944e2875cbe0fa" - integrity sha512-bIU6QuE5qZviMmct5XwCesXelb5VavdOWKWaB17ggk++NUwQWWbP5YnsONTk3b752QkW9sACiR81rorpeOMSvQ== +pinia@^2.1.7: + version "2.1.7" + resolved "https://registry.yarnpkg.com/pinia/-/pinia-2.1.7.tgz#4cf5420d9324ca00b7b4984d3fbf693222115bbc" + integrity sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ== dependencies: "@vue/devtools-api" "^6.5.0" vue-demi ">=0.14.5" +postcss-less@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-6.0.0.tgz#463b34c60f53b648c237f569aeb2e09149d85af4" + integrity sha512-FPX16mQLyEjLzEuuJtxA8X3ejDLNGGEG503d2YGZR5Ask1SpDN8KmZUMpzCvyalWRywAn1n1VOA5dcqfCLo5rg== + +postcss-scss@^4.0.3: + version "4.0.9" + resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.9.tgz#a03c773cd4c9623cb04ce142a52afcec74806685" + integrity sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A== + postcss-selector-parser@^6.0.13: version "6.0.13" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" @@ -3821,7 +4233,7 @@ postcss-selector-parser@^6.0.13: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss@^8.1.10, postcss@^8.4.27: +postcss@^8.4.27, postcss@^8.4.31: version "8.4.31" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== @@ -3830,6 +4242,11 @@ postcss@^8.1.10, postcss@^8.4.27: picocolors "^1.0.0" source-map-js "^1.0.2" +powerglitch@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/powerglitch/-/powerglitch-2.3.2.tgz#3260ed57a4b186f78038cab8e2edfea4457566f9" + integrity sha512-nRKMttDRu0aOeu5/rUm0CFvwuaE3b7Klujjn0AIgoLUim0E2+4YpXZ76+2t9cJERQuFZ+7D36ywG7GLtRUSyMQ== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -3842,6 +4259,15 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" +prettier-plugin-css-order@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/prettier-plugin-css-order/-/prettier-plugin-css-order-2.0.1.tgz#fa9abb5e879ccf2fef5d2d7822ead15b8c75c2fc" + integrity sha512-Y+wZ0wI7/qFUritirJksQn13KqbcNC3OZXSxGh1ui/X39hAeMW9md+Mp7fjk8H4ZQQ8c5CTYZxShoBfAal/79A== + dependencies: + css-declaration-sorter "^7.1.1" + postcss-less "^6.0.0" + postcss-scss "^4.0.3" + prettier@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643" @@ -3854,6 +4280,160 @@ promise@^7.1.1: dependencies: asap "~2.0.3" +prosemirror-changeset@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz#dae94b63aec618fac7bb9061648e6e2a79988383" + integrity sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ== + dependencies: + prosemirror-transform "^1.0.0" + +prosemirror-collab@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz#0e8c91e76e009b53457eb3b3051fb68dad029a33" + integrity sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ== + dependencies: + prosemirror-state "^1.0.0" + +prosemirror-commands@^1.0.0, prosemirror-commands@^1.3.1: + version "1.5.2" + resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz#e94aeea52286f658cd984270de9b4c3fff580852" + integrity sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ== + dependencies: + prosemirror-model "^1.0.0" + prosemirror-state "^1.0.0" + prosemirror-transform "^1.0.0" + +prosemirror-dropcursor@^1.5.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz#49b9fb2f583e0d0f4021ff87db825faa2be2832d" + integrity sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw== + dependencies: + prosemirror-state "^1.0.0" + prosemirror-transform "^1.1.0" + prosemirror-view "^1.1.0" + +prosemirror-gapcursor@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz#5fa336b83789c6199a7341c9493587e249215cb4" + integrity sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ== + dependencies: + prosemirror-keymap "^1.0.0" + prosemirror-model "^1.0.0" + prosemirror-state "^1.0.0" + prosemirror-view "^1.0.0" + +prosemirror-history@^1.0.0, prosemirror-history@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/prosemirror-history/-/prosemirror-history-1.3.2.tgz#ce6ad7ab9db83e761aee716f3040d74738311b15" + integrity sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g== + dependencies: + prosemirror-state "^1.2.2" + prosemirror-transform "^1.0.0" + prosemirror-view "^1.31.0" + rope-sequence "^1.3.0" + +prosemirror-inputrules@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-1.2.1.tgz#8faf3d78c16150aedac71d326a3e3947417ce557" + integrity sha512-3LrWJX1+ULRh5SZvbIQlwZafOXqp1XuV21MGBu/i5xsztd+9VD15x6OtN6mdqSFI7/8Y77gYUbQ6vwwJ4mr6QQ== + dependencies: + prosemirror-state "^1.0.0" + prosemirror-transform "^1.0.0" + +prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2, prosemirror-keymap@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz#14a54763a29c7b2704f561088ccf3384d14eb77e" + integrity sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ== + dependencies: + prosemirror-state "^1.0.0" + w3c-keyname "^2.2.0" + +prosemirror-markdown@^1.10.1, prosemirror-markdown@^1.11.1: + version "1.11.2" + resolved "https://registry.yarnpkg.com/prosemirror-markdown/-/prosemirror-markdown-1.11.2.tgz#f6e529e669d11fa3eec859e93c0d2c91788d6c80" + integrity sha512-Eu5g4WPiCdqDTGhdSsG9N6ZjACQRYrsAkrF9KYfdMaCmjIApH75aVncsWYOJvEk2i1B3i8jZppv3J/tnuHGiUQ== + dependencies: + markdown-it "^13.0.1" + prosemirror-model "^1.0.0" + +prosemirror-menu@^1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz#3cfdc7c06d10f9fbd1bce29082c498bd11a0a79a" + integrity sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA== + dependencies: + crelt "^1.0.0" + prosemirror-commands "^1.0.0" + prosemirror-history "^1.0.0" + prosemirror-state "^1.0.0" + +prosemirror-model@^1.0.0, prosemirror-model@^1.16.0, prosemirror-model@^1.18.1, prosemirror-model@^1.19.0, prosemirror-model@^1.8.1: + version "1.19.3" + resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.19.3.tgz#f0d55285487fefd962d0ac695f716f4ec6705006" + integrity sha512-tgSnwN7BS7/UM0sSARcW+IQryx2vODKX4MI7xpqY2X+iaepJdKBPc7I4aACIsDV/LTaTjt12Z56MhDr9LsyuZQ== + dependencies: + orderedmap "^2.0.0" + +prosemirror-schema-basic@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.2.tgz#6695f5175e4628aab179bf62e5568628b9cfe6c7" + integrity sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw== + dependencies: + prosemirror-model "^1.19.0" + +prosemirror-schema-list@^1.2.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-1.3.0.tgz#05374702cf35a3ba5e7ec31079e355a488d52519" + integrity sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A== + dependencies: + prosemirror-model "^1.0.0" + prosemirror-state "^1.0.0" + prosemirror-transform "^1.7.3" + +prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.1, prosemirror-state@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.4.3.tgz#94aecf3ffd54ec37e87aa7179d13508da181a080" + integrity sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q== + dependencies: + prosemirror-model "^1.0.0" + prosemirror-transform "^1.0.0" + prosemirror-view "^1.27.0" + +prosemirror-tables@^1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/prosemirror-tables/-/prosemirror-tables-1.3.4.tgz#0b7cc16d49f90c5b834c9f29291c545478ce9ab0" + integrity sha512-z6uLSQ1BLC3rgbGwZmpfb+xkdvD7W/UOsURDfognZFYaTtc0gsk7u/t71Yijp2eLflVpffMk6X0u0+u+MMDvIw== + dependencies: + prosemirror-keymap "^1.1.2" + prosemirror-model "^1.8.1" + prosemirror-state "^1.3.1" + prosemirror-transform "^1.2.1" + prosemirror-view "^1.13.3" + +prosemirror-trailing-node@^2.0.2: + version "2.0.7" + resolved "https://registry.yarnpkg.com/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.7.tgz#ba782a7929f18bcae650b1c7082a2d10443eab19" + integrity sha512-8zcZORYj/8WEwsGo6yVCRXFMOfBo0Ub3hCUvmoWIZYfMP26WqENU0mpEP27w7mt8buZWuGrydBewr0tOArPb1Q== + dependencies: + "@remirror/core-constants" "^2.0.2" + "@remirror/core-helpers" "^3.0.0" + escape-string-regexp "^4.0.0" + +prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.2.1, prosemirror-transform@^1.7.0, prosemirror-transform@^1.7.3: + version "1.8.0" + resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz#a47c64a3c373c1bd0ff46e95be3210c8dda0cd11" + integrity sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A== + dependencies: + prosemirror-model "^1.0.0" + +prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3, prosemirror-view@^1.27.0, prosemirror-view@^1.28.2, prosemirror-view@^1.31.0: + version "1.32.1" + resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.32.1.tgz#bcd0877f1673ffe5f94c1e966b6fbdadcd2d5bbf" + integrity sha512-9SnB4HBgRczzTyIMZLPE1iszegL04hNfUyS8uPtP1RPxNM2NTCiIs8KwNsJU4nbZO9rxJTwVTv7Jm3zU4CR78A== + dependencies: + prosemirror-model "^1.16.0" + prosemirror-state "^1.0.0" + prosemirror-transform "^1.1.0" + punycode@^1.3.2: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -3864,7 +4444,7 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== -pvtsutils@^1.3.2: +pvtsutils@^1.3.2, pvtsutils@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.5.tgz#b8705b437b7b134cd7fd858f025a23456f1ce910" integrity sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA== @@ -3978,6 +4558,11 @@ rollup@^3.27.1: optionalDependencies: fsevents "~2.3.2" +rope-sequence@^1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/rope-sequence/-/rope-sequence-1.3.4.tgz#df85711aaecd32f1e756f76e43a415171235d425" + integrity sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ== + run-applescript@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c" @@ -4014,10 +4599,10 @@ safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass@^1.68.0: - version "1.68.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.68.0.tgz#0034b0cc9a50248b7d1702ac166fd25990023669" - integrity sha512-Lmj9lM/fef0nQswm1J2HJcEsBUba4wgNx2fea6yJHODREoMFnwRpZydBnX/RjyXw2REIwdkbqE4hrTo4qfDBUA== +sass@^1.69.4: + version "1.69.4" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.4.tgz#10c735f55e3ea0b7742c6efa940bce30e07fbca2" + integrity sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -4033,7 +4618,7 @@ semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.6, semver@^7.3.8, semver@^7.5.4: +semver@^7.3.6, semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -4216,11 +4801,33 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +throttle-debounce@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb" + integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg== + through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +tippy.js@^6.3.7: + version "6.3.7" + resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.7.tgz#8ccfb651d642010ed9a32ff29b0e9e19c5b8c61c" + integrity sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ== + dependencies: + "@popperjs/core" "^2.9.0" + +tiptap-markdown@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/tiptap-markdown/-/tiptap-markdown-0.8.2.tgz#93d42ef6225042d8bfe77861b93450aab184d67b" + integrity sha512-RyfpnH475+FYVh1fCiWF9+wBvA8T6X3PqxZR1MApEewxkoQ5kREQFiVwjZiez9qUQk/Bxu3RerFSJot65V6cbQ== + dependencies: + "@types/markdown-it" "^12.2.3" + markdown-it "^13.0.1" + markdown-it-task-lists "^2.1.1" + prosemirror-markdown "^1.11.1" + title-case@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/title-case/-/title-case-3.0.3.tgz#bc689b46f02e411f1d1e1d081f7c3deca0489982" @@ -4267,7 +4874,7 @@ ts-log@^2.2.3: resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.2.5.tgz#aef3252f1143d11047e2cb6f7cfaac7408d96623" integrity sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA== -tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.0, tslib@^2.6.1: +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.0, tslib@^2.6.1, tslib@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -4294,6 +4901,11 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +type-fest@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + typescript@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" @@ -4304,11 +4916,31 @@ ua-parser-js@^1.0.35: resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.36.tgz#a9ab6b9bd3a8efb90bb0816674b412717b7c428c" integrity sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw== +uc.micro@^1.0.1, uc.micro@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" integrity sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg== +undici-types@~5.25.1: + version "5.25.3" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.25.3.tgz#e044115914c85f0bcbb229f346ab739f064998c3" + integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA== + +unhead@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/unhead/-/unhead-1.7.4.tgz#acf3e01b2a035ba6101cb34e41a72277025284b0" + integrity sha512-oOv+9aQS85DQUd0f1uJBtb2uG3SKwCURSTuUWp9WKKzANCb1TjW2dWp5TFmJH5ILF6urXi4uUQfjK+SawzBJAA== + dependencies: + "@unhead/dom" "1.7.4" + "@unhead/schema" "1.7.4" + "@unhead/shared" "1.7.4" + hookable "^5.5.3" + unixify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" @@ -4370,10 +5002,10 @@ value-or-promise@^1.0.11, value-or-promise@^1.0.12: resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.12.tgz#0e5abfeec70148c78460a849f6b003ea7986f15c" integrity sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q== -vite@^4.4.10: - version "4.4.10" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.10.tgz#3794639cc433f7cb33ad286930bf0378c86261c8" - integrity sha512-TzIjiqx9BEXF8yzYdF2NTf1kFFbjMjUSV0LFZ3HyHoI3SGSPLnnFUKiIQtL3gl2AjHvMrprOvQ3amzaHgQlAxw== +vite@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.0.tgz#ec406295b4167ac3bc23e26f9c8ff559287cff26" + integrity sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw== dependencies: esbuild "^0.18.10" postcss "^8.4.27" @@ -4381,15 +5013,15 @@ vite@^4.4.10: optionalDependencies: fsevents "~2.3.2" -vue-demi@>=0.14.5: +vue-demi@>=0.14.5, vue-demi@>=0.14.6: version "0.14.6" resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.6.tgz#dc706582851dc1cdc17a0054f4fec2eb6df74c92" integrity sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w== vue-eslint-parser@^9.3.1: - version "9.3.1" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.3.1.tgz#429955e041ae5371df5f9e37ebc29ba046496182" - integrity sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g== + version "9.3.2" + resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz#6f9638e55703f1c77875a19026347548d93fd499" + integrity sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg== dependencies: debug "^4.3.4" eslint-scope "^7.1.1" @@ -4399,11 +5031,27 @@ vue-eslint-parser@^9.3.1: lodash "^4.17.21" semver "^7.3.6" +vue-i18n@^9.5.0: + version "9.5.0" + resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.5.0.tgz#361a820f591f6d9689435a42763fd1dae224833b" + integrity sha512-NiI3Ph1qMstNf7uhYh8trQBOBFLxeJgcOxBq51pCcZ28Vs18Y7BDS58r8HGDKCYgXdLUYqPDXdKatIF4bvBVZg== + dependencies: + "@intlify/core-base" "9.5.0" + "@intlify/shared" "9.5.0" + "@vue/devtools-api" "^6.5.0" + vue-observe-visibility@^2.0.0-alpha.1: version "2.0.0-alpha.1" resolved "https://registry.yarnpkg.com/vue-observe-visibility/-/vue-observe-visibility-2.0.0-alpha.1.tgz#1e4eda7b12562161d58984b7e0dea676d83bdb13" integrity sha512-flFbp/gs9pZniXR6fans8smv1kDScJ8RS7rEpMjhVabiKeq7Qz3D9+eGsypncjfIyyU84saU88XZ0zjbD6Gq/g== +vue-powerglitch@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/vue-powerglitch/-/vue-powerglitch-1.0.0.tgz#0c40f753f7a85cf3b695ec1921842e1f530fb851" + integrity sha512-archjrInM46s2zMes6ZB9ob5799adn8oXTU0KHBp/plst+za1gdS/qk5RynfJjtFyCHJ02BT2v1Pl89ILfZP+Q== + dependencies: + powerglitch "^2.2.0" + vue-resize@^2.0.0-alpha.1: version "2.0.0-alpha.1" resolved "https://registry.yarnpkg.com/vue-resize/-/vue-resize-2.0.0-alpha.1.tgz#43eeb79e74febe932b9b20c5c57e0ebc14e2df3a" @@ -4424,14 +5072,14 @@ vue-template-compiler@^2.7.14: de-indent "^1.0.2" he "^1.2.0" -vue-tsc@^1.8.15: - version "1.8.15" - resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-1.8.15.tgz#e00faee4215b65e797efc29200ab9ad9432318df" - integrity sha512-4DoB3LUj7IToLmggoCxRiFG+QU5lem0nv03m1ocqugXA9rSVoTOEoYYaP8vu8b99Eh+/cCVdYOeIAQ+RsgUYUw== +vue-tsc@^1.8.19: + version "1.8.19" + resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-1.8.19.tgz#313481444e87aa2840b02644134c2fc2f3c92ba2" + integrity sha512-tacMQLQ0CXAfbhRycCL5sWIy1qujXaIEtP1hIQpzHWOUuICbtTj9gJyFf91PvzG5KCNIkA5Eg7k2Fmgt28l5DQ== dependencies: - "@vue/language-core" "1.8.15" - "@vue/typescript" "1.8.15" - semver "^7.3.8" + "@vue/language-core" "1.8.19" + "@vue/typescript" "1.8.19" + semver "^7.5.4" vue-virtual-scroller@^2.0.0-beta.8: version "2.0.0-beta.8" @@ -4442,16 +5090,21 @@ vue-virtual-scroller@^2.0.0-beta.8: vue-observe-visibility "^2.0.0-alpha.1" vue-resize "^2.0.0-alpha.1" -vue@^3.2.19, vue@^3.2.41, vue@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.4.tgz#8ed945d3873667df1d0fcf3b2463ada028f88bd6" - integrity sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw== +vue@^3.2.19, vue@^3.3.4, vue@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.6.tgz#bc1b129a73705db16da90aa1edde539d7401ca9d" + integrity sha512-jJIDETeWJnoY+gfn4ZtMPMS5KtbP4ax+CT4dcQFhTnWEk8xMupFyQ0JxL28nvT/M4+p4a0ptxaV2WY0LiIxvRg== dependencies: - "@vue/compiler-dom" "3.3.4" - "@vue/compiler-sfc" "3.3.4" - "@vue/runtime-dom" "3.3.4" - "@vue/server-renderer" "3.3.4" - "@vue/shared" "3.3.4" + "@vue/compiler-dom" "3.3.6" + "@vue/compiler-sfc" "3.3.6" + "@vue/runtime-dom" "3.3.6" + "@vue/server-renderer" "3.3.6" + "@vue/shared" "3.3.6" + +w3c-keyname@^2.2.0: + version "2.2.8" + resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz#7b17c8c6883d4e8b86ac8aba79d39e880f8869c5" + integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ== wcwidth@^1.0.1: version "1.0.1" @@ -4529,12 +5182,7 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -ws@8.14.1: - version "8.14.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.1.tgz#4b9586b4f70f9e6534c7bb1d3dc0baa8b8cf01e0" - integrity sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A== - -ws@^8.12.0, ws@^8.13.0: +ws@8.14.2, ws@^8.12.0, ws@^8.13.0: version "8.14.2" resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== @@ -4570,9 +5218,9 @@ yaml-ast-parser@^0.0.43: integrity sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A== yaml@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.2.tgz#f522db4313c671a0ca963a75670f1c12ea909144" - integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg== + version "2.3.3" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.3.tgz#01f6d18ef036446340007db8e016810e5d64aad9" + integrity sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ== yargs-parser@^18.1.2: version "18.1.3" @@ -4621,3 +5269,8 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zhead@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/zhead/-/zhead-2.2.0.tgz#07998ba0e21cbe43f80f77c4e3bdf5677de202d3" + integrity sha512-NzynJDdbRD5CIMZEoWd6esLlUwm4PzjbHVEu7qpLNpi32DY0wd1a83XZP86hkW8HPqjjaYBuMfapx1iahMF46g== diff --git a/kitsune-job-runner/Cargo.toml b/kitsune-job-runner/Cargo.toml index e6be3b506..4608f1f1c 100644 --- a/kitsune-job-runner/Cargo.toml +++ b/kitsune-job-runner/Cargo.toml @@ -14,6 +14,6 @@ kitsune-retry-policies = { path = "../crates/kitsune-retry-policies" } mimalloc = "0.1.39" tokio = { version = "1.33.0", features = ["full"] } toml = "0.8.2" -tracing = "0.1.39" +tracing = "0.1.40" [features] diff --git a/kitsune/Cargo.toml b/kitsune/Cargo.toml index b2eeabdd8..0722ddbbc 100644 --- a/kitsune/Cargo.toml +++ b/kitsune/Cargo.toml @@ -62,7 +62,7 @@ simd-json = "0.12.0" speedy-uuid = { path = "../lib/speedy-uuid" } strum = { version = "0.25.0", features = ["derive", "phf"] } tempfile = "3.8.0" -thiserror = "1.0.49" +thiserror = "1.0.50" time = "0.3.30" tokio = { version = "1.33.0", features = ["full"] } tokio-util = { version = "0.7.9", features = ["compat"] } @@ -73,10 +73,10 @@ tower-http = { version = "0.4.4", features = [ "timeout", "trace", ] } -tracing = "0.1.39" +tracing = "0.1.40" tracing-error = "0.2.0" tracing-subscriber = "0.3.17" -typed-builder = "0.17.0" +typed-builder = "0.18.0" url = "2.4.1" utoipa = { version = "4.0.0", features = ["axum_extras", "uuid"] } utoipa-swagger-ui = { version = "4.0.0", features = ["axum"] } @@ -84,7 +84,7 @@ utoipa-swagger-ui = { version = "4.0.0", features = ["axum"] } # --- Optional dependencies --- # "graphql" feature -async-graphql = { version = "6.0.7", default-features = false, features = [ +async-graphql = { version = "6.0.9", default-features = false, features = [ "playground", "tempfile", "time", @@ -92,7 +92,7 @@ async-graphql = { version = "6.0.7", default-features = false, features = [ "unblock", "uuid", ], optional = true } -async-graphql-axum = { version = "6.0.7", optional = true } +async-graphql-axum = { version = "6.0.9", optional = true } # "metrics" feature axum-prometheus = { version = "0.4.0", optional = true } diff --git a/kitsune/src/http/cond.rs b/kitsune/src/http/cond.rs deleted file mode 100644 index 65f7b9104..000000000 --- a/kitsune/src/http/cond.rs +++ /dev/null @@ -1,68 +0,0 @@ -use axum::handler::Handler; -use futures_util::{future::Either, FutureExt}; -use http::{header::ACCEPT, Request}; -use mime::APPLICATION_JSON; - -const APPLICATION_ACTIVITY_JSON: &str = "application/activity+json"; -const APPLICATION_LD_JSON: &str = "application/ld+json"; - -/// Conditional wrapper around two handlers -/// -/// If the conditional wrapper returns `true`, the left future is invoked. -/// Otherwise the right future is invoked. -#[derive(Clone)] -pub struct ConditionalWrapper { - condition: C, - left: L, - right: R, -} - -impl ConditionalWrapper { - pub fn new(condition: C, left: L, right: R) -> Self { - Self { - condition, - left, - right, - } - } -} - -impl Handler for ConditionalWrapper -where - C: Fn(&Request) -> bool + Clone + Send + 'static, - L: Clone + Handler + Send + 'static, - R: Clone + Handler + Send + 'static, -{ - type Future = Either; - - fn call(self, req: Request, state: S) -> Self::Future { - if (self.condition)(&req) { - self.left.call(req, state).left_future() - } else { - self.right.call(req, state).right_future() - } - } -} - -pub fn html( - left: L, - right: R, -) -> ConditionalWrapper) -> bool + Clone + Send + 'static, L, R> { - let cond = |req: &Request| { - req.headers() - .get(ACCEPT) - .and_then(|header| { - header - .to_str() - .map(|value| { - !(value.contains(APPLICATION_JSON.as_ref()) - || value.contains(APPLICATION_ACTIVITY_JSON) - || value.contains(APPLICATION_LD_JSON)) - }) - .ok() - }) - .unwrap_or(true) - }; - - ConditionalWrapper::new(cond, left, right) -} diff --git a/kitsune/src/http/graphql/query/instance.rs b/kitsune/src/http/graphql/query/instance.rs index 40ce55cfb..804e67125 100644 --- a/kitsune/src/http/graphql/query/instance.rs +++ b/kitsune/src/http/graphql/query/instance.rs @@ -15,6 +15,7 @@ impl InstanceQuery { let url_service = &state.service().url; let captcha = state.service().captcha.backend.clone().map(Into::into); + let character_limit = instance_service.character_limit(); let description = instance_service.description().into(); let domain = url_service.webfinger_domain().into(); let local_post_count = instance_service.local_post_count().await?; @@ -24,6 +25,7 @@ impl InstanceQuery { Ok(Instance { captcha, + character_limit, description, domain, local_post_count, diff --git a/kitsune/src/http/graphql/query/timeline.rs b/kitsune/src/http/graphql/query/timeline.rs index 6172d956c..322a781eb 100644 --- a/kitsune/src/http/graphql/query/timeline.rs +++ b/kitsune/src/http/graphql/query/timeline.rs @@ -34,7 +34,7 @@ impl TimelineQuery { let get_home = GetHome::builder() .fetching_account_id(ctx.user_data()?.account.id) .max_id(after) - .min_id(before); + .since_id(before); let get_home = if let Some(first) = first { get_home.limit(first).build() } else { @@ -76,7 +76,7 @@ impl TimelineQuery { |after, before, first, _last| async move { let get_public = GetPublic::builder() .max_id(after) - .min_id(before) + .since_id(before) .only_local(only_local); let get_public = if let Some(first) = first { get_public.limit(first).build() diff --git a/kitsune/src/http/graphql/types/instance.rs b/kitsune/src/http/graphql/types/instance.rs index 5bd9d6cc2..e712f07e3 100644 --- a/kitsune/src/http/graphql/types/instance.rs +++ b/kitsune/src/http/graphql/types/instance.rs @@ -30,6 +30,8 @@ impl From for CaptchaInfo { #[derive(SimpleObject)] pub struct Instance { + pub captcha: Option, + pub character_limit: usize, pub description: String, pub domain: String, pub local_post_count: u64, @@ -37,5 +39,4 @@ pub struct Instance { pub registrations_open: bool, pub user_count: u64, pub version: &'static str, - pub captcha: Option, } diff --git a/kitsune/src/http/handler/posts/mod.rs b/kitsune/src/http/handler/posts/mod.rs index 5c9274e6b..a701749df 100644 --- a/kitsune/src/http/handler/posts/mod.rs +++ b/kitsune/src/http/handler/posts/mod.rs @@ -1,56 +1,11 @@ -use crate::{ - error::{Error, Result}, - http::{ - cond, - page::{PostComponent, PostPage}, - responder::ActivityPubJson, - }, - state::Zustand, -}; +use crate::{error::Result, http::responder::ActivityPubJson, state::Zustand}; use axum::{debug_handler, extract::Path, extract::State, routing, Router}; -use futures_util::TryStreamExt; -use kitsune_core::{consts::VERSION, mapping::IntoObject, service::post::PostService}; +use kitsune_core::{mapping::IntoObject, service::post::PostService}; use kitsune_type::ap::Object; use speedy_uuid::Uuid; -use std::collections::VecDeque; mod activity; -#[debug_handler(state = Zustand)] -async fn get_html( - State(state): State, - State(post_service): State, - Path(id): Path, -) -> Result { - let post = post_service.get_by_id(id, None).await?; - let ancestors = post_service - .get_ancestors(post.id, None) - .map_err(Error::from) - .try_fold(VecDeque::new(), |mut acc, item| { - let state = &state; - async move { - let item = PostComponent::prepare(state, item).await?; - acc.push_front(item); - Ok(acc) - } - }) - .await?; - - let descendants = post_service - .get_descendants(post.id, None) - .map_err(Error::from) - .and_then(|item| PostComponent::prepare(&state, item)) - .try_collect() - .await?; - - Ok(PostPage { - ancestors, - descendants, - post: PostComponent::prepare(&state, post).await?, - version: VERSION, - }) -} - #[debug_handler(state = Zustand)] async fn get( State(state): State, @@ -63,6 +18,6 @@ async fn get( pub fn routes() -> Router { Router::new() - .route("/:id", routing::get(cond::html(get_html, get))) + .route("/:id", routing::get(get)) .route("/:id/activity", routing::get(activity::get)) } diff --git a/kitsune/src/http/handler/users/mod.rs b/kitsune/src/http/handler/users/mod.rs index 890f1d9bd..624417dfa 100644 --- a/kitsune/src/http/handler/users/mod.rs +++ b/kitsune/src/http/handler/users/mod.rs @@ -1,30 +1,11 @@ -use crate::{ - consts::API_DEFAULT_LIMIT, - error::{Error, Result}, - http::{ - cond, - page::{PostComponent, UserPage}, - responder::ActivityPubJson, - }, - state::Zustand, -}; +use crate::{error::Result, http::responder::ActivityPubJson, state::Zustand}; use axum::{ - extract::{Path, Query, State}, + extract::{Path, State}, routing::{self, post}, Router, }; -use futures_util::{future::OptionFuture, TryStreamExt}; -use kitsune_core::{ - error::ApiError, - mapping::IntoObject, - service::{ - account::{AccountService, GetPosts}, - attachment::AttachmentService, - url::UrlService, - }, -}; +use kitsune_core::{error::ApiError, mapping::IntoObject, service::account::AccountService}; use kitsune_type::ap::actor::Actor; -use serde::Deserialize; use speedy_uuid::Uuid; mod followers; @@ -32,68 +13,10 @@ mod following; mod inbox; mod outbox; -#[derive(Deserialize)] -struct PageQuery { - min_id: Option, - max_id: Option, -} - -async fn get_html( - State(state): State, - State(account_service): State, - State(attachment_service): State, - State(url_service): State, - Path(account_id): Path, - Query(query): Query, -) -> Result { - let account = account_service - .get_by_id(account_id) - .await? - .ok_or(ApiError::NotFound)?; - - let get_posts = GetPosts::builder() - .account_id(account.id) - .max_id(query.max_id) - .min_id(query.min_id) - .limit(API_DEFAULT_LIMIT) - .build(); - - let posts = account_service - .get_posts(get_posts) - .await? - .map_err(Error::from) - .and_then(|post| PostComponent::prepare(&state, post)) - .try_collect() - .await?; - - let mut acct = format!("@{}", account.username); - if !account.local { - acct.push('@'); - acct.push_str(&account.domain); - } - - let profile_picture_url = - OptionFuture::from(account.avatar_id.map(|id| attachment_service.get_url(id))) - .await - .transpose()?; - - Ok(UserPage { - acct, - display_name: account.display_name.unwrap_or(account.username), - profile_picture_url: profile_picture_url - .unwrap_or_else(|| url_service.default_avatar_url()), - bio: account.note.unwrap_or_default(), - posts, - }) -} - async fn get( State(state): State, State(account_service): State, - _: State, // Needed to get the same types for the conditional routing - _: State, // Needed to get the same types for the conditional routing Path(account_id): Path, - _: Query, // Needed to get the same types for the conditional routing ) -> Result> { let account = account_service .get_by_id(account_id) @@ -105,7 +28,7 @@ async fn get( pub fn routes() -> Router { Router::new() - .route("/:user_id", routing::get(cond::html(get_html, get))) + .route("/:user_id", routing::get(get)) .route("/:user_id/followers", routing::get(followers::get)) .route("/:user_id/following", routing::get(following::get)) .route("/:user_id/inbox", post(inbox::post)) diff --git a/kitsune/src/http/mod.rs b/kitsune/src/http/mod.rs index 3dd261875..fe82912bc 100644 --- a/kitsune/src/http/mod.rs +++ b/kitsune/src/http/mod.rs @@ -15,13 +15,11 @@ use tower_http::{ }; use utoipa_swagger_ui::SwaggerUi; -mod cond; #[cfg(feature = "graphql-api")] mod graphql; mod handler; mod middleware; mod openapi; -mod page; #[cfg(feature = "mastodon-api")] mod pagination; mod responder; diff --git a/kitsune/src/http/page.rs b/kitsune/src/http/page.rs deleted file mode 100644 index 71a8bb8eb..000000000 --- a/kitsune/src/http/page.rs +++ /dev/null @@ -1,121 +0,0 @@ -use crate::{ - error::{Error, Result}, - state::Zustand, -}; -use askama::Template; -use diesel::{BelongingToDsl, QueryDsl, SelectableHelper}; -use diesel_async::RunQueryDsl; -use futures_util::{future::OptionFuture, TryStreamExt}; -use kitsune_core::try_join; -use kitsune_db::{ - model::{ - account::Account, - media_attachment::{MediaAttachment as DbMediaAttachment, PostMediaAttachment}, - post::Post, - }, - schema::{accounts, media_attachments}, -}; -use scoped_futures::ScopedFutureExt; -use std::collections::VecDeque; - -pub struct MediaAttachment { - pub content_type: String, - pub description: Option, - pub url: String, -} - -#[derive(Template)] -#[template(path = "components/post.html", escape = "none")] // Make sure everything is escaped either on submission or in the template -pub struct PostComponent { - pub display_name: String, - pub acct: String, - pub profile_url: String, - pub profile_picture_url: String, - pub content: String, - pub url: String, - pub attachments: Vec, -} - -impl PostComponent { - pub async fn prepare(state: &Zustand, post: Post) -> Result { - let (author, attachments_stream) = state - .db_pool() - .with_connection(|db_conn| { - async { - let author_fut = accounts::table - .find(post.account_id) - .select(Account::as_select()) - .get_result::(db_conn); - - let attachments_stream_fut = PostMediaAttachment::belonging_to(&post) - .inner_join(media_attachments::table) - .select(DbMediaAttachment::as_select()) - .load_stream::(db_conn); - - try_join!(author_fut, attachments_stream_fut) - } - .scoped() - }) - .await?; - - let attachments = attachments_stream - .map_err(Error::from) - .and_then(|attachment| async move { - let url = state.service().attachment.get_url(attachment.id).await?; - - Ok(MediaAttachment { - content_type: attachment.content_type, - description: attachment.description, - url, - }) - }) - .try_collect() - .await?; - - let profile_picture_url = OptionFuture::from( - author - .avatar_id - .map(|id| state.service().attachment.get_url(id)), - ) - .await - .transpose()?; - - let mut acct = format!("@{}", author.username); - if !author.local { - acct.push('@'); - acct.push_str(&author.domain); - } - - Ok(Self { - attachments, - display_name: author - .display_name - .unwrap_or_else(|| author.username.clone()), - acct, - profile_url: author.url, - profile_picture_url: profile_picture_url - .unwrap_or_else(|| state.service().url.default_avatar_url()), - content: post.content, - url: post.url, - }) - } -} - -#[derive(Template)] -#[template(path = "pages/posts.html", escape = "none")] -pub struct PostPage { - pub ancestors: VecDeque, - pub post: PostComponent, - pub descendants: Vec, - pub version: &'static str, -} - -#[derive(Template)] -#[template(path = "pages/users.html", escape = "none")] -pub struct UserPage { - pub acct: String, - pub display_name: String, - pub profile_picture_url: String, - pub bio: String, - pub posts: Vec, -} diff --git a/kitsune/templates/base.html b/kitsune/templates/base.html new file mode 100644 index 000000000..36a748e9e --- /dev/null +++ b/kitsune/templates/base.html @@ -0,0 +1,24 @@ + + + + + + + + + + {% block head %} + {% endblock %} + + + {% block title %} + {% endblock %} + + + + + {% block body %} + {% endblock %} + + + \ No newline at end of file diff --git a/kitsune/templates/components/post.html b/kitsune/templates/components/post.html deleted file mode 100644 index ccbb6eefc..000000000 --- a/kitsune/templates/components/post.html +++ /dev/null @@ -1,32 +0,0 @@ -
- - - - - -
{{ content }}
-
- -
- {% for attachment in attachments %} -
- {% if attachment.content_type.starts_with("audio") %} -
- {% endfor %} -
-
\ No newline at end of file diff --git a/kitsune/templates/oauth/consent.html b/kitsune/templates/oauth/consent.html index 679f9ceb1..b1e12bfac 100644 --- a/kitsune/templates/oauth/consent.html +++ b/kitsune/templates/oauth/consent.html @@ -1,51 +1,52 @@ - - +{% extends "../base.html" %} - - - - - - OAuth Login - +{% block title %} + OAuth Login +{% endblock %} {% macro add_query_params() %} - - - - - + + + + + {% endmacro %} - -

Kitsune

+{% block body %} +

+ Kitsune +

+ + +
Authenticated as {{ authenticated_username }} ~ Logout + onclick="document.cookie='user_id=; expires=Thu, 01 Jan 1970 00:00:00 UTC;';window.location.reload();">Logout
- - - \ No newline at end of file +{% endblock %} diff --git a/kitsune/templates/oauth/login.html b/kitsune/templates/oauth/login.html index 0a9d81c49..ac29594e0 100644 --- a/kitsune/templates/oauth/login.html +++ b/kitsune/templates/oauth/login.html @@ -1,21 +1,18 @@ - - +{% extends "../base.html" %} - - - - - - OAuth Login - +{% block title %} + OAuth Login +{% endblock %} - +{% block body %}

Kitsune

+ {% for (_level, msg) in flash_messages %} -
- {{ msg }} -
+
+ {{ msg }} +
{% endfor %} +

@@ -25,6 +22,4 @@
- - - \ No newline at end of file +{% endblock %} \ No newline at end of file diff --git a/kitsune/templates/oauth/token.html b/kitsune/templates/oauth/token.html index ae48a609b..9c03e9f9b 100644 --- a/kitsune/templates/oauth/token.html +++ b/kitsune/templates/oauth/token.html @@ -1,20 +1,16 @@ - - +{% extends "../base.html" %} - - - - - - OAuth Token - +{% block title %} + OAuth Token +{% endblock %} + +{% block body %} +

+ {{domain}} +

- -

{{domain}}

Copy & Paste this token into {{app_name}}

{{token}}
- - - \ No newline at end of file +{% endblock %} \ No newline at end of file diff --git a/kitsune/templates/pages/footer.html b/kitsune/templates/pages/footer.html deleted file mode 100644 index 373ff54fd..000000000 --- a/kitsune/templates/pages/footer.html +++ /dev/null @@ -1,3 +0,0 @@ -
- Powered by Kitsune v{{ version }} -
\ No newline at end of file diff --git a/kitsune/templates/pages/posts.html b/kitsune/templates/pages/posts.html deleted file mode 100644 index f9b6279fa..000000000 --- a/kitsune/templates/pages/posts.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Post - Kitsune - - - - - - - - -
- {% for ancestor in ancestors %} - {{ ancestor }} - {% endfor %} -
- -
- {{ post }} -
- -
- {% for descendant in descendants %} - {{ descendant }} - {% endfor %} -
- - {% include "footer.html" %} - - - \ No newline at end of file diff --git a/kitsune/templates/pages/users.html b/kitsune/templates/pages/users.html deleted file mode 100644 index d894d482e..000000000 --- a/kitsune/templates/pages/users.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - {{ acct|escape("html") }} - Kitsune - - - - - - - - - -
- -
- {{ display_name }} - {{ acct|escape("html") }} -
-

{{ bio }}

-
- {% for post in posts %} - {{ post }} - {% endfor %} - - - \ No newline at end of file diff --git a/lib/athena/Cargo.toml b/lib/athena/Cargo.toml index 26b79e7d3..f0f1d88cd 100644 --- a/lib/athena/Cargo.toml +++ b/lib/athena/Cargo.toml @@ -26,10 +26,10 @@ serde = { version = "1.0.189", features = ["derive"] } simd-json = "0.12.0" smol_str = "0.2.0" speedy-uuid = { path = "../speedy-uuid", features = ["redis", "serde"] } -thiserror = "1.0.49" +thiserror = "1.0.50" tokio = { version = "1.33.0", features = ["macros", "rt", "sync"] } -tracing = "0.1.39" -typed-builder = "0.17.0" +tracing = "0.1.40" +typed-builder = "0.18.0" [dev-dependencies] tracing-subscriber = "0.3.17" diff --git a/lib/speedy-uuid/Cargo.toml b/lib/speedy-uuid/Cargo.toml index 193edacd6..10bf36e6f 100644 --- a/lib/speedy-uuid/Cargo.toml +++ b/lib/speedy-uuid/Cargo.toml @@ -4,13 +4,13 @@ edition.workspace = true version.workspace = true [dependencies] -async-graphql = { version = "6.0.7", default-features = false, optional = true } +async-graphql = { version = "6.0.9", default-features = false, optional = true } diesel = { version = "2.1.3", features = [ "postgres_backend", "uuid", ], optional = true } redis = { version = "0.23.3", default-features = false, optional = true } serde = { version = "1.0.189", optional = true } -thiserror = "1.0.49" +thiserror = "1.0.50" uuid = { version = "1.5.0", features = ["fast-rng", "v7"] } uuid-simd = { version = "0.8.0", features = ["uuid"] } diff --git a/public/colours.css b/public/colours.css deleted file mode 100644 index 31eb20da4..000000000 --- a/public/colours.css +++ /dev/null @@ -1,9 +0,0 @@ -:root { - --dark1: #0f1026; - --dark2: #051c30; - --dark3: #042f40; - --shade1dark: #53a0c4; - --shade1light: #afd7fa; - --shade2dark: #935d7e; - --shade2light: #d68fbc; -} \ No newline at end of file diff --git a/public/post-style.css b/public/post-style.css deleted file mode 100644 index 534ffa5b7..000000000 --- a/public/post-style.css +++ /dev/null @@ -1,69 +0,0 @@ -:root { - background-color: var(--dark1); - color: white; - font-family: 'Courier New', Courier, monospace; -} - -a { - text-decoration: none; - color: var(--shade2light); -} - -body { - width: 100%; - min-height: 100vh; - display: flex; - margin: 0; - padding: 0; - align-items: center; - justify-content: center; - flex-direction: column; -} - -.post { - border: 1px solid var(--shade2dark); - border-radius: 5px; - padding: 0.5em; - margin: 0.5em 0; - width: 600px; - max-width: 90%; - min-height: 100px; -} - -.posts__main * { - background-color: var(--dark2); -} - -.post__content { - word-wrap: break-word; - white-space: pre-wrap; -} - -.post__attachments { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 0.25em; -} - -.post__attachments * { - width: 100%; -} - -.post__url { - color: white; -} - -.account-info { - display: flex; - gap: 0.5em; - align-items: center; -} - -.account-info__names { - display: flex; - flex-direction: column; -} - -.profile-picture { - width: 60px; -} \ No newline at end of file diff --git a/public/template.css b/public/template.css index 3ed5c9822..74e3bcc14 100644 --- a/public/template.css +++ b/public/template.css @@ -1,12 +1,4 @@ -@import url("https://fonts.googleapis.com/css2?family=Play:wght@400;700&display=swap"); - :root { - --crimson: #ff124f; - --magenta: #ff00a0; - --pink: #fe75fe; - --indigo: #7a04eb; - --darkblue: #120458; - --dark1: #0f1026; --dark2: #051c30; --dark3: #042f40; @@ -17,7 +9,7 @@ } * { - font-family: Play; + font-family: 'Courier New', Courier, monospace; } a { diff --git a/public/user-style.css b/public/user-style.css deleted file mode 100644 index f4e25d542..000000000 --- a/public/user-style.css +++ /dev/null @@ -1,27 +0,0 @@ -.user__header { - border: 1px solid var(--shade2dark); - border-radius: 5px; - padding: 0.5em; - margin: 0.5em 0; - width: 600px; - max-width: 90%; - background-color: var(--dark2); -} - -.user__bio { - word-wrap: break-word; - white-space: pre-wrap; -} - -.user__names { - display: flex; - flex-direction: column; - margin-top: 0.5em; -} - -.user__profile-picture { - float: left; - width: 160px; - margin-right: 1em; - margin-bottom: 0.1em; -} \ No newline at end of file