{
  "name": "tad-template-mobile",
  "private": true,
  "version": "1.0.0",
  "type": "module",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/TheAppDiscipline/tad-template-mobile.git"
  },
  "homepage": "https://github.com/TheAppDiscipline/tad-template-mobile#readme",
  "scripts": {
    "start": "expo start",
    "android": "expo run:android",
    "ios": "expo run:ios",
    "lint": "npx expo lint",
    "typecheck": "tsc --noEmit",
    "test": "node --test tests/tooling.discipline.test.js tests/phase4.discipline.node-test.js tests/mobile-asset-security.test.js tests/vendored-dependency-security.test.js",
    "check-expo-compat": "npx expo install --check",
    "check-vendored-deps": "node tools/check_vendored_dependencies.js",
    "check-tokens": "node tools/check_no_hex_colors.js",
    "check-assets": "node tools/check_mobile_assets.js",
    "e2e:auth": "node tools/check_authenticated_ui.js && maestro test .maestro/authenticated",
    "check-mobile-release": "node tools/check_mobile_release_ready.js",
    "check-secrets": "node tools/check_no_secrets_in_frontend.js",
    "check-rls": "node tools/check_rls.js",
    "check-cors": "node tools/check_cors.js",
    "check-https": "node tools/check_https_redirect.js",
    "check-magic": "node tools/check_magic_numbers.js",
    "check-magic:strict": "node tools/check_magic_numbers.js --strict",
    "check-queries": "node tools/check_query_limits.js",
    "check-queries:strict": "node tools/check_query_limits.js --strict",
    "check-fk-indexes": "node tools/check_fk_indexes.js",
    "check-db-types": "node tools/check_db_types.js",
    "check-db-types:strict": "node tools/check_db_types.js --strict",
    "check-firebase": "node tools/check_firebase_rules.js",
    "audit:high": "node tools/check_audit.js",
    "test:rls": "node tests/rls/cross-space.mjs",
    "test:storage:privacy": "node tests/storage/private-access.mjs",
    "gate": "npm run discipline:provider:check && npm run check-expo-compat && npm run check-vendored-deps && npm run check-assets && npm run lint && tsc --noEmit && npm run test && npm run check-tokens && npm run check-secrets && npm run check-rls && npm run check-cors && npm run check-https && npm run check-fk-indexes && npm run migration:lint && npm run check-firebase",
    "gate:full": "npm run gate && npm run check-magic && npm run check-queries && npm run ai:eval",
    "gate:strict": "npm run gate && npm run check-magic:strict && npm run check-queries:strict && npm run check-db-types:strict",
    "gate:launch": "npm run gate:strict && npm run discipline:validate:launch && npm run test:rls && npm run test:storage:privacy && npm run audit:high",
    "backend:smoke": "node tools/backend_smoke_test.js",
    "gate:integration": "npm run discipline:provider:check && npm run backend:smoke",
    "db:smoke": "node tools/supabase_smoke_test.js",
    "db:types:generate": "node tools/generate_db_types.js",
    "firebase:smoke": "node tools/firebase_smoke_test.js",
    "ai:smoke": "node tools/llm_smoke_test.js",
    "ai:eval": "node tools/llm_eval.js --mode=fixture",
    "migration:lint": "node tools/migration_lint.js",
    "discipline:hydrate": "npx tsx tools/discipline/hydrate-template.ts",
    "discipline:provider:generate": "npx tsx tools/discipline/provider-config.ts",
    "discipline:provider:check": "npx tsx tools/discipline/provider-config.ts --check && npx tsx tools/discipline/check-provider-consumers.ts",
    "discipline:patch": "npx tsx tools/discipline/apply-patch.ts",
    "discipline:patch:dry-run": "npx tsx tools/discipline/apply-patch.ts --dry-run",
    "discipline:assemble": "npx tsx tools/discipline/assemble-paste-ready.ts",
    "discipline:step4-origin": "npx tsx tools/discipline/step4-origin.ts",
    "discipline:migrate-packets": "tsx tools/discipline/migrate-packets.ts",
    "discipline:metrics": "tsx tools/discipline/metrics.ts",
    "discipline:state-view": "tsx tools/discipline/state-view.ts",
    "discipline:progress": "npx tsx tools/discipline/update-progress.ts",
    "discipline:log": "npx tsx tools/discipline/log-run.ts",
    "discipline:validate": "npx tsx tools/discipline/validate-discipline.ts",
    "discipline:validate:launch": "npx tsx tools/discipline/validate-scorecard.ts --mode=launch",
    "discipline:validate:prod": "npx tsx tools/discipline/validate-scorecard.ts --mode=prod",
    "discipline:validate:scope": "npx tsx tools/discipline/validate-scope.ts",
    "discipline:validate:architecture": "npx tsx tools/discipline/validate-architecture.ts",
    "discipline:doctor": "npx tsx tools/discipline/doctor.ts",
    "discipline:doctor:providers": "npx tsx tools/discipline/doctor.ts --providers",
    "discipline:lease": "npx tsx tools/discipline/lease.ts",
    "discipline:checkpoint": "npx tsx tools/discipline/checkpoint.ts",
    "discipline:gate:report": "npx tsx tools/discipline/gate-report.ts",
    "discipline:gate:changed": "npx tsx tools/discipline/gate-changed.ts",
    "discipline:review": "npx tsx tools/discipline/diff-report.ts",
    "discipline:release-pack": "npx tsx tools/discipline/release-pack.ts",
    "discipline:status": "npx tsx tools/discipline/validate-discipline.ts --status",
    "discipline:watch": "npx tsx tools/discipline/watch.ts",
    "discipline:step1-prep": "npx tsx tools/discipline/step1-prep.ts",
    "discipline:ai-scaffold": "npx tsx tools/discipline/ai-scaffold.ts",
    "discipline:cross-validate": "npx tsx tools/discipline/cross-validate.ts",
    "discipline:cross-validate:live": "npx tsx tools/discipline/cross-validate.ts --live",
    "discipline:run": "npx tsx tools/discipline/run.ts",
    "discipline:test-scaffold": "npx tsx tools/discipline/test-scaffold.ts",
    "discipline:audit-merge": "npx tsx tools/discipline/audit-merge.ts",
    "discipline": "npx tsx tools/discipline/cli.ts",
    "discipline:rls-generate": "node tools/generate_rls.js",
    "e2e": "maestro test .maestro/",
    "e2e:smoke": "maestro test .maestro/smoke.yaml",
    "gate:visual": "npm run lint && npm run e2e:smoke"
  },
  "dependencies": {
    "@react-native-async-storage/async-storage": "^2.2.0",
    "@react-navigation/native": "^7.0.0",
    "@react-navigation/native-stack": "^7.0.0",
    "expo": "~57.0.15",
    "expo-linking": "~57.0.7",
    "expo-secure-store": "~57.0.1",
    "expo-status-bar": "~57.0.1",
    "image-size": "file:vendor/image-size-2.0.3-tad.1.tgz",
    "react": "19.2.3",
    "react-native": "0.86.2",
    "react-native-safe-area-context": "~5.7.0",
    "react-native-screens": "~4.26.0",
    "shell-quote": "1.10.0",
    "uuid": "11.1.1"
  },
  "devDependencies": {
    "@babel/core": "^7.25.0",
    "@types/js-yaml": "^4.0.9",
    "@types/node": "^24.0.0",
    "@types/react": "~19.2.10",
    "ajv": "^8.18.0",
    "ajv-formats": "^3.0.1",
    "brace-expansion": "1.1.18",
    "chokidar": "^4.0.0",
    "dotenv": "^16.4.0",
    "eslint": "^8.57.0",
    "eslint-config-expo": "~57.0.1",
    "eslint-plugin-react-native-a11y": "^3.5.1",
    "fast-uri": "3.1.5",
    "js-yaml": "^4.3.1",
    "markdownlint-cli2": "0.23.2",
    "minimist": "^1.2.8",
    "tsx": "^4.0.0",
    "typescript": "~6.0.3"
  },
  "engines": {
    "node": ">=22"
  },
  "engineStrict": true,
  "overrides": {
    "brace-expansion": "$brace-expansion",
    "fast-uri": "$fast-uri",
    "image-size": "$image-size",
    "shell-quote": "$shell-quote",
    "uuid": "$uuid"
  }
}
