-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpackage.json
More file actions
127 lines (127 loc) · 6.99 KB
/
package.json
File metadata and controls
127 lines (127 loc) · 6.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
{
"name": "dutch-learning-app",
"main": "expo-router/entry",
"version": "1.12.1",
"scripts": {
"start": "expo start",
"android": "expo run:android",
"ios": "expo run:ios",
"web": "expo start --web",
"test": "jest --watch",
"test:ci": "jest --ci --coverage --maxWorkers=2 --watchman=false",
"test:coverage": "jest --coverage",
"test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand",
"test:update-snapshots": "jest -u",
"typecheck": "tsc --noEmit --project tsconfig.build.json",
"lint": "eslint . --ext .ts,.tsx,.js,.jsx",
"lint:fix": "eslint . --ext .ts,.tsx,.js,.jsx --fix",
"format": "prettier --write \"**/*.{ts,tsx,js,jsx,json,md}\"",
"format:check": "prettier --check \"**/*.{ts,tsx,js,jsx,json,md}\"",
"postinstall": "patch-package",
"eas-build-post-install": "node scripts/eas-build-post-install.js",
"prepare": "husky",
"deploy:edge-functions": "npx supabase functions deploy gemini-handler && npx supabase functions deploy get-multiple-images",
"deploy:constants": "echo '🚀 Deploying Edge Functions due to constants change...' && npm run deploy:edge-functions && echo '✅ Edge Functions updated with new constants!'",
"deploy:gemini": "npx supabase functions deploy gemini-handler",
"deploy:images": "npx supabase functions deploy get-multiple-images",
"update:production": "bash scripts/eas-update-production.sh",
"sourcemaps:build": "bash scripts/upload-sourcemaps.sh",
"sourcemaps:update": "bash scripts/upload-sourcemaps.sh --update-dist dist",
"complexity": "eslint . --ext .ts,.tsx,.js,.jsx --format stylish",
"complexity:strict": "eslint . --ext .ts,.tsx,.js,.jsx --rule 'sonarjs/cognitive-complexity: [error, 10]'",
"complexity:report": "eslint . --ext .ts,.tsx,.js,.jsx --format json --output-file reports/complexity-report.json",
"complexity:summary": "echo '📊 Running cognitive complexity analysis...' && npm run complexity 2>&1 | grep -E 'cognitive-complexity|no-duplicate-string|no-identical-functions' | wc -l && echo 'issues found. Run npm run complexity for details.'",
"file-length": "find . -name '*.tsx' -o -name '*.ts' | grep -v node_modules | grep -v ios | grep -v android | grep -v '.expo' | grep -v dist | xargs wc -l | sort -nr | head -10",
"file-length:check": ".husky/check-file-length",
"test:edge": "deno test supabase/functions/ --allow-env --allow-net",
"e2e:test": "bash -c 'set -a; [ -f .maestro/.maestro.env ] && source .maestro/.maestro.env; [ -f .env ] && source .env; set +a; : ${MAESTRO_TEST_EMAIL:=$EXPO_PUBLIC_DEV_USER_EMAIL}; : ${MAESTRO_TEST_PASSWORD:=$EXPO_PUBLIC_DEV_USER_PASSWORD}; export MAESTRO_TEST_EMAIL MAESTRO_TEST_PASSWORD; maestro test .maestro/01-auth-login.yaml -e APP_ID=com.oldrefery.dutch-learning-app --env MAESTRO_TEST_EMAIL=$MAESTRO_TEST_EMAIL --env MAESTRO_TEST_PASSWORD=$MAESTRO_TEST_PASSWORD'",
"e2e:test:all": "bash -c 'set -a; [ -f .maestro/.maestro.env ] && source .maestro/.maestro.env; [ -f .env ] && source .env; set +a; : ${MAESTRO_TEST_EMAIL:=$EXPO_PUBLIC_DEV_USER_EMAIL}; : ${MAESTRO_TEST_PASSWORD:=$EXPO_PUBLIC_DEV_USER_PASSWORD}; export MAESTRO_TEST_EMAIL MAESTRO_TEST_PASSWORD; maestro test .maestro/ -e APP_ID=com.oldrefery.dutch-learning-app --env MAESTRO_TEST_EMAIL=$MAESTRO_TEST_EMAIL --env MAESTRO_TEST_PASSWORD=$MAESTRO_TEST_PASSWORD'",
"e2e:test:all:ios": "bash -c 'set -a; [ -f .maestro/.maestro.env ] && source .maestro/.maestro.env; [ -f .env ] && source .env; set +a; : ${MAESTRO_TEST_EMAIL:=$EXPO_PUBLIC_DEV_USER_EMAIL}; : ${MAESTRO_TEST_PASSWORD:=$EXPO_PUBLIC_DEV_USER_PASSWORD}; export MAESTRO_TEST_EMAIL MAESTRO_TEST_PASSWORD; maestro test .maestro/ -e APP_ID=com.oldrefery.dutch-learning-app --env MAESTRO_TEST_EMAIL=$MAESTRO_TEST_EMAIL --env MAESTRO_TEST_PASSWORD=$MAESTRO_TEST_PASSWORD'",
"e2e:test:all:android": "bash -c 'set -a; [ -f .maestro/.maestro.env ] && source .maestro/.maestro.env; [ -f .env ] && source .env; set +a; : ${MAESTRO_TEST_EMAIL:=$EXPO_PUBLIC_DEV_USER_EMAIL}; : ${MAESTRO_TEST_PASSWORD:=$EXPO_PUBLIC_DEV_USER_PASSWORD}; export MAESTRO_TEST_EMAIL MAESTRO_TEST_PASSWORD; maestro test .maestro/ -e APP_ID=com.oldrefery.dutchlearningapp --env MAESTRO_TEST_EMAIL=$MAESTRO_TEST_EMAIL --env MAESTRO_TEST_PASSWORD=$MAESTRO_TEST_PASSWORD'",
"e2e:record": "maestro record .maestro/"
},
"lint-staged": {
"*.{ts,tsx,js,jsx}": [
"eslint --fix",
"prettier --write"
],
"*.{json,md}": [
"prettier --write"
]
},
"dependencies": {
"@expo/metro-runtime": "~55.0.10",
"@expo/vector-icons": "^15.0.2",
"@gorhom/bottom-sheet": "^5",
"@react-native-async-storage/async-storage": "2.2.0",
"@react-native-community/netinfo": "11.5.2",
"@react-navigation/native": "^7.1.6",
"@sentry/react-native": "~7.11.0",
"@supabase/sentry-js-integration": "^0.3.0",
"@supabase/supabase-js": "^2.57.0",
"@testing-library/user-event": "^14.6.1",
"expo": "~55.0.17",
"expo-apple-authentication": "~55.0.13",
"expo-asset": "~55.0.16",
"expo-audio": "~55.0.14",
"expo-blur": "~55.0.14",
"expo-build-properties": "~55.0.13",
"expo-clipboard": "~55.0.13",
"expo-constants": "~55.0.15",
"expo-crypto": "~55.0.14",
"expo-dev-client": "~55.0.28",
"expo-font": "~55.0.4",
"expo-haptics": "~55.0.14",
"expo-linking": "~55.0.14",
"expo-router": "~55.0.13",
"expo-secure-store": "~55.0.13",
"expo-splash-screen": "~55.0.19",
"expo-sqlite": "~55.0.15",
"expo-status-bar": "~55.0.5",
"expo-symbols": "~55.0.7",
"expo-system-ui": "~55.0.16",
"expo-updates": "~55.0.21",
"expo-web-browser": "~55.0.14",
"fetch-retry": "^6.0.0",
"react": "19.2.0",
"react-dom": "19.2.0",
"react-native": "0.83.6",
"react-native-gesture-handler": "~2.30.0",
"react-native-mmkv": "^3.3.3",
"react-native-reanimated": "4.2.1",
"react-native-safe-area-context": "~5.6.0",
"react-native-screens": "~4.23.0",
"react-native-toast-message": "^2.3.3",
"react-native-url-polyfill": "^2.0.0",
"react-native-web": "^0.21.0",
"react-native-worklets": "0.7.4",
"zustand": "^5.0.8"
},
"devDependencies": {
"@babel/core": "^7.25.2",
"@eslint/eslintrc": "^3.3.1",
"@testing-library/react-native": "^13.2.0",
"@types/jest": "29.5.14",
"@types/react": "~19.2.10",
"@typescript-eslint/eslint-plugin": "^8.42.0",
"@typescript-eslint/parser": "^8.42.0",
"dotenv": "^17.2.2",
"eslint": "^9.35.0",
"eslint-config-expo": "~55.0.0",
"eslint-plugin-sonarjs": "^3.0.5",
"husky": "^9.1.7",
"jest": "^29.2.1",
"jest-expo": "~55.0.16",
"lint-staged": "^15.5.2",
"patch-package": "^8.0.1",
"prettier": "^3.6.2",
"react-test-renderer": "19.2.0",
"typescript": "~5.9.2"
},
"private": true,
"overrides": {
"@types/react": "~19.2.10",
"react-server-dom-webpack": "19.2.0"
},
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
}