{ "name": "edgeever", "version": "1.7.1", "private": true, "type": "module", "workspaces": [ "apps/*", "packages/*" ], "scripts": { "dev": "bun run dev:local", "dev:api": "bun run dev:api:local", "dev:local": "bun run db:migrate:local && concurrently -k -n api,web -c cyan,magenta \"bun run dev:api:local\" \"bun run dev:web\"", "dev:api:local": "EDGE_EVER_INSTANCE= EDGE_EVER_LOCAL_DEMO_SEED=true bun scripts/run-wrangler.mjs dev --local --port 8787", "dev:self-hosted": "bun --watch scripts/self-hosted-server.mjs", "start:self-hosted": "bun scripts/self-hosted-server.mjs", "dev:remote": "concurrently -k -n api,web -c cyan,magenta \"bun run dev:api:remote\" \"bun run dev:web\"", "dev:api:remote": "bun scripts/run-wrangler.mjs dev --remote --port 8787", "dev:web": "vite --config apps/web/vite.config.ts --host 127.0.0.1 --port 5173", "dev:desktop": "concurrently -k -n web,desktop -c magenta,cyan \"bun run dev:web\" \"bun run --cwd apps/desktop dev\"", "dev:mobile": "bun --cwd apps/mobile expo start", "prepare:mobile:icons": "bun scripts/prepare-mobile-icons.mjs", "build:android:fast": "bash scripts/build-android-local.sh fast", "build:android:fast:local": "bun --env-file=${EDGE_EVER_ANDROID_ENV_FILE:-$HOME/.config/edgeever/android/signing.env} run build:android:fast", "build:android:apk": "bash scripts/build-android-local.sh apk", "build:android:apk:local": "bun --env-file=${EDGE_EVER_ANDROID_ENV_FILE:-$HOME/.config/edgeever/android/signing.env} run build:android:apk", "build:android:play": "bash scripts/build-android-local.sh play", "build:android:play:local": "bun --env-file=${EDGE_EVER_ANDROID_ENV_FILE:-$HOME/.config/edgeever/android/signing.env} run build:android:play", "dev:site": "bun --cwd apps/site dev", "build": "bun run build:web", "build:extension": "vite build --config apps/extension/vite.config.ts", "build:extension:firefox": "bun run --cwd apps/extension build:firefox", "lint:extension:firefox": "bun run --cwd apps/extension lint:firefox", "package:extension:firefox": "bun run --cwd apps/extension package:firefox", "test:extension": "bun run --cwd apps/extension test", "dev:extension": "vite --config apps/extension/vite.config.ts", "build:web": "vite build --config apps/web/vite.config.ts", "build:desktop:sidecar": "cargo build --manifest-path crates/desktop-sidecar/Cargo.toml --release", "build:desktop": "EDGE_EVER_DESKTOP_BUILD=1 bun run build:web && bun run build:desktop:sidecar && bun run --cwd apps/desktop dist", "benchmark:desktop:sidecar": "bun scripts/benchmark-desktop-sidecar.mjs", "verify:web-performance": "bun scripts/verify-web-performance.mjs", "test:release-planning": "bun test scripts/plan-native-release.test.mjs scripts/check-native-release-assets.test.mjs scripts/create-mac-update-metadata.test.mjs scripts/release.test.mjs scripts/validate-store-delivery.test.mjs scripts/store-delivery.test.mjs scripts/verify-android-apk-signature.test.mjs apps/web/src/lib/version-check.test.mjs apps/mobile/src/lib/mobile-release.test.ts", "release": "bun scripts/release.mjs", "publish:stores": "bun scripts/store-delivery.mjs", "test:desktop:sidecar": "bun scripts/test-desktop-sidecar.mjs", "test:desktop": "bun test apps/desktop/src/main/account-scope.test.mjs apps/desktop/src/main/diagnostic-log.test.mjs apps/desktop/src/main/file-association.test.mjs apps/desktop/src/main/file-permissions.test.mjs apps/desktop/src/main/installation-location.test.mjs apps/desktop/src/main/resource-url.test.mjs apps/desktop/src/main/staged-resource.test.mjs apps/desktop/src/main/tray-icon.test.mjs apps/desktop/src/main/user-data-directory.test.mjs apps/desktop/src/main/window-open-policy.test.mjs apps/desktop/src/main/window-visibility.test.mjs apps/web/src/lib/api.test.mjs apps/web/src/lib/app-page-path.test.mjs apps/web/src/lib/desktop-resources.test.mjs apps/web/src/lib/desktop-sync.test.mjs apps/web/src/lib/local-mirror.test.mjs apps/web/src/lib/repository.test.mjs apps/web/src/lib/runtime.test.mjs apps/web/src/lib/sync-queue.test.mjs && bun run test:desktop:sidecar", "verify:desktop-package": "bun scripts/verify-desktop-package.mjs", "build:cloudflare": "bun run typecheck && bun run build", "build:site": "bun --cwd apps/site build", "preview:web": "vite preview --config apps/web/vite.config.ts --host 127.0.0.1 --port 4173", "preview:site": "bun --cwd apps/site preview", "typecheck": "tsc -p tsconfig.json --noEmit", "typecheck:mobile": "bun run --cwd apps/mobile typecheck", "test:restore-deleted-notebook": "bun scripts/test-restore-deleted-notebook.mjs", "db:migrate:local": "EDGE_EVER_INSTANCE= bun scripts/run-wrangler.mjs d1 migrations apply DB --local", "db:migrate:remote": "bun scripts/run-wrangler.mjs d1 migrations apply DB --remote", "auth:hash": "bun scripts/hash-password.mjs", "auth:reset-password": "bun scripts/reset-password.mjs", "cli": "bun scripts/edgeever.mjs", "import:evernote": "bun scripts/import-evernote-enex-via-mcp.mjs", "mcp:stdio": "bun scripts/edgeever-mcp-stdio.mjs", "deploy:doctor": "bun scripts/cloudflare-deploy.mjs doctor", "deploy:setup": "bun scripts/cloudflare-deploy.mjs setup", "deploy": "bun run build:cloudflare && EDGE_EVER_USE_EXISTING_AUTH_SECRET=true bun run deploy:ci", "deploy:manual": "export EDGE_EVER_DEPLOYMENT_TRIGGER=manual EDGE_EVER_DEPLOYMENT_METHOD=local_cli && bun run deploy:doctor && bun run build:cloudflare && bun run deploy:ci", "deploy:ci": "bun run db:migrate:remote && bun run deploy:worker && bun run deploy:verify", "deploy:worker": "bun scripts/run-wrangler.mjs deploy", "deploy:cloudflare-builds": "bun run deploy:ci", "deploy:verify": "bun scripts/verify-deployment.mjs", "demo:sync": "bun scripts/sync-demo.mjs", "deploy:builds:setup": "bun scripts/cloudflare-workers-builds.mjs setup", "deploy:site": "bun run build:site && wrangler pages deploy apps/site/dist --project-name=edgeever-official" }, "cloudflare": { "bindings": { "DB": { "description": "EdgeEver 的 D1 数据库。用于存储 notebooks、memos、memo_contents、resources 元数据、全文搜索索引、修订记录和审计事件。" }, "RESOURCES": { "description": "EdgeEver 的 R2 对象存储桶。用于存储笔记内图片、附件和未来导入导出文件;D1 只保存资源元数据和 memo 关联。" }, "EDGE_EVER_AUTH_PASSWORD": { "description": "首次登录密码,必填。请设置一个仅用于此实例的强密码;部署后可在个人设置中修改。" }, "EDGE_EVER_AUTH_USERNAME": { "description": "管理员登录用户名,默认值为 admin;高级用户可以改成自定义用户名。" } } }, "dependencies": { "@aws-sdk/client-s3": "^3.1095.0", "@edgeever/shared": "workspace:*", "@hono/zod-validator": "latest", "@radix-ui/react-checkbox": "^1.3.5", "@radix-ui/react-collapsible": "^1.1.15", "@radix-ui/react-context-menu": "^2.3.1", "@radix-ui/react-dialog": "^1.1.17", "@radix-ui/react-dropdown-menu": "^2.1.18", "@radix-ui/react-select": "^2.3.1", "@radix-ui/react-slot": "^1.3.0", "@radix-ui/react-switch": "^1.3.1", "@radix-ui/react-toggle-group": "^1.1.13", "@radix-ui/react-tooltip": "^1.2.10", "@tanstack/react-query": "latest", "@tiptap/core": "3.27.1", "@tiptap/extension-image": "^3.27.1", "@tiptap/extension-placeholder": "latest", "@tiptap/extension-table": "3.27.1", "@tiptap/react": "latest", "@tiptap/starter-kit": "latest", "class-variance-authority": "latest", "clsx": "latest", "cmdk": "^1.1.1", "dexie": "latest", "fast-xml-parser": "^5.9.3", "fflate": "^0.8.3", "hono": "latest", "i18next": "^26.3.4", "lucide-react": "latest", "marked": "^18.0.5", "react": "latest", "react-dom": "latest", "react-dropzone": "^15.0.0", "react-i18next": "^17.0.8", "react-router": "^8.1.0", "sharp": "^0.35.2", "tailwind-merge": "latest", "tailwindcss-animate": "^1.0.7", "turndown": "^7.2.4", "vaul": "^1.1.2", "webdav": "^5.10.0", "workbox-window": "^7.4.1", "yet-another-react-lightbox": "^3.32.0", "zod": "latest" }, "devDependencies": { "@cloudflare/workers-types": "latest", "@electron/asar": "3.4.1", "@types/marked": "^6.0.0", "@types/node": "latest", "@types/react": "latest", "@types/react-dom": "latest", "@types/turndown": "^5.0.6", "@vitejs/plugin-react": "latest", "autoprefixer": "latest", "concurrently": "latest", "fake-indexeddb": "^6.2.5", "postcss": "latest", "tailwindcss": "^3.4.17", "typescript": "latest", "vite": "latest", "vite-plugin-pwa": "^1.3.0", "wrangler": "^4.112.0" }, "patchedDependencies": { "mermaid@11.16.0": "patches/mermaid@11.16.0.patch" } }