Files
MyIP/package.json
T
fly1dandOpenAI Codex 79a5269fbc Chore(dns): align resolver diagnostics with runtime usage
Keep resolver health checks on demand and surface actionable runtime availability failures through the shared logger. Remove the GitHub Actions workflow so transient resolver connectivity does not affect code CI.

Co-authored-by: OpenAI Codex <codex@openai.com>
2026-08-24 16:44:46 +08:00

86 lines
2.9 KiB
JSON

{
"name": "myip",
"private": true,
"version": "7.4.0",
"type": "module",
"packageManager": "pnpm@11.22.0",
"engines": {
"node": ">=24"
},
"scripts": {
"dev": "concurrently \"vite\" \"nodemon --import ./sentry-instrument.js backend-server.js\"",
"build": "vite build",
"postbuild": "node -e \"const{existsSync}=require('fs');const{spawnSync}=require('child_process');if(existsSync('scripts/purge-index-cache.js')){const r=spawnSync(process.execPath,['scripts/purge-index-cache.js'],{stdio:'inherit'});process.exit(r.status??1)}\"",
"test": "node --test tests/*.test.js",
"check": "pnpm run test && pnpm run build",
"preview": "vite preview",
"start-backend": "node --import ./sentry-instrument.js backend-server.js",
"start-frontend": "node frontend-server.js",
"start": "concurrently \"node frontend-server.js\" \"node --import ./sentry-instrument.js backend-server.js\"",
"purge-index": "node scripts/purge-index-cache.js",
"dns-check": "node scripts/check-dns-resolvers.js",
"fetch-favicons": "node scripts/fetch-favicons.js",
"i18n-status": "node scripts/i18n-status.js",
"i18n-new": "node scripts/i18n-scaffold.js new",
"i18n-sync": "node scripts/i18n-scaffold.js sync"
},
"dependencies": {
"@cloudflare/speedtest": "^1.13.1",
"@iconify-json/circle-flags": "^1.2.10",
"@iconify/vue": "^5.0.1",
"@khmyznikov/pwa-install": "^0.6.4",
"@lucide/vue": "^1.33.0",
"@photostructure/tz-lookup": "^11.6.1",
"@sentry/node": "^10.70.0",
"@sentry/vue": "^10.70.0",
"@tanstack/vue-table": "^9.1.2",
"@thumbmarkjs/thumbmarkjs": "^1.10.1",
"@vueuse/core": "^14.4.0",
"chart.js": "^4.5.1",
"chartjs-chart-geo": "^4.3.6",
"circle-progress.vue": "^3.4.1",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"concurrently": "^10.0.5",
"country-code-lookup": "^0.1.5",
"dagre": "^0.8.5",
"dotenv": "^17.4.2",
"express": "^5.2.1",
"express-rate-limit": "^8.6.2",
"express-slow-down": "^3.1.0",
"firebase": "^12.18.0",
"html-to-image": "^1.11.13",
"http-proxy-middleware": "^4.2.0",
"maxmind": "^5.0.7",
"pinia": "^4.0.3",
"pino": "^10.3.1",
"pino-http": "^11.0.0",
"pino-pretty": "^13.1.3",
"reka-ui": "^2.10.3",
"tailwind-merge": "^3.6.0",
"tar": "^7.5.22",
"tw-animate-css": "^1.4.0",
"ua-parser-js": "^2.0.10",
"unbzip2-stream": "^1.4.3",
"vaul-vue": "^0.4.1",
"vue": "^3.5.41",
"vue-i18n": "^11.4.8",
"vue-input-otp": "^0.4.0",
"vue-markdown-render": "^2.3.1",
"vue-router": "^5.2.0",
"vue-sonner": "^2.0.9",
"whoiser": "^1.18.0",
"world-atlas": "^2.0.2"
},
"devDependencies": {
"@sentry/vite-plugin": "^5.4.0",
"@tailwindcss/vite": "^4.3.3",
"@vitejs/plugin-vue": "^6.0.8",
"code-inspector-plugin": "^2.0.7",
"nodemon": "^3.1.14",
"tailwindcss": "^4.3.3",
"vconsole": "^3.15.1",
"vite": "^8.2.2"
}
}