{ "name": "astra-mobile", "main": "index.js", "version": "0.1.0", "dependencies": { "@boof2015/astra-signal": "0.3.0", "@boof2015/xlrc": "^0.2.1", "@expo-google-fonts/inter": "^0.4.2", "@expo-google-fonts/jetbrains-mono": "^0.4.1", "@expo/ui": "~56.0.13", "@expo/vector-icons": "^15.0.2", "@gorhom/bottom-sheet": "^5.2.14", "@op-engineering/op-sqlite": "^16.2.1", "@shopify/flash-list": "2.0.2", "@shopify/react-native-skia": "2.6.2", "encoding-japanese": "^2.2.0", "expo": "~56.0.4", "expo-asset": "~56.0.14", "expo-build-properties": "^56.0.19", "expo-camera": "~56.0.8", "expo-constants": "~56.0.15", "expo-device": "~56.0.4", "expo-document-picker": "~56.0.4", "expo-file-system": "~56.0.8", "expo-font": "~56.0.5", "expo-glass-effect": "~56.0.4", "expo-haptics": "~56.0.3", "expo-image": "~56.0.9", "expo-linking": "~56.0.11", "expo-router": "~56.2.6", "expo-secure-store": "^56.0.4", "expo-sharing": "~56.0.21", "expo-splash-screen": "~56.0.10", "expo-status-bar": "~56.0.4", "expo-symbols": "~56.0.5", "expo-system-ui": "~56.0.5", "expo-web-browser": "~56.0.5", "js-md5": "^0.8.3", "js-sha1": "^0.7.0", "react": "19.2.3", "react-dom": "19.2.3", "react-native": "0.85.3", "react-native-gesture-handler": "~2.31.1", "react-native-qrcode-svg": "^6.3.21", "react-native-reanimated": "4.3.1", "react-native-safe-area-context": "~5.7.0", "react-native-screens": "4.25.2", "react-native-svg": "15.15.4", "react-native-track-player": "^4.1.2", "react-native-web": "~0.21.0", "react-native-worklets": "0.8.3", "zustand": "^5.0.13" }, "devDependencies": { "@types/encoding-japanese": "^2.2.1", "@types/react": "~19.2.2", "eslint": "^9.0.0", "eslint-config-expo": "~56.0.4", "patch-package": "^8.0.1", "typescript": "~6.0.3" }, "scripts": { "start": "expo start", "android": "expo run:android", "android:release": "rm -rf android/app/build/generated/assets/react && ORG_GRADLE_PROJECT_reactNativeArchitectures=arm64-v8a expo run:android --variant release", "android:preview": "rm -rf android/app/build/generated/assets/react && ASTRA_ALLOW_INSECURE_RELEASE_SIGNING=true ORG_GRADLE_PROJECT_reactNativeArchitectures=arm64-v8a expo run:android --variant release", "ios": "expo run:ios", "web": "expo start --web", "lint": "expo lint", "test:queue-actions": "node --experimental-strip-types --experimental-specifier-resolution=node --test src/components/queue/queueActions.test.mts", "test:desktop-remote": "node --experimental-strip-types --test src/services/desktopRemotePairing.test.mts", "test:dynamic-playlists": "node --experimental-strip-types --experimental-specifier-resolution=node --test src/shared/playlists/dynamicPlaylist.test.mts src/db/dynamicPlaylistSql.test.mts", "test:album-grouping": "node --experimental-strip-types --experimental-specifier-resolution=node --test src/shared/library/albumGrouping.test.mts src/shared/library/albumEligibility.test.mts src/library/albumIdentity.test.mts src/library/albumSummary.test.mts", "test:artist-grouping": "node --experimental-strip-types --test src/library/artistGrouping.test.mts", "test:desktop-sync": "node --experimental-strip-types --experimental-specifier-resolution=node --test src/library/importMatching.test.mts src/services/desktopSyncPlaylistMerge.test.mts src/services/desktopSyncPolicy.test.mts src/shared/sync/conflictPreview.test.mts", "test:eq-share": "node --experimental-strip-types --experimental-specifier-resolution=node --test src/audio/eqShare.test.mts", "test:signal": "node --experimental-strip-types --experimental-specifier-resolution=node --test src/audio/signalShare.test.mts src/audio/signalShareIntent.test.mts src/audio/signalScanGeometry.test.mts src/audio/signalLocalMatch.test.mts", "test:eq-math": "node --experimental-strip-types --experimental-specifier-resolution=node --test src/audio/eq.test.mts", "test:audio-startup": "node --experimental-strip-types --test src/audio/dspStartupCoordinator.test.mts src/audio/dspStartupGain.test.mts", "test:seek-bar": "node --experimental-strip-types --test src/audio/playbackClock.test.mts src/components/waveformScrubDetents.test.mts", "test:lyrics": "node --experimental-strip-types --experimental-specifier-resolution=node --test src/lyrics/parsing.test.mts src/lyrics/presentation.test.mts src/lyrics/displaySettings.test.mts src/lyrics/embedded.test.mts src/lyrics/resolver.test.mts", "test:sleep": "node --experimental-strip-types --test src/audio/sleepTimerState.test.mts", "test:troubleshooting": "node --experimental-strip-types --experimental-specifier-resolution=node --test src/db/libraryMaintenance.test.mts src/lib/cacheInvalidation.test.mts", "test:settings-search": "node --experimental-strip-types --test src/components/search/settingsSearchRoutes.test.mts", "test:now-playing-layout": "node --experimental-strip-types --experimental-specifier-resolution=node --test src/components/player/nowPlayingLayout.test.mts src/components/player/nowPlayingPreferences.test.mts src/components/player/nowPlayingDismiss.test.mts src/playback/playbackTargetPresentation.test.mts", "test:memory-lifecycle": "node --experimental-strip-types --experimental-specifier-resolution=node --test src/components/delayedPresence.test.mts scripts/android-memory-profile.test.mjs", "test:haptics": "node --experimental-strip-types --experimental-specifier-resolution=node --test src/lib/haptics.test.mts", "test:home-greeting": "node --experimental-strip-types --test src/home/homeGreeting.test.mts", "test:session": "node --experimental-strip-types --test src/session/sessionState.test.mts src/session/playbackMaterialization.test.mts", "test:release-config": "node --experimental-strip-types --test plugins/withAstraAndroidRelease.test.mjs scripts/release/android-release.test.mjs src/release/buildInfo.test.mts", "test:release": "node scripts/run-release-tests.mjs", "release:validate": "node scripts/release/android-release.mjs validate github && node scripts/release/android-release.mjs validate google-play", "typecheck": "tsc --noEmit", "postinstall": "patch-package" }, "private": true }