diff --git a/.gitignore b/.gitignore index cc006b58..0d823a82 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,5 @@ yarn-error.log* # Misc .DS_Store *.pem + +/db/data diff --git a/db.compose.yml b/db.compose.yml new file mode 100644 index 00000000..8eb6688e --- /dev/null +++ b/db.compose.yml @@ -0,0 +1,12 @@ +services: + db: + image: postgres:16 + container_name: dev-metastate-db + environment: + POSTGRES_USER: metastate + POSTGRES_PASSWORD: metastate + POSTGRES_DB: metastate + volumes: + - ./db/data:/var/lib/postgresql/data + ports: + - "5432:5432" diff --git a/db/.gitinclude b/db/.gitinclude new file mode 100644 index 00000000..e69de29b diff --git a/infrastructure/control-panel/biome.json b/infrastructure/control-panel/biome.json new file mode 100644 index 00000000..a5d1b473 --- /dev/null +++ b/infrastructure/control-panel/biome.json @@ -0,0 +1,10 @@ +{ + "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", + "extends": ["../../biome.json"], + "organizeImports": { + "include": ["src/**/*.ts", "src/**/*.svelte"] + }, + "files": { + "ignore": ["src/lib/paraglide/*"] + } +} diff --git a/infrastructure/control-panel/project.inlang/.gitignore b/infrastructure/control-panel/project.inlang/.gitignore new file mode 100644 index 00000000..5e465967 --- /dev/null +++ b/infrastructure/control-panel/project.inlang/.gitignore @@ -0,0 +1 @@ +cache \ No newline at end of file diff --git a/infrastructure/eid-wallet/package.json b/infrastructure/eid-wallet/package.json index 22a98f9f..f68df63f 100644 --- a/infrastructure/eid-wallet/package.json +++ b/infrastructure/eid-wallet/package.json @@ -27,6 +27,7 @@ "@tauri-apps/api": "^2", "@tauri-apps/plugin-barcode-scanner": "^2.2.0", "@tauri-apps/plugin-biometric": "^2.2.0", + "@tauri-apps/plugin-deep-link": "^2.4.1", "@tauri-apps/plugin-opener": "^2", "@tauri-apps/plugin-store": "^2.2.0", "@veriff/incontext-sdk": "^2.4.0", diff --git a/infrastructure/eid-wallet/src-tauri/Cargo.lock b/infrastructure/eid-wallet/src-tauri/Cargo.lock index a0409a49..9ab7aeb6 100644 --- a/infrastructure/eid-wallet/src-tauri/Cargo.lock +++ b/infrastructure/eid-wallet/src-tauri/Cargo.lock @@ -544,6 +544,26 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom 0.2.15", + "once_cell", + "tiny-keccak", +] + [[package]] name = "convert_case" version = "0.4.0" @@ -633,6 +653,12 @@ version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + [[package]] name = "crypto-common" version = "0.1.6" @@ -810,6 +836,15 @@ dependencies = [ "syn 2.0.100", ] +[[package]] +name = "dlv-list" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f" +dependencies = [ + "const-random", +] + [[package]] name = "dpi" version = "0.1.1" @@ -859,6 +894,7 @@ dependencies = [ "tauri-plugin-barcode-scanner", "tauri-plugin-biometric", "tauri-plugin-crypto-hw", + "tauri-plugin-deep-link", "tauri-plugin-opener", "tauri-plugin-store", "thiserror 2.0.12", @@ -1442,6 +1478,12 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + [[package]] name = "hashbrown" version = "0.15.2" @@ -2428,6 +2470,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "ordered-multimap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79" +dependencies = [ + "dlv-list", + "hashbrown 0.14.5", +] + [[package]] name = "ordered-stream" version = "0.2.0" @@ -3002,7 +3054,17 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", - "windows-registry", + "windows-registry 0.4.0", +] + +[[package]] +name = "rust-ini" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7295b7ce3bf4806b419dc3420745998b447178b7005e2011947b38fc5aa6791" +dependencies = [ + "cfg-if", + "ordered-multimap", ] [[package]] @@ -3734,6 +3796,25 @@ dependencies = [ "thiserror 2.0.12", ] +[[package]] +name = "tauri-plugin-deep-link" +version = "2.4.1" +source = "git+https://github.com/sosweetham/plugins-workspace?rev=0668697#0668697944f15eaa999a4a4a39445557377f1da4" +dependencies = [ + "dunce", + "rust-ini", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "tauri-utils", + "thiserror 2.0.12", + "tracing", + "url", + "windows-registry 0.5.3", + "windows-result", +] + [[package]] name = "tauri-plugin-opener" version = "2.2.6" @@ -3964,6 +4045,15 @@ dependencies = [ "time-core", ] +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + [[package]] name = "tinystr" version = "0.7.6" @@ -4746,6 +4836,17 @@ dependencies = [ "windows-targets 0.53.0", ] +[[package]] +name = "windows-registry" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings 0.4.2", +] + [[package]] name = "windows-result" version = "0.3.4" diff --git a/infrastructure/eid-wallet/src-tauri/Cargo.toml b/infrastructure/eid-wallet/src-tauri/Cargo.toml index 48c4e03b..3507619b 100644 --- a/infrastructure/eid-wallet/src-tauri/Cargo.toml +++ b/infrastructure/eid-wallet/src-tauri/Cargo.toml @@ -33,4 +33,4 @@ thiserror = { version = "2.0.11" } tauri-plugin-barcode-scanner = "2" tauri-plugin-biometric = "2.2.0" tauri-plugin-crypto-hw = "0.1.0" - +tauri-plugin-deep-link = { git = "https://github.com/sosweetham/plugins-workspace", rev = "0668697" } diff --git a/infrastructure/eid-wallet/src-tauri/Info.ios.plist b/infrastructure/eid-wallet/src-tauri/Info.ios.plist index b5ceb8f5..b14462d1 100644 --- a/infrastructure/eid-wallet/src-tauri/Info.ios.plist +++ b/infrastructure/eid-wallet/src-tauri/Info.ios.plist @@ -12,5 +12,16 @@ NSAllowsArbitraryLoads + CFBundleURLTypes + + + CFBundleURLName + foundation.metastate.eid-wallet + CFBundleURLSchemes + + w3ds + + + diff --git a/infrastructure/eid-wallet/src-tauri/capabilities/mobile.json b/infrastructure/eid-wallet/src-tauri/capabilities/mobile.json index e6b65a59..fa6ee646 100644 --- a/infrastructure/eid-wallet/src-tauri/capabilities/mobile.json +++ b/infrastructure/eid-wallet/src-tauri/capabilities/mobile.json @@ -8,7 +8,8 @@ "opener:default", "store:default", "biometric:default", - "barcode-scanner:default" + "barcode-scanner:default", + "deep-link:default" ], "platforms": ["iOS", "android"] } diff --git a/infrastructure/eid-wallet/src-tauri/gen/android/.idea/AndroidProjectSystem.xml b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/AndroidProjectSystem.xml new file mode 100644 index 00000000..4a53bee8 --- /dev/null +++ b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/AndroidProjectSystem.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/infrastructure/eid-wallet/src-tauri/gen/android/.idea/codeStyles/Project.xml b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/codeStyles/Project.xml new file mode 100644 index 00000000..7643783a --- /dev/null +++ b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/codeStyles/Project.xml @@ -0,0 +1,123 @@ + + + + + + + + + + \ No newline at end of file diff --git a/infrastructure/eid-wallet/src-tauri/gen/android/.idea/codeStyles/codeStyleConfig.xml b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 00000000..79ee123c --- /dev/null +++ b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/infrastructure/eid-wallet/src-tauri/gen/android/.idea/compiler.xml b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/compiler.xml new file mode 100644 index 00000000..b86273d9 --- /dev/null +++ b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/infrastructure/eid-wallet/src-tauri/gen/android/.idea/deploymentTargetSelector.xml b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/deploymentTargetSelector.xml new file mode 100644 index 00000000..b268ef36 --- /dev/null +++ b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/deploymentTargetSelector.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/infrastructure/eid-wallet/src-tauri/gen/android/.idea/deviceManager.xml b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/deviceManager.xml new file mode 100644 index 00000000..91f95584 --- /dev/null +++ b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/deviceManager.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/infrastructure/eid-wallet/src-tauri/gen/android/.idea/gradle.xml b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/gradle.xml new file mode 100644 index 00000000..1993afa0 --- /dev/null +++ b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/gradle.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/infrastructure/eid-wallet/src-tauri/gen/android/.idea/kotlinc.xml b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/kotlinc.xml new file mode 100644 index 00000000..fe63bb67 --- /dev/null +++ b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/kotlinc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/infrastructure/eid-wallet/src-tauri/gen/android/.idea/migrations.xml b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/migrations.xml new file mode 100644 index 00000000..f8051a6f --- /dev/null +++ b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/infrastructure/eid-wallet/src-tauri/gen/android/.idea/misc.xml b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/misc.xml new file mode 100644 index 00000000..f7608eda --- /dev/null +++ b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/infrastructure/eid-wallet/src-tauri/gen/android/.idea/runConfigurations.xml b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/runConfigurations.xml new file mode 100644 index 00000000..16660f1d --- /dev/null +++ b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/runConfigurations.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/infrastructure/eid-wallet/src-tauri/gen/android/.idea/vcs.xml b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/vcs.xml new file mode 100644 index 00000000..bc599707 --- /dev/null +++ b/infrastructure/eid-wallet/src-tauri/gen/android/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/infrastructure/eid-wallet/src-tauri/gen/android/app/src/main/AndroidManifest.xml b/infrastructure/eid-wallet/src-tauri/gen/android/app/src/main/AndroidManifest.xml index bebc7c72..9b9a4624 100644 --- a/infrastructure/eid-wallet/src-tauri/gen/android/app/src/main/AndroidManifest.xml +++ b/infrastructure/eid-wallet/src-tauri/gen/android/app/src/main/AndroidManifest.xml @@ -22,6 +22,26 @@ + + + + + + + + + + + + + + + + + + + + Result { pub fn run() { tauri::Builder::default() .plugin(tauri_plugin_opener::init()) + .plugin(tauri_plugin_deep_link::init()) .plugin(tauri_plugin_store::Builder::new().build()) .setup(move |_app| { #[cfg(mobile)] diff --git a/infrastructure/eid-wallet/src-tauri/tauri.conf.json b/infrastructure/eid-wallet/src-tauri/tauri.conf.json index a7e7c556..fd5b48c4 100644 --- a/infrastructure/eid-wallet/src-tauri/tauri.conf.json +++ b/infrastructure/eid-wallet/src-tauri/tauri.conf.json @@ -22,6 +22,15 @@ "csp": null } }, + "plugins": { + "deep-link": { + "mobile": [ + { + "scheme": ["w3ds"] + } + ] + } + }, "bundle": { "active": true, "targets": "all", diff --git a/infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte b/infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte index 3ca20993..ef8b4149 100644 --- a/infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte +++ b/infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte @@ -6,6 +6,7 @@ import { Drawer } from "$lib/ui"; import * as Button from "$lib/ui/Button"; import { QrCodeIcon, Settings02Icon } from "@hugeicons/core-free-icons"; import { HugeiconsIcon } from "@hugeicons/svelte"; +import { getCurrent } from "@tauri-apps/plugin-deep-link"; import { type Snippet, getContext, onMount } from "svelte"; import { onDestroy } from "svelte"; import { Shadow } from "svelte-loading-spinners"; @@ -36,7 +37,7 @@ async function retryProfileCreation() { const globalState = getContext<() => GlobalState>("globalState")(); -onMount(() => { +onMount(async () => { // Load initial data (async () => { const userInfo = await globalState.userController.user; @@ -46,9 +47,6 @@ onMount(() => { ename = vaultData?.ename; })(); - // Get initial profile creation status - profileCreationStatus = globalState.vaultController.profileCreationStatus; - // Set up a watcher for profile creation status changes const checkStatus = () => { profileCreationStatus = @@ -58,6 +56,22 @@ onMount(() => { // Check status periodically statusInterval = setInterval(checkStatus, 1000); + const urls = await getCurrent(); + if (urls && urls.length > 0) { + try { + const url = urls[0]; + const [scheme, ...rest] = url.split("://"); + const deeplink = rest.join("://"); + console.log("URL", scheme, deeplink); + if (scheme !== "w3ds") { + console.error("unsupported url scheme"); + } + goto(`/scan-qr?${deeplink}`); + } catch (error) { + console.error("Error processing deep link:", error); + } + } + const currentHour = new Date().getHours(); greeting = currentHour > 17 diff --git a/infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte b/infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte index ec701977..e23f8364 100644 --- a/infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte +++ b/infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte @@ -1,5 +1,6 @@
@@ -25,7 +25,7 @@ profileSrc="https://picsum.photos/200/300" >
-

{username}

+

{handle}

{userEmail}

diff --git a/platforms/pictique/src/lib/fragments/UserRequest/UserRequest.svelte b/platforms/pictique/src/lib/fragments/UserRequest/UserRequest.svelte index 025f5dbb..16edd62a 100644 --- a/platforms/pictique/src/lib/fragments/UserRequest/UserRequest.svelte +++ b/platforms/pictique/src/lib/fragments/UserRequest/UserRequest.svelte @@ -5,12 +5,12 @@ interface IUserRequestprops extends HTMLAttributes { userImgSrc: string; - userName: string; + handle: string; description: string; handleFollow: () => Promise; } - let { userImgSrc, userName, description, ...restProps }: IUserRequestprops = $props(); + let { userImgSrc, handle, description, ...restProps }: IUserRequestprops = $props();
-

{userName}

+

{handle}

{description}

@@ -32,7 +32,7 @@ @description A user request card component displaying avatar, name, description, and a follow button. @props - userImgSrc: URL string for the user's avatar image. - - userName: Display name of the user. + - handle: Display name of the user. - description: A short description or context for the request. - handleFollow: Async function to execute when the "Follow" button is clicked. - (spread) HTMLAttributes: Additional HTML attributes passed to the root
element. @@ -47,7 +47,7 @@ diff --git a/platforms/pictique/src/lib/stores/users.ts b/platforms/pictique/src/lib/stores/users.ts index 5ca291ca..2553ec31 100644 --- a/platforms/pictique/src/lib/stores/users.ts +++ b/platforms/pictique/src/lib/stores/users.ts @@ -1,8 +1,9 @@ -import { writable } from 'svelte/store'; import { apiClient } from '$lib/utils/axios'; +import { writable } from 'svelte/store'; export interface User { id: string; + ename: string; handle: string; name: string; description: string; diff --git a/platforms/pictique/src/lib/types.ts b/platforms/pictique/src/lib/types.ts index 19f51dde..ac3d8a29 100644 --- a/platforms/pictique/src/lib/types.ts +++ b/platforms/pictique/src/lib/types.ts @@ -22,7 +22,7 @@ export type PostData = { id: string; avatar: string; userId: string; - username: string; + handle: string; imgUris: string[]; caption: string; time: string; diff --git a/platforms/pictique/src/routes/(protected)/discover/+page.svelte b/platforms/pictique/src/routes/(protected)/discover/+page.svelte index df6e20dc..8d12798c 100644 --- a/platforms/pictique/src/routes/(protected)/discover/+page.svelte +++ b/platforms/pictique/src/routes/(protected)/discover/+page.svelte @@ -66,7 +66,7 @@
  • handleFollow(user.id)} onclick={() => handleProfileClick(user.id)} diff --git a/platforms/pictique/src/routes/(protected)/home/+page.svelte b/platforms/pictique/src/routes/(protected)/home/+page.svelte index ab7e017f..37f24de2 100644 --- a/platforms/pictique/src/routes/(protected)/home/+page.svelte +++ b/platforms/pictique/src/routes/(protected)/home/+page.svelte @@ -100,7 +100,7 @@
  • p.id === profile?.id) !== undefined} diff --git a/platforms/pictique/src/routes/(protected)/messages/+page.svelte b/platforms/pictique/src/routes/(protected)/messages/+page.svelte index ae8e8455..400db3c6 100644 --- a/platforms/pictique/src/routes/(protected)/messages/+page.svelte +++ b/platforms/pictique/src/routes/(protected)/messages/+page.svelte @@ -32,7 +32,7 @@ return { id: c.id, avatar, - username: memberNames.join(', '), + handle: memberNames.join(', '), unread: c.latestMessage ? c.latestMessage.isRead : false, text: c.latestMessage?.text ?? 'No message yet' }; @@ -113,11 +113,11 @@ { - heading.set(message.username); + heading.set(message.handle); goto(`/messages/${message.id}`); }} /> diff --git a/platforms/pictique/src/routes/(protected)/post/+page.svelte b/platforms/pictique/src/routes/(protected)/post/+page.svelte index 009d9665..1db50996 100644 --- a/platforms/pictique/src/routes/(protected)/post/+page.svelte +++ b/platforms/pictique/src/routes/(protected)/post/+page.svelte @@ -1,7 +1,6 @@ @@ -89,7 +88,7 @@ - + @@ -123,7 +122,7 @@ =6.9.0'} - '@babel/helpers@7.27.6': - resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} + '@babel/helpers@7.28.2': + resolution: {integrity: sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==} engines: {node: '>=6.9.0'} '@babel/parser@7.27.2': @@ -1992,6 +1992,10 @@ packages: '@firebase/component@0.6.9': resolution: {integrity: sha512-gm8EUEJE/fEac86AvHn8Z/QW8BvR56TBw3hMW0O838J/1mThYQXAIQBgUv75EqlCZfdawpWLrKt1uXvp9ciK3Q==} + '@firebase/component@0.7.0': + resolution: {integrity: sha512-wR9En2A+WESUHexjmRHkqtaVH94WLNKt6rmeqZhSLBybg4Wyf0Umk04SZsS6sBq4102ZsDBFwoqMqJYj2IoDSg==} + engines: {node: '>=20.0.0'} + '@firebase/database-compat@0.3.4': resolution: {integrity: sha512-kuAW+l+sLMUKBThnvxvUZ+Q1ZrF/vFJ58iUY9kAcbX48U03nVzIF6Tmkf0p3WVQwMqiXguSgtOPIB6ZCeF+5Gg==} @@ -2021,6 +2025,10 @@ packages: '@firebase/database@1.0.8': resolution: {integrity: sha512-dzXALZeBI1U5TXt6619cv0+tgEhJiwlUtQ55WNZY7vGAjv7Q1QioV969iYwt1AQQ0ovHnEW0YW9TiBfefLvErg==} + '@firebase/database@1.1.0': + resolution: {integrity: sha512-gM6MJFae3pTyNLoc9VcJNuaUDej0ctdjn3cVtILo3D5lpp0dmUHHLFN/pUKe7ImyeB1KAvRlEYxvIHNF04Filg==} + engines: {node: '>=20.0.0'} + '@firebase/firestore-compat@0.3.12': resolution: {integrity: sha512-mazuNGAx5Kt9Nph0pm6ULJFp/+j7GSsx+Ncw1GrnKl+ft1CQ4q2LcUssXnjqkX2Ry0fNGqUzC1mfIUrk9bYtjQ==} peerDependencies: @@ -2072,9 +2080,9 @@ packages: '@firebase/logger@0.4.2': resolution: {integrity: sha512-Q1VuA5M1Gjqrwom6I6NUU4lQXdo9IAQieXlujeHZWvRt1b7qQ0KwBaNAjgxG27jgF9/mUwsNmO8ptBCGVYhB0A==} - '@firebase/logger@0.4.4': - resolution: {integrity: sha512-mH0PEh1zoXGnaR8gD1DeGeNZtWFKbnz9hDO91dIml3iou1gpOnLqXQ2dJfB71dj6dpmUjcQ6phY3ZZJbjErr9g==} - engines: {node: '>=18.0.0'} + '@firebase/logger@0.5.0': + resolution: {integrity: sha512-cGskaAvkrnh42b3BA3doDWeBmuHFO/Mx5A83rbRDYakPjO9bJtRL3dX7javzc2Rr/JHZf4HlterTW2lUkfeN4g==} + engines: {node: '>=20.0.0'} '@firebase/messaging-compat@0.2.4': resolution: {integrity: sha512-lyFjeUhIsPRYDPNIkYX1LcZMpoVbBWXX4rPl7c/rqc7G+EUea7IEtSt4MxTvh6fDfPuzLn7+FZADfscC+tNMfg==} @@ -2182,26 +2190,26 @@ packages: resolution: {integrity: sha512-7/5LRgykyOfQENcm6hDKP8SX/u9XxE5YOiWOkgkwcoO+cG8xT/cyOvp9wwN3IxfdYgpHs8CE7Nq2PKX2lNaEXw==} engines: {node: '>=14'} - '@graphql-tools/executor@1.4.7': - resolution: {integrity: sha512-U0nK9jzJRP9/9Izf1+0Gggd6K6RNRsheFo1gC/VWzfnsr0qjcOSS9qTjY0OTC5iTPt4tQ+W5Zpw/uc7mebI6aA==} + '@graphql-tools/executor@1.4.9': + resolution: {integrity: sha512-SAUlDT70JAvXeqV87gGzvDzUGofn39nvaVcVhNf12Dt+GfWHtNNO/RCn/Ea4VJaSLGzraUd41ObnN3i80EBU7w==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/merge@9.0.24': - resolution: {integrity: sha512-NzWx/Afl/1qHT3Nm1bghGG2l4jub28AdvtG11PoUlmjcIjnFBJMv4vqL0qnxWe8A82peWo4/TkVdjJRLXwgGEw==} + '@graphql-tools/merge@9.1.1': + resolution: {integrity: sha512-BJ5/7Y7GOhTuvzzO5tSBFL4NGr7PVqTJY3KeIDlVTT8YLcTXtBR+hlrC3uyEym7Ragn+zyWdHeJ9ev+nRX1X2w==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/schema@10.0.23': - resolution: {integrity: sha512-aEGVpd1PCuGEwqTXCStpEkmheTHNdMayiIKH1xDWqYp9i8yKv9FRDgkGrY4RD8TNxnf7iII+6KOBGaJ3ygH95A==} + '@graphql-tools/schema@10.0.25': + resolution: {integrity: sha512-/PqE8US8kdQ7lB9M5+jlW8AyVjRGCKU7TSktuW3WNKSKmDO0MK1wakvb5gGdyT49MjAIb4a3LWxIpwo5VygZuw==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/utils@10.8.6': - resolution: {integrity: sha512-Alc9Vyg0oOsGhRapfL3xvqh1zV8nKoFUdtLhXX7Ki4nClaIJXckrA86j+uxEuG3ic6j4jlM1nvcWXRn/71AVLQ==} + '@graphql-tools/utils@10.9.1': + resolution: {integrity: sha512-B1wwkXk9UvU7LCBkPs8513WxOQ2H8Fo5p8HR1+Id9WmYE5+bd51vqN+MbrqvWczHCH2gwkREgHJN88tE0n1FCw==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -3602,6 +3610,11 @@ packages: peerDependencies: react: '>= 16 || ^19.0.0-rc' + '@sidekickicons/react@0.13.0': + resolution: {integrity: sha512-v4KQZ+nfca5NAa2vT4S5UV1z2QxDWoAsNHQGToczOnfKN6mvZW2Jr48ZbYhYHzV2BUKp8Kywe8/+t+Ue73e3QQ==} + peerDependencies: + react: '>= 16 || ^19.0.0-rc' + '@sinclair/typebox@0.24.51': resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} @@ -4229,6 +4242,10 @@ packages: resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} + '@testing-library/dom@10.4.1': + resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} + engines: {node: '>=18'} + '@testing-library/dom@8.20.1': resolution: {integrity: sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==} engines: {node: '>=12'} @@ -4524,6 +4541,9 @@ packages: '@types/linkify-it@5.0.0': resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + '@types/long@4.0.2': resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} @@ -4542,8 +4562,8 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node-fetch@2.6.12': - resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} + '@types/node-fetch@2.6.13': + resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==} '@types/node@18.19.103': resolution: {integrity: sha512-hHTHp+sEz6SxFsp+SA+Tqrua3AbmlAw+Y//aEwdHrdZkYVRWdvWD3y5uPZ0flYOkgskaFWqZ/YGFm3FaFQ0pRw==} @@ -4569,8 +4589,8 @@ packages: '@types/parse5@6.0.3': resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} - '@types/pg@8.15.4': - resolution: {integrity: sha512-I6UNVBAoYbvuWkkU3oosC8yxqH21f4/Jc4DK71JLG3dT2mdlGe1z+ep/LQGXaKaOgcvUrsQoPRqfgtMcvZiJhg==} + '@types/pg@8.15.5': + resolution: {integrity: sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==} '@types/prettier@2.7.3': resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} @@ -5035,20 +5055,20 @@ packages: resolution: {integrity: sha512-ApcWxkrs1WmEMS2CaLLFUEem/49erT3sxIVjpzU5f6zmVcnijtDSrhoK2zVobOIikZJdH63jdAXOrvjf6eOUNQ==} engines: {node: '>=18.0.0'} - '@whatwg-node/fetch@0.10.8': - resolution: {integrity: sha512-Rw9z3ctmeEj8QIB9MavkNJqekiu9usBCSMZa+uuAvM0lF3v70oQVCXNppMIqaV6OTZbdaHF1M2HLow58DEw+wg==} + '@whatwg-node/fetch@0.10.9': + resolution: {integrity: sha512-2TaXKmjy53cybNtaAtzbPOzwIPkjXbzvZcimnaJxQwYXKSC8iYnWoZOyT4+CFt8w0KDieg5J5dIMNzUrW/UZ5g==} engines: {node: '>=18.0.0'} - '@whatwg-node/node-fetch@0.7.21': - resolution: {integrity: sha512-QC16IdsEyIW7kZd77aodrMO7zAoDyyqRCTLg+qG4wqtP4JV9AA+p7/lgqMdD29XyiYdVvIdFrfI9yh7B1QvRvw==} + '@whatwg-node/node-fetch@0.7.24': + resolution: {integrity: sha512-hTwkjzMcLp8rgcxXvNrLrrZ1D0AxWQE9EDr7OGXzekWQy4Wt3Z8Wm75ru7DXAfAIpEnWsJxt149hx6Hewc+C/Q==} engines: {node: '>=18.0.0'} '@whatwg-node/promise-helpers@1.3.2': resolution: {integrity: sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==} engines: {node: '>=16.0.0'} - '@whatwg-node/server@0.10.10': - resolution: {integrity: sha512-GwpdMgUmwIp0jGjP535YtViP/nnmETAyHpGPWPZKdX++Qht/tSLbGXgFUMSsQvEACmZAR1lAPNu2CnYL1HpBgg==} + '@whatwg-node/server@0.10.11': + resolution: {integrity: sha512-WkwcgL54LCR6oJB6tAD5lhpvrgvVUSoM216Y+GlcZJU3+25G2lO4FWKSWRAPgeUX5eoYgBoZ2VBF2biHGtTeSQ==} engines: {node: '>=18.0.0'} D@1.0.0: @@ -5368,10 +5388,10 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} - babel-preset-current-node-syntax@1.1.0: - resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + babel-preset-current-node-syntax@1.2.0: + resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': ^7.0.0 || ^8.0.0-0 babel-preset-jest@28.1.3: resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==} @@ -6742,8 +6762,8 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} - form-data@2.5.3: - resolution: {integrity: sha512-XHIrMD0NpDrNM/Ckf7XJiBbLl57KEhT3+i3yY+eWm+cqYZJQTZrKo8Y8AWKnuV5GT4scfuUGt9LzNoIx3dU1nQ==} + form-data@2.5.5: + resolution: {integrity: sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==} engines: {node: '>= 0.12'} form-data@4.0.2: @@ -7628,8 +7648,8 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + jiti@2.5.1: + resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} hasBin: true jose@4.15.9: @@ -7644,6 +7664,9 @@ packages: js-sha256@0.11.1: resolution: {integrity: sha512-o6WSo/LUvY2uC4j7mO50a2ms7E/EAdbP0swigLV+nzHKTTaYnaLIWJ02VdXrsJX0vGedDESQnLsOekr94ryfjg==} + js-sha256@0.11.1: + resolution: {integrity: sha512-o6WSo/LUvY2uC4j7mO50a2ms7E/EAdbP0swigLV+nzHKTTaYnaLIWJ02VdXrsJX0vGedDESQnLsOekr94ryfjg==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -7770,6 +7793,10 @@ packages: resolution: {integrity: sha512-FIyV/64EkKhJmjgC0g2hygpBv5RNWVPyNCqSAD7eTCv6eFWNIi4PN1UvdSJGicN/o35bnevgis4Y0UDC0qi8jQ==} engines: {node: '>=14.0.0'} + kysely@0.27.6: + resolution: {integrity: sha512-FIyV/64EkKhJmjgC0g2hygpBv5RNWVPyNCqSAD7eTCv6eFWNIi4PN1UvdSJGicN/o35bnevgis4Y0UDC0qi8jQ==} + engines: {node: '>=14.0.0'} + language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -8354,8 +8381,8 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} deprecated: This package is no longer supported. - nwsapi@2.2.20: - resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} + nwsapi@2.2.21: + resolution: {integrity: sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==} oauth4webapi@3.5.1: resolution: {integrity: sha512-txg/jZQwcbaF7PMJgY7aoxc9QuCxHVFMiEkDIJ60DwDz3PbtXPQnrzo+3X4IRYGChIwWLabRBRpf1k9hO9+xrQ==} @@ -8967,6 +8994,10 @@ packages: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -9043,8 +9074,8 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-is@19.1.0: - resolution: {integrity: sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==} + react-is@19.1.1: + resolution: {integrity: sha512-tr41fA15Vn8p4X9ntI+yCyeGSf1TlYaY5vlTZfQmeLBrFo3psOPX6HhTDnFNL9uj3EhP0KAQ80cugCl4b4BERA==} react-qr-code@2.0.15: resolution: {integrity: sha512-MkZcjEXqVKqXEIMVE0mbcGgDpkfSdd8zhuzXEl9QzYeNcw8Hq2oVIzDLWuZN2PQBwM5PWjc2S31K8Q1UbcFMfw==} @@ -10384,6 +10415,11 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -10837,11 +10873,11 @@ snapshots: '@babel/generator': 7.28.0 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@babel/helpers': 7.27.6 + '@babel/helpers': 7.28.2 '@babel/parser': 7.28.0 '@babel/template': 7.27.2 '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 convert-source-map: 2.0.0 debug: 4.4.1(supports-color@5.5.0) gensync: 1.0.0-beta.2 @@ -10861,7 +10897,7 @@ snapshots: '@babel/generator@7.28.0': dependencies: '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@jridgewell/gen-mapping': 0.3.12 '@jridgewell/trace-mapping': 0.3.29 jsesc: 3.1.0 @@ -10879,7 +10915,7 @@ snapshots: '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -10900,10 +10936,10 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helpers@7.27.6': + '@babel/helpers@7.28.2': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@babel/parser@7.27.2': dependencies: @@ -10911,7 +10947,7 @@ snapshots: '@babel/parser@7.28.0': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.0)': dependencies: @@ -11004,7 +11040,7 @@ snapshots: dependencies: '@babel/code-frame': 7.27.1 '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@babel/traverse@7.28.0': dependencies: @@ -11013,7 +11049,7 @@ snapshots: '@babel/helper-globals': 7.28.0 '@babel/parser': 7.28.0 '@babel/template': 7.27.2 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 debug: 4.4.1(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -11383,7 +11419,7 @@ snapshots: '@eslint/config-array@0.20.0': dependencies: '@eslint/object-schema': 2.1.6 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -11645,6 +11681,11 @@ snapshots: '@firebase/util': 1.10.0 tslib: 2.8.1 + '@firebase/component@0.7.0': + dependencies: + '@firebase/util': 1.13.0 + tslib: 2.8.1 + '@firebase/database-compat@0.3.4': dependencies: '@firebase/component': 0.6.4 @@ -11716,6 +11757,16 @@ snapshots: faye-websocket: 0.11.4 tslib: 2.8.1 + '@firebase/database@1.1.0': + dependencies: + '@firebase/app-check-interop-types': 0.3.3 + '@firebase/auth-interop-types': 0.2.4 + '@firebase/component': 0.7.0 + '@firebase/logger': 0.5.0 + '@firebase/util': 1.13.0 + faye-websocket: 0.11.4 + tslib: 2.8.1 + '@firebase/firestore-compat@0.3.12(@firebase/app-compat@0.2.13)(@firebase/app-types@0.9.0)(@firebase/app@0.9.13)(encoding@0.1.13)': dependencies: '@firebase/app-compat': 0.2.13 @@ -11807,7 +11858,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@firebase/logger@0.4.4': + '@firebase/logger@0.5.0': dependencies: tslib: 2.8.1 @@ -11987,9 +12038,9 @@ snapshots: - supports-color optional: true - '@graphql-tools/executor@1.4.7(graphql@16.11.0)': + '@graphql-tools/executor@1.4.9(graphql@16.11.0)': dependencies: - '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/disposablestack': 0.0.6 @@ -11997,20 +12048,20 @@ snapshots: graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/merge@9.0.24(graphql@16.11.0)': + '@graphql-tools/merge@9.1.1(graphql@16.11.0)': dependencies: - '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/schema@10.0.23(graphql@16.11.0)': + '@graphql-tools/schema@10.0.25(graphql@16.11.0)': dependencies: - '@graphql-tools/merge': 9.0.24(graphql@16.11.0) - '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + '@graphql-tools/merge': 9.1.1(graphql@16.11.0) + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/utils@10.8.6(graphql@16.11.0)': + '@graphql-tools/utils@10.9.1(graphql@16.11.0)': dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) '@whatwg-node/promise-helpers': 1.3.2 @@ -13528,6 +13579,10 @@ snapshots: '@rushstack/eslint-patch@1.11.0': {} + '@sidekickicons/react@0.13.0(react@18.2.0)': + dependencies: + react: 18.2.0 + '@sidekickicons/react@0.13.0(react@18.2.0)': dependencies: react: 18.2.0 @@ -13746,6 +13801,11 @@ snapshots: storybook: 9.0.18(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.5.3) unplugin: 1.16.1 + '@storybook/csf-plugin@9.0.18(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.6.2))': + dependencies: + storybook: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.6.2) + unplugin: 1.16.1 + '@storybook/csf@0.1.12': dependencies: type-fest: 2.19.0 @@ -14387,6 +14447,17 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 + '@testing-library/dom@10.4.1': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/runtime': 7.28.2 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + picocolors: 1.1.1 + pretty-format: 27.5.1 + '@testing-library/dom@8.20.1': dependencies: '@babel/code-frame': 7.27.1 @@ -14451,7 +14522,7 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@testing-library/user-event@13.5.0(@testing-library/dom@10.4.0)': + '@testing-library/user-event@13.5.0(@testing-library/dom@10.4.1)': dependencies: '@babel/runtime': 7.27.1 '@testing-library/dom': 10.4.0 @@ -14460,9 +14531,9 @@ snapshots: dependencies: '@testing-library/dom': 10.4.0 - '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.0)': + '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': dependencies: - '@testing-library/dom': 10.4.0 + '@testing-library/dom': 10.4.1 '@testing-library/user-event@14.6.1(@testing-library/dom@9.3.4)': dependencies: @@ -14650,23 +14721,23 @@ snapshots: '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.7 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@types/babel__template@7.4.4': dependencies: '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@types/babel__traverse@7.20.7': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@types/body-parser@1.19.5': dependencies: @@ -14781,7 +14852,7 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node-fetch@2.6.12': + '@types/node-fetch@2.6.13': dependencies: '@types/node': 20.17.50 form-data: 4.0.2 @@ -14812,7 +14883,7 @@ snapshots: '@types/parse5@6.0.3': {} - '@types/pg@8.15.4': + '@types/pg@8.15.5': dependencies: '@types/node': 20.16.11 pg-protocol: 1.10.0 @@ -14834,7 +14905,11 @@ snapshots: '@types/react-dom@18.3.7(@types/react@18.0.16)': dependencies: - '@types/react': 18.0.16 + '@types/react': 19.1.9 + + '@types/react-transition-group@4.4.12(@types/react@19.1.9)': + dependencies: + '@types/react': 19.1.9 '@types/react-dom@19.1.6(@types/react@19.1.5)': dependencies: @@ -14859,7 +14934,7 @@ snapshots: '@types/caseless': 0.12.5 '@types/node': 20.17.50 '@types/tough-cookie': 4.0.5 - form-data: 2.5.3 + form-data: 2.5.5 optional: true '@types/resolve@1.20.2': {} @@ -15555,12 +15630,12 @@ snapshots: dependencies: tslib: 2.8.1 - '@whatwg-node/fetch@0.10.8': + '@whatwg-node/fetch@0.10.9': dependencies: - '@whatwg-node/node-fetch': 0.7.21 + '@whatwg-node/node-fetch': 0.7.24 urlpattern-polyfill: 10.1.0 - '@whatwg-node/node-fetch@0.7.21': + '@whatwg-node/node-fetch@0.7.24': dependencies: '@fastify/busboy': 3.1.1 '@whatwg-node/disposablestack': 0.0.6 @@ -15571,11 +15646,11 @@ snapshots: dependencies: tslib: 2.8.1 - '@whatwg-node/server@0.10.10': + '@whatwg-node/server@0.10.11': dependencies: '@envelop/instrumentation': 1.0.0 '@whatwg-node/disposablestack': 0.0.6 - '@whatwg-node/fetch': 0.10.8 + '@whatwg-node/fetch': 0.10.9 '@whatwg-node/promise-helpers': 1.3.2 tslib: 2.8.1 @@ -15761,6 +15836,8 @@ snapshots: array-timsort@1.0.3: {} + array-timsort@1.0.3: {} + array-union@2.1.0: {} array.prototype.findlast@1.2.5: @@ -15925,14 +16002,14 @@ snapshots: babel-plugin-jest-hoist@28.1.3: dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.7 babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.7 @@ -15942,7 +16019,7 @@ snapshots: cosmiconfig: 7.1.0 resolve: 1.22.10 - babel-preset-current-node-syntax@1.1.0(@babel/core@7.28.0): + babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.0): dependencies: '@babel/core': 7.28.0 '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.0) @@ -15965,13 +16042,13 @@ snapshots: dependencies: '@babel/core': 7.28.0 babel-plugin-jest-hoist: 28.1.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.28.0) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.0) babel-preset-jest@29.6.3(@babel/core@7.28.0): dependencies: '@babel/core': 7.28.0 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.28.0) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.0) balanced-match@1.0.2: {} @@ -16515,6 +16592,10 @@ snapshots: dependencies: ms: 2.1.2 + debug@4.4.1: + dependencies: + ms: 2.1.3 + debug@4.4.1(supports-color@5.5.0): dependencies: ms: 2.1.3 @@ -17508,7 +17589,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 escape-string-regexp: 4.0.0 eslint-scope: 8.3.0 eslint-visitor-keys: 4.2.0 @@ -17528,7 +17609,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.4.2 + jiti: 2.5.1 transitivePeerDependencies: - supports-color @@ -17958,11 +18039,12 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data@2.5.3: + form-data@2.5.5: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 es-set-tostringtag: 2.1.0 + hasown: 2.0.2 mime-types: 2.1.35 safe-buffer: 5.2.1 optional: true @@ -18231,14 +18313,14 @@ snapshots: dependencies: '@envelop/core': 5.2.3 '@envelop/instrumentation': 1.0.0 - '@graphql-tools/executor': 1.4.7(graphql@16.11.0) - '@graphql-tools/schema': 10.0.23(graphql@16.11.0) - '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + '@graphql-tools/executor': 1.4.9(graphql@16.11.0) + '@graphql-tools/schema': 10.0.25(graphql@16.11.0) + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) '@graphql-yoga/logger': 2.0.1 '@graphql-yoga/subscription': 5.0.5 - '@whatwg-node/fetch': 0.10.8 + '@whatwg-node/fetch': 0.10.9 '@whatwg-node/promise-helpers': 1.3.2 - '@whatwg-node/server': 0.10.10 + '@whatwg-node/server': 0.10.11 dset: 3.1.4 graphql: 16.11.0 lru-cache: 10.4.3 @@ -19270,13 +19352,13 @@ snapshots: '@babel/generator': 7.27.1 '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0) '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@jest/expect-utils': 28.1.3 '@jest/transform': 28.1.3 '@jest/types': 28.1.3 '@types/babel__traverse': 7.20.7 '@types/prettier': 2.7.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.28.0) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.0) chalk: 4.1.2 expect: 28.1.3 graceful-fs: 4.2.11 @@ -19298,11 +19380,11 @@ snapshots: '@babel/generator': 7.27.1 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0) - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.28.0) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.0) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -19425,7 +19507,7 @@ snapshots: jiti@1.21.7: {} - jiti@2.4.2: {} + jiti@2.5.1: {} jose@4.15.9: {} @@ -19435,6 +19517,8 @@ snapshots: js-sha256@0.11.1: {} + js-sha256@0.11.1: {} + js-tokens@4.0.0: {} js-tokens@9.0.1: {} @@ -19468,7 +19552,7 @@ snapshots: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.20 + nwsapi: 2.2.21 parse5: 6.0.1 saxes: 5.0.1 symbol-tree: 3.2.4 @@ -19601,6 +19685,8 @@ snapshots: kysely@0.27.6: {} + kysely@0.27.6: {} + language-subtag-registry@0.3.23: {} language-tags@1.0.9: @@ -20092,6 +20178,31 @@ snapshots: - '@babel/core' - babel-plugin-macros + next@15.4.2(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.89.2): + dependencies: + '@next/env': 15.4.2 + '@swc/helpers': 0.5.15 + caniuse-lite: 1.0.30001731 + postcss: 8.4.31 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + styled-jsx: 5.1.6(react@19.1.0) + optionalDependencies: + '@next/swc-darwin-arm64': 15.4.2 + '@next/swc-darwin-x64': 15.4.2 + '@next/swc-linux-arm64-gnu': 15.4.2 + '@next/swc-linux-arm64-musl': 15.4.2 + '@next/swc-linux-x64-gnu': 15.4.2 + '@next/swc-linux-x64-musl': 15.4.2 + '@next/swc-win32-arm64-msvc': 15.4.2 + '@next/swc-win32-x64-msvc': 15.4.2 + '@opentelemetry/api': 1.9.0 + sass: 1.89.2 + sharp: 0.34.3 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + no-case@3.0.4: dependencies: lower-case: 2.0.2 @@ -20179,7 +20290,7 @@ snapshots: set-blocking: 2.0.0 optional: true - nwsapi@2.2.20: {} + nwsapi@2.2.21: {} oauth4webapi@3.5.1: {} @@ -20894,7 +21005,7 @@ snapshots: react-is@18.3.1: {} - react-is@19.1.0: {} + react-is@19.1.1: {} react-qr-code@2.0.15(react@18.2.0): dependencies: @@ -21073,7 +21184,7 @@ snapshots: retry-request@7.0.2(encoding@0.1.13): dependencies: - '@types/request': 2.48.12 + '@types/request': 2.48.13 extend: 3.0.2 teeny-request: 9.0.0(encoding@0.1.13) transitivePeerDependencies: @@ -21432,6 +21543,11 @@ snapshots: sql-highlight@6.0.0: {} + sqlite-wasm-kysely@0.3.0(kysely@0.27.6): + dependencies: + '@sqlite.org/sqlite-wasm': 3.48.0-build4 + kysely: 0.27.6 + sqlite-wasm-kysely@0.3.0(kysely@0.27.6): dependencies: '@sqlite.org/sqlite-wasm': 3.48.0-build4 @@ -22652,7 +22768,7 @@ snapshots: optionalDependencies: '@types/node': 22.15.21 fsevents: 2.3.3 - jiti: 2.4.2 + jiti: 2.5.1 lightningcss: 1.30.1 sass: 1.89.1 tsx: 4.19.4 @@ -22669,7 +22785,7 @@ snapshots: optionalDependencies: '@types/node': 24.0.10 fsevents: 2.3.3 - jiti: 2.4.2 + jiti: 2.5.1 lightningcss: 1.30.1 sass: 1.89.1 tsx: 4.19.4 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 74f12989..7ad2404a 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -5,9 +5,11 @@ packages: - infrastructure/* onlyBuiltDependencies: - '@biomejs/biome' + - '@tailwindcss/oxide' - cpu-features - esbuild - msw - protobufjs - ssh2 - svelte-preprocess + - unrs-resolver