{ "name": "zpan", "version": "0.0.1", "private": true, "license": "AGPL-3.0-only", "type": "module", "packageManager": "pnpm@10.30.2", "scripts": { "dev": "CLOUDFLARE_ENV=staging vite dev", "dev:node": "node --env-file=.dev.vars node_modules/vite/bin/vite.js dev --mode node", "build": "[ \"$WORKERS_CI\" = \"1\" ] && [ \"$WORKERS_CI_BRANCH\" != \"master\" ] && export CLOUDFLARE_ENV=staging; vite build", "build:node": "vite build --mode node && tsup server/entry-node.ts --format esm --outDir dist-server --external better-sqlite3 --external @libsql/client", "build:lambda": "tsup server/entry-lambda.ts --format cjs --outDir dist-lambda --external @libsql/client", "build:vercel": "vite build --mode node && tsup server/entry-vercel.ts --format esm --outDir api --external @libsql/client", "build:netlify": "tsup server/entry-netlify.ts --format esm --outDir netlify/functions --external @libsql/client", "build:azure": "vite build && tsup server/entry-azure.ts --format esm --outDir azure-functions --external @azure/functions --external @libsql/client && cp server/azure-host.json azure-functions/host.json && cp -r dist azure-functions/dist", "deploy": "pnpm db:migrate:d1:prod && wrangler deploy", "db:generate": "drizzle-kit generate", "db:migrate": "drizzle-kit migrate", "db:migrate:d1": "wrangler d1 migrations apply zpan-db-staging --local --env staging", "db:migrate:d1:staging": "wrangler d1 migrations apply zpan-db-staging --remote --env staging", "db:migrate:d1:prod": "wrangler d1 migrations apply zpan-db --remote", "db:reset": "tsx --env-file=.dev.vars scripts/db-reset.ts", "db:reset:d1": "tsx --env-file=.dev.vars scripts/db-reset.ts --d1", "typecheck": "tsc --noEmit -p tsconfig.server.json && tsc --noEmit -p tsconfig.web.json", "test": "vitest run", "test:cf": "vitest run --config vitest.cloudflare.config.ts", "test:libsql": "vitest run --config vitest.libsql.config.ts", "test:watch": "vitest", "lint": "biome check .", "lint:fix": "biome check --write .", "prepare": "husky", "format": "biome format --write .", "e2e": "playwright test", "e2e:cloud": "node scripts/run-cloud-e2e.mjs", "e2e:cloud:cf": "node scripts/run-cloud-e2e.mjs --runtime cf", "e2e:archive": "node scripts/run-cloud-e2e.mjs --local --with-s3-mock --spec archive.spec.ts", "e2e:archive:cf": "node scripts/run-cloud-e2e.mjs --runtime cf --local --with-s3-mock --spec archive.spec.ts", "openapi:downloader": "tsx scripts/generate-downloader-openapi.ts", "openapi:downloader:go": "pnpm openapi:downloader && cd cmd && go run github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen@v2.7.0 -config oapi-codegen.yaml ../docs/openapi/downloader.json", "openapi:downloader:check": "tsx scripts/check-downloader-openapi.ts", "openapi:downloader:all": "pnpm openapi:downloader:go" }, "engines": { "node": ">=24" }, "dependencies": { "@aws-sdk/client-s3": "^3.1022.0", "@aws-sdk/s3-request-presigner": "^3.1022.0", "@azure/functions": "^4.12.0", "@better-auth/api-key": "^1.6.14", "@better-captcha/react": "^0.7.0", "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", "@hono/node-server": "^1.13.0", "@hono/zod-openapi": "^1.4.0", "@hono/zod-validator": "^0.7.6", "@hookform/resolvers": "^5.2.2", "@libsql/client": "^0.17.2", "@opentelemetry/api": "^1.9.1", "@radix-ui/react-avatar": "^1.1.0", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dropdown-menu": "^2.1.0", "@radix-ui/react-label": "^2.1.0", "@radix-ui/react-separator": "^1.1.0", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tooltip": "^1.1.0", "@tanstack/react-query": "^5.100.9", "@tanstack/react-router": "^1.93.0", "@tanstack/react-table": "^8.21.3", "@uiw/react-markdown-preview": "5.2.0", "@uiw/react-md-editor": "^4.1.0", "@vidstack/react": "^1.12.13", "better-auth": "^1.6.14", "better-sqlite3": "^12.10.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "drizzle-orm": "^0.45.2", "fflate": "^0.8.2", "hono": "^4.12.21", "i18next": "^26.0.3", "i18next-browser-languagedetector": "^8.2.1", "lucide-react": "^0.577.0", "nanoid": "^5.1.11", "next-themes": "^0.4.6", "nodemailer": "^8.0.5", "paseto-ts": "^2.0.6", "pdfjs-dist": "^5.6.205", "radix-ui": "^1.4.3", "react": "^19.2.5", "react-dom": "^19.2.5", "react-dropzone": "^15.0.0", "react-hook-form": "^7.54.0", "react-i18next": "^17.0.2", "react-markdown": "^10.1.0", "react-pdf": "^10.4.1", "remark-gfm": "^4.0.1", "shiki": "^4.0.2", "simple-icons": "^16.18.0", "sonner": "^2.0.7", "tailwind-merge": "^3.5.0", "yet-another-react-lightbox": "^3.30.1", "zod": "^4.4.3", "zpan-cloud-sdk": "^1.0.3" }, "devDependencies": { "@biomejs/biome": "^2.4.10", "@cloudflare/vite-plugin": "^1.39.0", "@cloudflare/vitest-pool-workers": "^0.16.10", "@cloudflare/workers-types": "^4.20260606.1", "@hono/vite-dev-server": "^0.25.1", "@playwright/test": "^1.59.1", "@tailwindcss/vite": "^4.2.2", "@tanstack/router-plugin": "^1.167.12", "@testing-library/dom": "^10.4.1", "@testing-library/react": "^16.3.2", "@testing-library/user-event": "^14.6.1", "@types/better-sqlite3": "^7.6.0", "@types/nodemailer": "^8.0.0", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react-swc": "^4.3.0", "@vitest/coverage-v8": "^4.1.2", "drizzle-kit": "^0.31.10", "husky": "^9.1.7", "jsdom": "^29.0.2", "lint-staged": "^16.4.0", "tailwindcss": "^4.2.4", "tsup": "^8.5.1", "tsx": "^4.0.0", "tw-animate-css": "^1.4.0", "typescript": "^5.9.3", "vite": "^7.3.2", "vitest": "^4.1.2", "webdav": "^5.10.0", "wrangler": "^4.95.0" }, "cloudflare": { "bindings": { "BETTER_AUTH_SECRET": { "description": "Signing secret for auth sessions. Generate with: `openssl rand -base64 32`" }, "DB": { "description": "D1 database for storing users, files, and settings" } } }, "lint-staged": { "*.{ts,tsx,js,jsx,json,jsonc}": "biome check --write --no-errors-on-unmatched" }, "pnpm": { "overrides": { "@better-auth/core": "1.6.14", "@better-auth/drizzle-adapter": "1.6.14", "@better-auth/kysely-adapter": "1.6.14", "@better-auth/memory-adapter": "1.6.14", "@better-auth/mongo-adapter": "1.6.14", "@better-auth/prisma-adapter": "1.6.14", "@better-auth/telemetry": "1.6.14", "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "undici": "7.24.8" }, "onlyBuiltDependencies": [ "@swc/core", "better-sqlite3", "esbuild", "sharp", "workerd" ] }, "volta": { "node": "24.14.1", "pnpm": "10.30.2" } }