{ "name": "eranos", "private": true, "version": "2.9.1", "type": "module", "scripts": { "dev": "npm i --silent && vite", "build": "npm i --silent && vite build -l error && cp dist/index.html dist/404.html && echo 'Project built successfully!'", "test": "npm i --silent && tsc --noEmit && eslint --cache && vitest run --reporter=dot --silent && vite build -l error && cp dist/index.html dist/404.html && echo 'All tests passed!'", "cap:sync": "npx cap sync && node scripts/patch-cap-config.mjs", "keygen": "keytool -genkey -v -keystore android/app/my-upload-key.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias upload", "icons": "bash scripts/generate-icons.sh" }, "engines": { "node": ">=22" }, "dependencies": { "@capacitor/app": "^8.0.0", "@capacitor/barcode-scanner": "^3.0.2", "@capacitor/core": "^8.1.0", "@capacitor/filesystem": "^8.1.2", "@capacitor/haptics": "^8.0.2", "@capacitor/keyboard": "^8.0.3", "@capacitor/local-notifications": "^8.0.1", "@capacitor/share": "^8.0.1", "@capgo/capacitor-autofill-save-password": "^8.0.22", "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", "@emoji-mart/data": "^1.2.1", "@emoji-mart/react": "^1.1.1", "@fontsource-variable/fredoka": "^5.2.10", "@fontsource-variable/inter": "^5.2.6", "@fontsource-variable/nunito": "^5.2.7", "@fontsource-variable/playfair-display": "^5.2.8", "@fontsource/bebas-neue": "^5.2.7", "@fontsource/caveat": "^5.2.8", "@fontsource/creepster": "^5.2.7", "@fontsource/noto-sans-nushu": "^5.2.6", "@fontsource/noto-sans-tc": "^5.2.9", "@fontsource/pacifico": "^5.2.7", "@fontsource/permanent-marker": "^5.2.7", "@fontsource/pirata-one": "^5.2.8", "@fontsource/silkscreen": "^5.2.8", "@fontsource/special-elite": "^5.2.8", "@hookform/resolvers": "^5.2.2", "@milkdown/core": "^7.20.0", "@milkdown/ctx": "^7.20.0", "@milkdown/plugin-clipboard": "^7.20.0", "@milkdown/plugin-history": "^7.20.0", "@milkdown/plugin-listener": "^7.20.0", "@milkdown/plugin-upload": "^7.20.0", "@milkdown/preset-commonmark": "^7.20.0", "@milkdown/preset-gfm": "^7.20.0", "@milkdown/prose": "^7.20.0", "@milkdown/react": "^7.20.0", "@milkdown/utils": "^7.20.0", "@noble/curves": "^1.2.0", "@noble/hashes": "^1.8.0", "@scure/base": "^1.1.1", "@nostrify/nostrify": "^0.52.2", "@nostrify/react": "^0.6.2", "@nostrify/types": "^0.37.0", "@plausible-analytics/tracker": "^0.4.4", "@radix-ui/react-accordion": "^1.2.0", "@radix-ui/react-alert-dialog": "^1.1.1", "@radix-ui/react-avatar": "^1.1.0", "@radix-ui/react-checkbox": "^1.1.1", "@radix-ui/react-collapsible": "^1.1.0", "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-hover-card": "^1.1.15", "@radix-ui/react-label": "^2.1.0", "@radix-ui/react-popover": "^1.1.15", "@radix-ui/react-progress": "^1.1.0", "@radix-ui/react-radio-group": "^1.2.0", "@radix-ui/react-scroll-area": "^1.1.0", "@radix-ui/react-select": "^2.2.6", "@radix-ui/react-separator": "^1.1.0", "@radix-ui/react-slider": "^1.2.0", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-switch": "^1.1.0", "@radix-ui/react-tabs": "^1.1.0", "@radix-ui/react-toast": "^1.2.1", "@radix-ui/react-toggle": "^1.1.0", "@radix-ui/react-toggle-group": "^1.1.0", "@radix-ui/react-tooltip": "^1.2.8", "@sentry/react": "^10.42.0", "@tanstack/react-query": "^5.56.2", "@unhead/addons": "^2.1.13", "@unhead/react": "^2.1.13", "blurhash": "^2.0.5", "capacitor-secure-storage-plugin": "^0.13.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.0.0", "d3-celestial": "^0.7.35", "d3-scale": "^4.0.2", "date-fns": "^3.6.0", "dompurify": "^3.3.3", "embla-carousel-react": "^8.3.0", "emoji-mart": "^5.6.0", "hls.js": "^1.6.15", "i18next": "^26.0.5", "i18next-browser-languagedetector": "^8.2.1", "idb": "^8.0.3", "lucide-react": "^1.8.0", "nostr-tools": "^2.13.0", "qr-scanner": "^1.4.2", "qrcode": "^1.5.4", "react": "^19.2.4", "react-blurhash": "^0.3.0", "react-dom": "^19.2.4", "react-easy-crop": "^5.5.6", "react-hook-form": "^7.71.1", "react-i18next": "^17.0.4", "react-intersection-observer": "^9.16.0", "react-markdown": "^10.1.0", "react-router-dom": "^6.26.2", "recharts": "^2.12.7", "rehype-sanitize": "^6.0.0", "slugify": "^1.6.8", "tailwind-merge": "^2.5.2", "tailwindcss-animate": "^1.0.7", "uri-templates": "^0.2.0", "vaul": "^1.1.2", "zod": "^4.3.6" }, "devDependencies": { "@capacitor/android": "^8.1.0", "@capacitor/cli": "^8.1.0", "@capacitor/ios": "^8.2.0", "@eslint/js": "^9.9.0", "@html-eslint/eslint-plugin": "^0.41.0", "@html-eslint/parser": "^0.41.0", "@tailwindcss/typography": "^0.5.15", "@testing-library/dom": "^10.4.1", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.3.2", "@types/d3-scale": "^4.0.9", "@types/dompurify": "^3.0.5", "@types/node": "^22.5.5", "@types/qrcode": "^1.5.5", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", "autoprefixer": "^10.4.20", "eslint": "^9.9.0", "eslint-plugin-react-hooks": "^5.1.0-rc.0", "eslint-plugin-react-refresh": "^0.4.9", "globals": "^15.9.0", "iso-3166": "^4.4.0", "jsdom": "^26.1.0", "postcss": "^8.4.47", "rollup-plugin-visualizer": "^7.0.1", "tailwindcss": "^3.4.11", "typescript": "^5.5.3", "typescript-eslint": "^8.0.1", "vite": "^8.0.3", "vitest": "^4.1.8" }, "overrides": { "react": "$react", "react-dom": "$react-dom" } }