{
  "name": "freetube",
  "productName": "FreeTube",
  "description": "A private YouTube client",
  "version": "0.25.2",
  "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",
    "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": "^4.1.2",
    "autolinker": "^4.1.5",
    "bgutils-js": "^4.0.3",
    "dompurify": "^3.4.13",
    "electron-context-menu": "^4.1.2",
    "googlevideo": "^4.1.1",
    "marked": "^18.0.9",
    "process": "^0.11.10",
    "shaka-player": "^5.1.12",
    "swiper": "^14.1.0",
    "vue": "^3.5.41",
    "vue-i18n": "^11.4.8",
    "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.1",
    "@eslint/js": "^10.0.1",
    "@intlify/eslint-plugin-vue-i18n": "^4.5.1",
    "@magda/tree-kill": "1.2.3",
    "@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.3.0",
    "electron-builder": "^26.15.7",
    "eslint": "^10.8.1",
    "eslint-plugin-import-x": "^4.17.1",
    "eslint-plugin-jsdoc": "^63.3.3",
    "eslint-plugin-jsonc": "^3.4.1",
    "eslint-plugin-n": "^18.2.2",
    "eslint-plugin-promise": "^7.3.0",
    "eslint-plugin-unicorn": "^73.0.0",
    "eslint-plugin-vue": "^10.10.0",
    "eslint-plugin-vuejs-accessibility": "^2.5.0",
    "eslint-plugin-yml": "^3.8.1",
    "globals": "^17.9.0",
    "html-webpack-plugin": "^5.6.8",
    "js-yaml": "^5.2.3",
    "json-minimizer-webpack-plugin": "^5.0.1",
    "lefthook": "^2.1.10",
    "mini-css-extract-plugin": "^2.10.2",
    "postcss": "^8.5.26",
    "postcss-scss": "^4.0.9",
    "sass": "^1.102.0",
    "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.2",
    "vue-eslint-parser": "^10.4.1",
    "vue-loader": "^17.4.2",
    "webpack": "^5.109.2",
    "webpack-cli": "^7.2.2",
    "webpack-dev-server": "^6.0.0"
  }
}
