mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-11-13 15:51:00 +00:00
8b6a65023f
Brings the native apps branch up to dev (NestJS-only server, MikroORM
repositories, tracked sessions, per-domain locales, the lint ratchets) and
ports its new code onto that architecture:
- server: /api/auth/native moves onto injected services. The session is
minted by the auth domain's new LoginSessionService (login bookkeeping and
SessionsService.issue in one transaction), the one-time codes live behind a
NativeHandoffStore port with a capped in-memory implementation that drops
expired codes on write instead of running a timer, both routes declare
response contracts, and the exchange answers { success: true }. Unit and
e2e suites run on createTestModule and the ORM factories.
- shared: native strings for az, et, sk and th, native wired into every
locale, the address placeholder as a full URL.
- client: the account and export changes go into dev's shared hooks
(useAccountSettings, useTripExport), the native server card is a
desktop/phone pair on useNativeServer, the hand-off call moves out of the
page hook into native/, best-effort native failures go through
reportError instead of the console, and the address screen is known to
knip and lint:i18n-keys.
- package-lock.json regenerated on Linux.
166 lines
6.1 KiB
JSON
166 lines
6.1 KiB
JSON
{
|
|
"name": "@trek/client",
|
|
"version": "5.0.0",
|
|
"engines": {
|
|
"node": "^22.22.2 || ^24.15.0 || >=26.0.0"
|
|
},
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"prebuild": "node scripts/generate-icons.mjs",
|
|
"icons:native": "node scripts/generate-native-icons.mjs",
|
|
"icons:app": "node scripts/generate-app-icons.mjs && npx @capacitor/assets generate --android --ios --iconBackgroundColor #09090b --iconBackgroundColorDark #09090b --splashBackgroundColor #09090b --splashBackgroundColorDark #09090b",
|
|
"build:native": "vite build --config vite.native.config.js",
|
|
"cap:sync": "npm run build:native && cap sync",
|
|
"build": "vite build",
|
|
"build:analyze": "vite build --mode analyze",
|
|
"preview": "vite preview",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "vitest run",
|
|
"test:unit": "vitest run tests/unit",
|
|
"test:integration": "vitest run tests/integration src/**/*.test.{ts,tsx}",
|
|
"test:watch": "vitest",
|
|
"test:coverage": "vitest run --coverage",
|
|
"lint": "eslint .",
|
|
"lint:check": "eslint .",
|
|
"lint:warnings": "node scripts/eslint-ratchet.mjs",
|
|
"lint:pages": "node scripts/check-page-pattern.mjs",
|
|
"lint:rtl": "node scripts/rtl-lint.mjs",
|
|
"lint:size": "node scripts/size-lint.mjs",
|
|
"lint:format": "node scripts/format-lint.mjs",
|
|
"lint:layers": "node scripts/layer-lint.mjs",
|
|
"lint:offline": "node scripts/offline-lint.mjs",
|
|
"lint:dup": "node scripts/dup-lint.mjs",
|
|
"lint:pairs": "node scripts/pairs-lint.mjs",
|
|
"lint:skips": "node scripts/skip-lint.mjs",
|
|
"lint:strict": "node scripts/strict-lint.mjs",
|
|
"lint:i18n-keys": "node scripts/i18n-keys.mjs",
|
|
"check:gl-split": "node scripts/check-gl-split.mjs",
|
|
"theme:lint": "node scripts/theme-lint.mjs",
|
|
"e2e": "playwright test",
|
|
"shots": "playwright test --project=screenshots",
|
|
"help:media": "node e2e/help/run.mjs",
|
|
"help:media:promote": "node e2e/help/promote.mjs",
|
|
"shots:promote": "node e2e/screenshots/promote.mjs",
|
|
"e2e:report": "playwright show-report",
|
|
"format": "prettier --write \"src/**/*.tsx\" \"src/**/*.css\"",
|
|
"format:check": "prettier --check \"src/**/*.tsx\" \"src/**/*.css\""
|
|
},
|
|
"dependencies": {
|
|
"@assistant-ui/react": "0.15.25",
|
|
"@capacitor/android": "^8.5.0",
|
|
"@capacitor/app": "^8.1.1",
|
|
"@capacitor/core": "^8.5.0",
|
|
"@capacitor/filesystem": "^8.1.3",
|
|
"@capacitor/haptics": "^8.0.2",
|
|
"@capacitor/ios": "^8.5.0",
|
|
"@capacitor/keyboard": "^8.0.5",
|
|
"@capacitor/share": "^8.0.1",
|
|
"@capacitor/splash-screen": "^8.0.2",
|
|
"@capacitor/status-bar": "^8.0.3",
|
|
"@fontsource/abril-fatface": "^5.3.0",
|
|
"@fontsource/alfa-slab-one": "^5.3.0",
|
|
"@fontsource/allura": "^5.3.0",
|
|
"@fontsource/anton": "^5.3.0",
|
|
"@fontsource/archivo-black": "^5.3.0",
|
|
"@fontsource/bebas-neue": "^5.3.0",
|
|
"@fontsource/big-shoulders-display": "^5.3.0",
|
|
"@fontsource/bodoni-moda": "^5.3.0",
|
|
"@fontsource/bricolage-grotesque": "^5.3.0",
|
|
"@fontsource/caveat": "^5.3.0",
|
|
"@fontsource/cormorant-garamond": "^5.3.0",
|
|
"@fontsource/dancing-script": "^5.3.0",
|
|
"@fontsource/dm-mono": "^5.3.0",
|
|
"@fontsource/dm-serif-display": "^5.3.0",
|
|
"@fontsource/eb-garamond": "^5.3.0",
|
|
"@fontsource/fraunces": "^5.3.0",
|
|
"@fontsource/geist-sans": "^5.3.0",
|
|
"@fontsource/great-vibes": "^5.3.0",
|
|
"@fontsource/homemade-apple": "^5.3.0",
|
|
"@fontsource/inter": "^5.3.0",
|
|
"@fontsource/kaushan-script": "^5.3.0",
|
|
"@fontsource/league-gothic": "^5.3.0",
|
|
"@fontsource/lora": "^5.3.0",
|
|
"@fontsource/montserrat": "^5.3.0",
|
|
"@fontsource/museomoderno": "^5.3.0",
|
|
"@fontsource/oswald": "^5.3.0",
|
|
"@fontsource/pacifico": "^5.3.0",
|
|
"@fontsource/parisienne": "^5.3.0",
|
|
"@fontsource/permanent-marker": "^5.3.0",
|
|
"@fontsource/playfair-display": "^5.3.0",
|
|
"@fontsource/poppins": "^5.3.0",
|
|
"@fontsource/sacramento": "^5.3.0",
|
|
"@fontsource/satisfy": "^5.3.0",
|
|
"@fontsource/shrikhand": "^5.3.0",
|
|
"@fontsource/yellowtail": "^5.3.0",
|
|
"@mapbox/mapbox-gl-rtl-text": "^0.4.0",
|
|
"@maplibre/maplibre-gl-leaflet": "0.1.4",
|
|
"@noble/hashes": "^1.8.0",
|
|
"@simplewebauthn/browser": "^13.3.0",
|
|
"@trek/shared": "*",
|
|
"axios": "^1.20.0",
|
|
"dexie": "^4.4.6",
|
|
"drag-drop-touch": "^1.3.1",
|
|
"heic-to": "^1.5.2",
|
|
"iso-3166-2": "^1.0.0",
|
|
"leaflet": "^1.9.4",
|
|
"lucide-react": "^0.577.0",
|
|
"mapbox-gl": "^3.31.0",
|
|
"maplibre-gl": "6.15.0",
|
|
"modern-screenshot": "4.7.0",
|
|
"plyr": "^3.8.4",
|
|
"react": "^19.3.0",
|
|
"react-dom": "^19.3.0",
|
|
"react-dropzone": "^14.4.1",
|
|
"react-leaflet": "^5.0.0",
|
|
"react-leaflet-cluster": "^4.1.3",
|
|
"react-markdown": "^10.1.0",
|
|
"react-router": "^7.18.4",
|
|
"rehype-sanitize": "^6.0.0",
|
|
"remark-breaks": "^4.0.0",
|
|
"remark-gfm": "^4.0.1",
|
|
"tz-lookup": "^6.1.25",
|
|
"zod": "^4.6.7",
|
|
"zustand": "^5.0.15"
|
|
},
|
|
"devDependencies": {
|
|
"@capacitor/cli": "^8.5.0",
|
|
"@eslint/js": "^10.0.1",
|
|
"@jscpd/core": "^4.2.5",
|
|
"@jscpd/tokenizer": "^4.2.6",
|
|
"@playwright/test": "^1.63.0",
|
|
"@testing-library/jest-dom": "^6.10.0",
|
|
"@testing-library/react": "^16.3.3",
|
|
"@testing-library/user-event": "^14.6.7",
|
|
"@trivago/prettier-plugin-sort-imports": "^6.0.2",
|
|
"@types/leaflet": "^1.9.22",
|
|
"@types/node": "^25.9.8",
|
|
"@types/react": "^19.3.0",
|
|
"@types/react-dom": "^19.3.0",
|
|
"@vitejs/plugin-react": "^6.1.1",
|
|
"@vitest/coverage-v8": "^4.1.11",
|
|
"autoprefixer": "^10.6.1",
|
|
"eslint": "^10.11.0",
|
|
"eslint-config-flat-gitignore": "^2.4.0",
|
|
"eslint-config-prettier": "^10.1.8",
|
|
"eslint-plugin-react-hooks": "^7.1.1",
|
|
"eslint-plugin-react-refresh": "^0.5.7",
|
|
"fake-indexeddb": "^6.2.5",
|
|
"jsdom": "^29.1.1",
|
|
"msw": "^2.15.0",
|
|
"postcss": "^8.5.28",
|
|
"prettier": "^3.9.8",
|
|
"prettier-plugin-organize-imports": "^4.3.0",
|
|
"prettier-plugin-tailwindcss": "^0.8.1",
|
|
"rollup-plugin-visualizer": "^7.1.1",
|
|
"sharp": "^0.35.4",
|
|
"tailwindcss": "^3.4.19",
|
|
"typescript": "^6.0.3",
|
|
"typescript-eslint": "^8.70.0",
|
|
"vite": "8.3.0",
|
|
"vite-plugin-pwa": "^1.3.0",
|
|
"vitest": "^4.1.11"
|
|
}
|
|
}
|