Files
Kazier/mobile/package.json
T
m 0536fca6c3 feat(mobile): identité user-first — login/password, SecureStore, scoping par compte
- api: DeviceRegistration device-only, login/changePassword/resolveUser, interception 401 (purge) exonérée sur le login ; type User aligné sur le fil (is_admin)
- SecureStore (expo-secure-store v57) : token + profil, jamais en SQLite ; miroir active_user_id
- AuthContext : statut loading/signedOut/signedIn, bootstrap register→restore, signIn/signOut, garde-fou switch de compte
- app/login.tsx + gate de routes dans _layout (Redirect signedOut) ; i18n fr/en
- DB v5 : user_id sur pending_operations + resource_permissions (UNIQUE par user), repos scopés (user_id IS ? OR IS NULL)
- syncOutbox : delta permissions par compte (Map), outbox poussée du compte actif uniquement
- tests: register/login/401/resolve/changePassword, scoping outbox+permissions, migrations v5 ; e2e live revert register→login admin
2026-09-10 21:34:34 +02:00

46 lines
1.4 KiB
JSON

{
"name": "webui",
"version": "2.0.0",
"main": "expo-router/entry",
"dependencies": {
"@expo/vector-icons": "^15.1.1",
"@tanstack/react-query": "^5.102.8",
"expo": "~57.0.8",
"expo-constants": "~57.0.17",
"expo-file-system": "~57.0.6",
"expo-linking": "~57.0.9",
"expo-localization": "~57.0.1",
"expo-router": "~57.0.20",
"expo-secure-store": "~57.0.3",
"expo-sqlite": "~57.0.2",
"expo-status-bar": "~57.0.1",
"i18n-js": "^4.5.3",
"react": "19.2.3",
"react-dom": "19.2.3",
"react-native": "0.86.0",
"react-native-safe-area-context": "~5.7.0",
"react-native-screens": "~4.26.0"
},
"devDependencies": {
"@types/better-sqlite3": "^9.6.0",
"@types/react": "~19.2.2",
"babel-preset-expo": "^57.0.4",
"better-sqlite3": "^13.0.3",
"tsx": "^4.23.13",
"typescript": "~6.0.3"
},
"scripts": {
"start": "expo start",
"android": "expo run:android",
"ios": "expo run:ios",
"web": "expo start --web",
"test:db": "tsx --test tests/migrations.test.ts tests/repositories.test.ts",
"test:migrations": "tsx --test tests/migrations.test.ts",
"test:api": "tsx --test tests/apiClient.test.ts",
"test:sync": "tsx --test tests/syncOutbox.test.ts",
"test:e2e": "tsx --test tests/e2e.live.test.ts",
"test": "npm run test:db && npm run test:api && npm run test:sync"
},
"private": true
}