{
  "name": "feishin",
  "productName": "Feishin",
  "description": "Feishin music server",
  "version": "0.0.1-alpha3",
  "scripts": {
    "build": "concurrently \"npm run build:main\" \"npm run build:renderer\"",
    "build:main": "cross-env NODE_ENV=production TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.main.prod.ts",
    "build:renderer": "cross-env NODE_ENV=production TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.renderer.prod.ts",
    "rebuild": "electron-rebuild --parallel --types prod,dev,optional --module-dir release/app",
    "lint": "cross-env NODE_ENV=development eslint . --ext .js,.jsx,.ts,.tsx",
    "lint:styles": "npx stylelint **/*.tsx",
    "package": "ts-node ./.erb/scripts/clean.js dist && npm run build && electron-builder build --publish never",
    "package:dev": "ts-node ./.erb/scripts/clean.js dist && npm run build && electron-builder build --publish never --dir",
    "postinstall": "ts-node .erb/scripts/check-native-dep.js && electron-builder install-app-deps && cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.renderer.dev.dll.ts",
    "start": "ts-node ./.erb/scripts/check-port-in-use.js && npm run start:renderer",
    "start:main": "cross-env NODE_ENV=development electron -r ts-node/register/transpile-only ./src/main/main.ts",
    "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",
    "start:web": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack serve --config ./.erb/configs/webpack.config.renderer.web.ts",
    "test": "jest",
    "prepare": "husky install",
    "i18next": "i18next -c src/renderer/i18n/i18next-parser.config.js",
    "prod:buildserver": "pwsh -c \"./scripts/server-build.ps1\"",
    "prod:publishserver": "pwsh -c \"./scripts/server-publish.ps1\""
  },
  "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": {
    "productName": "Feishin",
    "appId": "org.jeffvli.feishin",
    "artifactName": "${productName}-${version}-${os}-${arch}.${ext}",
    "asar": true,
    "asarUnpack": "**\\*.{node,dll}",
    "files": [
      "dist",
      "node_modules",
      "package.json"
    ],
    "afterSign": ".erb/scripts/notarize.js",
    "mac": {
      "target": {
        "target": "default",
        "arch": [
          "arm64",
          "x64"
        ]
      },
      "type": "distribution",
      "hardenedRuntime": true,
      "entitlements": "assets/entitlements.mac.plist",
      "entitlementsInherit": "assets/entitlements.mac.plist",
      "gatekeeperAssess": false
    },
    "dmg": {
      "contents": [
        {
          "x": 130,
          "y": 220
        },
        {
          "x": 410,
          "y": 220,
          "type": "link",
          "path": "/Applications"
        }
      ]
    },
    "win": {
      "target": [
        "nsis",
        "zip"
      ]
    },
    "linux": {
      "target": [
        "AppImage",
        "tar.xz"
      ],
      "icon": "assets/icons/placeholder.png",
      "category": "Development"
    },
    "directories": {
      "app": "release/app",
      "buildResources": "assets",
      "output": "release/build"
    },
    "extraResources": [
      "./assets/**"
    ],
    "publish": {
      "provider": "github",
      "owner": "jeffvli",
      "repo": "feishin"
    }
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/jeffvli/feishin.git"
  },
  "author": {
    "name": "jeffvli",
    "url": "https://github.com/jeffvli/"
  },
  "contributors": [],
  "license": "GPL-3.0",
  "bugs": {
    "url": "https://github.com/jeffvli/feishin/issues"
  },
  "keywords": [
    "subsonic",
    "navidrome",
    "airsonic",
    "jellyfin",
    "react",
    "electron"
  ],
  "homepage": "https://github.com/jeffvli/feishin",
  "jest": {
    "testURL": "http://localhost/",
    "testEnvironment": "jsdom",
    "transform": {
      "\\.(ts|tsx|js|jsx)$": "ts-jest"
    },
    "moduleNameMapper": {
      "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/.erb/mocks/fileMock.js",
      "\\.(css|less|sass|scss)$": "identity-obj-proxy"
    },
    "moduleFileExtensions": [
      "js",
      "jsx",
      "ts",
      "tsx",
      "json"
    ],
    "moduleDirectories": [
      "node_modules",
      "release/app/node_modules"
    ],
    "testPathIgnorePatterns": [
      "release/app/dist"
    ],
    "setupFiles": [
      "./.erb/scripts/check-build-exists.ts"
    ]
  },
  "devDependencies": {
    "@pmmmwh/react-refresh-webpack-plugin": "0.5.5",
    "@stylelint/postcss-css-in-js": "^0.38.0",
    "@teamsupercell/typings-for-css-modules-loader": "^2.5.1",
    "@testing-library/jest-dom": "^5.16.4",
    "@testing-library/react": "^13.0.0",
    "@types/electron-localshortcut": "^3.1.0",
    "@types/jest": "^27.4.1",
    "@types/lodash": "^4.14.188",
    "@types/md5": "^2.3.2",
    "@types/node": "^17.0.23",
    "@types/react": "^18.0.25",
    "@types/react-dom": "^18.0.8",
    "@types/react-slider": "^1.3.1",
    "@types/react-test-renderer": "^17.0.1",
    "@types/react-virtualized-auto-sizer": "^1.0.1",
    "@types/react-window": "^1.8.5",
    "@types/react-window-infinite-loader": "^1.0.6",
    "@types/styled-components": "^5.1.26",
    "@types/terser-webpack-plugin": "^5.0.4",
    "@types/webpack-bundle-analyzer": "^4.4.1",
    "@types/webpack-env": "^1.16.3",
    "@typescript-eslint/eslint-plugin": "^5.47.0",
    "@typescript-eslint/parser": "^5.47.0",
    "browserslist-config-erb": "^0.0.3",
    "chalk": "^4.1.2",
    "concurrently": "^7.1.0",
    "core-js": "^3.21.1",
    "cross-env": "^7.0.3",
    "css-loader": "^6.7.1",
    "css-minimizer-webpack-plugin": "^3.4.1",
    "detect-port": "^1.3.0",
    "electron": "^21.2.0",
    "electron-builder": "^23.0.3",
    "electron-devtools-installer": "^3.2.0",
    "electron-notarize": "^1.2.1",
    "electron-rebuild": "^3.2.7",
    "electronmon": "^2.0.2",
    "eslint": "^8.30.0",
    "eslint-config-airbnb-base": "^15.0.0",
    "eslint-config-erb": "^4.0.3",
    "eslint-import-resolver-typescript": "^2.7.1",
    "eslint-import-resolver-webpack": "^0.13.2",
    "eslint-plugin-compat": "^4.0.2",
    "eslint-plugin-import": "^2.26.0",
    "eslint-plugin-jest": "^26.1.3",
    "eslint-plugin-jsx-a11y": "^6.5.1",
    "eslint-plugin-promise": "^6.0.0",
    "eslint-plugin-react": "^7.29.4",
    "eslint-plugin-react-hooks": "^4.4.0",
    "eslint-plugin-sort-keys-fix": "^1.1.2",
    "eslint-plugin-typescript-sort-keys": "^2.1.0",
    "file-loader": "^6.2.0",
    "html-webpack-plugin": "^5.5.0",
    "husky": "^7.0.4",
    "i18next-parser": "^6.3.0",
    "identity-obj-proxy": "^3.0.0",
    "jest": "^27.5.1",
    "lint-staged": "^12.3.7",
    "mini-css-extract-plugin": "^2.6.0",
    "postcss-scss": "^4.0.4",
    "postcss-syntax": "^0.36.2",
    "prettier": "^2.6.2",
    "react-refresh": "^0.12.0",
    "react-refresh-typescript": "^2.0.4",
    "react-test-renderer": "^18.0.0",
    "rimraf": "^3.0.2",
    "sass": "^1.49.11",
    "sass-loader": "^12.6.0",
    "style-loader": "^3.3.1",
    "stylelint": "^14.9.1",
    "stylelint-config-rational-order": "^0.1.2",
    "stylelint-config-standard-scss": "^4.0.0",
    "stylelint-config-styled-components": "^0.1.1",
    "stylelint-order": "^5.0.0",
    "stylelint-processor-styled-components": "^1.10.0",
    "terser-webpack-plugin": "^5.3.1",
    "ts-jest": "^27.1.4",
    "ts-loader": "^9.2.8",
    "ts-node": "^10.7.0",
    "tsconfig-paths-webpack-plugin": "^4.0.0",
    "typescript": "^4.8.4",
    "typescript-plugin-styled-components": "^2.0.0",
    "url-loader": "^4.1.1",
    "webpack": "^5.71.0",
    "webpack-bundle-analyzer": "^4.5.0",
    "webpack-cli": "^4.9.2",
    "webpack-dev-server": "^4.8.0",
    "webpack-merge": "^5.8.0"
  },
  "dependencies": {
    "@ag-grid-community/client-side-row-model": "^28.2.1",
    "@ag-grid-community/core": "^28.2.1",
    "@ag-grid-community/infinite-row-model": "^28.2.1",
    "@ag-grid-community/react": "^28.2.1",
    "@ag-grid-community/styles": "^28.2.1",
    "@emotion/react": "^11.10.4",
    "@mantine/core": "^5.9.5",
    "@mantine/dates": "^5.9.5",
    "@mantine/dropzone": "^5.9.5",
    "@mantine/form": "^5.9.5",
    "@mantine/hooks": "^5.9.5",
    "@mantine/modals": "^5.9.5",
    "@mantine/notifications": "^5.9.5",
    "@mantine/spotlight": "^5.9.5",
    "@tanstack/react-query": "^4.16.1",
    "@tanstack/react-query-devtools": "^4.16.1",
    "dayjs": "^1.11.6",
    "electron-debug": "^3.2.0",
    "electron-localshortcut": "^3.2.1",
    "electron-log": "^4.4.6",
    "electron-store": "^8.1.0",
    "electron-updater": "^4.6.5",
    "fast-average-color": "^9.2.0",
    "format-duration": "^2.0.0",
    "framer-motion": "^8.1.3",
    "history": "^5.3.0",
    "i18next": "^21.6.16",
    "immer": "^9.0.15",
    "is-electron": "^2.2.1",
    "ky": "^0.33.0",
    "lodash": "^4.17.21",
    "md5": "^2.3.0",
    "memoize-one": "^6.0.0",
    "nanoid": "^3.3.3",
    "net": "^1.0.2",
    "node-mpv": "^2.0.0-beta.2",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-error-boundary": "^3.1.4",
    "react-i18next": "^11.16.7",
    "react-icons": "^4.7.1",
    "react-player": "^2.11.0",
    "react-router": "^6.5.0",
    "react-router-dom": "^6.5.0",
    "react-simple-img": "^3.0.0",
    "react-slider": "^2.0.4",
    "react-virtualized-auto-sizer": "^1.0.6",
    "react-window": "^1.8.8",
    "react-window-infinite-loader": "^1.0.8",
    "styled-components": "^5.3.6",
    "zod": "^3.19.1",
    "zustand": "^4.1.4"
  },
  "resolutions": {
    "styled-components": "^5"
  },
  "devEngines": {
    "node": ">=14.x",
    "npm": ">=7.x"
  },
  "browserslist": [],
  "electronmon": {
    "patterns": [
      "!server",
      "!src/renderer"
    ]
  }
}
