Your music, beautifully tracked. All yours. (coming soon) teal.fm
teal-fm atproto

add profile status lexicon and fix some stuff that got broken

Changed files
+435 -423
apps
amethyst
aqua
lexicons
fm.teal.alpha
packages
lexicons
real
fm
teal
alpha
src
types
fm
teal
alpha
+2 -1
apps/amethyst/.npmrc
··· 1 1 node-linker=hoisted 2 - shamefully-hoist=true 2 + shamefully-hoist=true 3 + enable-pre-post-scripts=true
+27 -16
apps/amethyst/app/(tabs)/index.tsx
··· 5 5 import ActorView from "@/components/actor/actorView"; 6 6 import { useStore } from "@/stores/mainStore"; 7 7 8 + import { Record as ProfileStatusRecord } from "@teal/lexicons/src/types/fm/teal/alpha/actor/profileStatus"; 9 + 8 10 import AuthOptions from "../auth/options"; 9 11 10 12 export default function Screen() { ··· 14 16 const agent = useStore((state) => state.pdsAgent); 15 17 const profile = useStore((state) => state.profiles[agent?.did ?? ""]); 16 18 const tealDid = useStore((state) => state.tealDid); 17 - const [hasTealProfile, setHasTealProfile] = useState<boolean | null>(null); 19 + const [profileStatus, setProfileStatus] = useState<ProfileStatusRecord | null>(null); 20 + const [statusLoading, setStatusLoading] = useState<boolean>(true); 18 21 19 22 useEffect(() => { 20 23 let isMounted = true; 21 24 22 - const fetchProfile = async () => { 25 + const fetchProfileStatus = async () => { 23 26 try { 24 - if (!agent || !tealDid) return; 25 - let res = await agent.call( 26 - "fm.teal.alpha.actor.getProfile", 27 - { actor: agent?.did }, 28 - {}, 29 - { headers: { "atproto-proxy": tealDid + "#teal_fm_appview" } }, 30 - ); 27 + if (!agent) return; 28 + 29 + const res = await agent.call("com.atproto.repo.getRecord", { 30 + repo: agent.did, 31 + collection: "fm.teal.alpha.actor.profileStatus", 32 + rkey: "self", 33 + }); 34 + 31 35 if (isMounted) { 32 - setHasTealProfile(true); 36 + setProfileStatus(res.data.value as ProfileStatusRecord); 33 37 } 34 38 } catch (error) { 35 - setHasTealProfile(false); 36 - console.error("Error fetching profile:", error); 39 + if (isMounted) { 40 + // If no record exists, user hasn't completed onboarding 41 + setProfileStatus(null); 42 + } 43 + console.error("Error fetching profile status:", error); 37 44 if ( 38 45 error instanceof Error && 39 46 error.message.includes("could not resolve proxy did") 40 47 ) { 41 48 router.replace("/offline"); 42 49 } 50 + } finally { 51 + if (isMounted) { 52 + setStatusLoading(false); 53 + } 43 54 } 44 55 }; 45 56 46 - fetchProfile(); 57 + fetchProfileStatus(); 47 58 48 59 return () => { 49 60 isMounted = false; 50 61 }; 51 - }, [agent, tealDid, router]); 62 + }, [agent, router]); 52 63 53 64 if (j !== "loggedIn") { 54 65 return <AuthOptions />; 55 66 } 56 67 57 - if (hasTealProfile !== null && !hasTealProfile) { 68 + if (!statusLoading && (!profileStatus || profileStatus.completedOnboarding === "none")) { 58 69 return ( 59 70 <View className="flex-1 items-center justify-center gap-5 bg-background p-6"> 60 71 <Redirect href="/onboarding" /> ··· 63 74 } 64 75 65 76 // TODO: replace with skeleton 66 - if (!profile || !agent) { 77 + if (!profile || !agent || statusLoading) { 67 78 return ( 68 79 <View className="flex-1 items-center justify-center gap-5 bg-background p-6"> 69 80 <ActivityIndicator size="large" />
+7 -3
apps/amethyst/app/+html.tsx
··· 15 15 content="width=device-width, initial-scale=1, shrink-to-fit=no" 16 16 /> 17 17 18 - {/* 19 - Disable body scrolling on web. This makes ScrollView components work closer to how they do on native. 18 + {/* 19 + Disable body scrolling on web. This makes ScrollView components work closer to how they do on native. 20 20 However, body scrolling is often nice to have for mobile web. If you want to enable it, remove this line. 21 21 */} 22 22 <ScrollViewStyleReset /> 23 23 24 24 {/* Using raw CSS styles as an escape-hatch to ensure the background color never flickers in dark-mode. */} 25 25 <style dangerouslySetInnerHTML={{ __html: responsiveBackground }} /> 26 - {/* Add any additional <head> elements that you want globally available on web... */} 26 + {/* import web-only css */} 27 + <link 28 + rel="stylesheet" 29 + href="web.css" 30 + /> 27 31 </head> 28 32 <body>{children}</body> 29 33 </html>
+80 -6
apps/amethyst/app/onboarding/index.tsx
··· 8 8 import { useStore } from "@/stores/mainStore"; 9 9 10 10 import { Record as ProfileRecord } from "@teal/lexicons/src/types/fm/teal/alpha/actor/profile"; 11 + import { Record as ProfileStatusRecord } from "@teal/lexicons/src/types/fm/teal/alpha/actor/profileStatus"; 11 12 12 13 import DescriptionPage from "./descriptionPage"; 13 14 import DisplayNamePage from "./displayNamePage"; ··· 30 31 const [bannerUri, setBannerUri] = useState(""); 31 32 32 33 const [submissionStep, setSubmissionStep] = useState(0); 33 - const [submissionError, setSubmissionError] = useState(""); 34 + 35 + 36 + // Profile status hooks - must be at top level 37 + const [profileStatus, setProfileStatus] = useState<ProfileStatusRecord | null>(null); 38 + const [statusLoading, setStatusLoading] = useState(true); 34 39 35 40 const router = useRouter(); 36 41 37 42 const agent = useStore((store) => store.pdsAgent); 38 43 const profile = useStore((store) => store.profiles); 44 + 45 + // Check profile status 46 + React.useEffect(() => { 47 + const checkProfileStatus = async () => { 48 + if (!agent) return; 49 + 50 + try { 51 + const res = await agent.call("com.atproto.repo.getRecord", { 52 + repo: agent.did, 53 + collection: "fm.teal.alpha.actor.profileStatus", 54 + rkey: "self", 55 + }); 56 + setProfileStatus(res.data.value as ProfileStatusRecord); 57 + } catch { 58 + // If no record exists, user hasn't completed onboarding 59 + setProfileStatus(null); 60 + } finally { 61 + setStatusLoading(false); 62 + } 63 + }; 64 + 65 + checkProfileStatus(); 66 + }, [agent]); 39 67 40 68 const handleImageSelectionComplete = (avatar: string, banner: string) => { 41 69 setAvatarUri(avatar); ··· 147 175 } 148 176 149 177 console.log(post); 178 + 179 + // Update profile status to mark onboarding as completed 180 + const profileStatusRecord: ProfileStatusRecord = { 181 + completedOnboarding: "profileOnboarding", 182 + createdAt: new Date().toISOString(), 183 + updatedAt: new Date().toISOString(), 184 + }; 185 + 186 + try { 187 + await agent.call( 188 + "com.atproto.repo.createRecord", 189 + {}, 190 + { 191 + repo: agent.did, 192 + collection: "fm.teal.alpha.actor.profileStatus", 193 + rkey: "self", 194 + record: profileStatusRecord, 195 + }, 196 + ); 197 + } catch { 198 + // If record already exists, update it 199 + try { 200 + await agent.call( 201 + "com.atproto.repo.putRecord", 202 + {}, 203 + { 204 + repo: agent.did, 205 + collection: "fm.teal.alpha.actor.profileStatus", 206 + rkey: "self", 207 + record: { 208 + ...profileStatusRecord, 209 + completedOnboarding: "profileOnboarding", 210 + updatedAt: new Date().toISOString(), 211 + }, 212 + }, 213 + ); 214 + } catch (updateError) { 215 + console.error("Error updating profile status:", updateError); 216 + } 217 + } 218 + 150 219 setSubmissionStep(5); 151 220 //redirect to / after 2 seconds 152 221 setTimeout(() => { ··· 158 227 return <div>Loading...</div>; 159 228 } 160 229 161 - // if we already have stuff then go back 162 - // 230 + if (statusLoading) { 231 + return ( 232 + <View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}> 233 + <ActivityIndicator size="large" color="#0000ff" /> 234 + <Text>Checking profile status...</Text> 235 + </View> 236 + ); 237 + } 163 238 164 - console.log(profile); 165 - if (profile[agent?.did!].teal !== null) { 239 + if (profileStatus && profileStatus.completedOnboarding !== "none") { 166 240 return ( 167 241 <Text> 168 - Profile already exists: {JSON.stringify(profile[agent?.did!].teal)} 242 + Onboarding already completed: {profileStatus.completedOnboarding} 169 243 </Text> 170 244 ); 171 245 }
+20
apps/amethyst/assets/web.css
··· 1 + 2 + @supports not selector(::-webkit-scrollbar) { 3 + scrollbar-color: rgba(0, 0, 0, 0.8) transparent; 4 + scrollbar-width: thin; 5 + } 6 + 7 + ::-webkit-scrollbar { 8 + width: 7px; 9 + } 10 + ::-webkit-scrollbar-track { 11 + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); 12 + } 13 + ::-webkit-scrollbar-thumb { 14 + background-color: darkslategray; 15 + outline: 1px solid slategrey; 16 + border-radius: 99px; 17 + } 18 + ::webkit-scrollbar-thumb:hover { 19 + background-color: slategray; 20 + }
-21
apps/amethyst/global.css
··· 4 4 5 5 @layer base { 6 6 :root { 7 - font-variation-settings: "opsz" 10; 8 7 --base-font-family: "EBGaramond"; 9 8 --background: 313 35% 98%; 10 9 --foreground: 313 79% 4%; ··· 62 61 .var-font-soft { 63 62 font-variation-settings: "SOFT" 100; 64 63 } 65 - 66 - @supports not selector(::-webkit-scrollbar) { 67 - scrollbar-color: rgba(0, 0, 0, 0.8) transparent; 68 - scrollbar-width: thin; 69 - } 70 - 71 - ::-webkit-scrollbar { 72 - width: 7px; 73 - } 74 - ::-webkit-scrollbar-track { 75 - -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); 76 - } 77 - ::-webkit-scrollbar-thumb { 78 - background-color: darkslategray; 79 - outline: 1px solid slategrey; 80 - border-radius: 99px; 81 - } 82 - ::webkit-scrollbar-thumb:hover { 83 - background-color: slategray; 84 - }
+2
apps/amethyst/package.json
··· 10 10 "web": "expo start --web", 11 11 "build": "expo export --output-dir ./build --platform all", 12 12 "build:web": "expo export --output-dir ./build --platform web --clear", 13 + "build:ios": "expo export --output-dir ./build --platform ios --clear", 13 14 "test": "jest --watchAll", 14 15 "lexgen": "lex gen-server ./lexicons/generated/server/ ./lexicons/src/" 15 16 }, ··· 55 56 "react-compiler-runtime": "19.0.0-beta-37ed2a7-20241206", 56 57 "react-dom": "19.0.0", 57 58 "react-native": "0.79.2", 59 + "react-native-css-interop": "^0.1.18", 58 60 "react-native-gesture-handler": "~2.24.0", 59 61 "react-native-reanimated": "~3.17.5", 60 62 "react-native-safe-area-context": "5.4.0",
-40
apps/aqua/package.json
··· 2 2 "name": "@repo/aqua", 3 3 "private": true, 4 4 "scripts": { 5 - "dev": "tsx watch --clear-screen=false src/index.ts | pino-pretty", 6 - "build": "tsup && cp -r public dist/", 7 - "start": "node dist/index.cjs | pino-pretty", 8 - "clean": "rimraf dist coverage", 9 - "check-types": "tsc --noEmit" 10 - }, 11 - "dependencies": { 12 - "@atproto/api": "^0.13.15", 13 - "@atproto/common": "^0.4.4", 14 - "@atproto/identity": "^0.4.3", 15 - "@atproto/lexicon": "^0.4.2", 16 - "@atproto/oauth-client-node": "^0.2.1", 17 - "@atproto/sync": "^0.1.5", 18 - "@atproto/syntax": "^0.3.0", 19 - "@atproto/xrpc-server": "^0.7.4", 20 - "@braintree/sanitize-url": "^7.1.0", 21 - "@hono/node-server": "^1.13.7", 22 - "@libsql/client": "^0.14.0", 23 - "@teal/db": "workspace:*", 24 - "@teal/lexicons": "workspace:*", 25 - "dotenv": "^16.4.5", 26 - "dotenv-expand": "^12.0.2", 27 - "drizzle-orm": "^0.38.3", 28 - "envalid": "^8.0.0", 29 - "hono": "^4.6.9", 30 - "jose": "^5.9.6", 31 - "pino": "^9.5.0", 32 - "turbo": "^2.2.3", 33 - "uhtml": "^4.5.11" 34 - }, 35 - "devDependencies": { 36 - "@atproto/lex-cli": "^0.5.4", 37 - "@teal/tsconfig": "workspace:*", 38 - "@types/node": "^20.17.6", 39 - "drizzle-kit": "^0.30.1", 40 - "pino-pretty": "^13.0.0", 41 - "rimraf": "^6.0.1", 42 - "tsup": "^8.3.5", 43 - "tsx": "^4.19.2", 44 - "typescript": "^5.6.3", 45 5 "build": "cargo build --release", 46 6 "build:rust": "cargo build --release", 47 7 "dev": "cargo watch -x 'run'",
+1 -3
compose.dev.yml
··· 45 45 - app_network 46 46 depends_on: 47 47 - postgres 48 - 48 + 49 49 satellite: 50 50 image: ghcr.io/espeon/satellite 51 51 ports: ··· 71 71 volumes: 72 72 - piper_data:/db 73 73 - garnet 74 - env_file: 75 - - .env 76 74 77 75 garnet: 78 76 image: ghcr.io/microsoft/garnet:latest
+32
lexicons/fm.teal.alpha/actor/profileStatus.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "fm.teal.alpha.actor.profileStatus", 4 + "defs": { 5 + "main": { 6 + "type": "record", 7 + "description": "This lexicon is in a not officially released state. It is subject to change. | A declaration of the profile status of the actor.", 8 + "key": "literal:self", 9 + "record": { 10 + "type": "object", 11 + "required": ["completedOnboarding"], 12 + "properties": { 13 + "completedOnboarding": { 14 + "type": "string", 15 + "description": "The onboarding completion status", 16 + "knownValues": ["none", "profileOnboarding", "playOnboarding", "complete"] 17 + }, 18 + "createdAt": { 19 + "type": "string", 20 + "format": "datetime", 21 + "description": "The timestamp when this status was created" 22 + }, 23 + "updatedAt": { 24 + "type": "string", 25 + "format": "datetime", 26 + "description": "The timestamp when this status was last updated" 27 + } 28 + } 29 + } 30 + } 31 + } 32 + }
+32
packages/lexicons/real/fm/teal/alpha/actor/profileStatus.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "fm.teal.alpha.actor.profileStatus", 4 + "defs": { 5 + "main": { 6 + "type": "record", 7 + "description": "This lexicon is in a not officially released state. It is subject to change. | A declaration of the profile status and onboarding completion state of the actor.", 8 + "key": "literal:self", 9 + "record": { 10 + "type": "object", 11 + "required": ["completedOnboarding"], 12 + "properties": { 13 + "completedOnboarding": { 14 + "type": "string", 15 + "description": "The onboarding completion status", 16 + "knownValues": ["none", "profileOnboarding", "playOnboarding", "complete"] 17 + }, 18 + "createdAt": { 19 + "type": "string", 20 + "format": "datetime", 21 + "description": "The timestamp when this status was created" 22 + }, 23 + "updatedAt": { 24 + "type": "string", 25 + "format": "datetime", 26 + "description": "The timestamp when this status was last updated" 27 + } 28 + } 29 + } 30 + } 31 + } 32 + }
+34
packages/lexicons/src/lexicons.ts
··· 446 446 }, 447 447 }, 448 448 }, 449 + FmTealAlphaActorProfileStatus: { 450 + lexicon: 1, 451 + id: "fm.teal.alpha.actor.profileStatus", 452 + defs: { 453 + main: { 454 + type: "record", 455 + description: 456 + "This lexicon is in a not officially released state. It is subject to change. | A declaration of the profile status and onboarding completion state of the actor.", 457 + key: "literal:self", 458 + record: { 459 + type: "object", 460 + required: ["completedOnboarding"], 461 + properties: { 462 + completedOnboarding: { 463 + type: "string", 464 + description: "The onboarding completion status", 465 + knownValues: ["none", "profileOnboarding", "playOnboarding", "complete"], 466 + }, 467 + createdAt: { 468 + type: "string", 469 + format: "datetime", 470 + description: "The timestamp when this status was created", 471 + }, 472 + updatedAt: { 473 + type: "string", 474 + format: "datetime", 475 + description: "The timestamp when this status was last updated", 476 + }, 477 + }, 478 + }, 479 + }, 480 + }, 481 + }, 449 482 FmTealAlphaFeedDefs: { 450 483 lexicon: 1, 451 484 id: "fm.teal.alpha.feed.defs", ··· 761 794 FmTealAlphaActorGetProfile: "fm.teal.alpha.actor.getProfile", 762 795 FmTealAlphaActorGetProfiles: "fm.teal.alpha.actor.getProfiles", 763 796 FmTealAlphaActorProfile: "fm.teal.alpha.actor.profile", 797 + FmTealAlphaActorProfileStatus: "fm.teal.alpha.actor.profileStatus", 764 798 FmTealAlphaActorSearchActors: "fm.teal.alpha.actor.searchActors", 765 799 FmTealAlphaActorStatus: "fm.teal.alpha.actor.status", 766 800 FmTealAlphaFeedDefs: "fm.teal.alpha.feed.defs",
+30
packages/lexicons/src/types/fm/teal/alpha/actor/profileStatus.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult } from "@atproto/lexicon"; 5 + 6 + import { lexicons } from "../../../../../lexicons"; 7 + import { hasProp, isObj } from "../../../../../util"; 8 + 9 + export interface Record { 10 + /** The onboarding completion status */ 11 + completedOnboarding: "none" | "profileOnboarding" | "playOnboarding" | "complete"; 12 + /** The timestamp when this status was created */ 13 + createdAt?: string; 14 + /** The timestamp when this status was last updated */ 15 + updatedAt?: string; 16 + [k: string]: unknown; 17 + } 18 + 19 + export function isRecord(v: unknown): v is Record { 20 + return ( 21 + isObj(v) && 22 + hasProp(v, "$type") && 23 + (v.$type === "fm.teal.alpha.actor.profileStatus#main" || 24 + v.$type === "fm.teal.alpha.actor.profileStatus") 25 + ); 26 + } 27 + 28 + export function validateRecord(v: unknown): ValidationResult { 29 + return lexicons.validate("fm.teal.alpha.actor.profileStatus#main", v); 30 + }
+168 -333
pnpm-lock.yaml
··· 10 10 dependencies: 11 11 '@atproto/oauth-client': 12 12 specifier: ^0.3.8 13 - version: 0.3.21 13 + version: 0.3.16 14 14 '@ianvs/prettier-plugin-sort-imports': 15 15 specifier: ^4.4.1 16 - version: 4.4.2(prettier@3.5.3) 16 + version: 4.5.1(prettier@3.5.3) 17 17 prettier: 18 18 specifier: ^3.5.3 19 19 version: 3.5.3 20 20 prettier-plugin-tailwindcss: 21 21 specifier: ^0.6.11 22 - version: 0.6.12(@ianvs/prettier-plugin-sort-imports@4.4.2(prettier@3.5.3))(prettier@3.5.3) 22 + version: 0.6.12(@ianvs/prettier-plugin-sort-imports@4.5.1(prettier@3.5.3))(prettier@3.5.3) 23 23 devDependencies: 24 24 '@types/node': 25 25 specifier: ^20.17.10 ··· 41 41 version: 0.0.1(expo@53.0.20(@babel/core@7.26.0)(@expo/metro-runtime@5.0.4(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0)))(babel-plugin-react-compiler@19.0.0-beta-37ed2a7-20241206)(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) 42 42 '@atproto/api': 43 43 specifier: ^0.15.14 44 - version: 0.15.14 44 + version: 0.15.27 45 45 '@atproto/lex-cli': 46 46 specifier: ^0.8.1 47 47 version: 0.8.2 48 48 '@atproto/oauth-client': 49 49 specifier: ^0.3.16 50 - version: 0.3.21 50 + version: 0.3.16 51 51 '@babel/plugin-transform-export-namespace-from': 52 52 specifier: ^7.27.1 53 53 version: 7.27.1(@babel/core@7.26.0) ··· 150 150 react-native: 151 151 specifier: 0.79.2 152 152 version: 0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0) 153 + react-native-css-interop: 154 + specifier: ^0.1.18 155 + version: 0.1.18(react-native-reanimated@3.17.5(@babel/core@7.26.0)(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@22.10.2)(typescript@5.8.3))) 153 156 react-native-gesture-handler: 154 157 specifier: ~2.24.0 155 158 version: 2.24.0(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) ··· 186 189 version: 5.0.4(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0)) 187 190 '@expo/prebuild-config': 188 191 specifier: ^9.0.5 189 - version: 9.0.6 192 + version: 9.0.11 190 193 '@pmmmwh/react-refresh-webpack-plugin': 191 194 specifier: ^0.5.15 192 195 version: 0.5.15(react-refresh@0.16.0)(type-fest@0.21.3)(webpack@5.97.1) ··· 261 264 dependencies: 262 265 '@atproto/lex-cli': 263 266 specifier: ^0.5.4 264 - version: 0.5.6 267 + version: 0.5.4 265 268 chokidar: 266 269 specifier: ^4.0.1 267 - version: 4.0.3 270 + version: 4.0.1 268 271 commander: 269 272 specifier: ^12.1.0 270 273 version: 12.1.0 ··· 273 276 version: 9.6.0 274 277 glob: 275 278 specifier: ^11.0.0 276 - version: 11.0.1 279 + version: 11.0.0 277 280 picocolors: 278 281 specifier: ^1.1.1 279 282 version: 1.1.1 280 283 devDependencies: 281 284 '@types/node': 282 285 specifier: ^20.17.10 283 - version: 20.17.14 286 + version: 20.17.10 284 287 typescript: 285 288 specifier: ^5.7.2 286 289 version: 5.8.3 ··· 307 310 resolution: {integrity: sha512-IoIcUuX2rKs/AS2u+72m9UWc0mldPTR4GgBHn4LIWtHLWjGTGdECwkw6iwshCM39KA15UhKGbByNQRG415hyfQ==} 308 311 deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. 309 312 310 - '@atproto-labs/did-resolver@0.1.13': 311 - resolution: {integrity: sha512-DG3YNaCKc6PAIv1Gsz3E1Kufw2t14OBxe4LdKK7KKLCNoex51hm+A5yMevShe3BSll+QosqWYIEgkPSc5xBoGQ==} 313 + '@atproto-labs/did-resolver@0.1.12': 314 + resolution: {integrity: sha512-criWN7o21C5TFsauB+bGTlkqqerOU6gT2TbxdQVgZUWqNcfazUmUjT4gJAY02i+O4d3QmZa27fv9CcaRKWkSug==} 312 315 313 316 '@atproto-labs/did-resolver@0.1.5': 314 317 resolution: {integrity: sha512-uoCb+P0N4du5NiZt6ohVEbSDdijXBJlQwSlWLHX0rUDtEVV+g3aEGe7jUW94lWpqQmRlQ5xcyd9owleMibNxZw==} 315 318 316 - '@atproto-labs/did-resolver@0.1.9': 317 - resolution: {integrity: sha512-kGRQvbebfz+LV0pYl2nEz345Ca83NyIftye0qqjH+CyoJuwZbGUuZe7rbQafucm8UXYNsvPwuQXVst3mqyzVfg==} 318 - 319 319 '@atproto-labs/fetch-node@0.1.3': 320 320 resolution: {integrity: sha512-KX3ogPJt6dXNppWImQ9omfhrc8t73WrJaxHMphRAqQL8jXxKW5NBCTjSuwroBkJ1pj1aValBrc5NpdYu+H/9Qg==} 321 321 322 322 '@atproto-labs/fetch@0.1.1': 323 323 resolution: {integrity: sha512-X1zO1MDoJzEurbWXMAe1H8EZ995Xam/aXdxhGVrXmOMyPDuvBa1oxwh/kQNZRCKcMQUbiwkk+Jfq6ZkTuvGbww==} 324 324 325 - '@atproto-labs/fetch@0.1.2': 326 - resolution: {integrity: sha512-7mQQIRtVenqtdBQKCqoLjyAhPS2aA56EGEjyz5zB3sramM3qkrvzyusr55GAzGDS0tvB6cy9cDEtSLmfK7LUnA==} 327 - 328 325 '@atproto-labs/fetch@0.2.2': 329 326 resolution: {integrity: sha512-QyafkedbFeVaN20DYUpnY2hcArYxjdThPXbYMqOSoZhcvkrUqaw4xDND4wZB5TBD9cq2yqe9V6mcw9P4XQKQuQ==} 330 327 331 328 '@atproto-labs/handle-resolver-node@0.1.7': 332 329 resolution: {integrity: sha512-3pXUB8/twMPXUz+zMjSVTA5acxnizC7PF+EsjLKwirwVzLRrTcFQkyHXGTrdUfIQq+S1eLq7b6H7ZKqMOX9VQQ==} 333 - 334 - '@atproto-labs/handle-resolver-node@0.1.8': 335 - resolution: {integrity: sha512-AlH7qRtmhZFRCcv1HK9OYiZpTFGcX39zjzzANq42zVLlfqoJr3ugnv7mAXGHE8woVguKtbypHnrVCDceoBAs2w==} 336 330 337 331 '@atproto-labs/handle-resolver@0.1.4': 338 332 resolution: {integrity: sha512-tnGUD2mQ6c8xHs3eeVJgwYqM3FHoTZZbOcOGKqO1A5cuIG+gElwEhpWwpwX5LI7FF4J8eS9BOHLl3NFS7Q8QXg==} 339 333 340 - '@atproto-labs/handle-resolver@0.1.6': 341 - resolution: {integrity: sha512-pLoerhISFvOSVWxQfSibWZFxzp0HDgpDKbQ2G0faIII/66Cg9avnaiQrW99QXUSijHw9/hv7msP4YGeEzmCH8g==} 342 - 343 334 '@atproto-labs/handle-resolver@0.1.8': 344 335 resolution: {integrity: sha512-Y0ckccoCGDo/3g4thPkgp9QcORmc+qqEaCBCYCZYtfLIQp4775u22wd+4fyEyJP4DqoReKacninkICgRGfs3dQ==} 345 336 346 - '@atproto-labs/identity-resolver@0.1.11': 347 - resolution: {integrity: sha512-8q7u9D8sJL6HHsrMIYKL6GktyR0PMaPhHsYeoyK42XxgzIty1tMSXWeci0IwtWzIZsfvonlls0lZtE1G7GJD8g==} 348 - 349 337 '@atproto-labs/identity-resolver@0.1.16': 350 338 resolution: {integrity: sha512-pFrtKT49cYBhCDd2U1t/CcUBiMmQzaNQxh8oSkDUlGs/K3P8rJFTAGAMm8UjokfGEKwF4hX9oo7O8Kn+GkyExw==} 351 339 352 340 '@atproto-labs/identity-resolver@0.1.6': 353 341 resolution: {integrity: sha512-kq1yhpImGG1IUE8QEKj2IjSfNrkG2VailZRuiFLYdcszDEBDzr9HN3ElV42ebxhofuSFgKOCrYWJIUiLuXo6Uw==} 354 342 355 - '@atproto-labs/identity-resolver@0.1.7': 356 - resolution: {integrity: sha512-aRmY0cp+aFDgxAD62jjCPUDJMqryuXmt0hK9ls8LHeSzszr58BFDwybLaW6Izz2KISQlzu75Ia0c6uRymdmcYA==} 357 - 358 343 '@atproto-labs/pipe@0.1.0': 359 344 resolution: {integrity: sha512-ghOqHFyJlQVFPESzlVHjKroP0tPzbmG5Jms0dNI9yLDEfL8xp4OFPWLX4f6T8mRq69wWs4nIDM3sSsFbFqLa1w==} 360 - 361 - '@atproto-labs/pipe@0.1.1': 362 - resolution: {integrity: sha512-hdNw2oUs2B6BN1lp+32pF7cp8EMKuIN5Qok2Vvv/aOpG/3tNSJ9YkvfI0k6Zd188LeDDYRUpYpxcoFIcGH/FNg==} 363 345 364 346 '@atproto-labs/simple-store-memory@0.1.1': 365 347 resolution: {integrity: sha512-PCRqhnZ8NBNBvLku53O56T0lsVOtclfIrQU/rwLCc4+p45/SBPrRYNBi6YFq5rxZbK6Njos9MCmILV/KLQxrWA==} ··· 373 355 '@atproto-labs/simple-store@0.2.0': 374 356 resolution: {integrity: sha512-0bRbAlI8Ayh03wRwncAMEAyUKtZ+AuTS1jgPrfym1WVOAOiottI/ZmgccqLl6w5MbxVcClNQF7WYGKvGwGoIhA==} 375 357 376 - '@atproto/api@0.15.6': 377 - resolution: {integrity: sha512-hKwrBf60LcI4BqArWyrhWJWIpjwAWUJpW3PVvNzUB1q2W/ByC0JAuwq/F8tZpCEiiVBzHjHVRx4QNA2TA1cG3g==} 358 + '@atproto/api@0.15.27': 359 + resolution: {integrity: sha512-ok/WGafh1nz4t8pEQGtAF/32x2E2VDWU4af6BajkO5Gky2jp2q6cv6aB2A5yuvNNcc3XkYMYipsqVHVwLPMF9g==} 378 360 379 361 '@atproto/common-web@0.3.1': 380 362 resolution: {integrity: sha512-N7wiTnus5vAr+lT//0y8m/FaHHLJ9LpGuEwkwDAeV3LCiPif4m/FS8x/QOYrx1PdZQwKso95RAPzCGWQBH5j6Q==} 381 363 382 364 '@atproto/common-web@0.4.2': 383 365 resolution: {integrity: sha512-vrXwGNoFGogodjQvJDxAeP3QbGtawgZute2ed1XdRO0wMixLk3qewtikZm06H259QDJVu6voKC5mubml+WgQUw==} 384 - 385 - '@atproto/common@0.4.4': 386 - resolution: {integrity: sha512-58tMbn6A1Zu296s/l3uIj8z9d7IRHpZvLOfsFRikaQaYrzhJpL2aPY4uFQ8GJcxnsxeUnxBCrQz9we5jVVJI5Q==} 387 366 388 367 '@atproto/common@0.4.5': 389 368 resolution: {integrity: sha512-LFAGqHcxCI5+b31Xgk+VQQtZU258iGPpHJzNeHVcdh6teIKZi4C2l6YV+m+3CEz+yYcfP7jjUmgqesx7l9Arsg==} ··· 406 385 '@atproto/jwk@0.1.1': 407 386 resolution: {integrity: sha512-6h/bj1APUk7QcV9t/oA6+9DB5NZx9SZru9x+/pV5oHFI9Xz4ZuM5+dq1PfsJV54pZyqdnZ6W6M717cxoC7q7og==} 408 387 409 - '@atproto/jwk@0.2.0': 410 - resolution: {integrity: sha512-foOxExbw04XCaoLaGdv9BQj0Ac7snZsk6IpQjOsjYatf+i62Pi9bUkZ0MAoA75HPk8ZmKoDnbA60uBMmiOPPHQ==} 388 + '@atproto/jwk@0.1.5': 389 + resolution: {integrity: sha512-OzZFLhX41TOcMeanP3aZlL5bLeaUIZT15MI4aU5cwflNq/rwpGOpz3uwDjZc8ytgUjuTQ8LabSz5jMmwoTSWFg==} 411 390 412 391 '@atproto/lex-cli@0.5.4': 413 392 resolution: {integrity: sha512-mNEPeQLXl3iCXPO/FSo0BTfP00lx+9xEQpf9LEpDuKA6WCWjIB7WHzU2VLk26NSftzH3sf6zf+A2yZ+WWRbYpw==} ··· 420 399 421 400 '@atproto/lexicon@0.4.11': 422 401 resolution: {integrity: sha512-btefdnvNz2Ao2I+qbmj0F06HC8IlrM/IBz6qOBS50r0S6uDf5tOO+Mv2tSVdimFkdzyDdLtBI1sV36ONxz2cOw==} 402 + 403 + '@atproto/lexicon@0.4.12': 404 + resolution: {integrity: sha512-fcEvEQ1GpQYF5igZ4IZjPWEoWVpsEF22L9RexxLS3ptfySXLflEyH384e7HITzO/73McDeaJx3lqHIuqn9ulnw==} 423 405 424 406 '@atproto/lexicon@0.4.3': 425 407 resolution: {integrity: sha512-lFVZXe1S1pJP0dcxvJuHP3r/a+EAIBwwU7jUK+r8iLhIja+ml6NmYv8KeFHmIJATh03spEQ9s02duDmFVdCoXg==} ··· 436 418 '@atproto/oauth-client@0.3.2': 437 419 resolution: {integrity: sha512-/HUlv5dnR1am4BQlVYSuevGf4mKJ5RMkElnum8lbwRDewKyzqHwdtJWeNcfcPFtDhUKg0U2pWfRv8ZZd6kk9dQ==} 438 420 439 - '@atproto/oauth-client@0.3.8': 440 - resolution: {integrity: sha512-nItyflIb9GiOHVVZbnnBBPGZJ+21k2p7hMZc4HdmizhmxJtj/Ocwguyz8AA/AcEpHnsM4o29yWZaZry+QPhzvw==} 441 - 442 421 '@atproto/oauth-types@0.2.1': 443 422 resolution: {integrity: sha512-hDisUXzcq5KU1HMuCYZ8Kcz7BePl7V11bFjjgZvND3mdSphiyBpJ8MCNn3QzAa6cXpFo0w9PDcYMAlCCRZHdVw==} 444 423 445 - '@atproto/oauth-types@0.2.8': 446 - resolution: {integrity: sha512-xcYI2JmhrWwscePDoaKeDawVCCZkcvBqrBFMpMk4gf/OujH0pNSKBD/aWsayc6WvujVbTqwrG2hwPLfRqzJbwg==} 447 - 448 - '@atproto/repo@0.5.5': 449 - resolution: {integrity: sha512-Zu1tw42KBVyFzIh1XYSIvm8V+V9oEKWJR7NnHBgeSMwCc9QwM32jO7uqgvEjZYEXgdYKanGhv/YHLyxtZa5Ckg==} 424 + '@atproto/oauth-types@0.2.7': 425 + resolution: {integrity: sha512-2SlDveiSI0oowC+sfuNd/npV8jw/FhokSS26qyUyldTg1g9ZlhxXUfMP4IZOPeZcVn9EszzQRHs1H9ZJqVQIew==} 450 426 451 427 '@atproto/syntax@0.3.1': 452 428 resolution: {integrity: sha512-fzW0Mg1QUOVCWUD3RgEsDt6d1OZ6DdFmbKcDdbzUfh0t4rhtRAC05KbZYmxuMPWDAiJ4BbbQ5dkAc/mNypMXkw==} ··· 460 436 '@atproto/xrpc@0.6.4': 461 437 resolution: {integrity: sha512-9ZAJ8nsXTqC4XFyS0E1Wlg7bAvonhXQNQ3Ocs1L1LIwFLXvsw/4fNpIHXxvXvqTCVeyHLbImOnE9UiO1c/qIYA==} 462 438 463 - '@atproto/xrpc@0.6.6': 464 - resolution: {integrity: sha512-umXEYVMo9/pyIBoKmIAIi64RXDW9tSXY+wqztlQ6I2GZtjLfNZqmAWU+wADk3SxUe54mvjxxGyA4TtyGtDMfhA==} 465 - 466 439 '@atproto/xrpc@0.6.7': 467 440 resolution: {integrity: sha512-pbzZIONIskyGKxxG3s2wB7rQ2W1xu3ycfeYhKwk/E/ippeJFVxcof64iSC7f22+7JSKUJcxBeZ1piBB82vLj7g==} 468 441 469 442 '@atproto/xrpc@0.7.0': 470 443 resolution: {integrity: sha512-SfhP9dGx2qclaScFDb58Jnrmim5nk4geZXCqg6sB0I/KZhZEkr9iIx1hLCp+sxkIfEsmEJjeWO4B0rjUIJW5cw==} 444 + 445 + '@atproto/xrpc@0.7.1': 446 + resolution: {integrity: sha512-ANHEzlskYlMEdH18m+Itp3a8d0pEJao2qoDybDoMupTnoeNkya4VKIaOgAi6ERQnqatBBZyn9asW+7rJmSt/8g==} 471 447 472 448 '@babel/code-frame@7.10.4': 473 449 resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==} ··· 1051 1027 '@expo/config-plugins@10.1.2': 1052 1028 resolution: {integrity: sha512-IMYCxBOcnuFStuK0Ay+FzEIBKrwW8OVUMc65+v0+i7YFIIe8aL342l7T4F8lR4oCfhXn7d6M5QPgXvjtc/gAcw==} 1053 1029 1054 - '@expo/config-types@53.0.3': 1055 - resolution: {integrity: sha512-V1e6CiM4TXtGxG/W2Msjp/QOx/vikLo5IUGMvEMjgAglBfGYx3PXfqsUb5aZDt6kqA3bDDwFuZoS5vNm/SYwSg==} 1056 - 1057 1030 '@expo/config-types@53.0.4': 1058 1031 resolution: {integrity: sha512-0s+9vFx83WIToEr0Iwy4CcmiUXa5BgwBmEjylBB2eojX5XAMm9mJvw9KpjAb8m7zq2G0Q6bRbeufkzgbipuNQg==} 1059 1032 ··· 1065 1038 1066 1039 '@expo/config@11.0.13': 1067 1040 resolution: {integrity: sha512-TnGb4u/zUZetpav9sx/3fWK71oCPaOjZHoVED9NaEncktAd0Eonhq5NUghiJmkUGt3gGSjRAEBXiBbbY9/B1LA==} 1068 - 1069 - '@expo/config@11.0.8': 1070 - resolution: {integrity: sha512-udLrpW4SvXUwF+ntJ0RzEjRbFoSS7Tr/rMrvhfISHWGbcZ09+c+QkI0O8y1sEBWQDpI/IlC9REPqGm5b7HweDw==} 1071 1041 1072 1042 '@expo/devcert@1.1.4': 1073 1043 resolution: {integrity: sha512-fqBODr8c72+gBSX5Ty3SIzaY4bXainlpab78+vEYEKL3fXmsOswMLf0+KE36mUEAa36BYabX7K3EiXOXX5OPMw==} ··· 1082 1052 resolution: {integrity: sha512-MYfPYBTMfrrNr07DALuLhG6EaLVNVrY/PXjEzsjWdWE4ZFn0yqI0IdHNkJG7t1gePT8iztHc7qnsx+oo/rDo6w==} 1083 1053 hasBin: true 1084 1054 1085 - '@expo/image-utils@0.7.4': 1086 - resolution: {integrity: sha512-LcZ82EJy/t/a1avwIboeZbO6hlw8CvsIRh2k6SWPcAOvW0RqynyKFzUJsvnjWlhUzfBEn4oI7y/Pu5Xkw3KkkA==} 1087 - 1088 1055 '@expo/image-utils@0.7.6': 1089 1056 resolution: {integrity: sha512-GKnMqC79+mo/1AFrmAcUcGfbsXXTRqOMNS1umebuevl3aaw+ztsYEFEiuNhHZW7PQ3Xs3URNT513ZxKhznDscw==} 1090 1057 ··· 1117 1084 1118 1085 '@expo/prebuild-config@9.0.11': 1119 1086 resolution: {integrity: sha512-0DsxhhixRbCCvmYskBTq8czsU0YOBsntYURhWPNpkl0IPVpeP9haE5W4OwtHGzXEbmHdzaoDwNmVcWjS/mqbDw==} 1120 - 1121 - '@expo/prebuild-config@9.0.5': 1122 - resolution: {integrity: sha512-oiSVU5ePu9lsOvn5p4xplqjzPlcZHzKYwzuonTa9GCH1GxcOEIBsvMVQiHBXHtqvgV2dztjm34kdXV//+9jtCA==} 1123 1087 1124 1088 '@expo/sdk-runtime-versions@1.0.0': 1125 1089 resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} ··· 1194 1158 resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} 1195 1159 deprecated: Use @eslint/object-schema instead 1196 1160 1161 + '@ianvs/prettier-plugin-sort-imports@4.5.1': 1162 + resolution: {integrity: sha512-vOQwIyQHnHz0ikvHEQDzwUkNfX74o/7qNEpm9LiPtyBvCg/AU/DOkhwe1o92chPS1QzS6G7HeiO+OwIt8a358A==} 1163 + peerDependencies: 1164 + '@prettier/plugin-oxc': ^0.0.4 1165 + '@vue/compiler-sfc': 2.7.x || 3.x 1166 + prettier: 2 || 3 || ^4.0.0-0 1167 + peerDependenciesMeta: 1168 + '@prettier/plugin-oxc': 1169 + optional: true 1170 + '@vue/compiler-sfc': 1171 + optional: true 1172 + 1197 1173 '@ipld/dag-cbor@7.0.3': 1198 1174 resolution: {integrity: sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==} 1199 1175 ··· 1269 1245 resolution: {integrity: sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==} 1270 1246 engines: {node: ^14.21.3 || >=16} 1271 1247 1272 - '@noble/hashes@1.6.0': 1273 - resolution: {integrity: sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==} 1274 - engines: {node: ^14.21.3 || >=16} 1275 - 1276 1248 '@noble/hashes@1.6.1': 1277 1249 resolution: {integrity: sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==} 1250 + engines: {node: ^14.21.3 || >=16} 1251 + 1252 + '@noble/hashes@1.7.1': 1253 + resolution: {integrity: sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==} 1278 1254 engines: {node: ^14.21.3 || >=16} 1279 1255 1280 1256 '@nodelib/fs.scandir@2.1.5': ··· 1932 1908 '@types/node@20.17.10': 1933 1909 resolution: {integrity: sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==} 1934 1910 1935 - '@types/node@20.17.9': 1936 - resolution: {integrity: sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==} 1937 - 1938 1911 '@types/node@22.10.2': 1939 1912 resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==} 1940 1913 ··· 2304 2277 2305 2278 aws4@1.13.2: 2306 2279 resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} 2307 - 2308 - axios@0.27.2: 2309 - resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} 2310 2280 2311 2281 babel-jest@29.7.0: 2312 2282 resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} ··· 2737 2707 resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} 2738 2708 engines: {node: '>=0.10'} 2739 2709 2740 - data-view-buffer@1.0.1: 2741 - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} 2742 - engines: {node: '>= 0.4'} 2743 - 2744 2710 data-view-buffer@1.0.2: 2745 2711 resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} 2746 2712 engines: {node: '>= 0.4'} ··· 2865 2831 2866 2832 dotenv-expand@11.0.7: 2867 2833 resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} 2868 - engines: {node: '>=12'} 2869 - 2870 - dotenv-expand@12.0.2: 2871 - resolution: {integrity: sha512-lXpXz2ZE1cea1gL4sz2Ipj8y4PiVjytYr3Ij0SWoms1PGxIv7m2CRKuRuCRtHdVuvM/hNJPMxt5PbhboNC4dPQ==} 2872 2834 engines: {node: '>=12'} 2873 2835 2874 2836 dotenv@16.4.7: ··· 3200 3162 expo: '*' 3201 3163 react: '*' 3202 3164 3203 - expo-linking@7.1.5: 3204 - resolution: {integrity: sha512-8g20zOpROW78bF+bLI4a3ZWj4ntLgM0rCewKycPL0jk9WGvBrBtFtwwADJgOiV1EurNp3lcquerXGlWS+SOQyA==} 3165 + expo-linking@7.1.4: 3166 + resolution: {integrity: sha512-zLAbUzTB3+KGjqqLeIdhhkXayyN0qulHGjRI24X7W/0Mq/4oPbPZklKtCP0k7XOn/k4553m8OgJ7GPC03PlV9g==} 3205 3167 peerDependencies: 3206 3168 react: '*' 3207 3169 react-native: '*' ··· 3213 3175 expo-modules-core@2.5.0: 3214 3176 resolution: {integrity: sha512-aIbQxZE2vdCKsolQUl6Q9Farlf8tjh/ROR4hfN1qT7QBGPl1XrJGnaOKkcgYaGrlzCPg/7IBe0Np67GzKMZKKQ==} 3215 3177 3216 - expo-router@5.0.7: 3217 - resolution: {integrity: sha512-NlEgRXCKtseDuIHBp87UfkvqsuVrc0MYG+zg33dopaN6wik4RkrWWxUYdNPHub0s/7qMye6zZBY4ZCrXwd/xpA==} 3178 + expo-router@5.0.6: 3179 + resolution: {integrity: sha512-/44G3liB7LMMDoUO+lN5TS8XvZrAhLtq7cVGoilO2QkoSBjFQfxFA9VYOVWVlu2R80tN6dM3cgsEuoA275FGQg==} 3218 3180 peerDependencies: 3219 3181 '@react-navigation/drawer': ^7.3.9 3220 3182 '@testing-library/jest-native': '*' ··· 3232 3194 react-native-reanimated: 3233 3195 optional: true 3234 3196 3235 - expo-splash-screen@0.30.9: 3236 - resolution: {integrity: sha512-curHUaZxUTZ2dWvz32ao3xPv5mJr1LBqn5V8xm/IULAehB9RGCn8iKiROMN1PYebSG+56vPMuJmBm9P+ayvJpA==} 3197 + expo-splash-screen@0.30.8: 3198 + resolution: {integrity: sha512-2eh+uA543brfeG5HILXmtNKA7E2/pfywKzNumzy3Ef6OtDjYy6zJUGNSbhnZRbVEjUZo3/QNRs0JRBfY80okZg==} 3237 3199 peerDependencies: 3238 3200 expo: '*' 3239 3201 3240 - expo-sqlite@15.2.12: 3241 - resolution: {integrity: sha512-J2Y7tChIFEcpgiVxxAXWaArOSIaHxct6keNZPs/6aHrSzUWmAlQS5vzGQueB1II65rl47ZtZcQEIl0NpiRhxxQ==} 3202 + expo-sqlite@15.2.9: 3203 + resolution: {integrity: sha512-i21AQtzNC1aqXC5Ee/R3OGkkRLALfxWB27vIv3ae7gQfJKdr9jJbmRqd+jymPfXXy7f2EugFDEdLN8C6jWAD1A==} 3242 3204 peerDependencies: 3243 3205 expo: '*' 3244 3206 react: '*' ··· 3250 3212 react: '*' 3251 3213 react-native: '*' 3252 3214 3253 - expo-system-ui@5.0.8: 3254 - resolution: {integrity: sha512-2sI7ALq3W8sKKa3FRW7PmuNznk+48cb1VzFy96vYZLZgTDZViz+fEJNdp1RHgLui/mAl3f8md1LneygSJvZ1EQ==} 3215 + expo-system-ui@5.0.7: 3216 + resolution: {integrity: sha512-ijSnSFA4VfuQc84N6WyCUNsKKTIyQb6QuC8q2zGvYC/sBXTMrOtZg0zrisQGzCRW+WhritQTiVqHlp3Ix9xDmQ==} 3255 3217 peerDependencies: 3256 3218 expo: '*' 3257 3219 react-native: '*' ··· 3390 3352 flow-enums-runtime@0.0.6: 3391 3353 resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} 3392 3354 3393 - follow-redirects@1.15.9: 3394 - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} 3395 - engines: {node: '>=4.0'} 3396 - peerDependencies: 3397 - debug: '*' 3398 - peerDependenciesMeta: 3399 - debug: 3400 - optional: true 3401 - 3402 3355 fontfaceobserver@2.3.0: 3403 3356 resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==} 3404 3357 ··· 3481 3434 resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} 3482 3435 engines: {node: '>=4'} 3483 3436 3484 - get-proto@1.0.1: 3485 - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} 3486 - engines: {node: '>= 0.4'} 3487 - 3488 3437 get-stream@9.0.1: 3489 3438 resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} 3490 3439 engines: {node: '>=18'} 3491 3440 3492 - get-symbol-description@1.0.2: 3493 - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} 3494 - engines: {node: '>= 0.4'} 3495 - 3496 3441 get-symbol-description@1.1.0: 3497 3442 resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} 3498 3443 engines: {node: '>= 0.4'} ··· 3837 3782 is-stream@4.0.1: 3838 3783 resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} 3839 3784 engines: {node: '>=18'} 3840 - 3841 - is-string@1.1.0: 3842 - resolution: {integrity: sha512-PlfzajuF9vSo5wErv3MJAKD/nqf9ngAs1NFQYm16nUYFO2IzxJ2hcm+IOCg+EEopdykNNUhVq5cz35cAUxU8+g==} 3843 - engines: {node: '>= 0.4'} 3844 3785 3845 3786 is-string@1.1.1: 3846 3787 resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} ··· 4988 4929 react-is@19.1.0: 4989 4930 resolution: {integrity: sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==} 4990 4931 4932 + react-native-css-interop@0.1.18: 4933 + resolution: {integrity: sha512-ZDA52ZOr1YQyq9iWncEsbCe1luuAqLX4XeRX9r3XAdHYGc3YpJ5xcL2A6X9wHF39/icISMs3/0OMSnQJe/Flhg==} 4934 + engines: {node: '>=18'} 4935 + peerDependencies: 4936 + react: '>=18' 4937 + react-native: '*' 4938 + react-native-reanimated: '>=3.6.2' 4939 + react-native-safe-area-context: '*' 4940 + react-native-svg: '*' 4941 + tailwindcss: ~3 4942 + peerDependenciesMeta: 4943 + react-native-safe-area-context: 4944 + optional: true 4945 + react-native-svg: 4946 + optional: true 4947 + 4991 4948 react-native-css-interop@0.1.22: 4992 4949 resolution: {integrity: sha512-Mu01e+H9G+fxSWvwtgWlF5MJBJC4VszTCBXopIpeR171lbeBInHb8aHqoqRPxmJpi3xIHryzqKFOJYAdk7PBxg==} 4993 4950 engines: {node: '>=18'} ··· 5695 5652 tr46@0.0.3: 5696 5653 resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 5697 5654 5655 + ts-api-utils@1.4.3: 5656 + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} 5657 + engines: {node: '>=16'} 5658 + peerDependencies: 5659 + typescript: '>=4.2.0' 5660 + 5698 5661 ts-api-utils@2.1.0: 5699 5662 resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 5700 5663 engines: {node: '>=18.12'} ··· 5992 5955 whatwg-url@5.0.0: 5993 5956 resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 5994 5957 5995 - which-boxed-primitive@1.1.0: 5996 - resolution: {integrity: sha512-Ei7Miu/AXe2JJ4iNF5j/UphAgRoma4trE6PtisM09bPygb3egMH3YLW/befsWb1A1AxvNSFidOFTB18XtnIIng==} 5997 - engines: {node: '>= 0.4'} 5998 - 5999 5958 which-boxed-primitive@1.1.1: 6000 5959 resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} 6001 5960 engines: {node: '>= 0.4'} ··· 6190 6149 - react 6191 6150 - react-native 6192 6151 6193 - '@atproto-labs/did-resolver@0.1.13': 6152 + '@atproto-labs/did-resolver@0.1.12': 6194 6153 dependencies: 6195 - '@atproto-labs/fetch': 0.2.3 6196 - '@atproto-labs/pipe': 0.1.1 6154 + '@atproto-labs/fetch': 0.2.2 6155 + '@atproto-labs/pipe': 0.1.0 6197 6156 '@atproto-labs/simple-store': 0.2.0 6198 6157 '@atproto-labs/simple-store-memory': 0.1.3 6199 6158 '@atproto/did': 0.1.5 ··· 6207 6166 '@atproto-labs/simple-store-memory': 0.1.1 6208 6167 '@atproto/did': 0.1.3 6209 6168 zod: 3.23.8 6210 - 6211 - '@atproto-labs/did-resolver@0.1.9': 6212 - dependencies: 6213 - '@atproto-labs/fetch': 0.2.0 6214 - '@atproto-labs/pipe': 0.1.0 6215 - '@atproto-labs/simple-store': 0.1.1 6216 - '@atproto-labs/simple-store-memory': 0.1.1 6217 - '@atproto/did': 0.1.4 6218 - zod: 3.24.1 6219 6169 6220 6170 '@atproto-labs/fetch-node@0.1.3': 6221 6171 dependencies: ··· 6231 6181 optionalDependencies: 6232 6182 zod: 3.23.8 6233 6183 6234 - '@atproto-labs/fetch@0.1.2': 6235 - dependencies: 6236 - '@atproto-labs/pipe': 0.1.0 6237 - optionalDependencies: 6238 - zod: 3.23.8 6239 - 6240 - '@atproto-labs/fetch@0.2.3': 6184 + '@atproto-labs/fetch@0.2.2': 6241 6185 dependencies: 6242 6186 '@atproto-labs/pipe': 0.1.0 6243 6187 ··· 6247 6191 '@atproto-labs/handle-resolver': 0.1.4 6248 6192 '@atproto/did': 0.1.3 6249 6193 6250 - '@atproto-labs/handle-resolver-node@0.1.8': 6251 - dependencies: 6252 - '@atproto-labs/fetch-node': 0.1.4 6253 - '@atproto-labs/handle-resolver': 0.1.4 6254 - '@atproto/did': 0.1.3 6255 - 6256 6194 '@atproto-labs/handle-resolver@0.1.4': 6257 6195 dependencies: 6258 6196 '@atproto-labs/simple-store': 0.1.1 6259 6197 '@atproto-labs/simple-store-memory': 0.1.1 6260 6198 '@atproto/did': 0.1.3 6261 - zod: 3.24.1 6262 - 6263 - '@atproto-labs/handle-resolver@0.1.6': 6264 - dependencies: 6265 - '@atproto-labs/simple-store': 0.1.1 6266 - '@atproto-labs/simple-store-memory': 0.1.1 6267 - '@atproto/did': 0.1.4 6268 - zod: 3.24.1 6199 + zod: 3.23.8 6269 6200 6270 6201 '@atproto-labs/handle-resolver@0.1.8': 6271 6202 dependencies: ··· 6274 6205 '@atproto/did': 0.1.5 6275 6206 zod: 3.23.8 6276 6207 6277 - '@atproto-labs/identity-resolver@0.1.11': 6278 - dependencies: 6279 - '@atproto-labs/did-resolver': 0.1.9 6280 - '@atproto-labs/handle-resolver': 0.1.6 6281 - '@atproto/syntax': 0.3.1 6282 - 6283 6208 '@atproto-labs/identity-resolver@0.1.16': 6284 6209 dependencies: 6285 6210 '@atproto-labs/did-resolver': 0.1.12 ··· 6292 6217 '@atproto-labs/handle-resolver': 0.1.4 6293 6218 '@atproto/syntax': 0.3.1 6294 6219 6295 - '@atproto-labs/identity-resolver@0.1.7': 6296 - dependencies: 6297 - '@atproto-labs/did-resolver': 0.1.6 6298 - '@atproto-labs/handle-resolver': 0.1.4 6299 - '@atproto/syntax': 0.3.1 6300 - 6301 6220 '@atproto-labs/pipe@0.1.0': {} 6302 - 6303 - '@atproto-labs/pipe@0.1.1': {} 6304 6221 6305 6222 '@atproto-labs/simple-store-memory@0.1.1': 6306 6223 dependencies: ··· 6316 6233 6317 6234 '@atproto-labs/simple-store@0.2.0': {} 6318 6235 6319 - '@atproto/api@0.15.6': 6236 + '@atproto/api@0.15.27': 6320 6237 dependencies: 6321 6238 '@atproto/common-web': 0.4.2 6322 - '@atproto/lexicon': 0.4.11 6239 + '@atproto/lexicon': 0.4.12 6323 6240 '@atproto/syntax': 0.4.0 6324 - '@atproto/xrpc': 0.7.0 6241 + '@atproto/xrpc': 0.7.1 6325 6242 await-lock: 2.2.2 6326 6243 multiformats: 9.9.0 6327 6244 tlds: 1.255.0 ··· 6341 6258 uint8arrays: 3.0.0 6342 6259 zod: 3.23.8 6343 6260 6344 - '@atproto/common@0.4.4': 6345 - dependencies: 6346 - '@atproto/common-web': 0.3.1 6347 - '@ipld/dag-cbor': 7.0.3 6348 - cbor-x: 1.6.0 6349 - iso-datestring-validator: 2.2.2 6350 - multiformats: 9.9.0 6351 - pino: 8.21.0 6352 - 6353 6261 '@atproto/common@0.4.5': 6354 6262 dependencies: 6355 6263 '@atproto/common-web': 0.3.1 ··· 6361 6269 6362 6270 '@atproto/crypto@0.4.2': 6363 6271 dependencies: 6364 - '@noble/curves': 1.7.0 6272 + '@noble/curves': 1.8.1 6365 6273 '@noble/hashes': 1.6.1 6366 6274 uint8arrays: 3.0.0 6367 6275 ··· 6388 6296 multiformats: 9.9.0 6389 6297 zod: 3.23.8 6390 6298 6391 - '@atproto/jwk@0.2.0': 6299 + '@atproto/jwk@0.1.5': 6392 6300 dependencies: 6393 6301 multiformats: 9.9.0 6394 6302 zod: 3.23.8 ··· 6423 6331 multiformats: 9.9.0 6424 6332 zod: 3.23.8 6425 6333 6334 + '@atproto/lexicon@0.4.12': 6335 + dependencies: 6336 + '@atproto/common-web': 0.4.2 6337 + '@atproto/syntax': 0.4.0 6338 + iso-datestring-validator: 2.2.2 6339 + multiformats: 9.9.0 6340 + zod: 3.23.8 6341 + 6426 6342 '@atproto/lexicon@0.4.3': 6427 6343 dependencies: 6428 6344 '@atproto/common-web': 0.3.1 ··· 6463 6379 '@atproto/oauth-types': 0.2.7 6464 6380 '@atproto/xrpc': 0.7.0 6465 6381 multiformats: 9.9.0 6466 - zod: 3.24.1 6382 + zod: 3.23.8 6467 6383 6468 6384 '@atproto/oauth-client@0.3.2': 6469 6385 dependencies: ··· 6480 6396 multiformats: 9.9.0 6481 6397 zod: 3.23.8 6482 6398 6483 - '@atproto/oauth-client@0.3.8': 6484 - dependencies: 6485 - '@atproto-labs/did-resolver': 0.1.9 6486 - '@atproto-labs/fetch': 0.2.0 6487 - '@atproto-labs/handle-resolver': 0.1.6 6488 - '@atproto-labs/identity-resolver': 0.1.11 6489 - '@atproto-labs/simple-store': 0.1.1 6490 - '@atproto-labs/simple-store-memory': 0.1.1 6491 - '@atproto/did': 0.1.4 6492 - '@atproto/jwk': 0.1.2 6493 - '@atproto/oauth-types': 0.2.2 6494 - '@atproto/xrpc': 0.6.7 6495 - multiformats: 9.9.0 6496 - zod: 3.24.1 6497 - 6498 6399 '@atproto/oauth-types@0.2.1': 6499 6400 dependencies: 6500 6401 '@atproto/jwk': 0.1.1 6501 6402 zod: 3.23.8 6502 6403 6503 - '@atproto/oauth-types@0.2.8': 6404 + '@atproto/oauth-types@0.2.7': 6504 6405 dependencies: 6505 - '@atproto/jwk': 0.2.0 6406 + '@atproto/jwk': 0.1.5 6506 6407 zod: 3.23.8 6507 - 6508 - '@atproto/repo@0.5.5': 6509 - dependencies: 6510 - '@atproto/jwk': 0.1.5 6511 - zod: 3.24.1 6512 6408 6513 6409 '@atproto/syntax@0.3.1': {} 6514 6410 ··· 6519 6415 '@atproto/common': 0.4.5 6520 6416 '@atproto/crypto': 0.4.2 6521 6417 '@atproto/lexicon': 0.4.4 6522 - '@atproto/xrpc': 0.6.5 6418 + '@atproto/xrpc': 0.6.7 6523 6419 cbor-x: 1.6.0 6524 6420 express: 4.21.2 6525 6421 http-errors: 2.0.0 ··· 6538 6434 '@atproto/lexicon': 0.4.3 6539 6435 zod: 3.23.8 6540 6436 6541 - '@atproto/xrpc@0.6.6': 6542 - dependencies: 6543 - '@atproto/lexicon': 0.4.5 6544 - zod: 3.24.1 6545 - 6546 6437 '@atproto/xrpc@0.6.7': 6547 6438 dependencies: 6548 - '@atproto/lexicon': 0.4.5 6549 - zod: 3.24.1 6439 + '@atproto/lexicon': 0.4.11 6440 + zod: 3.23.8 6550 6441 6551 6442 '@atproto/xrpc@0.7.0': 6552 6443 dependencies: 6553 6444 '@atproto/lexicon': 0.4.11 6445 + zod: 3.23.8 6446 + 6447 + '@atproto/xrpc@0.7.1': 6448 + dependencies: 6449 + '@atproto/lexicon': 0.4.12 6554 6450 zod: 3.23.8 6555 6451 6556 6452 '@babel/code-frame@7.10.4': ··· 7297 7193 7298 7194 '@expo/config-plugins@10.0.2': 7299 7195 dependencies: 7300 - '@expo/config-types': 53.0.4 7301 - '@expo/json-file': 9.1.4 7196 + '@expo/config-types': 53.0.5 7197 + '@expo/json-file': 9.1.5 7302 7198 '@expo/plist': 0.3.4 7303 7199 '@expo/sdk-runtime-versions': 1.0.0 7304 7200 chalk: 4.1.2 ··· 7332 7228 xml2js: 0.6.0 7333 7229 transitivePeerDependencies: 7334 7230 - supports-color 7335 - 7336 - '@expo/config-types@53.0.3': {} 7337 7231 7338 7232 '@expo/config-types@53.0.4': {} 7339 7233 ··· 7375 7269 transitivePeerDependencies: 7376 7270 - supports-color 7377 7271 7378 - '@expo/config@11.0.8': 7379 - dependencies: 7380 - '@babel/code-frame': 7.10.4 7381 - '@expo/config-plugins': 10.0.2 7382 - '@expo/config-types': 53.0.3 7383 - '@expo/json-file': 9.1.4 7384 - deepmerge: 4.3.1 7385 - getenv: 1.0.0 7386 - glob: 10.4.5 7387 - require-from-string: 2.0.2 7388 - resolve-from: 5.0.0 7389 - resolve-workspace-root: 2.0.0 7390 - semver: 7.6.3 7391 - slugify: 1.6.6 7392 - sucrase: 3.35.0 7393 - transitivePeerDependencies: 7394 - - supports-color 7395 - 7396 7272 '@expo/devcert@1.1.4': 7397 7273 dependencies: 7398 7274 application-config-path: 0.1.1 ··· 7406 7282 password-prompt: 1.1.3 7407 7283 sudo-prompt: 8.2.5 7408 7284 tmp: 0.0.33 7409 - tslib: 2.6.2 7285 + tslib: 2.8.1 7410 7286 transitivePeerDependencies: 7411 7287 - supports-color 7412 7288 ··· 7447 7323 transitivePeerDependencies: 7448 7324 - supports-color 7449 7325 7450 - '@expo/image-utils@0.7.4': 7451 - dependencies: 7452 - '@expo/spawn-async': 1.7.2 7453 - chalk: 4.1.2 7454 - getenv: 1.0.0 7455 - jimp-compact: 0.16.1 7456 - parse-png: 2.1.0 7457 - resolve-from: 5.0.0 7458 - semver: 7.6.3 7459 - temp-dir: 2.0.0 7460 - unique-string: 2.0.0 7461 - 7462 7326 '@expo/image-utils@0.7.6': 7463 7327 dependencies: 7464 7328 '@expo/spawn-async': 1.7.2 ··· 7550 7414 transitivePeerDependencies: 7551 7415 - supports-color 7552 7416 7553 - '@expo/prebuild-config@9.0.5': 7554 - dependencies: 7555 - '@expo/config': 11.0.8 7556 - '@expo/config-plugins': 10.0.2 7557 - '@expo/config-types': 53.0.3 7558 - '@expo/image-utils': 0.7.4 7559 - '@expo/json-file': 9.1.4 7560 - '@react-native/normalize-colors': 0.79.2 7561 - debug: 4.4.0 7562 - resolve-from: 5.0.0 7563 - semver: 7.6.3 7564 - xml2js: 0.6.0 7565 - transitivePeerDependencies: 7566 - - supports-color 7567 - 7568 7417 '@expo/sdk-runtime-versions@1.0.0': {} 7569 7418 7570 7419 '@expo/server@0.6.2': ··· 7646 7495 '@humanwhocodes/module-importer@1.0.1': {} 7647 7496 7648 7497 '@humanwhocodes/object-schema@2.0.3': {} 7498 + 7499 + '@ianvs/prettier-plugin-sort-imports@4.5.1(prettier@3.5.3)': 7500 + dependencies: 7501 + '@babel/generator': 7.26.3 7502 + '@babel/parser': 7.26.3 7503 + '@babel/traverse': 7.26.4 7504 + '@babel/types': 7.26.3 7505 + prettier: 3.5.3 7506 + semver: 7.6.3 7507 + transitivePeerDependencies: 7508 + - supports-color 7649 7509 7650 7510 '@ipld/dag-cbor@7.0.3': 7651 7511 dependencies: ··· 7685 7545 dependencies: 7686 7546 '@jest/fake-timers': 29.7.0 7687 7547 '@jest/types': 29.6.3 7688 - '@types/node': 20.17.10 7548 + '@types/node': 22.10.2 7689 7549 jest-mock: 29.7.0 7690 7550 7691 7551 '@jest/fake-timers@29.7.0': 7692 7552 dependencies: 7693 7553 '@jest/types': 29.6.3 7694 7554 '@sinonjs/fake-timers': 10.3.0 7695 - '@types/node': 20.17.10 7555 + '@types/node': 22.10.2 7696 7556 jest-message-util: 29.7.0 7697 7557 jest-mock: 29.7.0 7698 7558 jest-util: 29.7.0 ··· 7726 7586 '@jest/schemas': 29.6.3 7727 7587 '@types/istanbul-lib-coverage': 2.0.6 7728 7588 '@types/istanbul-reports': 3.0.4 7729 - '@types/node': 20.17.10 7589 + '@types/node': 22.10.2 7730 7590 '@types/yargs': 17.0.33 7731 7591 chalk: 4.1.2 7732 7592 ··· 7759 7619 7760 7620 '@noble/curves@1.8.1': 7761 7621 dependencies: 7762 - '@noble/hashes': 1.6.0 7763 - 7764 - '@noble/hashes@1.6.0': {} 7622 + '@noble/hashes': 1.7.1 7765 7623 7766 7624 '@noble/hashes@1.6.1': {} 7625 + 7626 + '@noble/hashes@1.7.1': {} 7767 7627 7768 7628 '@nodelib/fs.scandir@2.1.5': 7769 7629 dependencies: ··· 8444 8304 8445 8305 '@types/graceful-fs@4.1.9': 8446 8306 dependencies: 8447 - '@types/node': 20.17.10 8307 + '@types/node': 22.10.2 8448 8308 8449 8309 '@types/hammerjs@2.0.46': {} 8450 8310 ··· 8466 8326 dependencies: 8467 8327 undici-types: 6.19.8 8468 8328 8469 - '@types/node@20.17.9': 8470 - dependencies: 8471 - undici-types: 6.19.8 8472 - 8473 8329 '@types/node@22.10.2': 8474 8330 dependencies: 8475 8331 undici-types: 6.20.0 ··· 8818 8674 8819 8675 aria-hidden@1.2.4: 8820 8676 dependencies: 8821 - tslib: 2.6.2 8677 + tslib: 2.8.1 8822 8678 8823 8679 array-buffer-byte-length@1.0.2: 8824 8680 dependencies: ··· 8912 8768 8913 8769 aws4@1.13.2: {} 8914 8770 8915 - axios@0.27.2: 8916 - dependencies: 8917 - follow-redirects: 1.15.9 8918 - form-data: 4.0.1 8919 - transitivePeerDependencies: 8920 - - debug 8921 - 8922 8771 babel-jest@29.7.0(@babel/core@7.26.0): 8923 8772 dependencies: 8924 8773 '@babel/core': 7.26.0 ··· 9248 9097 9249 9098 chrome-launcher@0.15.2: 9250 9099 dependencies: 9251 - '@types/node': 20.17.10 9100 + '@types/node': 22.10.2 9252 9101 escape-string-regexp: 4.0.0 9253 9102 is-wsl: 2.2.0 9254 9103 lighthouse-logger: 1.4.2 ··· 9259 9108 9260 9109 chromium-edge-launcher@0.2.0: 9261 9110 dependencies: 9262 - '@types/node': 20.17.10 9111 + '@types/node': 22.10.2 9263 9112 escape-string-regexp: 4.0.0 9264 9113 is-wsl: 2.2.0 9265 9114 lighthouse-logger: 1.4.2 ··· 9453 9302 dependencies: 9454 9303 assert-plus: 1.0.0 9455 9304 9456 - data-view-buffer@1.0.1: 9457 - dependencies: 9458 - call-bind: 1.0.8 9459 - es-errors: 1.3.0 9460 - is-data-view: 1.0.2 9461 - 9462 9305 data-view-buffer@1.0.2: 9463 9306 dependencies: 9464 9307 call-bound: 1.0.3 ··· 9564 9407 dependencies: 9565 9408 dotenv: 16.4.7 9566 9409 9567 - dotenv-expand@12.0.2: 9568 - dependencies: 9569 - dotenv: 16.4.7 9570 - 9571 9410 dotenv@16.4.7: {} 9572 9411 9573 9412 dunder-proto@1.0.0: ··· 9767 9606 dependencies: 9768 9607 '@nolyfill/is-core-module': 1.0.39 9769 9608 debug: 4.4.0 9770 - enhanced-resolve: 5.18.0 9609 + enhanced-resolve: 5.17.1 9771 9610 eslint: 8.57.1 9772 9611 fast-glob: 3.3.2 9773 9612 get-tsconfig: 4.8.1 ··· 10087 9926 10088 9927 expo-splash-screen@0.30.8(expo@53.0.20(@babel/core@7.26.0)(@expo/metro-runtime@5.0.4(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0)))(babel-plugin-react-compiler@19.0.0-beta-37ed2a7-20241206)(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0)): 10089 9928 dependencies: 10090 - '@expo/prebuild-config': 9.0.5 9929 + '@expo/prebuild-config': 9.0.11 10091 9930 expo: 53.0.20(@babel/core@7.26.0)(@expo/metro-runtime@5.0.4(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0)))(babel-plugin-react-compiler@19.0.0-beta-37ed2a7-20241206)(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) 10092 9931 transitivePeerDependencies: 10093 9932 - supports-color ··· 10107 9946 10108 9947 expo-system-ui@5.0.7(expo@53.0.20(@babel/core@7.26.0)(@expo/metro-runtime@5.0.4(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0)))(babel-plugin-react-compiler@19.0.0-beta-37ed2a7-20241206)(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-web@0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0)): 10109 9948 dependencies: 10110 - '@react-native/normalize-colors': 0.79.3 9949 + '@react-native/normalize-colors': 0.79.2 10111 9950 debug: 4.4.0 10112 9951 expo: 53.0.20(@babel/core@7.26.0)(@expo/metro-runtime@5.0.4(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0)))(babel-plugin-react-compiler@19.0.0-beta-37ed2a7-20241206)(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) 10113 9952 react-native: 0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0) ··· 10309 10148 10310 10149 flow-enums-runtime@0.0.6: {} 10311 10150 10312 - follow-redirects@1.15.9: {} 10313 - 10314 10151 fontfaceobserver@2.3.0: {} 10315 10152 10316 10153 for-each@0.3.3: ··· 10403 10240 10404 10241 get-port@3.2.0: {} 10405 10242 10406 - get-proto@1.0.1: 10407 - dependencies: 10408 - dunder-proto: 1.0.1 10409 - es-object-atoms: 1.0.0 10410 - 10411 10243 get-stream@9.0.1: 10412 10244 dependencies: 10413 10245 '@sec-ant/readable-stream': 0.4.1 10414 10246 is-stream: 4.0.1 10415 - 10416 - get-symbol-description@1.0.2: 10417 - dependencies: 10418 - call-bind: 1.0.8 10419 - es-errors: 1.3.0 10420 - get-intrinsic: 1.2.6 10421 10247 10422 10248 get-symbol-description@1.1.0: 10423 10249 dependencies: ··· 10759 10585 10760 10586 is-shared-array-buffer@1.0.4: 10761 10587 dependencies: 10762 - call-bound: 1.0.4 10588 + call-bound: 1.0.3 10763 10589 10764 10590 is-stream@4.0.1: {} 10765 10591 10766 - is-string@1.1.0: 10767 - dependencies: 10768 - call-bind: 1.0.8 10769 - has-tostringtag: 1.0.2 10770 - 10771 10592 is-string@1.1.1: 10772 10593 dependencies: 10773 10594 call-bound: 1.0.3 ··· 10846 10667 '@jest/environment': 29.7.0 10847 10668 '@jest/fake-timers': 29.7.0 10848 10669 '@jest/types': 29.6.3 10849 - '@types/node': 20.17.10 10670 + '@types/node': 22.10.2 10850 10671 jest-mock: 29.7.0 10851 10672 jest-util: 29.7.0 10852 10673 ··· 10856 10677 dependencies: 10857 10678 '@jest/types': 29.6.3 10858 10679 '@types/graceful-fs': 4.1.9 10859 - '@types/node': 20.17.10 10680 + '@types/node': 22.10.2 10860 10681 anymatch: 3.1.3 10861 10682 fb-watchman: 2.0.2 10862 10683 graceful-fs: 4.2.11 ··· 10883 10704 jest-mock@29.7.0: 10884 10705 dependencies: 10885 10706 '@jest/types': 29.6.3 10886 - '@types/node': 20.17.10 10707 + '@types/node': 22.10.2 10887 10708 jest-util: 29.7.0 10888 10709 10889 10710 jest-regex-util@29.6.3: {} ··· 10891 10712 jest-util@29.7.0: 10892 10713 dependencies: 10893 10714 '@jest/types': 29.6.3 10894 - '@types/node': 20.17.10 10715 + '@types/node': 22.10.2 10895 10716 chalk: 4.1.2 10896 10717 ci-info: 3.9.0 10897 10718 graceful-fs: 4.2.11 ··· 10914 10735 10915 10736 jest-worker@29.7.0: 10916 10737 dependencies: 10917 - '@types/node': 20.17.10 10738 + '@types/node': 22.10.2 10918 10739 jest-util: 29.7.0 10919 10740 merge-stream: 2.0.0 10920 10741 supports-color: 8.1.1 ··· 11769 11590 11770 11591 prelude-ls@1.2.1: {} 11771 11592 11772 - prettier-plugin-tailwindcss@0.6.12(@ianvs/prettier-plugin-sort-imports@4.4.2(prettier@3.5.3))(prettier@3.5.3): 11593 + prettier-plugin-tailwindcss@0.6.12(@ianvs/prettier-plugin-sort-imports@4.5.1(prettier@3.5.3))(prettier@3.5.3): 11773 11594 dependencies: 11774 11595 prettier: 3.5.3 11775 11596 optionalDependencies: 11776 - '@ianvs/prettier-plugin-sort-imports': 4.4.2(prettier@3.5.3) 11597 + '@ianvs/prettier-plugin-sort-imports': 4.5.1(prettier@3.5.3) 11777 11598 11778 11599 prettier@3.4.2: {} 11779 11600 ··· 11903 11724 11904 11725 react-is@19.1.0: {} 11905 11726 11727 + react-native-css-interop@0.1.18(react-native-reanimated@3.17.5(@babel/core@7.26.0)(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@22.10.2)(typescript@5.8.3))): 11728 + dependencies: 11729 + '@babel/helper-module-imports': 7.25.9 11730 + '@babel/traverse': 7.26.4 11731 + '@babel/types': 7.26.3 11732 + debug: 4.4.0 11733 + lightningcss: 1.27.0 11734 + react: 19.0.0 11735 + react-native: 0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0) 11736 + react-native-reanimated: 3.17.5(@babel/core@7.26.0)(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) 11737 + semver: 7.6.3 11738 + tailwindcss: 3.4.17(ts-node@10.9.2(@types/node@22.10.2)(typescript@5.8.3)) 11739 + optionalDependencies: 11740 + react-native-safe-area-context: 5.4.0(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) 11741 + react-native-svg: 15.11.2(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) 11742 + transitivePeerDependencies: 11743 + - supports-color 11744 + 11906 11745 react-native-css-interop@0.1.22(react-native-reanimated@3.17.5(@babel/core@7.26.0)(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.2(@babel/core@7.26.0)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@22.10.2)(typescript@5.8.3))): 11907 11746 dependencies: 11908 11747 '@babel/helper-module-imports': 7.25.9 ··· 12071 11910 dependencies: 12072 11911 react: 19.0.0 12073 11912 react-style-singleton: 2.2.3(@types/react@19.0.14)(react@19.0.0) 12074 - tslib: 2.6.2 11913 + tslib: 2.8.1 12075 11914 optionalDependencies: 12076 11915 '@types/react': 19.0.14 12077 11916 ··· 12080 11919 react: 19.0.0 12081 11920 react-remove-scroll-bar: 2.3.8(@types/react@19.0.14)(react@19.0.0) 12082 11921 react-style-singleton: 2.2.3(@types/react@19.0.14)(react@19.0.0) 12083 - tslib: 2.6.2 11922 + tslib: 2.8.1 12084 11923 use-callback-ref: 1.3.3(@types/react@19.0.14)(react@19.0.0) 12085 11924 use-sidecar: 1.1.3(@types/react@19.0.14)(react@19.0.0) 12086 11925 optionalDependencies: ··· 12090 11929 dependencies: 12091 11930 get-nonce: 1.0.1 12092 11931 react: 19.0.0 12093 - tslib: 2.6.2 11932 + tslib: 2.8.1 12094 11933 optionalDependencies: 12095 11934 '@types/react': 19.0.14 12096 11935 ··· 12742 12581 12743 12582 tr46@0.0.3: {} 12744 12583 12584 + ts-api-utils@1.4.3(typescript@5.8.3): 12585 + dependencies: 12586 + typescript: 5.8.3 12587 + 12745 12588 ts-api-utils@2.1.0(typescript@5.8.3): 12746 12589 dependencies: 12747 12590 typescript: 5.8.3 ··· 12923 12766 use-callback-ref@1.3.3(@types/react@19.0.14)(react@19.0.0): 12924 12767 dependencies: 12925 12768 react: 19.0.0 12926 - tslib: 2.6.2 12769 + tslib: 2.8.1 12927 12770 optionalDependencies: 12928 12771 '@types/react': 19.0.14 12929 12772 ··· 12935 12778 dependencies: 12936 12779 detect-node-es: 1.1.0 12937 12780 react: 19.0.0 12938 - tslib: 2.6.2 12781 + tslib: 2.8.1 12939 12782 optionalDependencies: 12940 12783 '@types/react': 19.0.14 12941 12784 ··· 13008 12851 acorn: 8.14.0 13009 12852 browserslist: 4.24.3 13010 12853 chrome-trace-event: 1.0.4 13011 - enhanced-resolve: 5.18.0 12854 + enhanced-resolve: 5.17.1 13012 12855 es-module-lexer: 1.6.0 13013 12856 eslint-scope: 5.1.1 13014 12857 events: 3.3.0 ··· 13041 12884 tr46: 0.0.3 13042 12885 webidl-conversions: 3.0.1 13043 12886 13044 - which-boxed-primitive@1.1.0: 13045 - dependencies: 13046 - is-bigint: 1.1.0 13047 - is-boolean-object: 1.2.1 13048 - is-number-object: 1.1.0 13049 - is-string: 1.1.0 13050 - is-symbol: 1.1.1 13051 - 13052 12887 which-boxed-primitive@1.1.1: 13053 12888 dependencies: 13054 12889 is-bigint: 1.1.0 ··· 13166 13001 13167 13002 yoctocolors@2.1.1: {} 13168 13003 13169 - zod-validation-error@3.4.0(zod@3.24.1): 13004 + zod-validation-error@3.4.0(zod@3.23.8): 13170 13005 dependencies: 13171 13006 zod: 3.23.8 13172 13007