{ "name": "monochrome", "type": "module", "version": "2.5.1", "description": "[\"Monochrome](https://monochrome.tf)", "scripts": { "dev": "vite", "test": "vitest run --config=vite.config.ts", "test:headless": "HEADLESS=true vitest run --config=vite.config.ts", "test:watch": "vitest --config=vite.config.ts", "test:watch:headless": "HEADLESS=true vitest --config=vite.config.ts", "install:playwright": "playwright install chromium", "build": "vite build && vite-bundle-visualizer -o dist/assets/bundle-stats.html --open false", "postbuild": "node -e \"const fs = require('fs'); const path = require('path'); const src = 'extensions'; const dest = path.join('dist', 'Monochrome', 'extensions'); if (fs.existsSync(src)) { fs.mkdirSync(dest, { recursive: true }); fs.cpSync(src, dest, { recursive: true }); console.log('Extensions manually copied to ' + dest); }\"", "preview": "vite preview", "lint:js": "eslint .", "lint:css": "stylelint \"**/*.css\"", "lint:html": "htmlhint \"**/*.html\" --ignore=\"dist/**,legacy/**,node_modules/**\"", "lint": "bun run lint:js && bun run lint:css && bun run lint:html", "format": "prettier --write .", "lhci": "lhci", "lhci:autorun": "npm run build && lhci autorun" }, "repository": { "type": "git", "url": "git+https://github.com/monochrome-music/monochrome.git" }, "keywords": [ "music" ], "author": "", "license": "Apache-2.0", "bugs": { "url": "https://github.com/monochrome-music/monochrome/issues" }, "homepage": "https://github.com/monochrome-music/monochrome#readme", "devDependencies": { "@capacitor/assets": "^3.0.5", "@capacitor/cli": "^8.2.0", "@lhci/cli": "^0.14.0", "@testing-library/dom": "^10.4.1", "@types/node": "^25.3.5", "@vitest/browser-playwright": "^4.1.2", "eslint": "^9.39.3", "eslint-config-prettier": "^10.1.8", "formidable": "^3.5.4", "globals": "^17.4.0", "htmlhint": "^1.9.2", "miniflare": "^4.20260301.1", "playwright": "^1.58.2", "prettier": "^3.8.1", "stylelint": "^17.6.0", "stylelint-config-standard": "^39.0.1", "stylelint-config-standard-scss": "^16.0.0", "terser": "^5.46.1", "typescript": "^5.9.3", "vite": "^7.3.1", "vite-bundle-visualizer": "^1.2.1", "vite-plugin-purgecss": "^0.2.13", "vite-plugin-pwa": "^1.2.0" }, "overrides": { "sourcemap-codec": "^1.4.14", "source-map": "^0.7.4", "serialize-javascript": "^7.0.3" }, "dependencies": { "@capacitor/android": "^8.2.0", "@capacitor/app": "^8.0.1", "@capacitor/core": "^8.2.0", "@capacitor/haptics": "^8.0.1", "@capacitor/ios": "^8.2.0", "@capgo/capacitor-media-session": "^8.0.19", "@dantheman827/taglib-ts": "^0.1.5", "@ffmpeg/core": "^0.12.10", "@ffmpeg/ffmpeg": "^0.12.15", "@ffmpeg/util": "^0.12.2", "@kawarp/core": "^1.1.1", "@svta/common-media-library": "^0.18.1", "@types/wicg-file-system-access": "^2023.10.7", "@typescript-eslint/eslint-plugin": "^8.57.2", "@uimaxbai/am-lyrics": "^1.2.8", "@vitest/web-worker": "^4.1.2", "appwrite": "^23.0.0", "butterchurn": "^2.6.7", "butterchurn-presets": "^2.4.7", "client-zip": "^2.5.0", "cookie-session": "^2.1.1", "eventemitter3": "^5.0.4", "events": "^3.3.0", "fuse.js": "^7.1.0", "hls.js": "^1.6.15", "jose": "^6.2.0", "lucide-static": "^0.577.0", "mime": "^4.1.0", "npm": "^11.11.1", "pocketbase": "^0.26.8", "shaka-player": "^5.0.7", "simple-icons": "^16.12.0", "svgo": "^4.0.1", "typescript-eslint": "^8.57.2", "url-toolkit": "^2.2.5", "uuid": "^13.0.0", "vitest": "^4.1.2" } }