File
Blob: package.json
| 1 | { |
| 2 | "name": "bland", |
| 3 | "version": "0.1.0", |
| 4 | "private": true, |
| 5 | "type": "module", |
| 6 | "engines": { |
| 7 | "node": ">=24.11 <25" |
| 8 | }, |
| 9 | "scripts": { |
| 10 | "emoji:generate": "node --import tsx scripts/generate-emoji-data.ts", |
| 11 | "dev": "vite dev", |
| 12 | "build": "vite build && vite build -c vite.sites.config.ts", |
| 13 | "lint": "eslint src tests scripts vite.config.ts eslint.config.js", |
| 14 | "typecheck": "npm run typecheck:client && npm run typecheck:worker && npm run typecheck:tests", |
| 15 | "typecheck:client": "tsc -p tsconfig.client.json --noEmit", |
| 16 | "typecheck:worker": "tsc -p tsconfig.worker.json --noEmit", |
| 17 | "typecheck:tests": "npm run typecheck:tests:client && npm run typecheck:tests:worker", |
| 18 | "typecheck:tests:client": "tsc -p tests/tsconfig.client.json --noEmit", |
| 19 | "typecheck:tests:worker": "tsc -p tests/tsconfig.worker.json --noEmit", |
| 20 | "types:generate": "wrangler types --env-file .dev.vars.example", |
| 21 | "test": "vitest run --passWithNoTests", |
| 22 | "test:client": "vitest run --project client --project client-dom", |
| 23 | "test:client-dom": "vitest run --project client-dom", |
| 24 | "test:sites": "vitest run --project sites", |
| 25 | "test:shared": "vitest run --project shared", |
| 26 | "test:worker": "vitest run --project worker-unit --project worker-runtime", |
| 27 | "test:worker-unit": "vitest run --project worker-unit", |
| 28 | "test:worker-runtime": "vitest run --project worker-runtime", |
| 29 | "test:e2e": "playwright test -c tests/e2e/playwright.config.ts", |
| 30 | "test:e2e:parallel": "BLAND_E2E_PARALLEL=1 playwright test -c tests/e2e/playwright.config.ts", |
| 31 | "deploy": "npm run db:migrate:remote && npm run build && wrangler deploy", |
| 32 | "db:generate:d1": "drizzle-kit generate --config=drizzle-d1.config.ts", |
| 33 | "db:generate:docsync-do": "drizzle-kit generate --config=drizzle-docsync-do.config.ts", |
| 34 | "db:generate:workspace-indexer": "drizzle-kit generate --config=drizzle-workspace-indexer.config.ts", |
| 35 | "db:generate:durable": "npm run db:generate:docsync-do && npm run db:generate:workspace-indexer", |
| 36 | "db:generate": "npm run db:generate:d1 && npm run db:generate:durable", |
| 37 | "db:migrate:local": "wrangler d1 migrations apply bland-prod --local", |
| 38 | "db:migrate:remote": "wrangler d1 migrations apply bland-prod --remote", |
| 39 | "format": "prettier --write .", |
| 40 | "format:check": "prettier --check .", |
| 41 | "predev": "npm run emoji:generate", |
| 42 | "prebuild": "npm run emoji:generate", |
| 43 | "pretypecheck": "npm run emoji:generate", |
| 44 | "pretest": "npm run emoji:generate" |
| 45 | }, |
| 46 | "dependencies": { |
| 47 | "@cf-wasm/png": "^0.4.0", |
| 48 | "@excalidraw/excalidraw": "^0.18.1", |
| 49 | "@floating-ui/dom": "^1.8.0", |
| 50 | "@floating-ui/react": "^0.27.20", |
| 51 | "@fontsource-variable/bricolage-grotesque": "^5.3.0", |
| 52 | "@fontsource-variable/outfit": "^5.3.0", |
| 53 | "@fontsource/jetbrains-mono": "^5.3.0", |
| 54 | "@lucide/lab": "^0.2.0", |
| 55 | "@sentry/react": "^10.74.0", |
| 56 | "@serwist/window": "^9.5.12", |
| 57 | "@tanstack/react-query": "^5.102.8", |
| 58 | "@tanstack/react-router": "^1.170.34", |
| 59 | "@tiptap/core": "3.31.3", |
| 60 | "@tiptap/extension-character-count": "3.31.3", |
| 61 | "@tiptap/extension-code-block": "3.31.3", |
| 62 | "@tiptap/extension-collaboration": "3.31.3", |
| 63 | "@tiptap/extension-collaboration-caret": "3.31.3", |
| 64 | "@tiptap/extension-details": "3.31.3", |
| 65 | "@tiptap/extension-drag-handle-react": "3.31.3", |
| 66 | "@tiptap/extension-emoji": "3.31.3", |
| 67 | "@tiptap/extension-file-handler": "3.31.3", |
| 68 | "@tiptap/extension-image": "3.31.3", |
| 69 | "@tiptap/extension-placeholder": "3.31.3", |
| 70 | "@tiptap/extension-table": "3.31.3", |
| 71 | "@tiptap/extension-task-item": "3.31.3", |
| 72 | "@tiptap/extension-task-list": "3.31.3", |
| 73 | "@tiptap/extension-text-align": "3.31.3", |
| 74 | "@tiptap/extension-text-style": "3.31.3", |
| 75 | "@tiptap/extension-typography": "3.31.3", |
| 76 | "@tiptap/pm": "3.31.3", |
| 77 | "@tiptap/react": "3.31.3", |
| 78 | "@tiptap/starter-kit": "3.31.3", |
| 79 | "@tiptap/static-renderer": "3.31.3", |
| 80 | "@tiptap/suggestion": "3.31.3", |
| 81 | "@tiptap/y-tiptap": "^3.0.9", |
| 82 | "dexie": "^4.4.5", |
| 83 | "drizzle-orm": "^0.45.2", |
| 84 | "highlight.js": "^11.12.0", |
| 85 | "hono": "^4.13.7", |
| 86 | "jose": "^6.2.12", |
| 87 | "lowlight": "^3.3.0", |
| 88 | "lucide-react": "^1.43.0", |
| 89 | "nanoid": "^6.0.1", |
| 90 | "openid-client": "^6.8.8", |
| 91 | "partyserver": "^0.5.10", |
| 92 | "react": "^19.3.0", |
| 93 | "react-dom": "^19.3.0", |
| 94 | "ulid": "^3.0.2", |
| 95 | "y-indexeddb": "^9.0.12", |
| 96 | "y-partyserver": "^2.2.0", |
| 97 | "y-protocols": "^1.0.7", |
| 98 | "yjs": "^13.6.32", |
| 99 | "zod": "^4.6.1", |
| 100 | "zustand": "^5.0.15" |
| 101 | }, |
| 102 | "devDependencies": { |
| 103 | "@babel/core": "^8.0.1", |
| 104 | "@cloudflare/vite-plugin": "1.54.6", |
| 105 | "@cloudflare/vitest-pool-workers": "0.22.0", |
| 106 | "@eslint/js": "^10.0.1", |
| 107 | "@mongodb-js/oidc-mock-provider": "^0.13.18", |
| 108 | "@playwright/test": "^1.63.0", |
| 109 | "@rolldown/plugin-babel": "^0.2.4", |
| 110 | "@serwist/vite": "^9.5.12", |
| 111 | "@tailwindcss/vite": "^4.3.3", |
| 112 | "@tanstack/react-query-devtools": "^5.102.8", |
| 113 | "@types/babel__core": "^7.20.5", |
| 114 | "@types/node": "^24.13.4", |
| 115 | "@types/react": "^19.3.0", |
| 116 | "@types/react-dom": "^19.3.0", |
| 117 | "@typescript/native": "npm:typescript@^7.0.2", |
| 118 | "@vitejs/plugin-react": "^6.1.1", |
| 119 | "babel-plugin-react-compiler": "^1.0.0", |
| 120 | "drizzle-kit": "^0.31.10", |
| 121 | "eslint": "^10.10.0", |
| 122 | "eslint-plugin-react-hooks": "^7.1.1", |
| 123 | "eslint-plugin-react-refresh": "^0.5.6", |
| 124 | "fake-indexeddb": "^6.2.5", |
| 125 | "globals": "^17.12.0", |
| 126 | "jsdom": "^29.1.1", |
| 127 | "prettier": "^3.9.6", |
| 128 | "prosemirror-schema-basic": "^1.2.4", |
| 129 | "serwist": "^9.5.12", |
| 130 | "tailwindcss": "^4.3.3", |
| 131 | "tsx": "^4.23.13", |
| 132 | "typescript": "npm:@typescript/typescript6@^6.0.2", |
| 133 | "typescript-eslint": "^8.70.0", |
| 134 | "vite": "^8.2.2", |
| 135 | "vitest": "^4.1.11", |
| 136 | "wrangler": "4.130.0" |
| 137 | }, |
| 138 | "overrides": { |
| 139 | "lodash-es": "4.18.1", |
| 140 | "@radix-ui/react-tabs": "1.1.13", |
| 141 | "@esbuild-kit/core-utils": { |
| 142 | "esbuild": "0.25.12" |
| 143 | }, |
| 144 | "@excalidraw/excalidraw": { |
| 145 | "nanoid": "3.3.18" |
| 146 | }, |
| 147 | "@excalidraw/mermaid-to-excalidraw": { |
| 148 | "nanoid": "5.1.16" |
| 149 | }, |
| 150 | "miniflare": { |
| 151 | "sharp": "0.35.4" |
| 152 | }, |
| 153 | "y-partyserver": { |
| 154 | "@cloudflare/workers-types": "^5.20260908.1" |
| 155 | } |
| 156 | } |
| 157 | } |