{ "name": "freetube", "productName": "FreeTube", "description": "A private YouTube client", "version": "0.25.1", "license": "AGPL-3.0-or-later", "main": "./dist/main.js", "private": true, "author": { "name": "FreeTube Team", "email": "noreply@example.com", "url": "https://github.com/FreeTubeApp/FreeTube" }, "repository": { "type": "git", "url": "git+https://github.com/FreeTubeApp/FreeTube.git" }, "bugs": { "url": "https://github.com/FreeTubeApp/FreeTube/issues" }, "scripts": { "build": "pnpm run pack && pnpm run build-release", "build:arm64": "pnpm run pack && pnpm run build-release:arm64", "build:arm32": "pnpm run pack && pnpm run build-release:arm32", "build-release": "node _scripts/build.mjs", "build-release:arm64": "node _scripts/build.mjs arm64", "build-release:arm32": "node _scripts/build.mjs arm32", "clean": "node _scripts/clean.mjs", "debug": "node _scripts/dev-runner.js --remote-debug", "dev": "node _scripts/dev-runner.js", "dev:web": "node _scripts/dev-runner.js --web", "get-instances": "node _scripts/getInstances.js", "get-regions": "node _scripts/getRegions.mjs", "lint-all": "pnpm run \"/^(lint|lint-json)$/\"", "lint": "pnpm run \"/^(eslint-lint|lint-style)$/\"", "lint-fix": "pnpm run \"/^(eslint-lint|lint-style)-fix$/\"", "eslint-lint": "eslint --config eslint.config.mjs \"src/**/*.js\" \"src/renderer/**/*.vue\" \"static/*.js\" \"_scripts/*.js\" \"_scripts/**/*.mjs\"", "eslint-lint-fix": "eslint --config eslint.config.mjs --fix \"src/**/*.js\" \"src/renderer/**/*.vue\" \"static/*.js\" \"_scripts/*.js\" \"_scripts/**/*.mjs\"", "lint-json": "eslint --config eslint.config.mjs \"static/**/*.json\"", "lint-style": "stylelint \"src/**/*.{css,scss}\"", "lint-style-fix": "stylelint --fix \"src/**/*.{css,scss}\"", "lint-yml": "eslint --config eslint.config.mjs \"**/*.yml\" \"**/*.yaml\"", "pack": "pnpm run \"/^pack:(main|renderer|preload|botGuardScript)$/\" && node _scripts/injectAllowedPaths.mjs", "pack:main": "webpack --mode=production --config-node-env=production --config _scripts/webpack.main.config.js", "pack:renderer": "webpack --mode=production --config-node-env=production --config _scripts/webpack.renderer.config.js", "pack:preload": "webpack --mode=production --config-node-env=production --config _scripts/webpack.preload.config.js", "pack:web": "webpack --mode=production --config-node-env=production --config _scripts/webpack.web.config.js", "pack:botGuardScript": "webpack --config _scripts/webpack.botGuardScript.config.js", "pack:botGuardScript:android": "webpack --config _scripts/webpack.botGuardScript.android.config.js", "pack:android:core": "webpack --mode=production --config-node-env=production --config _scripts/webpack.android.config.js", "pack:android:dev:core": "webpack --mode=development --config-node-env=development --config _scripts/webpack.android.config.js", "pack:android": "pnpm run \"/^pack:(botGuardScript:android|android:core)$/\"", "pack:android:dev": "pnpm run \"/^pack:(botGuardScript:android|android:dev:core)$/\"", "checkforbadtemplates": "node _scripts/findMissingTemplates.mjs", "ci": "pnpm install --frozen-lockfile" }, "dependencies": { "@fortawesome/fontawesome-svg-core": "^7.3.1", "@fortawesome/free-brands-svg-icons": "^7.3.1", "@fortawesome/free-regular-svg-icons": "^7.3.1", "@fortawesome/free-solid-svg-icons": "^7.3.1", "@fortawesome/vue-fontawesome": "^3.3.3", "@seald-io/nedb": "https://github.com/MarmadileManteater/nedb.git", "autolinker": "^4.1.5", "bgutils-js": "^4.0.2", "dompurify": "^3.4.12", "electron-context-menu": "^4.1.2", "googlevideo": "^4.1.1", "marked": "^18.0.7", "process": "^0.11.10", "shaka-player": "^5.1.12", "swiper": "^14.0.6", "vue": "^3.5.40", "vue-i18n": "^11.4.7", "vue-observe-visibility": "^2.0.0-alpha.1", "vue-router": "^5.2.0", "vuex": "^4.1.0", "youtubei.js": "^17.2.0" }, "devDependencies": { "@babel/core": "^8.0.1", "@babel/preset-env": "^8.0.2", "@double-great/stylelint-a11y": "^3.5.0", "@eslint/js": "^10.0.1", "@intlify/eslint-plugin-vue-i18n": "^4.5.1", "@stylistic/eslint-plugin": "^5.10.0", "babel-loader": "^10.1.1", "copy-webpack-plugin": "^14.0.0", "css-loader": "^7.1.4", "css-minimizer-webpack-plugin": "^8.0.0", "electron": "^43.2.0", "electron-builder": "^26.15.7", "eslint": "^10.7.0", "eslint-plugin-import-x": "^4.17.1", "eslint-plugin-jsdoc": "^63.2.2", "eslint-plugin-jsonc": "^3.3.0", "eslint-plugin-n": "^18.2.2", "eslint-plugin-promise": "^7.3.0", "eslint-plugin-unicorn": "^72.0.0", "eslint-plugin-vue": "^10.10.0", "eslint-plugin-vuejs-accessibility": "^2.5.0", "eslint-plugin-yml": "^3.6.0", "globals": "^17.7.0", "html-webpack-plugin": "^5.6.7", "js-yaml": "^5.2.2", "json-minimizer-webpack-plugin": "^5.0.1", "lefthook": "^2.1.10", "mini-css-extract-plugin": "^2.10.2", "postcss": "^8.5.22", "postcss-scss": "^4.0.9", "sass": "^1.101.7", "sass-loader": "^17.0.0", "stylelint": "^17.14.1", "stylelint-config-sass-guidelines": "^13.0.0", "stylelint-config-standard": "^40.0.0", "stylelint-high-performance-animation": "^2.0.0", "stylelint-use-logical-spec": "^5.0.1", "terser": "^5.49.0", "@magda/tree-kill": "1.2.3", "vue-eslint-parser": "^10.4.1", "vue-loader": "^17.4.2", "webpack": "^5.109.0", "webpack-cli": "^7.2.1", "webpack-dev-server": "^6.0.0" } }