Merge branch 'flake'

This commit is contained in:
EthanShoeDev
2025-09-24 17:41:16 -04:00
16 changed files with 767 additions and 539 deletions

322
.dockerignore Normal file
View File

@@ -0,0 +1,322 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# Dependencies
**/node_modules
**/.pnp
**/.pnp.js
# Testing
**/coverage
# Turbo
**/.turbo
# Vercel
**/.vercel
# Build Outputs
**/.next/
**/out/
**/dist
# Debug
**/npm-debug.log*
**/yarn-debug.log*
**/yarn-error.log*
# Misc
**/.DS_Store
**/*.pem
**/tmp/
**/**/tsconfig.tsbuildinfo
**/dep-log.json
**/mnt/*
**/*.log
**/.turbo/
# From apps/mobile/.gitignore
# Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files
# dependencies
apps/mobile/**/node_modules/
# Expo
apps/mobile/**/.expo/
apps/mobile/**/dist/
apps/mobile/**/web-build/
apps/mobile/**/expo-env.d.ts
# Native
apps/mobile/**/.kotlin/
apps/mobile/**/*.orig.*
apps/mobile/**/*.jks
apps/mobile/**/*.p8
apps/mobile/**/*.p12
apps/mobile/**/*.key
apps/mobile/**/*.mobileprovision
# Metro
apps/mobile/**/.metro-health-check*
# debug
apps/mobile/**/npm-debug.*
apps/mobile/**/yarn-debug.*
apps/mobile/**/yarn-error.*
# macOS
apps/mobile/**/.DS_Store
apps/mobile/**/*.pem
# local env files
apps/mobile/**/.env*.local
# typescript
apps/mobile/**/*.tsbuildinfo
# https://docs.expo.dev/workflow/continuous-native-generation/
apps/mobile/**/android/
apps/mobile/**/ios/
# From apps/web/.gitignore
# build output
apps/web/**/dist/
# generated types
apps/web/**/.astro/
# dependencies
apps/web/**/node_modules/
# logs
apps/web/**/npm-debug.log*
apps/web/**/yarn-debug.log*
apps/web/**/yarn-error.log*
apps/web/**/pnpm-debug.log*
# environment variables
apps/web/**/.env
apps/web/**/.env.production
# macOS-specific files
apps/web/**/.DS_Store
# jetbrains setting folder
apps/web/**/.idea/
# From packages/react-native-uniffi-russh/.gitignore
# OSX
#
packages/react-native-uniffi-russh/**/.DS_Store
# XDE
packages/react-native-uniffi-russh/**/.expo/
# VSCode
packages/react-native-uniffi-russh/**/.vscode/
packages/react-native-uniffi-russh/**/jsconfig.json
# Xcode
#
packages/react-native-uniffi-russh/**/build/
packages/react-native-uniffi-russh/**/*.pbxuser
!packages/react-native-uniffi-russh/**/default.pbxuser
packages/react-native-uniffi-russh/**/*.mode1v3
!packages/react-native-uniffi-russh/**/default.mode1v3
packages/react-native-uniffi-russh/**/*.mode2v3
!packages/react-native-uniffi-russh/**/default.mode2v3
packages/react-native-uniffi-russh/**/*.perspectivev3
!packages/react-native-uniffi-russh/**/default.perspectivev3
packages/react-native-uniffi-russh/**/xcuserdata
packages/react-native-uniffi-russh/**/*.xccheckout
packages/react-native-uniffi-russh/**/*.moved-aside
packages/react-native-uniffi-russh/**/DerivedData
packages/react-native-uniffi-russh/**/*.hmap
packages/react-native-uniffi-russh/**/*.ipa
packages/react-native-uniffi-russh/**/*.xcuserstate
packages/react-native-uniffi-russh/**/project.xcworkspace
packages/react-native-uniffi-russh/**/**/.xcode.env.local
# Android/IJ
#
packages/react-native-uniffi-russh/**/.classpath
packages/react-native-uniffi-russh/**/.cxx
packages/react-native-uniffi-russh/**/.gradle
packages/react-native-uniffi-russh/**/.idea
packages/react-native-uniffi-russh/**/.project
packages/react-native-uniffi-russh/**/.settings
packages/react-native-uniffi-russh/**/local.properties
packages/react-native-uniffi-russh/**/android.iml
# Cocoapods
#
packages/react-native-uniffi-russh/**/example/ios/Pods
# Ruby
packages/react-native-uniffi-russh/**/example/vendor/
# node.js
#
packages/react-native-uniffi-russh/**/node_modules/
packages/react-native-uniffi-russh/**/npm-debug.log
packages/react-native-uniffi-russh/**/yarn-debug.log
packages/react-native-uniffi-russh/**/yarn-error.log
# BUCK
packages/react-native-uniffi-russh/**/buck-out/
packages/react-native-uniffi-russh/**/\.buckd/
packages/react-native-uniffi-russh/**/android/app/libs
packages/react-native-uniffi-russh/**/android/keystores/debug.keystore
# Yarn
packages/react-native-uniffi-russh/**/.yarn/*
!packages/react-native-uniffi-russh/**/.yarn/patches
!packages/react-native-uniffi-russh/**/.yarn/plugins
!packages/react-native-uniffi-russh/**/.yarn/releases
!packages/react-native-uniffi-russh/**/.yarn/sdks
!packages/react-native-uniffi-russh/**/.yarn/versions
# Expo
packages/react-native-uniffi-russh/**/.expo/
# Turborepo
packages/react-native-uniffi-russh/**/.turbo/
# generated by bob
packages/react-native-uniffi-russh/lib
# React Native Codegen
packages/react-native-uniffi-russh/**/ios/generated
packages/react-native-uniffi-russh/**/android/generated
# React Native Nitro Modules
packages/react-native-uniffi-russh/**/nitrogen/
# From uniffi-bindgen-react-native
# rust_modules/
packages/react-native-uniffi-russh/**/*.a
packages/react-native-uniffi-russh/android
packages/react-native-uniffi-russh/ios
packages/react-native-uniffi-russh/cpp
packages/react-native-uniffi-russh/src/*
packages/react-native-uniffi-russh/**/*.xcframework
packages/react-native-uniffi-russh/**/*.podspec
!packages/react-native-uniffi-russh/**/src/api.ts
# From packages/react-native-uniffi-russh/rust/.gitignore
# Created by https://www.toptal.com/developers/gitignore/api/rust,xcode,android
# Edit at https://www.toptal.com/developers/gitignore?templates=rust,xcode,android
### Android ###
# Gradle files
packages/react-native-uniffi-russh/rust/**/.gradle/
packages/react-native-uniffi-russh/rust/**/build/
# Local configuration file (sdk path, etc)
packages/react-native-uniffi-russh/rust/**/local.properties
# Log/OS Files
packages/react-native-uniffi-russh/rust/**/*.log
# Android Studio generated files and folders
packages/react-native-uniffi-russh/rust/**/captures/
packages/react-native-uniffi-russh/rust/**/.externalNativeBuild/
packages/react-native-uniffi-russh/rust/**/.cxx/
packages/react-native-uniffi-russh/rust/**/*.apk
packages/react-native-uniffi-russh/rust/**/output.json
# IntelliJ
packages/react-native-uniffi-russh/rust/**/*.iml
packages/react-native-uniffi-russh/rust/**/.idea/
packages/react-native-uniffi-russh/rust/**/misc.xml
packages/react-native-uniffi-russh/rust/**/deploymentTargetDropDown.xml
packages/react-native-uniffi-russh/rust/**/render.experimental.xml
# Keystore files
packages/react-native-uniffi-russh/rust/**/*.jks
packages/react-native-uniffi-russh/rust/**/*.keystore
# Google Services (e.g. APIs or Firebase)
packages/react-native-uniffi-russh/rust/**/google-services.json
# Android Profiling
packages/react-native-uniffi-russh/rust/**/*.hprof
### Android Patch ###
packages/react-native-uniffi-russh/rust/**/gen-external-apklibs
# Replacement of .externalNativeBuild directories introduced
# with Android Studio 3.5.
### Rust ###
# Generated by Cargo
# will have compiled files and executables
packages/react-native-uniffi-russh/rust/**/debug/
packages/react-native-uniffi-russh/rust/**/target/
# These are backup files generated by rustfmt
packages/react-native-uniffi-russh/rust/**/**/*.rs.bk
# MSVC Windows builds of rustc generate these, which store debugging information
packages/react-native-uniffi-russh/rust/**/*.pdb
### Xcode ###
## User settings
packages/react-native-uniffi-russh/rust/**/xcuserdata/
## Xcode 8 and earlier
packages/react-native-uniffi-russh/rust/**/*.xcscmblueprint
packages/react-native-uniffi-russh/rust/**/*.xccheckout
### Xcode Patch ###
packages/react-native-uniffi-russh/rust/**/*.xcodeproj/*
!packages/react-native-uniffi-russh/rust/**/*.xcodeproj/project.pbxproj
!packages/react-native-uniffi-russh/rust/**/*.xcodeproj/xcshareddata/
!packages/react-native-uniffi-russh/rust/**/*.xcodeproj/project.xcworkspace/
!packages/react-native-uniffi-russh/rust/**/*.xcworkspace/contents.xcworkspacedata
packages/react-native-uniffi-russh/rust/*.gcno
packages/react-native-uniffi-russh/rust/**/**/xcshareddata/WorkspaceSettings.xcsettings
# End of https://www.toptal.com/developers/gitignore/api/rust,xcode,android
# Swift Package Manager
packages/react-native-uniffi-russh/rust/**/.build/
# macOS Ignores
packages/react-native-uniffi-russh/rust/**/.DS_Store
# Android (cargo-ndk outputs; they end up in the Android source tree)
packages/react-native-uniffi-russh/rust/**/*.so
# From packages/react-native-uniffi-russh/rust/uniffi-russh/.gitignore
!packages/react-native-uniffi-russh/rust/uniffi-russh/**/.vscode
packages/react-native-uniffi-russh/rust/uniffi-russh/**/mnt/
# From packages/react-native-xtermjs-webview/.gitignore
# Logs
packages/react-native-xtermjs-webview/**/logs
packages/react-native-xtermjs-webview/**/*.log
packages/react-native-xtermjs-webview/**/npm-debug.log*
packages/react-native-xtermjs-webview/**/yarn-debug.log*
packages/react-native-xtermjs-webview/**/yarn-error.log*
packages/react-native-xtermjs-webview/**/pnpm-debug.log*
packages/react-native-xtermjs-webview/**/lerna-debug.log*
packages/react-native-xtermjs-webview/**/node_modules
packages/react-native-xtermjs-webview/**/dist
packages/react-native-xtermjs-webview/**/dist-internal
packages/react-native-xtermjs-webview/**/dist-ssr
packages/react-native-xtermjs-webview/**/*.local
# Editor directories and files
packages/react-native-xtermjs-webview/**/.vscode/*
!packages/react-native-xtermjs-webview/**/.vscode/extensions.json
packages/react-native-xtermjs-webview/**/.idea
packages/react-native-xtermjs-webview/**/.DS_Store
packages/react-native-xtermjs-webview/**/*.suo
packages/react-native-xtermjs-webview/**/*.ntvs*
packages/react-native-xtermjs-webview/**/*.njsproj
packages/react-native-xtermjs-webview/**/*.sln
packages/react-native-xtermjs-webview/**/*.sw?

1
.envrc Normal file
View File

@@ -0,0 +1 @@
use flake

View File

@@ -1,21 +0,0 @@
name: Setup
description: Perform standard setup and install dependencies using pnpm.
inputs:
node-version:
description: The version of Node.js to install
required: true
default: 24.5.0
runs:
using: composite
steps:
- name: Install pnpm
uses: pnpm/action-setup@v3
- name: Install node
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ inputs.node-version }}
- name: Install dependencies
shell: bash
run: pnpm install

View File

@@ -20,8 +20,48 @@ jobs:
timeout-minutes: 10 timeout-minutes: 10
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@main
- name: Cache Nix Store
uses: nix-community/cache-nix-action@main
with:
primary-key: ${{ runner.os }}-nix-${{ hashFiles('flake.lock') }}
- name: Load devShell environment
uses: nicknovitski/nix-develop@main
with:
arguments: .#default
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Cache turbo build setup
uses: actions/cache@v4
with:
path: .turbo
key:
${{ runner.os }}-turbo-${{ github.ref_name }}-${{ github.job }}-${{
github.sha }}
restore-keys: |
${{ runner.os }}-turbo-${{ github.ref_name }}-${{ github.job }}-
${{ runner.os }}-turbo-${{ github.ref_name }}-
${{ runner.os }}-turbo-
- name: Install dependencies - name: Install dependencies
uses: ./.github/actions/setup run: pnpm install
- run: pnpm exec turbo lint:check - run: pnpm exec turbo lint:check
# test: # test:

1
.gitignore vendored
View File

@@ -37,3 +37,4 @@ dep-log.json
mnt/* mnt/*
*.log *.log
.turbo/ .turbo/
.direnv/

View File

@@ -8,6 +8,7 @@
"esbenp.prettier-vscode", "esbenp.prettier-vscode",
"yoavbls.pretty-ts-errors", "yoavbls.pretty-ts-errors",
"ctf0.duplicated-code-new", "ctf0.duplicated-code-new",
"github.vscode-github-actions" "github.vscode-github-actions",
"mkhl.direnv"
] ]
} }

View File

@@ -1,229 +1,3 @@
# Development with Nix (Android/Expo)
This repo ships a Nix **flake** that provides reproducible dev shells for React
Native + Expo and Android workflows. You dont need global installs of
Node/Watchman/Android SDK—the shell provides everything.
## Prereqs
- Nix with flakes enabled (`nix --version` should work)
- (Optional, recommended) [`direnv`](https://direnv.net/) +
[`nix-direnv`](https://github.com/nix-community/nix-direnv) to auto-enter
shells
## Shell variants
We publish three dev shells:
- **`default`** minimal JS toolchain you always want (Node, pnpm, watchman,
git, jq, just)
- **`android-local`** adds a full **Android SDK** + **Emulator** + **API 36
Google Play x86_64** system image Good when you run the emulator **on your
machine**.
- **`android-remote`** no emulator/image; adds **adb** + **scrcpy** Good when
you run an emulator **on a remote server** and mirror/control it locally.
Pick one per your setup.
## Quick start
### A) One-off use (no direnv)
```bash
# Minimal JS shell
nix develop .#default nix develop .#default
# Local emulator workflow (SDK + emulator + API 36 image) nix develop .#android-emulator
nix develop .#android-local
# Remote emulator workflow (adb + scrcpy only)
nix develop .#android-remote
```
### B) Auto-enter with direnv (recommended)
Create `.envrc` at the project root:
```bash
# choose one:
use flake .#android-local
# use flake .#android-remote
# use flake .#default
```
Then:
```bash
direnv allow
```
Any new shell in this folder will enter the selected dev shell automatically.
## What the shell sets up
- **Node/PNPM/Watchman/Git/JQ/Just** (all shells)
- **ANDROID_SDK_ROOT / ANDROID_HOME** (in `android-local`; points to the
immutable SDK built by Nix)
- **adb / emulator / sdkmanager / avdmanager** (in `android-local`)
- **adb / scrcpy** (in `android-remote`)
> Tip: we keep the Android SDK fully **immutable** (declarative). You dont
> “install packages” via Android Studio; the flake lists exactly which
> components are present.
## Local emulator workflow (`android-local`)
1. Enter the shell:
```bash
nix develop .#android-local
```
2. (First time) Create an AVD for API 36 (Google Play, x86_64):
```bash
avdmanager create avd -n a36-play-x86_64 \
-k "system-images;android-36;google_apis_playstore;x86_64"
```
3. Run the emulator:
```bash
# GUI window (desktop)
emulator @a36-play-x86_64
# Headless (CI/servers):
emulator @a36-play-x86_64 -no-window -no-audio
# If no KVM: add -gpu swiftshader_indirect
```
4. Verify `adb` sees it:
```bash
adb devices
```
5. Run your typical Expo/RN commands (Metro, build, etc.) inside the shell.
> **macOS users**: You can still build Android in this shell. The
> `android-local` shell provides `platform-tools` + SDK commands; the GUI
> Android Studio app is optional. If you prefer to use the macOS GUI emulator
> instead of the Nix one, thats fine—use `default` or `android-remote` and keep
> your local Android Studio install.
## Remote emulator workflow (`android-remote`)
Use this when your emulator runs on a remote Linux box (often headless/KVM).
1. Enter the shell:
```bash
nix develop .#android-remote
```
2. SSH-tunnel the **remote adb server** back to your machine:
```bash
ssh -N -L 5037:127.0.0.1:5037 user@remote-host
```
3. Point `adb` at the forwarded server and verify:
```bash
adb -H 127.0.0.1 -P 5037 devices
```
4. Mirror/control the remote emulator window locally:
```bash
scrcpy
```
Thats it—everything flows through SSH, and you dont need any extra ports.
## Common tasks
- Check versions:
```bash
adb version
sdkmanager --version
avdmanager --help
```
- Upgrade/change Android components Edit the system image or
build-tools/platforms listed in `flake.nix` under the `androidSdk36`
definition, then re-enter the shell.
- Clean emulators/AVDs AVDs live in `~/.android/avd` by default. You can remove
an AVD with:
```bash
avdmanager delete avd -n a36-play-x86_64
```
## Troubleshooting
- **Emulator is very slow / wont start** (Linux): Ensure `/dev/kvm` exists and
your user has permission (`kvm` group). Headless servers without KVM can still
run, but add `-gpu swiftshader_indirect` and expect reduced performance.
- **`adb` doesnt see the emulator**: Kill any stray local adb server and retry:
```bash
adb kill-server
adb start-server
adb devices
```
- **Gradle/Java mismatch**: If your Android Gradle Plugin complains about Java,
pin the JDK you need in the dev shell and set `JAVA_HOME`. (You can add a JDK
to `defaultPkgs` in the flake if your project requires a specific version.)
- **Expo/Metro cant find Android SDK**: Confirm `echo $ANDROID_SDK_ROOT` prints
a path in the `android-local` shell.
## CI usage
You can build/test in CI with:
```bash
nix develop --command bash -lc 'pnpm install && pnpm test'
```
or pick a specific shell:
```bash
nix develop .#android-local --command bash -lc 'just android-build'
```
---
If you want, I can add a tiny `Justfile` with `just avd-create`, `just avd-run`,
and `just adb-tunnel-remote` helpers so the common commands are one-liners.
## Enable Nix flakes globally
If you see errors like:
```
error: experimental Nix feature 'nix-command' is disabled; add '--extra-experimental-features nix-command' to enable it
```
…it means flakes are not enabled in your Nix configuration yet.
You can enable them permanently with a one-liner:
```bash
sudo mkdir -p /etc/nix && echo 'experimental-features = nix-command flakes' | sudo tee /etc/nix/nix.conf
```
Then restart your shell (or `nix-daemon` on macOS), and the error goes away.
From now on you can just run:
```bash
nix develop .#android-local
```
without passing any extra flags.

33
Dockerfile Normal file
View File

@@ -0,0 +1,33 @@
# syntax=docker/dockerfile:1.4
FROM nixos/nix:latest
RUN mkdir -p /etc/nix && \
echo 'experimental-features = nix-command flakes' > /etc/nix/nix.conf && \
echo 'accept-flake-config = true' >> /etc/nix/nix.conf
WORKDIR /workspace
ENV PNPM_STORE_PATH=/pnpm/store
COPY flake.nix flake.lock ./
RUN nix develop -c true
COPY pnpm-lock.yaml ./
COPY patches/* ./patches/
RUN --mount=type=cache,target=/pnpm/store,id=fressh-pnpm,sharing=locked \
nix develop -c pnpm fetch
COPY package.json pnpm-workspace.yaml ./
COPY apps/mobile/package.json ./apps/mobile/
COPY apps/web/package.json ./apps/web/
COPY packages/react-native-uniffi-russh/package.json ./packages/react-native-uniffi-russh/
COPY packages/react-native-xtermjs-webview/package.json ./packages/react-native-xtermjs-webview/
COPY packages/assets/package.json ./packages/assets/
RUN --mount=type=cache,target=/pnpm/store,id=fressh-pnpm,sharing=locked \
nix develop -c pnpm install --frozen-lockfile --offline
COPY . .
RUN --mount=type=cache,target=/pnpm/store,id=fressh-pnpm,sharing=locked \
nix develop -c pnpm install --frozen-lockfile
CMD ["nix", "develop"]

View File

@@ -36,19 +36,19 @@
"@tanstack/react-form": "^1.20.0", "@tanstack/react-form": "^1.20.0",
"@tanstack/react-query": "^5.89.0", "@tanstack/react-query": "^5.89.0",
"date-fns": "^4.1.0", "date-fns": "^4.1.0",
"expo": "54.0.9", "expo": "54.0.10",
"expo-clipboard": "~8.0.7", "expo-clipboard": "~8.0.7",
"expo-constants": "~18.0.9", "expo-constants": "~18.0.9",
"expo-crypto": "~15.0.7", "expo-crypto": "~15.0.7",
"expo-dev-client": "~6.0.12", "expo-dev-client": "~6.0.12",
"expo-document-picker": "~14.0.7", "expo-document-picker": "~14.0.7",
"expo-file-system": "~19.0.14", "expo-file-system": "~19.0.15",
"expo-font": "~14.0.8", "expo-font": "~14.0.8",
"expo-glass-effect": "^0.1.4", "expo-glass-effect": "^0.1.4",
"expo-haptics": "~15.0.7", "expo-haptics": "~15.0.7",
"expo-image": "~3.0.8", "expo-image": "~3.0.8",
"expo-linking": "~8.0.8", "expo-linking": "~8.0.8",
"expo-router": "6.0.7", "expo-router": "6.0.8",
"expo-secure-store": "~15.0.7", "expo-secure-store": "~15.0.7",
"expo-splash-screen": "~31.0.10", "expo-splash-screen": "~31.0.10",
"expo-status-bar": "~3.0.8", "expo-status-bar": "~3.0.8",

51
flake.lock generated
View File

@@ -9,11 +9,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1757621816, "lastModified": 1758658832,
"narHash": "sha256-r1cZQcvqcF7YUsw70Gxb2eGzuHl/hQHs01WNNeWklIc=", "narHash": "sha256-CWJUlYTqdCuWl6a7IYbrEficoz7gKouD7zzuHnko3sI=",
"owner": "tadfisher", "owner": "tadfisher",
"repo": "android-nixpkgs", "repo": "android-nixpkgs",
"rev": "feba9bc6e12243ba9ee9bdb236866e1209c55a78", "rev": "ee542f7fee389dca5c04622a8fb33459d825cd08",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -43,6 +43,27 @@
"type": "github" "type": "github"
} }
}, },
"fenix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1758695884,
"narHash": "sha256-rnHjtBRkcwRkrUZxg0RqN1qWTG+QC/gj4vn9uzEkBww=",
"owner": "nix-community",
"repo": "fenix",
"rev": "9cdb79384d02234fb2868eba6c7d390253ef6f83",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "fenix",
"type": "github"
}
},
"flake-utils": { "flake-utils": {
"inputs": { "inputs": {
"systems": "systems" "systems": "systems"
@@ -63,11 +84,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1757487488, "lastModified": 1758427187,
"narHash": "sha256-zwE/e7CuPJUWKdvvTCB7iunV4E/+G0lKfv4kk/5Izdg=", "narHash": "sha256-pHpxZ/IyCwoTQPtFIAG2QaxuSm8jWzrzBGjwQZIttJc=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ab0f3607a6c7486ea22229b92ed2d355f1482ee0", "rev": "554be6495561ff07b6c724047bdd7e0716aa7b46",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -80,9 +101,27 @@
"root": { "root": {
"inputs": { "inputs": {
"android-nixpkgs": "android-nixpkgs", "android-nixpkgs": "android-nixpkgs",
"fenix": "fenix",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
} }
}, },
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1758620797,
"narHash": "sha256-Ly4rHgrixFMBnkbMursVt74mxnntnE6yVdF5QellJ+A=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "905641f3520230ad6ef421bcf5da9c6b49f2479b",
"type": "github"
},
"original": {
"owner": "rust-lang",
"ref": "nightly",
"repo": "rust-analyzer",
"type": "github"
}
},
"systems": { "systems": {
"locked": { "locked": {
"lastModified": 1681028828, "lastModified": 1681028828,

243
flake.nix
View File

@@ -1,147 +1,166 @@
{ {
# nix run nixpkgs#alejandra -- format ./flake.nix
description = "Expo RN devshells (local emulator / remote AVD)"; description = "Expo RN devshells (local emulator / remote AVD)";
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
# Android SDK as packages
android-nixpkgs = { android-nixpkgs = {
url = "github:tadfisher/android-nixpkgs"; url = "github:tadfisher/android-nixpkgs";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
fenix = {
url = "github:nix-community/fenix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
nixConfig = {
extra-substituters = [
"https://android-nixpkgs.cachix.org"
"https://nix-community.cachix.org"
];
extra-trusted-public-keys = [
"android-nixpkgs.cachix.org-1:2lZoPmwoyTVGaNDHqa6A32tdn8Gc0aMWBRrfXN1H3dQ="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];
}; };
outputs = { outputs = {
self, self,
nixpkgs, nixpkgs,
android-nixpkgs, android-nixpkgs,
fenix,
... ...
}: let }: let
systems = ["x86_64-linux" "aarch64-darwin" "x86_64-darwin"]; systems = ["x86_64-linux" "aarch64-darwin" "x86_64-darwin"];
overlays = [
android-nixpkgs.overlays.default
];
forAllSystems = f: forAllSystems = f:
nixpkgs.lib.genAttrs systems ( nixpkgs.lib.genAttrs systems (
system: system:
f { f {
pkgs = import nixpkgs { pkgs = import nixpkgs {
inherit system; inherit system overlays;
overlays = [android-nixpkgs.overlays.default];
config.allowUnfree = true; # emulator is unfree config.allowUnfree = true; # emulator is unfree
}; };
} }
); );
in { in {
devShells = forAllSystems ({pkgs}: let devShells = forAllSystems (
makeAndroidSdk = mode: let {pkgs}: let
androidSdk = pkgs.androidSdk ( fen = fenix.packages.${pkgs.system};
sdk: rustToolchain = fen.combine [
if mode == "full" (fen.stable.withComponents [
then "cargo"
(with sdk; [ "clippy"
cmdline-tools-latest "rust-src"
platform-tools "rustc"
emulator "rustfmt"
build-tools-36-0-0 ])
platforms-android-36
system-images-android-36-0-Baklava-google-apis-playstore-x86-64
# Add NDK + CMake for native builds
ndk-26-1-10909125
cmake-3-22-1
])
else if mode == "remote"
then
(with sdk; [
cmdline-tools-latest # ← required for a valid SDK
platform-tools # adb/fastboot
])
else throw "makeAndroidSdk: unknown mode '${mode}'. Use \"full\" or \"remote\"."
);
# Standard path from nixpkgs' androidSdk wrapper fen.targets.aarch64-linux-android.stable.rust-std
# https://ryantm.github.io/nixpkgs/languages-frameworks/android/#notes-on-environment-variables-in-android-projects fen.targets.armv7-linux-androideabi.stable.rust-std
sdkRoot = "${androidSdk}/libexec/android-sdk"; fen.targets.x86_64-linux-android.stable.rust-std
in { fen.targets.i686-linux-android.stable.rust-std
inherit androidSdk sdkRoot; ];
};
fullAndroidSdk = makeAndroidSdk "full"; defaultPkgs = with pkgs; [
remoteAndroidSdk = makeAndroidSdk "remote"; # System
bash
git
pkg-config
jq
# JS
nodejs_22
turbo
nodePackages.pnpm
yarn
watchman
# Rust
rustToolchain
cargo-ndk
# Android build helpers
jdk17
gradle_8
scrcpy
# Misc
cmake
ninja
just
alejandra
clang-tools
];
defaultPkgs = with pkgs; [ ndkId = "27-1-12297006"; # nix flake show github:tadfisher/android-nixpkgs | grep ndk
nodejs_22 ndkAttr = "ndk-${ndkId}";
nodePackages.pnpm ndkVer = builtins.replaceStrings ["-"] ["."] ndkId;
git
just
jq
watchman
jdk17
gradle_8
cmake
ninja
pkg-config
];
in {
# Minimal: only universal dev tools you always want
default = pkgs.mkShell {
packages = defaultPkgs;
};
# Local emulator: full SDK + AVD bits for API 36 defaultAndroidPkgs = sdk: let
android-local = pkgs.mkShell { ndkPkg = builtins.getAttr ndkAttr sdk;
packages = defaultPkgs ++ [fullAndroidSdk.androidSdk]; in
shellHook = '' with sdk; [
# Resolve SDK root robustly (libexec first, then share) cmdline-tools-latest
_CANDS=( platform-tools
"${fullAndroidSdk.sdkRoot}" platforms-android-36
"${fullAndroidSdk.androidSdk}/libexec/android-sdk" build-tools-35-0-0
"${fullAndroidSdk.androidSdk}/share/android-sdk" cmake-3-22-1
) ndkPkg
for p in "''${_CANDS[@]}"; do
if [ -d "$p" ]; then
export ANDROID_SDK_ROOT="$p"
export ANDROID_HOME="$p"
break
fi
done
if [ -z "$ANDROID_SDK_ROOT" ]; then
echo " Could not locate ANDROID_SDK_ROOT in Nix store. Check androidSdk composition."
return 1
fi
# Ensure Nix adb/emulator/cmdline-tools win over system tools
export PATH="$ANDROID_SDK_ROOT/platform-tools:$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$PATH"
hash -r
echo "ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT"
which -a adb || true
which -a emulator || true
which -a avdmanager || true
# quick sanity
adb version || true
emulator -version || true
avdmanager --help >/dev/null || true
'';
};
# Remote AVD workflow: no emulator/image; add scrcpy + adb only
android-remote = pkgs.mkShell {
packages =
defaultPkgs
++ [
remoteAndroidSdk.androidSdk # provides adb/fastboot only
pkgs.scrcpy
]; ];
shellHook = ''
export ANDROID_SDK_ROOT="${remoteAndroidSdk.sdkRoot}" makeAndroidSdk = mode: let
export ANDROID_HOME="${remoteAndroidSdk.sdkRoot}" androidSdk = pkgs.androidSdk (
export PATH="${remoteAndroidSdk.sdkRoot}/platform-tools:$PATH" sdk:
hash -r if mode == "full"
echo "Using Nix adb from: $ANDROID_SDK_ROOT" then
which -a adb (with sdk;
adb version || true [
echo "Tip: ssh -N -L 5037:127.0.0.1:5037 user@remote && scrcpy" emulator
system-images-android-36-1-google-apis-x86-64 # nix flake show github:tadfisher/android-nixpkgs | grep system-images-android-36
]
++ (defaultAndroidPkgs sdk))
else if mode == "remote"
then (defaultAndroidPkgs sdk)
else throw "makeAndroidSdk: unknown mode '${mode}'. Use \"full\" or \"remote\"."
);
sdkRoot = "${androidSdk}/share/android-sdk";
in {inherit androidSdk sdkRoot;};
fullAndroidSdk = makeAndroidSdk "full";
remoteAndroidSdk = makeAndroidSdk "remote";
commonAndroidInit = sdkRoot: ''
export ANDROID_SDK_ROOT="${sdkRoot}"
export ANDROID_HOME="${sdkRoot}"
export PATH="$ANDROID_SDK_ROOT/platform-tools:$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$PATH"
export ANDROID_NDK_ROOT="$ANDROID_SDK_ROOT/ndk/${ndkVer}"
export ANDROID_NDK_HOME="$ANDROID_NDK_ROOT"
export ANDROID_NDK="$ANDROID_NDK_ROOT"
''; '';
}; in {
}); default = pkgs.mkShell {
packages = defaultPkgs ++ [remoteAndroidSdk.androidSdk];
shellHook =
commonAndroidInit remoteAndroidSdk.sdkRoot
+ ''
echo "You are using the defaul nix dev shell. Noice."
'';
};
android-emulator = pkgs.mkShell {
packages = defaultPkgs ++ [fullAndroidSdk.androidSdk];
shellHook =
commonAndroidInit fullAndroidSdk.sdkRoot
+ ''
echo "You are using the android-emulator nix dev shell. Noice."
'';
};
}
);
formatter = forAllSystems (
{pkgs}:
pkgs.alejandra
);
}; };
} }

10
justfile Normal file
View File

@@ -0,0 +1,10 @@
default:
@just --list
docker-build:
docker build -t fressh .
docker-run:
docker run -it --rm fressh

View File

@@ -2,7 +2,7 @@
"name": "fressh", "name": "fressh",
"private": true, "private": true,
"version": "workspace:*", "version": "workspace:*",
"packageManager": "pnpm@10.17.0", "packageManager": "pnpm@10.17.1",
"type": "module", "type": "module",
"engines": { "engines": {
"node": ">=22" "node": ">=22"
@@ -10,6 +10,8 @@
"scripts": { "scripts": {
"fmt:root": "prettier --cache --write .", "fmt:root": "prettier --cache --write .",
"fmt:check:root": "prettier --check .", "fmt:check:root": "prettier --check .",
"fmt:root:nix": "nix fmt flake.nix",
"fmt:check:root:nix": "nix fmt flake.nix -- --c",
"syncpack:fix": "syncpack list-mismatches || (syncpack fix-mismatches && pnpm i)", "syncpack:fix": "syncpack list-mismatches || (syncpack fix-mismatches && pnpm i)",
"syncpack:check": "syncpack list-mismatches", "syncpack:check": "syncpack list-mismatches",
"jscpd:check": "cross-env NODE_OPTIONS=--max-old-space-size=8192 jscpd --config .jscpd.json", "jscpd:check": "cross-env NODE_OPTIONS=--max-old-space-size=8192 jscpd --config .jscpd.json",
@@ -27,7 +29,7 @@
"prettier": "^3.6.2", "prettier": "^3.6.2",
"syncpack": "^13.0.4", "syncpack": "^13.0.4",
"tsx": "^4.20.5", "tsx": "^4.20.5",
"turbo": "^2.5.6", "turbo": "^2.5.7",
"typescript": "~5.9.2" "typescript": "~5.9.2"
} }
} }

View File

@@ -79,7 +79,7 @@
"react-native": "0.81.4", "react-native": "0.81.4",
"react-native-builder-bob": "^0.40.13", "react-native-builder-bob": "^0.40.13",
"release-it": "^19.0.4", "release-it": "^19.0.4",
"turbo": "^2.5.6", "turbo": "^2.5.7",
"typescript": "~5.9.2" "typescript": "~5.9.2"
}, },
"dependencies": { "dependencies": {

324
pnpm-lock.yaml generated
View File

@@ -38,8 +38,8 @@ importers:
specifier: ^4.20.5 specifier: ^4.20.5
version: 4.20.5 version: 4.20.5
turbo: turbo:
specifier: ^2.5.6 specifier: ^2.5.7
version: 2.5.6 version: 2.5.8
typescript: typescript:
specifier: ~5.9.2 specifier: ~5.9.2
version: 5.9.2 version: 5.9.2
@@ -48,7 +48,7 @@ importers:
dependencies: dependencies:
'@expo/vector-icons': '@expo/vector-icons':
specifier: ^15.0.2 specifier: ^15.0.2
version: 15.0.2(expo-font@14.0.8(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) version: 15.0.2(expo-font@14.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
'@fressh/assets': '@fressh/assets':
specifier: workspace:* specifier: workspace:*
version: link:../../packages/assets version: link:../../packages/assets
@@ -83,59 +83,59 @@ importers:
specifier: ^4.1.0 specifier: ^4.1.0
version: 4.1.0 version: 4.1.0
expo: expo:
specifier: 54.0.9 specifier: 54.0.10
version: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) version: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-clipboard: expo-clipboard:
specifier: ~8.0.7 specifier: ~8.0.7
version: 8.0.7(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) version: 8.0.7(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-constants: expo-constants:
specifier: ~18.0.9 specifier: ~18.0.9
version: 18.0.9(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)) version: 18.0.9(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))
expo-crypto: expo-crypto:
specifier: ~15.0.7 specifier: ~15.0.7
version: 15.0.7(expo@54.0.9) version: 15.0.7(expo@54.0.10)
expo-dev-client: expo-dev-client:
specifier: ~6.0.12 specifier: ~6.0.12
version: 6.0.12(expo@54.0.9) version: 6.0.12(expo@54.0.10)
expo-document-picker: expo-document-picker:
specifier: ~14.0.7 specifier: ~14.0.7
version: 14.0.7(expo@54.0.9) version: 14.0.7(expo@54.0.10)
expo-file-system: expo-file-system:
specifier: ~19.0.14 specifier: ~19.0.15
version: 19.0.14(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)) version: 19.0.15(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))
expo-font: expo-font:
specifier: ~14.0.8 specifier: ~14.0.8
version: 14.0.8(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) version: 14.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-glass-effect: expo-glass-effect:
specifier: ^0.1.4 specifier: ^0.1.4
version: 0.1.4(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) version: 0.1.4(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-haptics: expo-haptics:
specifier: ~15.0.7 specifier: ~15.0.7
version: 15.0.7(expo@54.0.9) version: 15.0.7(expo@54.0.10)
expo-image: expo-image:
specifier: ~3.0.8 specifier: ~3.0.8
version: 3.0.8(expo@54.0.9)(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) version: 3.0.8(expo@54.0.10)(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-linking: expo-linking:
specifier: ~8.0.8 specifier: ~8.0.8
version: 8.0.8(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) version: 8.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-router: expo-router:
specifier: 6.0.7 specifier: 6.0.8
version: 6.0.7(17dc46bbcebbe7410b72c5d7972d3dd3) version: 6.0.8(d99bdd4c9a621570fefc333ee402cc8d)
expo-secure-store: expo-secure-store:
specifier: ~15.0.7 specifier: ~15.0.7
version: 15.0.7(expo@54.0.9) version: 15.0.7(expo@54.0.10)
expo-splash-screen: expo-splash-screen:
specifier: ~31.0.10 specifier: ~31.0.10
version: 31.0.10(expo@54.0.9) version: 31.0.10(expo@54.0.10)
expo-status-bar: expo-status-bar:
specifier: ~3.0.8 specifier: ~3.0.8
version: 3.0.8(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) version: 3.0.8(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-symbols: expo-symbols:
specifier: ~1.0.7 specifier: ~1.0.7
version: 1.0.7(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)) version: 1.0.7(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))
expo-system-ui: expo-system-ui:
specifier: ~6.0.7 specifier: ~6.0.7
version: 6.0.7(expo@54.0.9)(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)) version: 6.0.7(expo@54.0.10)(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))
react: react:
specifier: 19.1.0 specifier: 19.1.0
version: 19.1.0 version: 19.1.0
@@ -355,8 +355,8 @@ importers:
specifier: ^19.0.4 specifier: ^19.0.4
version: 19.0.4(@types/node@24.3.0)(magicast@0.3.5) version: 19.0.4(@types/node@24.3.0)(magicast@0.3.5)
turbo: turbo:
specifier: ^2.5.6 specifier: ^2.5.7
version: 2.5.6 version: 2.5.8
typescript: typescript:
specifier: ~5.9.2 specifier: ~5.9.2
version: 5.9.2 version: 5.9.2
@@ -1490,8 +1490,8 @@ packages:
resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@expo/cli@54.0.7': '@expo/cli@54.0.8':
resolution: {integrity: sha512-vpZDbIhN2eyb5u2o2iIL2Glu9+9eIY8U30wqeIxh0BUHLoMxFejvEBfS+90A0PtEHoQ1Zi9QxusK5UuyoEvweg==} resolution: {integrity: sha512-bRJXvtjgxpyElmJuKLotWyIW5j9a2K3rGUjd2A8LRcFimrZp0wwuKPQjlUK0sFNbU7zHWfxubNq/B+UkUNkCxw==}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
expo: '*' expo: '*'
@@ -1550,8 +1550,8 @@ packages:
'@modelcontextprotocol/sdk': '@modelcontextprotocol/sdk':
optional: true optional: true
'@expo/metro-config@54.0.4': '@expo/metro-config@54.0.5':
resolution: {integrity: sha512-syzvZGFGrOSQOWjpo+lHHwMV8XOLK5Ev/E+e0Or3fJvsAi4o7h62qbbPuAicrfFUPxlAm7XBvkWmAwPr2jIAYA==} resolution: {integrity: sha512-Y+oYtLg8b3L4dHFImfu8+yqO+KOcBpLLjxN7wGbs7miP/BjntBQ6tKbPxyKxHz5UUa1s+buBzZlZhsFo9uqKMg==}
peerDependencies: peerDependencies:
expo: '*' expo: '*'
peerDependenciesMeta: peerDependenciesMeta:
@@ -1593,8 +1593,8 @@ packages:
'@expo/sdk-runtime-versions@1.0.0': '@expo/sdk-runtime-versions@1.0.0':
resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==}
'@expo/server@0.7.4': '@expo/server@0.7.5':
resolution: {integrity: sha512-8bfRzL7h1Qgrmf3auR71sPAcAuxnmNkRJs+8enL8vZi2+hihevLhrayDu7P0A/XGEq7wySAGvBBFfIB00Et/AA==} resolution: {integrity: sha512-aNVcerBSJEcUspvXRWChEgFhix1gTNIcgFDevaU/A1+TkfbejNIjGX4rfLEpfyRzzdLIRuOkBNjD+uTYMzohyg==}
engines: {node: '>=20.16.0'} engines: {node: '>=20.16.0'}
'@expo/spawn-async@1.7.2': '@expo/spawn-async@1.7.2':
@@ -3861,8 +3861,8 @@ packages:
peerDependencies: peerDependencies:
'@babel/core': ^7.0.0 || ^8.0.0-0 '@babel/core': ^7.0.0 || ^8.0.0-0
babel-preset-expo@54.0.2: babel-preset-expo@54.0.3:
resolution: {integrity: sha512-wIlweUhun2+soWQf8slGrURU8ZZYrIqPGuvsvTpm03YE8aCZF9YZe1WvsMJCAlywIhQQ+970wSKzLncfPqK2hQ==} resolution: {integrity: sha512-zC6g96Mbf1bofnCI8yI0VKAp8/ER/gpfTsWOpQvStbHU+E4jFZ294n3unW8Hf6nNP4NoeNq9Zc6Prp0vwhxbow==}
peerDependencies: peerDependencies:
'@babel/runtime': ^7.20.0 '@babel/runtime': ^7.20.0
expo: '*' expo: '*'
@@ -5174,8 +5174,8 @@ packages:
peerDependencies: peerDependencies:
expo: '*' expo: '*'
expo-file-system@19.0.14: expo-file-system@19.0.15:
resolution: {integrity: sha512-0CA7O5IYhab11TlxQlJAx0Xm9pdkk/zEHNiW+Hh/T4atWi9U/J38CIp7iNYSrBvy9dC3rJbze5D1ANcKKr4mSQ==} resolution: {integrity: sha512-sRLW+3PVJDiuoCE2LuteHhC7OxPjh1cfqLylf1YG1TDEbbQXnzwjfsKeRm6dslEPZLkMWfSLYIrVbnuq5mF7kQ==}
peerDependencies: peerDependencies:
expo: '*' expo: '*'
react-native: '*' react-native: '*'
@@ -5230,18 +5230,18 @@ packages:
peerDependencies: peerDependencies:
expo: '*' expo: '*'
expo-modules-autolinking@3.0.12: expo-modules-autolinking@3.0.13:
resolution: {integrity: sha512-vZijQgdtmhAhL8H3C0gEjWC0gGBVPVQdVZM92Zqcu2vXjRNDSqIxYXRTS3UT0nZzFltdqmeZAGxvWspxQLYtOQ==} resolution: {integrity: sha512-58WnM15ESTyT2v93Rba7jplXtGvh5cFbxqUCi2uTSpBf3nndDRItLzBQaoWBzAvNUhpC2j1bye7Dn/E+GJFXmw==}
hasBin: true hasBin: true
expo-modules-core@3.0.17: expo-modules-core@3.0.18:
resolution: {integrity: sha512-P1jZn8yjWi4jSCH+r9A1NykLR+0JtFYprJgYwnZ1EVFRtw+DoMjir0OexM9ehCuBg8sKDCbzCUAgm/JFnpjQww==} resolution: {integrity: sha512-9JPnjlXEFaq/uACZ7I4wb/RkgPYCEsfG75UKMvfl7P7rkymtpRGYj8/gTL2KId8Xt1fpmIPOF57U8tKamjtjXg==}
peerDependencies: peerDependencies:
react: '*' react: '*'
react-native: '*' react-native: '*'
expo-router@6.0.7: expo-router@6.0.8:
resolution: {integrity: sha512-dP/35aQadCuplEP99CZ0sLrVpnCFCQGnCBtFlI0Tph75PbepdWhI7XC0Vzt7MoNBLF9NW80q5CeZdXTvybc+4w==} resolution: {integrity: sha512-cx6vFvBrfPNHpNbN2ij2mF5JKE4JXyq+dJVmWNqt7JplA0aohOOKXS/KQ9vQy88HpnrcJMuYqUNHp44aWyce7g==}
peerDependencies: peerDependencies:
'@expo/metro-runtime': ^6.1.2 '@expo/metro-runtime': ^6.1.2
'@react-navigation/drawer': ^7.5.0 '@react-navigation/drawer': ^7.5.0
@@ -5311,8 +5311,8 @@ packages:
peerDependencies: peerDependencies:
expo: '*' expo: '*'
expo@54.0.9: expo@54.0.10:
resolution: {integrity: sha512-hCWkBkftiSSoKCV83CKm5oaA613arl9311mjXCDb7Fn/9FzQWh1koL4Q3nflnYiiCRhFQnecbDOa6YxN+GKVEQ==} resolution: {integrity: sha512-49+IginEoKC+g125ZlRvUYNl9jKjjHcDiDnQvejNWlMQ0LtcFIWiFad/PLjmi7YqF/0rj9u3FNxqM6jNP16O0w==}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
'@expo/dom-webview': '*' '@expo/dom-webview': '*'
@@ -8575,38 +8575,38 @@ packages:
engines: {node: '>=18.0.0'} engines: {node: '>=18.0.0'}
hasBin: true hasBin: true
turbo-darwin-64@2.5.6: turbo-darwin-64@2.5.8:
resolution: {integrity: sha512-3C1xEdo4aFwMJAPvtlPqz1Sw/+cddWIOmsalHFMrsqqydcptwBfu26WW2cDm3u93bUzMbBJ8k3zNKFqxJ9ei2A==} resolution: {integrity: sha512-Dh5bCACiHO8rUXZLpKw+m3FiHtAp2CkanSyJre+SInEvEr5kIxjGvCK/8MFX8SFRjQuhjtvpIvYYZJB4AGCxNQ==}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
turbo-darwin-arm64@2.5.6: turbo-darwin-arm64@2.5.8:
resolution: {integrity: sha512-LyiG+rD7JhMfYwLqB6k3LZQtYn8CQQUePbpA8mF/hMLPAekXdJo1g0bUPw8RZLwQXUIU/3BU7tXENvhSGz5DPA==} resolution: {integrity: sha512-f1H/tQC9px7+hmXn6Kx/w8Jd/FneIUnvLlcI/7RGHunxfOkKJKvsoiNzySkoHQ8uq1pJnhJ0xNGTlYM48ZaJOQ==}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
turbo-linux-64@2.5.6: turbo-linux-64@2.5.8:
resolution: {integrity: sha512-GOcUTT0xiT/pSnHL4YD6Yr3HreUhU8pUcGqcI2ksIF9b2/r/kRHwGFcsHgpG3+vtZF/kwsP0MV8FTlTObxsYIA==} resolution: {integrity: sha512-hMyvc7w7yadBlZBGl/bnR6O+dJTx3XkTeyTTH4zEjERO6ChEs0SrN8jTFj1lueNXKIHh1SnALmy6VctKMGnWfw==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
turbo-linux-arm64@2.5.6: turbo-linux-arm64@2.5.8:
resolution: {integrity: sha512-10Tm15bruJEA3m0V7iZcnQBpObGBcOgUcO+sY7/2vk1bweW34LMhkWi8svjV9iDF68+KJDThnYDlYE/bc7/zzQ==} resolution: {integrity: sha512-LQELGa7bAqV2f+3rTMRPnj5G/OHAe2U+0N9BwsZvfMvHSUbsQ3bBMWdSQaYNicok7wOZcHjz2TkESn1hYK6xIQ==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
turbo-windows-64@2.5.6: turbo-windows-64@2.5.8:
resolution: {integrity: sha512-FyRsVpgaj76It0ludwZsNN40ytHN+17E4PFJyeliBEbxrGTc5BexlXVpufB7XlAaoaZVxbS6KT8RofLfDRyEPg==} resolution: {integrity: sha512-3YdcaW34TrN1AWwqgYL9gUqmZsMT4T7g8Y5Azz+uwwEJW+4sgcJkIi9pYFyU4ZBSjBvkfuPZkGgfStir5BBDJQ==}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
turbo-windows-arm64@2.5.6: turbo-windows-arm64@2.5.8:
resolution: {integrity: sha512-j/tWu8cMeQ7HPpKri6jvKtyXg9K1gRyhdK4tKrrchH8GNHscPX/F71zax58yYtLRWTiK04zNzPcUJuoS0+v/+Q==} resolution: {integrity: sha512-eFC5XzLmgXJfnAK3UMTmVECCwuBcORrWdewoiXBnUm934DY6QN8YowC/srhNnROMpaKaqNeRpoB5FxCww3eteQ==}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
turbo@2.5.6: turbo@2.5.8:
resolution: {integrity: sha512-gxToHmi9oTBNB05UjUsrWf0OyN5ZXtD0apOarC1KIx232Vp3WimRNy3810QzeNSgyD5rsaIDXlxlbnOzlouo+w==} resolution: {integrity: sha512-5c9Fdsr9qfpT3hA0EyYSFRZj1dVVsb6KIWubA9JBYZ/9ZEAijgUEae0BBR/Xl/wekt4w65/lYLTFaP3JmwSO8w==}
hasBin: true hasBin: true
type-check@0.4.0: type-check@0.4.0:
@@ -10613,7 +10613,7 @@ snapshots:
'@eslint/core': 0.15.2 '@eslint/core': 0.15.2
levn: 0.4.1 levn: 0.4.1
'@expo/cli@54.0.7(expo-router@6.0.7)(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))': '@expo/cli@54.0.8(expo-router@6.0.8)(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))':
dependencies: dependencies:
'@0no-co/graphql.web': 1.2.0 '@0no-co/graphql.web': 1.2.0
'@expo/code-signing-certificates': 0.0.5 '@expo/code-signing-certificates': 0.0.5
@@ -10625,13 +10625,13 @@ snapshots:
'@expo/json-file': 10.0.7 '@expo/json-file': 10.0.7
'@expo/mcp-tunnel': 0.0.7 '@expo/mcp-tunnel': 0.0.7
'@expo/metro': 54.0.0 '@expo/metro': 54.0.0
'@expo/metro-config': 54.0.4(expo@54.0.9) '@expo/metro-config': 54.0.5(expo@54.0.10)
'@expo/osascript': 2.3.7 '@expo/osascript': 2.3.7
'@expo/package-manager': 1.9.8 '@expo/package-manager': 1.9.8
'@expo/plist': 0.4.7 '@expo/plist': 0.4.7
'@expo/prebuild-config': 54.0.3(expo@54.0.9) '@expo/prebuild-config': 54.0.3(expo@54.0.10)
'@expo/schema-utils': 0.1.7 '@expo/schema-utils': 0.1.7
'@expo/server': 0.7.4 '@expo/server': 0.7.5
'@expo/spawn-async': 1.7.2 '@expo/spawn-async': 1.7.2
'@expo/ws-tunnel': 1.0.6 '@expo/ws-tunnel': 1.0.6
'@expo/xcpretty': 4.3.2 '@expo/xcpretty': 4.3.2
@@ -10649,7 +10649,7 @@ snapshots:
connect: 3.7.0 connect: 3.7.0
debug: 4.4.3 debug: 4.4.3
env-editor: 0.4.2 env-editor: 0.4.2
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
freeport-async: 2.0.0 freeport-async: 2.0.0
getenv: 2.0.0 getenv: 2.0.0
glob: 10.4.5 glob: 10.4.5
@@ -10681,7 +10681,7 @@ snapshots:
wrap-ansi: 7.0.0 wrap-ansi: 7.0.0
ws: 8.18.3 ws: 8.18.3
optionalDependencies: optionalDependencies:
expo-router: 6.0.7(17dc46bbcebbe7410b72c5d7972d3dd3) expo-router: 6.0.8(d99bdd4c9a621570fefc333ee402cc8d)
react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)
transitivePeerDependencies: transitivePeerDependencies:
- '@modelcontextprotocol/sdk' - '@modelcontextprotocol/sdk'
@@ -10802,7 +10802,7 @@ snapshots:
- bufferutil - bufferutil
- utf-8-validate - utf-8-validate
'@expo/metro-config@54.0.4(expo@54.0.9)': '@expo/metro-config@54.0.5(expo@54.0.10)':
dependencies: dependencies:
'@babel/code-frame': 7.27.1 '@babel/code-frame': 7.27.1
'@babel/core': 7.28.3 '@babel/core': 7.28.3
@@ -10826,16 +10826,16 @@ snapshots:
postcss: 8.4.49 postcss: 8.4.49
resolve-from: 5.0.0 resolve-from: 5.0.0
optionalDependencies: optionalDependencies:
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies: transitivePeerDependencies:
- bufferutil - bufferutil
- supports-color - supports-color
- utf-8-validate - utf-8-validate
'@expo/metro-runtime@6.1.1(expo@54.0.9)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)': '@expo/metro-runtime@6.1.1(expo@54.0.10)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)':
dependencies: dependencies:
anser: 1.4.10 anser: 1.4.10
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
pretty-format: 29.7.0 pretty-format: 29.7.0
react: 19.1.0 react: 19.1.0
react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)
@@ -10883,7 +10883,7 @@ snapshots:
base64-js: 1.5.1 base64-js: 1.5.1
xmlbuilder: 15.1.1 xmlbuilder: 15.1.1
'@expo/prebuild-config@54.0.3(expo@54.0.9)': '@expo/prebuild-config@54.0.3(expo@54.0.10)':
dependencies: dependencies:
'@expo/config': 12.0.9 '@expo/config': 12.0.9
'@expo/config-plugins': 54.0.1 '@expo/config-plugins': 54.0.1
@@ -10892,7 +10892,7 @@ snapshots:
'@expo/json-file': 10.0.7 '@expo/json-file': 10.0.7
'@react-native/normalize-colors': 0.81.4 '@react-native/normalize-colors': 0.81.4
debug: 4.4.3 debug: 4.4.3
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
resolve-from: 5.0.0 resolve-from: 5.0.0
semver: 7.7.2 semver: 7.7.2
xml2js: 0.6.0 xml2js: 0.6.0
@@ -10903,7 +10903,7 @@ snapshots:
'@expo/sdk-runtime-versions@1.0.0': {} '@expo/sdk-runtime-versions@1.0.0': {}
'@expo/server@0.7.4': '@expo/server@0.7.5':
dependencies: dependencies:
abort-controller: 3.0.0 abort-controller: 3.0.0
debug: 4.4.3 debug: 4.4.3
@@ -10916,9 +10916,9 @@ snapshots:
'@expo/sudo-prompt@9.3.2': {} '@expo/sudo-prompt@9.3.2': {}
'@expo/vector-icons@15.0.2(expo-font@14.0.8(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)': '@expo/vector-icons@15.0.2(expo-font@14.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)':
dependencies: dependencies:
expo-font: 14.0.8(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo-font: 14.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
react: 19.1.0 react: 19.1.0
react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)
@@ -13717,7 +13717,7 @@ snapshots:
'@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.3) '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.3)
'@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.3) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.3)
babel-preset-expo@54.0.2(@babel/core@7.28.3)(@babel/runtime@7.28.3)(expo@54.0.9)(react-refresh@0.14.2): babel-preset-expo@54.0.3(@babel/core@7.28.3)(@babel/runtime@7.28.3)(expo@54.0.10)(react-refresh@0.14.2):
dependencies: dependencies:
'@babel/helper-module-imports': 7.27.1 '@babel/helper-module-imports': 7.27.1
'@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.3) '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.3)
@@ -13744,7 +13744,7 @@ snapshots:
resolve-from: 5.0.0 resolve-from: 5.0.0
optionalDependencies: optionalDependencies:
'@babel/runtime': 7.28.3 '@babel/runtime': 7.28.3
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies: transitivePeerDependencies:
- '@babel/core' - '@babel/core'
- supports-color - supports-color
@@ -15216,93 +15216,93 @@ snapshots:
jest-mock: 30.0.5 jest-mock: 30.0.5
jest-util: 30.0.5 jest-util: 30.0.5
expo-asset@12.0.9(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): expo-asset@12.0.9(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0):
dependencies: dependencies:
'@expo/image-utils': 0.8.7 '@expo/image-utils': 0.8.7
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-constants: 18.0.9(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)) expo-constants: 18.0.9(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))
react: 19.1.0 react: 19.1.0
react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
expo-clipboard@8.0.7(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): expo-clipboard@8.0.7(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0):
dependencies: dependencies:
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
react: 19.1.0 react: 19.1.0
react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)
expo-constants@18.0.9(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)): expo-constants@18.0.9(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)):
dependencies: dependencies:
'@expo/config': 12.0.9 '@expo/config': 12.0.9
'@expo/env': 2.0.7 '@expo/env': 2.0.7
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
expo-crypto@15.0.7(expo@54.0.9): expo-crypto@15.0.7(expo@54.0.10):
dependencies: dependencies:
base64-js: 1.5.1 base64-js: 1.5.1
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-dev-client@6.0.12(expo@54.0.9): expo-dev-client@6.0.12(expo@54.0.10):
dependencies: dependencies:
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-dev-launcher: 6.0.11(expo@54.0.9) expo-dev-launcher: 6.0.11(expo@54.0.10)
expo-dev-menu: 7.0.11(expo@54.0.9) expo-dev-menu: 7.0.11(expo@54.0.10)
expo-dev-menu-interface: 2.0.0(expo@54.0.9) expo-dev-menu-interface: 2.0.0(expo@54.0.10)
expo-manifests: 1.0.8(expo@54.0.9) expo-manifests: 1.0.8(expo@54.0.10)
expo-updates-interface: 2.0.0(expo@54.0.9) expo-updates-interface: 2.0.0(expo@54.0.10)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
expo-dev-launcher@6.0.11(expo@54.0.9): expo-dev-launcher@6.0.11(expo@54.0.10):
dependencies: dependencies:
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-dev-menu: 7.0.11(expo@54.0.9) expo-dev-menu: 7.0.11(expo@54.0.10)
expo-manifests: 1.0.8(expo@54.0.9) expo-manifests: 1.0.8(expo@54.0.10)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
expo-dev-menu-interface@2.0.0(expo@54.0.9): expo-dev-menu-interface@2.0.0(expo@54.0.10):
dependencies: dependencies:
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-dev-menu@7.0.11(expo@54.0.9): expo-dev-menu@7.0.11(expo@54.0.10):
dependencies: dependencies:
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-dev-menu-interface: 2.0.0(expo@54.0.9) expo-dev-menu-interface: 2.0.0(expo@54.0.10)
expo-document-picker@14.0.7(expo@54.0.9): expo-document-picker@14.0.7(expo@54.0.10):
dependencies: dependencies:
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-file-system@19.0.14(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)): expo-file-system@19.0.15(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)):
dependencies: dependencies:
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)
expo-font@14.0.8(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): expo-font@14.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0):
dependencies: dependencies:
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
fontfaceobserver: 2.3.0 fontfaceobserver: 2.3.0
react: 19.1.0 react: 19.1.0
react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)
expo-glass-effect@0.1.4(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): expo-glass-effect@0.1.4(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0):
dependencies: dependencies:
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
react: 19.1.0 react: 19.1.0
react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)
expo-haptics@15.0.7(expo@54.0.9): expo-haptics@15.0.7(expo@54.0.10):
dependencies: dependencies:
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-image@3.0.8(expo@54.0.9)(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): expo-image@3.0.8(expo@54.0.10)(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0):
dependencies: dependencies:
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
react: 19.1.0 react: 19.1.0
react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)
optionalDependencies: optionalDependencies:
@@ -15310,14 +15310,14 @@ snapshots:
expo-json-utils@0.15.0: {} expo-json-utils@0.15.0: {}
expo-keep-awake@15.0.7(expo@54.0.9)(react@19.1.0): expo-keep-awake@15.0.7(expo@54.0.10)(react@19.1.0):
dependencies: dependencies:
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
react: 19.1.0 react: 19.1.0
expo-linking@8.0.8(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): expo-linking@8.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0):
dependencies: dependencies:
expo-constants: 18.0.9(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)) expo-constants: 18.0.9(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))
invariant: 2.2.4 invariant: 2.2.4
react: 19.1.0 react: 19.1.0
react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)
@@ -15325,15 +15325,15 @@ snapshots:
- expo - expo
- supports-color - supports-color
expo-manifests@1.0.8(expo@54.0.9): expo-manifests@1.0.8(expo@54.0.10):
dependencies: dependencies:
'@expo/config': 12.0.9 '@expo/config': 12.0.9
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-json-utils: 0.15.0 expo-json-utils: 0.15.0
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
expo-modules-autolinking@3.0.12: expo-modules-autolinking@3.0.13:
dependencies: dependencies:
'@expo/spawn-async': 1.7.2 '@expo/spawn-async': 1.7.2
chalk: 4.1.2 chalk: 4.1.2
@@ -15342,17 +15342,17 @@ snapshots:
require-from-string: 2.0.2 require-from-string: 2.0.2
resolve-from: 5.0.0 resolve-from: 5.0.0
expo-modules-core@3.0.17(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): expo-modules-core@3.0.18(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0):
dependencies: dependencies:
invariant: 2.2.4 invariant: 2.2.4
react: 19.1.0 react: 19.1.0
react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)
expo-router@6.0.7(17dc46bbcebbe7410b72c5d7972d3dd3): expo-router@6.0.8(d99bdd4c9a621570fefc333ee402cc8d):
dependencies: dependencies:
'@expo/metro-runtime': 6.1.1(expo@54.0.9)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) '@expo/metro-runtime': 6.1.1(expo@54.0.10)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
'@expo/schema-utils': 0.1.7 '@expo/schema-utils': 0.1.7
'@expo/server': 0.7.4 '@expo/server': 0.7.5
'@radix-ui/react-slot': 1.2.0(@types/react@19.1.12)(react@19.1.0) '@radix-ui/react-slot': 1.2.0(@types/react@19.1.12)(react@19.1.0)
'@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@react-navigation/bottom-tabs': 7.4.7(@react-navigation/native@7.1.17(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.1(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) '@react-navigation/bottom-tabs': 7.4.7(@react-navigation/native@7.1.17(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.1(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
@@ -15361,9 +15361,9 @@ snapshots:
client-only: 0.0.1 client-only: 0.0.1
debug: 4.4.3 debug: 4.4.3
escape-string-regexp: 4.0.0 escape-string-regexp: 4.0.0
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-constants: 18.0.9(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)) expo-constants: 18.0.9(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))
expo-linking: 8.0.8(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo-linking: 8.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
fast-deep-equal: 3.1.3 fast-deep-equal: 3.1.3
invariant: 2.2.4 invariant: 2.2.4
nanoid: 3.3.11 nanoid: 3.3.11
@@ -15391,14 +15391,14 @@ snapshots:
- '@types/react-dom' - '@types/react-dom'
- supports-color - supports-color
expo-secure-store@15.0.7(expo@54.0.9): expo-secure-store@15.0.7(expo@54.0.10):
dependencies: dependencies:
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-splash-screen@31.0.10(expo@54.0.9): expo-splash-screen@31.0.10(expo@54.0.10):
dependencies: dependencies:
'@expo/prebuild-config': 54.0.3(expo@54.0.9) '@expo/prebuild-config': 54.0.3(expo@54.0.10)
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -15408,54 +15408,54 @@ snapshots:
react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)
react-native-is-edge-to-edge: 1.2.1(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) react-native-is-edge-to-edge: 1.2.1(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-symbols@1.0.7(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)): expo-symbols@1.0.7(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)):
dependencies: dependencies:
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)
sf-symbols-typescript: 2.1.0 sf-symbols-typescript: 2.1.0
expo-system-ui@6.0.7(expo@54.0.9)(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)): expo-system-ui@6.0.7(expo@54.0.10)(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)):
dependencies: dependencies:
'@react-native/normalize-colors': 0.81.4 '@react-native/normalize-colors': 0.81.4
debug: 4.4.1 debug: 4.4.1
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)
optionalDependencies: optionalDependencies:
react-native-web: 0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react-native-web: 0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
expo-updates-interface@2.0.0(expo@54.0.9): expo-updates-interface@2.0.0(expo@54.0.10):
dependencies: dependencies:
expo: 54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo: 54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo@54.0.9(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.7)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): expo@54.0.10(@babel/core@7.28.3)(@expo/metro-runtime@6.1.1)(expo-router@6.0.8)(react-native-webview@13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0):
dependencies: dependencies:
'@babel/runtime': 7.28.3 '@babel/runtime': 7.28.3
'@expo/cli': 54.0.7(expo-router@6.0.7)(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)) '@expo/cli': 54.0.8(expo-router@6.0.8)(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))
'@expo/config': 12.0.9 '@expo/config': 12.0.9
'@expo/config-plugins': 54.0.1 '@expo/config-plugins': 54.0.1
'@expo/devtools': 0.1.7(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) '@expo/devtools': 0.1.7(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
'@expo/fingerprint': 0.15.1 '@expo/fingerprint': 0.15.1
'@expo/metro': 54.0.0 '@expo/metro': 54.0.0
'@expo/metro-config': 54.0.4(expo@54.0.9) '@expo/metro-config': 54.0.5(expo@54.0.10)
'@expo/vector-icons': 15.0.2(expo-font@14.0.8(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) '@expo/vector-icons': 15.0.2(expo-font@14.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
'@ungap/structured-clone': 1.3.0 '@ungap/structured-clone': 1.3.0
babel-preset-expo: 54.0.2(@babel/core@7.28.3)(@babel/runtime@7.28.3)(expo@54.0.9)(react-refresh@0.14.2) babel-preset-expo: 54.0.3(@babel/core@7.28.3)(@babel/runtime@7.28.3)(expo@54.0.10)(react-refresh@0.14.2)
expo-asset: 12.0.9(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo-asset: 12.0.9(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-constants: 18.0.9(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)) expo-constants: 18.0.9(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))
expo-file-system: 19.0.14(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)) expo-file-system: 19.0.15(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))
expo-font: 14.0.8(expo@54.0.9)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo-font: 14.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
expo-keep-awake: 15.0.7(expo@54.0.9)(react@19.1.0) expo-keep-awake: 15.0.7(expo@54.0.10)(react@19.1.0)
expo-modules-autolinking: 3.0.12 expo-modules-autolinking: 3.0.13
expo-modules-core: 3.0.17(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo-modules-core: 3.0.18(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
pretty-format: 29.7.0 pretty-format: 29.7.0
react: 19.1.0 react: 19.1.0
react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0) react-native: 0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0)
react-refresh: 0.14.2 react-refresh: 0.14.2
whatwg-url-without-unicode: 8.0.0-3 whatwg-url-without-unicode: 8.0.0-3
optionalDependencies: optionalDependencies:
'@expo/metro-runtime': 6.1.1(expo@54.0.9)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) '@expo/metro-runtime': 6.1.1(expo@54.0.10)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
react-native-webview: 13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) react-native-webview: 13.15.0(react-native@0.81.4(@babel/core@7.28.3)(@react-native-community/cli@20.0.2(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies: transitivePeerDependencies:
- '@babel/core' - '@babel/core'
@@ -19549,32 +19549,32 @@ snapshots:
optionalDependencies: optionalDependencies:
fsevents: 2.3.3 fsevents: 2.3.3
turbo-darwin-64@2.5.6: turbo-darwin-64@2.5.8:
optional: true optional: true
turbo-darwin-arm64@2.5.6: turbo-darwin-arm64@2.5.8:
optional: true optional: true
turbo-linux-64@2.5.6: turbo-linux-64@2.5.8:
optional: true optional: true
turbo-linux-arm64@2.5.6: turbo-linux-arm64@2.5.8:
optional: true optional: true
turbo-windows-64@2.5.6: turbo-windows-64@2.5.8:
optional: true optional: true
turbo-windows-arm64@2.5.6: turbo-windows-arm64@2.5.8:
optional: true optional: true
turbo@2.5.6: turbo@2.5.8:
optionalDependencies: optionalDependencies:
turbo-darwin-64: 2.5.6 turbo-darwin-64: 2.5.8
turbo-darwin-arm64: 2.5.6 turbo-darwin-arm64: 2.5.8
turbo-linux-64: 2.5.6 turbo-linux-64: 2.5.8
turbo-linux-arm64: 2.5.6 turbo-linux-arm64: 2.5.8
turbo-windows-64: 2.5.6 turbo-windows-64: 2.5.8
turbo-windows-arm64: 2.5.6 turbo-windows-arm64: 2.5.8
type-check@0.4.0: type-check@0.4.0:
dependencies: dependencies:

View File

@@ -1,6 +1,7 @@
{ {
"$schema": "https://turbo.build/schema.json", "$schema": "https://turbo.build/schema.json",
"ui": "tui", "ui": "tui",
"globalPassThroughEnv": ["NIX_*", "ANDROID_*", "SSL_CERT_FILE"],
"tasks": { "tasks": {
// Defaults // Defaults
"fmt": { "with": ["//#fmt:root"] }, "fmt": { "with": ["//#fmt:root"] },
@@ -30,8 +31,14 @@
}, },
"clean": { "cache": false, "dependsOn": ["^clean"] }, "clean": { "cache": false, "dependsOn": ["^clean"] },
// Root tasks overrides // Root tasks overrides
"//#fmt:root": {}, "//#fmt:root": {
"//#fmt:check:root": {}, "with": ["fmt:root:nix"],
},
"//#fmt:root:nix": {},
"//#fmt:check:root:nix": {},
"//#fmt:check:root": {
"with": ["fmt:check:root:nix"],
},
"//#lint:root": { "//#lint:root": {
"dependsOn": ["fmt:root"], "dependsOn": ["fmt:root"],
"with": [ "with": [