Files
MoonTVPlus/package.json
T
mtvpls-turso 8e464c463b feat: add Turso (libSQL) storage support for EdgeOne deployment
- Add TursoAdapter implementing DatabaseAdapter interface using @libsql/client
- Add 'turso' storage type to db.ts storage selector (reuses D1Storage)
- Add init-turso.js script for database migration and admin initialization
- Add @libsql/client dependency to package.json
- Update next.config.js to exclude @libsql/client from client-side bundle
- Update edgeone-deploy.yml workflow with TURSO_URL and TURSO_TOKEN secrets
- Update edgeone-build.mjs runtime env keys to include Turso variables
- Update .env.edgeone.example with Turso deployment instructions
- Update README.md with Turso as recommended storage for EdgeOne

Turso provides free SQLite-compatible cloud database (libSQL) with:
- 500 databases, 9GB storage, 1B row reads/month on free tier
- HTTP API compatible with edge/serverless environments
- Full SQLite syntax compatibility, reuses existing migrations
2026-07-11 17:04:27 +00:00

134 lines
4.6 KiB
JSON

{
"name": "moontv",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "pnpm gen:manifest && node server.js",
"build": "pnpm gen:manifest && next build",
"build:cloudflare": "BUILD_TARGET=cloudflare pnpm gen:manifest && BUILD_TARGET=cloudflare npx @opennextjs/cloudflare build",
"start": "NODE_ENV=production node server.js",
"preview:cloudflare": "wrangler dev",
"deploy:cloudflare": "wrangler deploy",
"lint": "next lint",
"lint:fix": "eslint src --fix && pnpm format",
"lint:strict": "eslint --max-warnings=0 src",
"typecheck": "tsc --noEmit --incremental false",
"test:watch": "jest --watch",
"test": "jest",
"format": "prettier -w .",
"format:check": "prettier -c .",
"gen:manifest": "node scripts/generate-manifest.js",
"postbuild": "echo 'Build completed - sitemap generation disabled'",
"watch-room:server": "node server/watch-room-standalone-server.js --port 3001 --auth YOUR_SECRET_KEY",
"init:sqlite": "node scripts/init-sqlite.js",
"init:postgres": "node scripts/init-postgres.js",
"init:turso": "node scripts/init-turso.js",
"db:reset": "rm -f .data/moontv.db .data/moontv.db-shm .data/moontv.db-wal && node scripts/init-sqlite.js",
"build:edgeone": "pnpm edgeone:build",
"preview:edgeone": "BUILD_TARGET=edgeone EDGEONE_PAGES=1 node scripts/edgeone-local-preview.mjs",
"deploy:edgeone": "edgeone makers deploy .edgeone",
"edgeone:login": "edgeone login",
"edgeone:link": "edgeone makers link",
"edgeone:build": "node scripts/edgeone-build.mjs",
"deploy:edgeone:auto": "edgeone makers deploy"
},
"dependencies": {
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/modifiers": "^9.0.0",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
"@headlessui/react": "^2.2.4",
"@heroicons/react": "^2.2.0",
"@types/crypto-js": "^4.2.2",
"@types/nprogress": "^0.2.3",
"@types/qrcode": "^1.5.6",
"@upstash/redis": "^1.25.0",
"@vercel/postgres": "^0.10.0",
"@vidstack/react": "^1.12.13",
"@xmldom/xmldom": "^0.9.10",
"anime4k-webgpu": "^1.0.0",
"artplayer": "^5.4.0",
"artplayer-plugin-auto-thumbnail": "^1.1.0",
"artplayer-plugin-danmuku": "^5.2.0",
"artplayer-plugin-jassub": "1.1.0",
"better-sqlite3": "^12.6.2",
"bs58": "^6.0.0",
"cheerio": "^1.1.2",
"clsx": "^2.0.0",
"crypto-js": "^4.2.0",
"edge-tts-universal": "^1.4.0",
"flv.js": "^1.6.2",
"framer-motion": "^12.18.1",
"he": "^1.2.0",
"hls.js": "^1.6.10",
"https-proxy-agent": "^7.0.6",
"@libsql/client": "^0.15.0",
"lucide-react": "^0.438.0",
"media-icons": "^1.1.5",
"mux.js": "^6.3.0",
"nanoid": "^5.1.6",
"next": "^14.2.33",
"next-pwa": "^5.6.0",
"next-themes": "^0.4.6",
"node-fetch": "^2.7.0",
"nodemailer": "^7.0.12",
"nprogress": "^0.2.0",
"opencc-js": "^1.0.5",
"parse-torrent-name": "^0.5.4",
"qrcode": "^1.5.4",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-icons": "^5.4.0",
"react-markdown": "^10.1.0",
"redis": "^4.6.7",
"server-only": "^0.0.1",
"sharp": "^0.34.5",
"socket.io": "^4.8.1",
"socket.io-client": "^4.8.1",
"swiper": "^11.2.8",
"tailwind-merge": "^2.6.0",
"vidstack": "^0.6.15",
"xml2js": "^0.6.2",
"xpath": "^0.0.34",
"zod": "^3.24.1"
},
"devDependencies": {
"@opennextjs/cloudflare": "^1.15.1",
"@svgr/webpack": "^8.1.0",
"@tailwindcss/forms": "^0.5.10",
"@tailwindcss/typography": "^0.5.19",
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^15.0.7",
"@types/better-sqlite3": "^7.6.11",
"@types/bs58": "^5.0.0",
"@types/he": "^1.2.3",
"@types/node": "24.0.3",
"@types/node-fetch": "^2.6.13",
"@types/nodemailer": "^7.0.5",
"@types/pg": "^8.16.0",
"@types/react": "^18.3.18",
"@types/react-dom": "^19.1.6",
"@types/testing-library__jest-dom": "^5.14.9",
"@types/xml2js": "^0.4.14",
"@typescript-eslint/eslint-plugin": "^5.62.0",
"@typescript-eslint/parser": "^5.62.0",
"autoprefixer": "^10.4.20",
"eslint": "^8.57.1",
"eslint-config-next": "^14.2.23",
"eslint-config-prettier": "^8.10.0",
"eslint-plugin-simple-import-sort": "^7.0.0",
"eslint-plugin-unused-imports": "^2.0.0",
"jest": "^27.5.1",
"next-router-mock": "^0.9.0",
"postcss": "^8.5.1",
"prettier": "^2.8.8",
"prettier-plugin-tailwindcss": "^0.5.0",
"tailwindcss": "^3.4.17",
"typescript": "^4.9.5",
"vercel": "^50.4.10",
"webpack-obfuscator": "^3.5.1",
"edgeone": "^1.6.2"
},
"packageManager": "[email protected]"
}