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

tests work 100% so true

Changed files
+218 -60
apps
-10
apps/amethyst/components/__tests__/StyledText-test.js
··· 1 - import * as React from "react"; 2 - import renderer from "react-test-renderer"; 3 - 4 - import { MonoText } from "../StyledText"; 5 - 6 - it(`renders correctly`, () => { 7 - const tree = renderer.create(<MonoText>Snapshot test!</MonoText>).toJSON(); 8 - 9 - expect(tree).toMatchSnapshot(); 10 - });
+33
apps/amethyst/components/__tests__/StyledText-test.tsx
··· 1 + import * as React from "react"; 2 + import { render, screen } from "@testing-library/react-native"; 3 + 4 + import { Text } from "../ui/text"; 5 + 6 + describe("Text Component", () => { 7 + it("displays text content to users", () => { 8 + render(<Text>Hello World</Text>); 9 + expect(screen.getByText("Hello World")).toBeTruthy(); 10 + }); 11 + 12 + it("renders with custom className", () => { 13 + render(<Text className="text-lg font-bold">Styled text</Text>); 14 + const element = screen.getByText("Styled text"); 15 + expect(element).toBeTruthy(); 16 + expect(element.props.className).toContain("text-lg"); 17 + expect(element.props.className).toContain("font-bold"); 18 + }); 19 + 20 + it("renders empty text component", () => { 21 + const { root } = render(<Text />); 22 + expect(root).toBeTruthy(); 23 + }); 24 + 25 + it("renders multiple children correctly", () => { 26 + render( 27 + <Text> 28 + First part <Text>nested</Text> last part 29 + </Text>, 30 + ); 31 + expect(screen.getByText("nested")).toBeTruthy(); 32 + }); 33 + });
+1
apps/amethyst/jest-setup.ts
··· 1 + import "@testing-library/jest-native/extend-expect";
+12 -2
apps/amethyst/package.json
··· 11 11 "build": "expo export --output-dir ./build --platform all", 12 12 "build:web": "expo export --output-dir ./build --platform web --clear", 13 13 "build:ios": "expo export --output-dir ./build --platform ios --clear", 14 - "test": "jest --watchAll", 14 + "test": "jest", 15 15 "lexgen": "lex gen-server ./lexicons/generated/server/ ./lexicons/src/", 16 16 "install": "expo prebuild" 17 17 }, 18 18 "jest": { 19 - "preset": "jest-expo" 19 + "preset": "jest-expo", 20 + "setupFilesAfterEnv": [ 21 + "<rootDir>/jest-setup.ts" 22 + ], 23 + "transformIgnorePatterns": [ 24 + "node_modules/(?!((jest-)?react-native|@react-native(-community)?|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|react-native-svg|@rn-primitives/.*))" 25 + ] 20 26 }, 21 27 "dependencies": { 22 28 "@aquareum/atproto-oauth-client-react-native": "^0.0.1", ··· 77 83 "@expo/prebuild-config": "^54.0.4", 78 84 "@pmmmwh/react-refresh-webpack-plugin": "^0.5.15", 79 85 "@react-native/typescript-config": "^0.76.5", 86 + "@testing-library/jest-native": "^5.4.3", 87 + "@testing-library/react-native": "^13.3.3", 88 + "@types/jest": "^30.0.0", 80 89 "@types/node": "^22.10.1", 81 90 "@types/react": "19.1.17", 82 91 "@types/react-dom": "19.1.11", 92 + "@types/react-test-renderer": "^19.1.0", 83 93 "babel-plugin-module-resolver": "^5.0.2", 84 94 "babel-plugin-react-compiler": "19.0.0-beta-37ed2a7-20241206", 85 95 "eslint": "^8",
+172 -48
pnpm-lock.yaml
··· 119 119 version: 8.0.8(expo@54.0.12)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 120 120 expo-router: 121 121 specifier: ~6.0.10 122 - version: 6.0.10(fj6mwckpazazwnabl3it56dere) 122 + version: 6.0.10(dyms6en36i74il5wcg7sgjxr3a) 123 123 expo-splash-screen: 124 124 specifier: ~31.0.10 125 125 version: 31.0.10(expo@54.0.12) ··· 205 205 '@react-native/typescript-config': 206 206 specifier: ^0.76.5 207 207 version: 0.76.9 208 + '@testing-library/jest-native': 209 + specifier: ^5.4.3 210 + version: 5.4.3(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0) 211 + '@testing-library/react-native': 212 + specifier: ^13.3.3 213 + version: 13.3.3(jest@29.7.0(@types/node@22.18.8)(ts-node@10.9.2(@types/node@22.18.8)(typescript@5.9.3)))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0) 214 + '@types/jest': 215 + specifier: ^30.0.0 216 + version: 30.0.0 208 217 '@types/node': 209 218 specifier: ^22.10.1 210 219 version: 22.18.8 ··· 214 223 '@types/react-dom': 215 224 specifier: 19.1.11 216 225 version: 19.1.11(@types/react@19.1.17) 226 + '@types/react-test-renderer': 227 + specifier: ^19.1.0 228 + version: 19.1.0 217 229 babel-plugin-module-resolver: 218 230 specifier: ^5.0.2 219 231 version: 5.0.2 ··· 2244 2256 '@sinonjs/fake-timers@13.0.5': 2245 2257 resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==} 2246 2258 2259 + '@testing-library/jest-native@5.4.3': 2260 + resolution: {integrity: sha512-/sSDGaOuE+PJ1Z9Kp4u7PQScSVVXGud59I/qsBFFJvIbcn4P6yYw6cBnBmbPF+X9aRIsTJRDl6gzw5ZkJNm66w==} 2261 + deprecated: |- 2262 + DEPRECATED: This package is no longer maintained. 2263 + Please use the built-in Jest matchers available in @testing-library/react-native v12.4+. 2264 + 2265 + See migration guide: https://callstack.github.io/react-native-testing-library/docs/migration/jest-matchers 2266 + peerDependencies: 2267 + react: '>=16.0.0' 2268 + react-native: '>=0.59' 2269 + react-test-renderer: '>=16.0.0' 2270 + 2271 + '@testing-library/react-native@13.3.3': 2272 + resolution: {integrity: sha512-k6Mjsd9dbZgvY4Bl7P1NIpePQNi+dfYtlJ5voi9KQlynxSyQkfOgJmYGCYmw/aSgH/rUcFvG8u5gd4npzgRDyg==} 2273 + engines: {node: '>=18'} 2274 + peerDependencies: 2275 + jest: '>=29.0.0' 2276 + react: '>=18.2.0' 2277 + react-native: '>=0.71' 2278 + react-test-renderer: '>=18.2.0' 2279 + peerDependenciesMeta: 2280 + jest: 2281 + optional: true 2282 + 2247 2283 '@tootallnate/once@2.0.0': 2248 2284 resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} 2249 2285 engines: {node: '>= 10'} ··· 2305 2341 '@types/istanbul-reports@3.0.4': 2306 2342 resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} 2307 2343 2344 + '@types/jest@30.0.0': 2345 + resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==} 2346 + 2308 2347 '@types/jsdom@20.0.1': 2309 2348 resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} 2310 2349 ··· 2329 2368 resolution: {integrity: sha512-brtBs0MnE9SMx7px208g39lRmC5uHZs96caOJfTjFcYSLHNamvaSMfJNagChVNkup2SdtOxKX1FDBkRSJe1ZAg==} 2330 2369 peerDependencies: 2331 2370 '@types/react': ^19.2.0 2371 + 2372 + '@types/react-test-renderer@19.1.0': 2373 + resolution: {integrity: sha512-XD0WZrHqjNrxA/MaR9O22w/RNidWR9YZmBdRGI7wcnWGrv/3dA8wKCJ8m63Sn+tLJhcjmuhOi629N66W6kgWzQ==} 2332 2374 2333 2375 '@types/react@19.1.17': 2334 2376 resolution: {integrity: sha512-Qec1E3mhALmaspIrhWt9jkQMNdw6bReVu64mjvhbhq2NFPftLPVr+l1SZgmw/66WwBNpDh7ao5AT6gF5v41PFA==} ··· 4463 4505 resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 4464 4506 engines: {node: '>=0.8.19'} 4465 4507 4508 + indent-string@4.0.0: 4509 + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 4510 + engines: {node: '>=8'} 4511 + 4466 4512 inflight@1.0.6: 4467 4513 resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 4468 4514 deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. ··· 5455 5501 resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 5456 5502 engines: {node: '>=6'} 5457 5503 5504 + min-indent@1.0.1: 5505 + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 5506 + engines: {node: '>=4'} 5507 + 5458 5508 minimatch@10.0.3: 5459 5509 resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} 5460 5510 engines: {node: 20 || >=22} ··· 6320 6370 resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} 6321 6371 engines: {node: '>= 12.13.0'} 6322 6372 6373 + redent@3.0.0: 6374 + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} 6375 + engines: {node: '>=8'} 6376 + 6323 6377 reflect.getprototypeof@1.0.10: 6324 6378 resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} 6325 6379 engines: {node: '>= 0.4'} ··· 6794 6848 strip-final-newline@4.0.0: 6795 6849 resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} 6796 6850 engines: {node: '>=18'} 6851 + 6852 + strip-indent@3.0.0: 6853 + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 6854 + engines: {node: '>=8'} 6797 6855 6798 6856 strip-json-comments@2.0.1: 6799 6857 resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} ··· 8757 8815 wrap-ansi: 7.0.0 8758 8816 ws: 8.18.0 8759 8817 optionalDependencies: 8760 - expo-router: 6.0.10(fj6mwckpazazwnabl3it56dere) 8818 + expo-router: 6.0.10(dyms6en36i74il5wcg7sgjxr3a) 8761 8819 react-native: 0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0) 8762 8820 transitivePeerDependencies: 8763 8821 - '@modelcontextprotocol/sdk' ··· 8834 8892 wrap-ansi: 7.0.0 8835 8893 ws: 8.18.0 8836 8894 optionalDependencies: 8837 - expo-router: 6.0.10(p7n7j7fuquu3ku5xk4japqlpne) 8895 + expo-router: 6.0.10(5ksirenzi7d22pfewzdrt6o6y4) 8838 8896 react-native: 0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(react@19.2.0) 8839 8897 transitivePeerDependencies: 8840 8898 - '@modelcontextprotocol/sdk' ··· 10576 10634 dependencies: 10577 10635 '@sinonjs/commons': 3.0.1 10578 10636 10637 + '@testing-library/jest-native@5.4.3(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)': 10638 + dependencies: 10639 + chalk: 4.1.2 10640 + jest-diff: 29.7.0 10641 + jest-matcher-utils: 29.7.0 10642 + pretty-format: 29.7.0 10643 + react: 19.1.0 10644 + react-native: 0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0) 10645 + react-test-renderer: 19.1.0(react@19.1.0) 10646 + redent: 3.0.0 10647 + 10648 + '@testing-library/react-native@13.3.3(jest@29.7.0(@types/node@22.18.8)(ts-node@10.9.2(@types/node@22.18.8)(typescript@5.9.3)))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)': 10649 + dependencies: 10650 + jest-matcher-utils: 30.2.0 10651 + picocolors: 1.1.1 10652 + pretty-format: 30.2.0 10653 + react: 19.1.0 10654 + react-native: 0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0) 10655 + react-test-renderer: 19.1.0(react@19.1.0) 10656 + redent: 3.0.0 10657 + optionalDependencies: 10658 + jest: 29.7.0(@types/node@22.18.8)(ts-node@10.9.2(@types/node@22.18.8)(typescript@5.9.3)) 10659 + 10660 + '@testing-library/react-native@13.3.3(jest@30.2.0(@types/node@22.18.8)(ts-node@10.9.2(@types/node@22.18.8)(typescript@5.9.3)))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(react@19.2.0))(react-test-renderer@19.1.0(react@19.2.0))(react@19.2.0)': 10661 + dependencies: 10662 + jest-matcher-utils: 30.2.0 10663 + picocolors: 1.1.1 10664 + pretty-format: 30.2.0 10665 + react: 19.2.0 10666 + react-native: 0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(react@19.2.0) 10667 + react-test-renderer: 19.1.0(react@19.2.0) 10668 + redent: 3.0.0 10669 + optionalDependencies: 10670 + jest: 30.2.0(@types/node@22.18.8)(ts-node@10.9.2(@types/node@22.18.8)(typescript@5.9.3)) 10671 + optional: true 10672 + 10579 10673 '@tootallnate/once@2.0.0': {} 10580 10674 10581 10675 '@ts-morph/common@0.17.0': ··· 10653 10747 dependencies: 10654 10748 '@types/istanbul-lib-report': 3.0.3 10655 10749 10750 + '@types/jest@30.0.0': 10751 + dependencies: 10752 + expect: 30.2.0 10753 + pretty-format: 30.2.0 10754 + 10656 10755 '@types/jsdom@20.0.1': 10657 10756 dependencies: 10658 10757 '@types/node': 22.18.8 ··· 10679 10778 dependencies: 10680 10779 '@types/react': 19.2.0 10681 10780 optional: true 10781 + 10782 + '@types/react-test-renderer@19.1.0': 10783 + dependencies: 10784 + '@types/react': 19.1.17 10682 10785 10683 10786 '@types/react@19.1.17': 10684 10787 dependencies: ··· 12596 12699 react: 19.2.0 12597 12700 react-native: 0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(react@19.2.0) 12598 12701 12599 - expo-router@6.0.10(fj6mwckpazazwnabl3it56dere): 12600 - dependencies: 12601 - '@expo/metro-runtime': 6.1.2(expo@54.0.12)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12602 - '@expo/schema-utils': 0.1.7 12603 - '@radix-ui/react-slot': 1.2.0(@types/react@19.1.17)(react@19.1.0) 12604 - '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) 12605 - '@react-navigation/bottom-tabs': 7.4.8(@react-navigation/native@7.1.18(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(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.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12606 - '@react-navigation/native': 7.1.18(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12607 - '@react-navigation/native-stack': 7.3.27(@react-navigation/native@7.1.18(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(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.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12608 - client-only: 0.0.1 12609 - debug: 4.4.0 12610 - escape-string-regexp: 4.0.0 12611 - expo: 54.0.12(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12612 - expo-constants: 18.0.9(expo@54.0.12)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0)) 12613 - expo-linking: 8.0.8(expo@54.0.12)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12614 - expo-server: 1.0.0 12615 - fast-deep-equal: 3.1.3 12616 - invariant: 2.2.4 12617 - nanoid: 3.3.11 12618 - query-string: 7.1.3 12619 - react: 19.1.0 12620 - react-fast-compare: 3.2.2 12621 - react-native: 0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0) 12622 - react-native-is-edge-to-edge: 1.1.7(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12623 - react-native-safe-area-context: 5.6.1(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12624 - react-native-screens: 4.16.0(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12625 - semver: 7.6.3 12626 - server-only: 0.0.1 12627 - sf-symbols-typescript: 2.1.0 12628 - shallowequal: 1.1.0 12629 - use-latest-callback: 0.2.3(react@19.1.0) 12630 - vaul: 1.1.2(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) 12631 - optionalDependencies: 12632 - react-dom: 19.1.0(react@19.1.0) 12633 - react-native-gesture-handler: 2.28.0(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12634 - react-native-reanimated: 4.1.2(@babel/core@7.28.4)(react-native-worklets@0.6.0(@babel/core@7.28.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12635 - react-native-web: 0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) 12636 - react-server-dom-webpack: 19.0.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(webpack@5.97.1) 12637 - transitivePeerDependencies: 12638 - - '@react-native-masked-view/masked-view' 12639 - - '@types/react' 12640 - - '@types/react-dom' 12641 - - supports-color 12642 - 12643 - expo-router@6.0.10(p7n7j7fuquu3ku5xk4japqlpne): 12702 + expo-router@6.0.10(5ksirenzi7d22pfewzdrt6o6y4): 12644 12703 dependencies: 12645 12704 '@expo/metro-runtime': 6.1.2(expo@54.0.12)(react-dom@19.2.0(react@19.2.0))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(react@19.2.0))(react@19.2.0) 12646 12705 '@expo/schema-utils': 0.1.7 ··· 12673 12732 use-latest-callback: 0.2.3(react@19.2.0) 12674 12733 vaul: 1.1.2(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 12675 12734 optionalDependencies: 12735 + '@testing-library/react-native': 13.3.3(jest@30.2.0(@types/node@22.18.8)(ts-node@10.9.2(@types/node@22.18.8)(typescript@5.9.3)))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(react@19.2.0))(react-test-renderer@19.1.0(react@19.2.0))(react@19.2.0) 12676 12736 react-dom: 19.2.0(react@19.2.0) 12677 12737 react-native-gesture-handler: 2.28.0(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(react@19.2.0))(react@19.2.0) 12678 12738 react-native-reanimated: 4.1.2(@babel/core@7.28.4)(react-native-worklets@0.6.0(@babel/core@7.28.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(react@19.2.0))(react@19.2.0))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(react@19.2.0))(react@19.2.0) ··· 12685 12745 - supports-color 12686 12746 optional: true 12687 12747 12748 + expo-router@6.0.10(dyms6en36i74il5wcg7sgjxr3a): 12749 + dependencies: 12750 + '@expo/metro-runtime': 6.1.2(expo@54.0.12)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12751 + '@expo/schema-utils': 0.1.7 12752 + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.17)(react@19.1.0) 12753 + '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) 12754 + '@react-navigation/bottom-tabs': 7.4.8(@react-navigation/native@7.1.18(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(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.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12755 + '@react-navigation/native': 7.1.18(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12756 + '@react-navigation/native-stack': 7.3.27(@react-navigation/native@7.1.18(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(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.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12757 + client-only: 0.0.1 12758 + debug: 4.4.0 12759 + escape-string-regexp: 4.0.0 12760 + expo: 54.0.12(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12761 + expo-constants: 18.0.9(expo@54.0.12)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0)) 12762 + expo-linking: 8.0.8(expo@54.0.12)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12763 + expo-server: 1.0.0 12764 + fast-deep-equal: 3.1.3 12765 + invariant: 2.2.4 12766 + nanoid: 3.3.11 12767 + query-string: 7.1.3 12768 + react: 19.1.0 12769 + react-fast-compare: 3.2.2 12770 + react-native: 0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0) 12771 + react-native-is-edge-to-edge: 1.1.7(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12772 + react-native-safe-area-context: 5.6.1(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12773 + react-native-screens: 4.16.0(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12774 + semver: 7.6.3 12775 + server-only: 0.0.1 12776 + sf-symbols-typescript: 2.1.0 12777 + shallowequal: 1.1.0 12778 + use-latest-callback: 0.2.3(react@19.1.0) 12779 + vaul: 1.1.2(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) 12780 + optionalDependencies: 12781 + '@testing-library/react-native': 13.3.3(jest@29.7.0(@types/node@22.18.8)(ts-node@10.9.2(@types/node@22.18.8)(typescript@5.9.3)))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0) 12782 + react-dom: 19.1.0(react@19.1.0) 12783 + react-native-gesture-handler: 2.28.0(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12784 + react-native-reanimated: 4.1.2(@babel/core@7.28.4)(react-native-worklets@0.6.0(@babel/core@7.28.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0) 12785 + react-native-web: 0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) 12786 + react-server-dom-webpack: 19.0.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(webpack@5.97.1) 12787 + transitivePeerDependencies: 12788 + - '@react-native-masked-view/masked-view' 12789 + - '@types/react' 12790 + - '@types/react-dom' 12791 + - supports-color 12792 + 12688 12793 expo-server@1.0.0: {} 12689 12794 12690 12795 expo-splash-screen@31.0.10(expo@54.0.12): ··· 13325 13430 resolve-cwd: 3.0.0 13326 13431 13327 13432 imurmurhash@0.1.4: {} 13433 + 13434 + indent-string@4.0.0: {} 13328 13435 13329 13436 inflight@1.0.6: 13330 13437 dependencies: ··· 14809 14916 14810 14917 mimic-fn@2.1.0: {} 14811 14918 14919 + min-indent@1.0.1: {} 14920 + 14812 14921 minimatch@10.0.3: 14813 14922 dependencies: 14814 14923 '@isaacs/brace-expansion': 5.0.0 ··· 15773 15882 '@types/react': 19.2.0 15774 15883 optional: true 15775 15884 15885 + react-test-renderer@19.1.0(react@19.1.0): 15886 + dependencies: 15887 + react: 19.1.0 15888 + react-is: 19.1.0 15889 + scheduler: 0.26.0 15890 + 15776 15891 react-test-renderer@19.1.0(react@19.2.0): 15777 15892 dependencies: 15778 15893 react: 19.2.0 ··· 15816 15931 mute-stream: 0.0.5 15817 15932 15818 15933 real-require@0.2.0: {} 15934 + 15935 + redent@3.0.0: 15936 + dependencies: 15937 + indent-string: 4.0.0 15938 + strip-indent: 3.0.0 15819 15939 15820 15940 reflect.getprototypeof@1.0.10: 15821 15941 dependencies: ··· 16357 16477 strip-final-newline@2.0.0: {} 16358 16478 16359 16479 strip-final-newline@4.0.0: {} 16480 + 16481 + strip-indent@3.0.0: 16482 + dependencies: 16483 + min-indent: 1.0.1 16360 16484 16361 16485 strip-json-comments@2.0.1: {} 16362 16486