{ "name": "vibetunnel-web", "version": "1.0.0", "description": "Web frontend for terminal multiplexer", "main": "dist/server.js", "scripts": { "dev": "npm run build:css && concurrently --kill-others-on-fail \"npm run watch:css\" \"npm run bundle:watch\" \"npm run watch:server\"", "watch:server": "tsx watch src/server.ts", "watch:client": "tsc -p tsconfig.client.json --watch --preserveWatchOutput", "watch:css": "npx tailwindcss -i ./src/input.css -o ./public/bundle/output.css --watch", "build": "npm run build:css && npm run build:client && npm run build:server", "build:server": "tsc", "build:client": "tsc -p tsconfig.client.json", "build:css": "npx tailwindcss -i ./src/input.css -o ./public/bundle/output.css --minify", "bundle": "npm run bundle:client && npm run bundle:renderer", "bundle:client": "esbuild src/client/app-entry.ts --bundle --outfile=public/bundle/client-bundle.js --format=esm --sourcemap --external:@xterm/xterm/css/xterm.css", "bundle:renderer": "esbuild src/client/renderer-entry.ts --bundle --outfile=public/bundle/renderer.js --format=esm --sourcemap", "bundle:watch": "concurrently \"npm run bundle:client -- --watch\" \"npm run bundle:renderer -- --watch\"", "start": "node dist/server.js", "test": "jest", "test:watch": "jest --watch" }, "dependencies": { "@xterm/addon-fit": "^0.10.0", "@xterm/addon-web-links": "^0.11.0", "@xterm/xterm": "^5.5.0", "asciinema-player": "^3.7.0", "express": "^4.18.2", "lit": "^3.1.0", "node-pty": "^1.0.0", "ws": "^8.14.2" }, "devDependencies": { "@types/express": "^4.17.21", "@types/jest": "^29.5.12", "@types/node": "^20.10.5", "@types/supertest": "^6.0.2", "@types/ws": "^8.5.10", "autoprefixer": "^10.4.21", "chokidar": "^3.5.3", "concurrently": "^8.2.2", "esbuild": "^0.25.5", "jest": "^29.7.0", "postcss": "^8.5.5", "puppeteer": "^21.0.0", "supertest": "^6.3.4", "tailwindcss": "^3.4.17", "ts-jest": "^29.1.2", "tsx": "^4.6.2", "typescript": "^5.3.3" }, "keywords": [ "terminal", "multiplexer", "websocket", "asciinema" ], "author": "", "license": "MIT" }