{ "name": "bs-manager", "description": "Manage maps, mods and more for Beat Saber", "main": "./.erb/dll/main.bundle.dev.js", "version": "1.5.4", "scripts": { "build-rust-scripts": "tsx ./.erb/scripts/build-rust-scripts.js", "build": "concurrently \"npm run build:main\" \"npm run build:renderer\"", "build:dll": "cross-env NODE_ENV=development webpack --config ./.erb/configs/webpack.config.renderer.dev.dll.ts", "build:main": "cross-env NODE_ENV=production webpack --config ./.erb/configs/webpack.config.main.prod.ts", "build:renderer": "cross-env NODE_ENV=production webpack --config ./.erb/configs/webpack.config.renderer.prod.ts", "postinstall": "tsx .erb/scripts/check-native-dep.js && electron-builder install-app-deps && npm run build:dll", "rebuild": "electron-rebuild --parallel --types prod,dev,optional --module-dir release/app", "prestart": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.main.dev.ts", "lint": "cross-env NODE_ENV=development eslint . --ext .js,.jsx,.ts,.tsx", "package": "tsx ./.erb/scripts/clean.js dist && npm run build && electron-builder build --publish never --config electron-builder.config.js && npm run build:dll", "start": "tsx ./.erb/scripts/check-port-in-use.js && npm run prestart && npm run start:renderer", "start:main": "concurrently -k \"cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --watch --config ./.erb/configs/webpack.config.main.dev.ts\" \"electronmon .\"", "start:preload": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.preload.dev.ts", "start:renderer": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack serve --config ./.erb/configs/webpack.config.renderer.dev.ts", "test": "jest ./src/__tests__/**/*.test.ts", "test:unit": "jest ./src/__tests__/unit", "publish": "npm run build && electron-builder -c.win.certificateSha1=206941d969c4fa8a0e04d9427def361e13b02fd0 --config electron-builder.config.js --publish always --win --x64", "publish:linux": "npm run build && electron-builder --config electron-builder.config.js --publish never --linux --x64", "publish:flatpak": "npm run build && env DEBUG='@malept/flatpak-bundler' npx electron-builder --config electron-builder.config.js --publish never --linux flatpak", "update:patreon": "tsx ./.erb/scripts/update-patreon.js" }, "lint-staged": { "*.{js,jsx,ts,tsx}": [ "cross-env NODE_ENV=development eslint --cache" ], "*.json,.{eslintrc,prettierrc}": [ "prettier --ignore-path .eslintignore --parser json --write" ], "*.{css,scss}": [ "prettier --ignore-path .eslintignore --single-quote --write" ], "*.{html,md,yml}": [ "prettier --ignore-path .eslintignore --single-quote --write" ] }, "build": { "directories": { "app": "release/app", "buildResources": "assets", "output": "release/build" } }, "repository": { "type": "git", "url": "git+https://github.com/Zagrios/bs-manager.git" }, "author": { "name": "Zagrios", "email": "peroz.mathieu@gmail.com", "url": "https://github.com/Zagrios" }, "contributors": [], "license": "GPL-3.0-only", "bugs": { "url": "https://github.com/Zagrios/bs-manager/issues" }, "keywords": [ "downgrade", "launcher-application", "beatsaber", "beat-saber" ], "homepage": "https://github.com/Zagrios/bs-manager#readme", "devDependencies": { "@electron/fuses": "^1.7.0", "@electron/notarize": "^2.3.0", "@electron/rebuild": "^3.6.0", "@pmmmwh/react-refresh-webpack-plugin": "0.5.5", "@teamsupercell/typings-for-css-modules-loader": "^2.5.2", "@testing-library/jest-dom": "^6.4.1", "@testing-library/react": "^14.2.0", "@types/archiver": "^6.0.2", "@types/color": "^3.0.3", "@types/crypto-js": "^4.2.1", "@types/dateformat": "^5.0.0", "@types/global-agent": "^2.1.3", "@types/got": "^9.6.12", "@types/jest": "^29.5.11", "@types/node": "22.8.6", "@types/node-fetch": "^2.6.3", "@types/pako": "^2.0.1", "@types/react": "^18.0.33", "@types/react-beautiful-dnd": "^13.1.8", "@types/react-dom": "^18.0.11", "@types/react-outside-click-handler": "^1.3.1", "@types/react-test-renderer": "^18.0.7", "@types/react-virtualized-auto-sizer": "^1.0.1", "@types/react-window": "^1.8.5", "@types/recursive-readdir": "^2.2.1", "@types/terser-webpack-plugin": "^5.0.4", "@types/to-ico": "^1.1.1", "@types/use-double-click": "^1.0.4", "@types/webpack-bundle-analyzer": "^4.4.2", "@types/webpack-env": "^1.18.0", "@typescript-eslint/eslint-plugin": "^6.20.0", "@typescript-eslint/parser": "^6.20.0", "autoprefixer": "^10.4.17", "browserslist-config-erb": "^0.0.3", "chalk": "^4.1.2", "concurrently": "^9.2.1", "core-js": "^3.36.0", "cross-env": "^10.1.0", "css-loader": "^6.10.0", "css-minimizer-webpack-plugin": "^6.0.0", "detect-port": "^2.1.0", "electron": "39.2.7", "electron-builder": "^26.0.12", "electron-devtools-installer": "^4.0.0", "electronmon": "^2.0.4", "eslint": "^8.56.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-erb": "^4.1.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-import-resolver-webpack": "^0.13.8", "eslint-plugin-compat": "^4.2.0", "eslint-plugin-import": "^2.29.1", "eslint-plugin-jest": "^27.6.3", "eslint-plugin-jsx-a11y": "^6.8.0", "eslint-plugin-promise": "^6.1.1", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", "file-loader": "^6.2.0", "html-webpack-plugin": "^5.6.0", "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", "lint-staged": "^15.2.1", "mini-css-extract-plugin": "^2.7.7", "opencollective-postinstall": "^2.0.3", "postcss": "^8.4.33", "postcss-loader": "^8.1.0", "prettier": "^3.2.4", "react-refresh": "^0.14.0", "react-test-renderer": "^18.2.0", "rimraf": "^5.0.5", "sass": "^1.70.0", "sass-loader": "^14.1.0", "style-loader": "^3.3.4", "tailwindcss": "^3.4.12", "terser-webpack-plugin": "^5.3.10", "ts-jest": "^29.1.2", "ts-loader": "^9.5.1", "ts-node": "^10.9.2", "tsx": "^4.19.2", "typescript": "^5.3.3", "url-loader": "^4.1.1", "webpack": "^5.90.3", "webpack-bundle-analyzer": "^4.10.1", "webpack-cli": "^5.1.4", "webpack-dev-server": "^4.15.1", "webpack-merge": "^5.10.0" }, "dependencies": { "@emotion/is-prop-valid": "1.4.0", "@internationalized/date": "^3.5.4", "@nextui-org/date-picker": "^2.0.7", "@nextui-org/react": "^2.3.6", "@node-steam/vdf": "^2.2.0", "@tippyjs/react": "^4.2.6", "archiver": "^7.0.1", "clsx": "^2.1.1", "color": "^5.0.0", "crypto-js": "^4.2.0", "dateformat": "^5.0.3", "dot-prop": "^9.0.0", "electron-debug": "^3.2.0", "electron-log": "^4.4.8", "electron-store": "^8.1.0", "electron-updater": "^6.3.9", "fast-deep-equal": "^3.1.3", "format-duration": "^3.0.2", "framer-motion": "12.23.26", "fs-extra": "^11.3.0", "global-agent": "^3.0.0", "got": "^14.4.7", "history": "^5.3.0", "is-elevated": "^4.0.0", "md5-file": "^5.0.0", "node-abi": "^4.2.0", "node-fetch": "^3.3.2", "pako": "^2.1.0", "protobufjs": "^8.0.0", "qrcode.react": "^4.2.0", "query-process": "^0.0.3", "react": "^18.2.0", "react-beautiful-dnd": "^13.1.1", "react-colorful": "^5.6.1", "react-dom": "^18.2.0", "react-range": "^1.10.0", "react-router-dom": "^6.24.1", "react-virtualized-auto-sizer": "^1.0.25", "react-window": "^1.8.11", "recursive-readdir": "^2.2.3", "rfdc": "^1.4.1", "rxjs": "^7.8.2", "sanitize-filename": "^1.6.3", "semver": "7.7.3", "serialize-error": "^12.0.0", "striptags": "^4.0.0-alpha.4", "tailwind-merge": "^3.0.2", "tailwindcss-scoped-groups": "^2.0.0", "tippy.js": "^6.3.7", "to-ico": "^1.1.5", "tough-cookie": "^6.0.0", "use-double-click": "^1.0.5", "use-fit-text": "^2.4.0", "yauzl": "^3.2.0" }, "engines": { "node": ">=20.0.0" }, "collective": { "url": "https://www.patreon.com/bsmanager" }, "browserslist": [], "prettier": { "printWidth": 1000, "bracketSameLine": false, "arrowParens": "avoid", "semi": true, "singleQuote": false, "jsxSingleQuote": false, "trailingComma": "es5", "bracketSpacing": true, "tabWidth": 4, "overrides": [ { "files": [ ".prettierrc", ".eslintrc" ], "options": { "parser": "json" } } ] }, "electronmon": { "patterns": [ "!**/**", "src/main/**", ".erb/dll/**" ], "logLevel": "quiet" }, "volta": { "node": "24.11.1" } }