{ "name": "texlite", "version": "0.23.0", "description": "A lightweight local-first collaborative LaTeX workspace", "license": "AGPL-3.0-only", "repository": { "type": "git", "url": "git+https://github.com/SWUFE-DB-Group/TexLite.git" }, "homepage": "https://github.com/SWUFE-DB-Group/TexLite", "bugs": { "url": "https://github.com/SWUFE-DB-Group/TexLite/issues" }, "keywords": [ "latex", "overleaf", "collaboration", "tex" ], "bin": { "texlite": "dist/server/cli.js" }, "files": [ "dist", "templates/agents/AGENTS.md", "README.md", "README.zh-CN.md", "OPERATIONS.md", "DESIGN.md", "NPM_TESTING.md", "addon.md", "LICENSE", "THIRD_PARTY_NOTICES.md", "texlite.config.example.json" ], "engines": { "node": ">=24" }, "publishConfig": { "access": "public" }, "type": "module", "scripts": { "dev": "npm run generate:lucide-icons && node scripts/run-dev.mjs server", "dev:init": "node scripts/run-dev.mjs init", "dev:web": "npm run generate:bibtex-parser && npm run generate:latex-parser && node scripts/run-dev.mjs web", "build": "npm run build:web && npm run build:server", "build:web": "npm run generate:bibtex-parser && npm run generate:latex-parser && vite build", "build:server": "tsc -p tsconfig.server.json && npm run generate:lucide-icons", "start": "node dist/server/index.js", "pm2:start": "pm2 start ecosystem.config.cjs", "pm2:restart": "pm2 restart texlite --update-env", "pm2:stop": "pm2 stop texlite", "pm2:delete": "pm2 delete texlite", "pm2:logs": "pm2 logs texlite", "pm2:save": "pm2 save", "init": "tsx src/server/cli.ts init", "prepack": "npm run build", "generate:lucide-icons": "node scripts/generate-lucide-static-icons.mjs", "pretest": "npm run generate:lucide-icons && npm run generate:bibtex-parser && npm run generate:latex-parser", "test": "vitest run --config vitest.config.ts", "generate:bibtex-parser": "node scripts/generate-bibtex-parser.mjs", "generate:latex-parser": "node scripts/generate-latex-parser.mjs", "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.server.json --noEmit && tsc -p tsconfig.test.json --noEmit" }, "dependencies": { "@dicebear/core": "^10.7.0", "@dicebear/styles": "^10.6.0", "@fastify/cookie": "^11.0.2", "@fastify/multipart": "^9.2.1", "@fastify/static": "^10.1.2", "@fastify/websocket": "^11.3.0", "@sanity/diff-match-patch": "^3.2.1", "@zip.js/zip.js": "^2.24.0", "better-sqlite3": "^13.0.2", "fastify": "^5.4.0", "lib0": "^0.2.117", "pm2": "^7.0.3", "semver": "^7.8.5", "ws": "^8.21.1", "y-protocols": "^1.0.7", "yjs": "^13.6.31" }, "devDependencies": { "@codemirror/autocomplete": "^6.18.6", "@codemirror/commands": "^6.8.1", "@codemirror/lang-css": "^6.3.1", "@codemirror/lang-html": "^6.4.12", "@codemirror/lang-javascript": "^6.2.5", "@codemirror/lang-json": "^6.0.2", "@codemirror/lang-markdown": "^6.3.3", "@codemirror/lang-python": "^6.2.1", "@codemirror/lang-xml": "^6.1.0", "@codemirror/lang-yaml": "^6.1.3", "@codemirror/language": "^6.13.1", "@codemirror/legacy-modes": "^6.5.5", "@codemirror/lint": "^6.9.7", "@codemirror/search": "^6.7.1", "@codemirror/state": "^6.5.2", "@codemirror/view": "^6.38.1", "@lezer/common": "^1.5.2", "@lezer/generator": "^1.8.0", "@lezer/highlight": "^1.2.3", "@lezer/lr": "^1.4.10", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dropdown-menu": "^2.1.25", "@radix-ui/react-popover": "^1.2.0", "@replit/codemirror-vim": "^6.4.0", "@tanstack/react-query": "^5.104.5", "@types/better-sqlite3": "^9.6.0", "@types/node": "^24.1.0", "@types/react": "^19.1.9", "@types/react-dom": "^19.1.7", "@types/semver": "^7.8.0", "@types/ws": "^8.18.1", "@vitejs/plugin-react": "^6.1.2", "@xterm/addon-fit": "^0.11.0", "@xterm/xterm": "^6.0.0", "bibtex-tidy": "1.14.0", "happy-dom": "^21.0.4", "i18next": "^26.5.3", "i18next-browser-languagedetector": "^8.2.0", "katex": "^0.18.4", "lucide-react": "^1.60.0", "pdfjs-dist": "^6.2.108", "react": "^19.1.1", "react-dom": "^19.1.1", "react-i18next": "^17.1.0", "react-markdown": "^10.1.0", "react-resizable-panels": "^4.14.8", "remark-gfm": "^4.0.1", "remark-math": "^6.0.0", "tex-fmt": "0.5.7-npm.1", "tsx": "^4.20.3", "typescript": "^5.8.3", "vite": "^8.3.4", "vite-plugin-wasm": "^3.6.0", "vitest": "^5.0.5", "y-codemirror.next": "^0.3.5", "y-indexeddb": "^9.0.12", "y-websocket": "^3.0.0" }, "overrides": { "micromark-extension-math": { "katex": "$katex" } }, "optionalDependencies": { "node-pty": "^1.1.0" } }