From f74e8b9d328dc84fceecc6f4e6a081a65b6f4b24 Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 7 Sep 2022 16:53:24 +0300 Subject: [PATCH] linting and cleanup --- .eslintrc.json | 18 +- package.json | 9 + pnpm-lock.yaml | 162 ++++++++++++++++++ src/components/bookmarks/item.jsx | 30 ++-- src/components/bookmarks/list.jsx | 2 +- src/components/color-toggle.jsx | 72 ++++---- src/components/greeting.jsx | 7 +- src/components/modal.jsx | 68 -------- src/components/services/item.jsx | 42 +++-- src/components/services/list.jsx | 2 +- src/components/services/status.jsx | 18 +- .../services/widgets/service/emby.jsx | 4 +- .../services/widgets/service/rutorrent.jsx | 8 +- .../services/widgets/service/tautulli.jsx | 2 +- .../widgets/openweathermap/icon.jsx | 4 +- .../widgets/openweathermap/weather.jsx | 6 +- src/components/widgets/resources/disk.jsx | 1 + src/components/widgets/resources/memory.jsx | 1 + .../widgets/resources/resources.jsx | 24 ++- src/components/widgets/search/search.jsx | 7 +- src/components/widgets/weather/icon.jsx | 4 +- src/components/widgets/weather/weather.jsx | 5 +- src/pages/{_app.js => _app.jsx} | 1 + src/pages/{_document.js => _document.jsx} | 0 src/pages/api/bookmarks.js | 20 +-- src/pages/api/docker/stats/[...service].js | 17 +- src/pages/api/docker/status/[...service].js | 5 +- src/pages/api/proxy.js | 35 ++-- src/pages/api/services/index.js | 44 ++--- src/pages/api/services/proxy.js | 2 +- src/pages/api/widgets/index.js | 12 +- src/pages/api/widgets/openweathermap.js | 4 +- src/pages/api/widgets/resources.js | 20 ++- src/pages/api/widgets/weather.js | 4 +- src/pages/{index.js => index.jsx} | 19 +- src/utils/api-helpers.js | 4 +- src/utils/cached-fetch.js | 8 +- .../{color-context.js => color-context.jsx} | 10 +- src/utils/condition-map.js | 4 +- src/utils/config.js | 4 +- src/utils/docker.js | 25 +-- src/utils/http.js | 16 +- src/utils/owm-condition-map.js | 11 +- src/utils/proxies/credentialed.js | 2 +- src/utils/proxies/generic.js | 2 +- src/utils/proxies/npm.js | 4 +- src/utils/proxies/nzbget.js | 7 +- src/utils/proxies/rutorrent.js | 2 +- src/utils/service-helpers.js | 21 +-- src/utils/stats-helpers.js | 4 +- .../{theme-context.js => theme-context.jsx} | 10 +- 51 files changed, 464 insertions(+), 349 deletions(-) delete mode 100644 src/components/modal.jsx rename src/pages/{_app.js => _app.jsx} (88%) rename src/pages/{_document.js => _document.jsx} (100%) rename src/pages/{index.js => index.jsx} (81%) rename src/utils/{color-context.js => color-context.jsx} (75%) rename src/utils/{theme-context.js => theme-context.jsx} (76%) diff --git a/.eslintrc.json b/.eslintrc.json index bffb357a..fc0b1b8c 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,3 +1,19 @@ { - "extends": "next/core-web-vitals" + "extends": ["airbnb", "next/core-web-vitals", "prettier"], + "plugins": ["prettier"], + "rules": { + "import/order": [ + "error", + { + "newlines-between": "always" + } + ] + }, + "settings": { + "import/resolver": { + "node": { + "paths": ["src"] + } + } + } } diff --git a/package.json b/package.json index 355178f8..8db6e8f6 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "dependencies": { "@headlessui/react": "^1.6.6", "@tailwindcss/forms": "^0.5.3", + "classnames": "^2.3.1", "dockerode": "^3.3.4", "js-yaml": "^4.1.0", "json-rpc-2.0": "^1.4.1", @@ -27,8 +28,16 @@ "devDependencies": { "autoprefixer": "^10.4.8", "eslint": "8.22.0", + "eslint-config-airbnb": "^19.0.4", "eslint-config-next": "12.2.5", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsx-a11y": "^6.6.1", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-react": "^7.30.1", + "eslint-plugin-react-hooks": "^4.6.0", "postcss": "^8.4.16", + "prettier": "^2.7.1", "tailwindcss": "^3.1.8", "typescript": "^4.8.2" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cfe2276f..c58fee0a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,15 +4,24 @@ specifiers: '@headlessui/react': ^1.6.6 '@tailwindcss/forms': ^0.5.3 autoprefixer: ^10.4.8 + classnames: ^2.3.1 dockerode: ^3.3.4 eslint: 8.22.0 + eslint-config-airbnb: ^19.0.4 eslint-config-next: 12.2.5 + eslint-config-prettier: ^8.5.0 + eslint-plugin-import: ^2.26.0 + eslint-plugin-jsx-a11y: ^6.6.1 + eslint-plugin-prettier: ^4.2.1 + eslint-plugin-react: ^7.30.1 + eslint-plugin-react-hooks: ^4.6.0 js-yaml: ^4.1.0 json-rpc-2.0: ^1.4.1 memory-cache: ^0.2.0 next: 12.2.5 node-os-utils: ^1.3.7 postcss: ^8.4.16 + prettier: ^2.7.1 raw-body: ^2.5.1 react: 18.2.0 react-dom: 18.2.0 @@ -25,6 +34,7 @@ specifiers: dependencies: '@headlessui/react': 1.6.6_biqbaboplfbrettd7655fr4n2y '@tailwindcss/forms': 0.5.3_tailwindcss@3.1.8 + classnames: 2.3.1 dockerode: 3.3.4 js-yaml: 4.1.0 json-rpc-2.0: 1.4.1 @@ -41,8 +51,16 @@ dependencies: devDependencies: autoprefixer: 10.4.8_postcss@8.4.16 eslint: 8.22.0 + eslint-config-airbnb: 19.0.4_ujj5bqj46ej3re666g22wkx75e eslint-config-next: 12.2.5_shit3uhl6a7megkzgoz6xssnfa + eslint-config-prettier: 8.5.0_eslint@8.22.0 + eslint-plugin-import: 2.26.0_eslint@8.22.0 + eslint-plugin-jsx-a11y: 6.6.1_eslint@8.22.0 + eslint-plugin-prettier: 4.2.1_i2cojdczqdiurzgttlwdgf764e + eslint-plugin-react: 7.31.5_eslint@8.22.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.22.0 postcss: 8.4.16 + prettier: 2.7.1 tailwindcss: 3.1.8_postcss@8.4.16 typescript: 4.8.2 @@ -604,6 +622,10 @@ packages: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} dev: false + /classnames/2.3.1: + resolution: {integrity: sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==} + dev: false + /color-convert/2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -625,6 +647,10 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true + /confusing-browser-globals/1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + dev: true + /core-js-pure/3.25.0: resolution: {integrity: sha512-IeHpLwk3uoci37yoI2Laty59+YqH9x5uR65/yiA0ARAJrTrN4YU0rmauLWfvqOuk77SlNJXj2rM6oT/dBD87+A==} requiresBuild: true @@ -843,6 +869,41 @@ packages: engines: {node: '>=10'} dev: true + /eslint-config-airbnb-base/15.0.0_2iahngt3u2tkbdlu6s4gkur3pu: + resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 + dependencies: + confusing-browser-globals: 1.0.11 + eslint: 8.22.0 + eslint-plugin-import: 2.26.0_eslint@8.22.0 + object.assign: 4.1.4 + object.entries: 1.1.5 + semver: 6.3.0 + dev: true + + /eslint-config-airbnb/19.0.4_ujj5bqj46ej3re666g22wkx75e: + resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} + engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + eslint-plugin-jsx-a11y: ^6.5.1 + eslint-plugin-react: ^7.28.0 + eslint-plugin-react-hooks: ^4.3.0 + dependencies: + eslint: 8.22.0 + eslint-config-airbnb-base: 15.0.0_2iahngt3u2tkbdlu6s4gkur3pu + eslint-plugin-import: 2.26.0_eslint@8.22.0 + eslint-plugin-jsx-a11y: 6.6.1_eslint@8.22.0 + eslint-plugin-react: 7.31.5_eslint@8.22.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.22.0 + object.assign: 4.1.4 + object.entries: 1.1.5 + dev: true + /eslint-config-next/12.2.5_shit3uhl6a7megkzgoz6xssnfa: resolution: {integrity: sha512-SOowilkqPzW6DxKp3a3SYlrfPi5Ajs9MIzp9gVfUDxxH9QFM5ElkR1hX5m/iICJuvCbWgQqFBiA3mCMozluniw==} peerDependencies: @@ -868,6 +929,15 @@ packages: - supports-color dev: true + /eslint-config-prettier/8.5.0_eslint@8.22.0: + resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.22.0 + dev: true + /eslint-import-resolver-node/0.3.6: resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} dependencies: @@ -925,6 +995,64 @@ packages: - supports-color dev: true + /eslint-module-utils/2.7.4_7gfxlqsjhuntdifxknjgbjwpbu: + resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + debug: 3.2.7 + eslint: 8.22.0 + eslint-import-resolver-node: 0.3.6 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-import/2.26.0_eslint@8.22.0: + resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + array-includes: 3.1.5 + array.prototype.flat: 1.3.0 + debug: 2.6.9 + doctrine: 2.1.0 + eslint: 8.22.0 + eslint-import-resolver-node: 0.3.6 + eslint-module-utils: 2.7.4_7gfxlqsjhuntdifxknjgbjwpbu + has: 1.0.3 + is-core-module: 2.10.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.5 + resolve: 1.22.1 + tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + /eslint-plugin-import/2.26.0_oqagwj4pgbbpoeodu52b4a34xi: resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} @@ -978,6 +1106,23 @@ packages: semver: 6.3.0 dev: true + /eslint-plugin-prettier/4.2.1_i2cojdczqdiurzgttlwdgf764e: + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.22.0 + eslint-config-prettier: 8.5.0_eslint@8.22.0 + prettier: 2.7.1 + prettier-linter-helpers: 1.0.0 + dev: true + /eslint-plugin-react-hooks/4.6.0_eslint@8.22.0: resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} @@ -1123,6 +1268,10 @@ packages: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true + /fast-diff/1.2.0: + resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} + dev: true + /fast-glob/3.2.11: resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} engines: {node: '>=8.6.0'} @@ -1931,6 +2080,19 @@ packages: engines: {node: '>= 0.8.0'} dev: true + /prettier-linter-helpers/1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.2.0 + dev: true + + /prettier/2.7.1: + resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + /prop-types/15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: diff --git a/src/components/bookmarks/item.jsx b/src/components/bookmarks/item.jsx index 380699bb..560bcb1a 100644 --- a/src/components/bookmarks/item.jsx +++ b/src/components/bookmarks/item.jsx @@ -2,20 +2,22 @@ export default function Item({ bookmark }) { const { hostname } = new URL(bookmark.href); return ( -
  • { - window.open(bookmark.href, "_blank").focus(); - }} - key={bookmark.name} - className="mb-3 cursor-pointer flex rounded-md font-medium text-theme-700 hover:text-theme-800 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-theme-900/10 dark:shadow-theme-900/50 bg-white/50 hover:bg-theme-300/10 dark:bg-white/5 dark:hover:bg-white/10" - > -
    - {bookmark.abbr} -
    -
    -
    {bookmark.name}
    -
    {hostname}
    -
    +
  • +
  • ); } diff --git a/src/components/bookmarks/list.jsx b/src/components/bookmarks/list.jsx index 2c080e02..3b3774c9 100644 --- a/src/components/bookmarks/list.jsx +++ b/src/components/bookmarks/list.jsx @@ -2,7 +2,7 @@ import Item from "components/bookmarks/item"; export default function List({ bookmarks }) { return ( -