From ee7e8fab615c6d7d473f85fd95f251070ceb3571 Mon Sep 17 00:00:00 2001 From: Matheus Vellone Date: Fri, 28 Mar 2025 20:29:23 -0300 Subject: [PATCH 01/21] Fix: support shvl on customapi dynamic list target (#5081) Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com> --- src/widgets/customapi/component.jsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/widgets/customapi/component.jsx b/src/widgets/customapi/component.jsx index 7624c2f5a..cb3776280 100644 --- a/src/widgets/customapi/component.jsx +++ b/src/widgets/customapi/component.jsx @@ -245,7 +245,15 @@ export default function Component({ service }) { listItems.map((item, index) => { const itemName = shvl.get(item, name, ""); const itemLabel = shvl.get(item, label, ""); - const itemUrl = target ? target.replace(/\{([^}]+)\}/g, (_, key) => item[key] || "") : null; + + const itemUrl = target + ? [...target.matchAll(/\{(.*?)\}/g)] + .map((match) => match[1]) + .reduce((url, targetTemplate) => { + const value = shvl.get(item, targetTemplate, item[targetTemplate]) ?? ""; + return url.replaceAll(`{${targetTemplate}}`, value); + }, target) + : null; const className = "bg-theme-200/50 dark:bg-theme-900/20 rounded-sm m-1 flex-1 flex flex-row items-center justify-between p-1 text-xs"; From 4567427b9cde4c468174b466869dd29f2b039664 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Fri, 28 Mar 2025 16:32:56 -0700 Subject: [PATCH 02/21] Enhancement: add shvl fallback for custom api dynamic list (#5091) --- src/widgets/customapi/component.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/widgets/customapi/component.jsx b/src/widgets/customapi/component.jsx index cb3776280..b651045fd 100644 --- a/src/widgets/customapi/component.jsx +++ b/src/widgets/customapi/component.jsx @@ -243,8 +243,8 @@ export default function Component({ service }) { ) : ( listItems.map((item, index) => { - const itemName = shvl.get(item, name, ""); - const itemLabel = shvl.get(item, label, ""); + const itemName = shvl.get(item, name, item[name]) ?? ""; + const itemLabel = shvl.get(item, label, item[label]) ?? ""; const itemUrl = target ? [...target.matchAll(/\{(.*?)\}/g)] From 30cb893354883a33b67588693e74f296bd02604c Mon Sep 17 00:00:00 2001 From: Chris <67816022+vhsdream@users.noreply.github.com> Date: Sat, 29 Mar 2025 22:49:53 -0400 Subject: [PATCH 03/21] Fix: remove unneeded import from Hoarder widget.js (#5097) --- src/widgets/hoarder/widget.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/widgets/hoarder/widget.js b/src/widgets/hoarder/widget.js index 8a3cfef04..b005b04f6 100644 --- a/src/widgets/hoarder/widget.js +++ b/src/widgets/hoarder/widget.js @@ -1,5 +1,4 @@ import credentialedProxyHandler from "utils/proxy/handlers/credentialed"; -import { asJson } from "utils/proxy/api-helpers"; const widget = { api: `{url}/api/v1/{endpoint}`, From 954ab544931658dfcab1540382b7d241e5e907b5 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sun, 30 Mar 2025 08:52:23 -0700 Subject: [PATCH 04/21] Speed up CI: Skip unnecessary build steps, optimize caching etc (#5098) --- .dockerignore | 2 +- .github/workflows/docker-publish.yml | 131 ++++++++++++++------------- Dockerfile | 72 +++++++-------- 3 files changed, 104 insertions(+), 101 deletions(-) diff --git a/.dockerignore b/.dockerignore index edbf85256..698137cb6 100644 --- a/.dockerignore +++ b/.dockerignore @@ -16,11 +16,11 @@ **/compose* **/Dockerfile* **/node_modules +!.next/standalone/node_modules **/npm-debug.log **/obj **/secrets.dev.yaml **/values.dev.yaml -**/.next README.md config/ k3d/ diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index c7d36f33b..afb7fca43 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -1,9 +1,4 @@ -name: Docker - -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. +name: Docker CI on: schedule: @@ -13,7 +8,6 @@ on: - main - feature/** - dev - # Publish semver tags as releases. tags: [ 'v*.*.*' ] paths-ignore: - 'docs/**' @@ -26,89 +20,56 @@ on: merge_group: env: - # github.repository as / IMAGE_NAME: ${{ github.repository }} - jobs: pre-commit: name: Linting Checks runs-on: ubuntu-22.04 steps: - - - name: Checkout repository + - name: Checkout repository uses: actions/checkout@v4 - - - name: Install python + + - name: Install python uses: actions/setup-python@v5 with: python-version: 3.x - - - name: Check files + + - name: Check files uses: pre-commit/action@v3.0.1 - - - name: Install pnpm + + - name: Install pnpm uses: pnpm/action-setup@v4 with: version: 10 run_install: false - - - name: Install Node.js + + - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: 'pnpm' - - - name: Install dependencies + + - name: Install dependencies run: pnpm install - - - name: Lint frontend + + - name: Lint frontend run: pnpm run lint build: name: Docker Build & Push - if: github.repository == 'gethomepage/homepage' + if: github.repository == 'gethomepage/homepage' runs-on: self-hosted - needs: - - pre-commit + needs: [ pre-commit ] permissions: contents: read packages: write - # This is used to complete the identity challenge - # with sigstore/fulcio when running outside of PRs. id-token: write steps: - name: Checkout repository uses: actions/checkout@v4 - # Login to Docker Registry - # https://github.com/docker/login-action - - name: Log into registry ${{ env.REGISTRY }} - if: github.event_name != 'pull_request' - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Login to Docker Hub - if: github.event_name != 'pull_request' - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - # Setup QEMU - # https://github.com/marketplace/actions/docker-setup-buildx#with-qemu - - name: Setup QEMU - uses: docker/setup-qemu-action@v3.6.0 - - # Workaround: https://github.com/docker/build-push-action/issues/461 - - name: Setup Docker buildx - uses: docker/setup-buildx-action@v3 - - # Extract metadata (tags, labels) for Docker - # https://github.com/docker/metadata-action - name: Extract Docker metadata id: meta uses: docker/metadata-action@v5 @@ -119,8 +80,57 @@ jobs: flavor: | latest=auto - # Build and push Docker image with Buildx (don't push on PR) - # https://github.com/docker/build-push-action + - name: Next.js build cache + uses: actions/cache@v4 + with: + path: .next/cache + key: nextjs-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('**/*.js', '**/*.jsx') }} + restore-keys: | + nextjs-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }} + + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: 10 + run_install: false + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install + + - name: Build app + run: | + NEXT_PUBLIC_BUILDTIME="${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }}" \ + NEXT_PUBLIC_VERSION="${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}" \ + NEXT_PUBLIC_REVISION="${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}" \ + pnpm run build + + - name: Log into registry ${{ env.REGISTRY }} + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Login to Docker Hub + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Setup QEMU + uses: docker/setup-qemu-action@v3.6.0 + + - name: Setup Docker buildx + uses: docker/setup-buildx-action@v3 + - name: Build and push Docker image id: build-and-push uses: docker/build-push-action@v6 @@ -130,18 +140,15 @@ jobs: tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | + CI=true BUILDTIME=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }} VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }} REVISION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }} - # https://github.com/docker/setup-qemu-action#about - # platforms: linux/amd64,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6 platforms: linux/amd64,linux/arm64 cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max - # Temp fix - # https://github.com/docker/build-push-action/issues/252 - # https://github.com/moby/buildkit/issues/1896 + # https://github.com/docker/build-push-action/issues/252 / https://github.com/moby/buildkit/issues/1896 - name: Move cache run: | rm -rf /tmp/.buildx-cache diff --git a/Dockerfile b/Dockerfile index 7963407c3..ec59c6b01 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,67 +1,63 @@ -# Install dependencies only when needed -FROM docker.io/node:22-alpine AS deps - -WORKDIR /app - -COPY --link package.json pnpm-lock.yaml* ./ - -SHELL ["/bin/ash", "-xeo", "pipefail", "-c"] -RUN apk add --no-cache libc6-compat \ - && apk add --no-cache --virtual .gyp python3 make g++ \ - && npm install -g pnpm - -RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store pnpm fetch | grep -v "cross-device link not permitted\|Falling back to copying packages from store" - -RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store pnpm install -r --offline - -# Rebuild the source code only when needed -FROM docker.io/node:22-alpine AS builder +# ========================= +# Builder Stage +# ========================= +FROM node:22-slim AS builder WORKDIR /app +# Setup RUN mkdir config +COPY . . +ARG CI ARG BUILDTIME ARG VERSION ARG REVISION +ENV CI=$CI -COPY --link --from=deps /app/node_modules ./node_modules/ -COPY . . +# Install and build only outside CI +RUN if [ "$CI" != "true" ]; then \ + corepack enable && corepack prepare pnpm@latest --activate && \ + pnpm install --frozen-lockfile --prefer-offline && \ + NEXT_TELEMETRY_DISABLED=1 \ + NEXT_PUBLIC_BUILDTIME=$BUILDTIME \ + NEXT_PUBLIC_VERSION=$VERSION \ + NEXT_PUBLIC_REVISION=$REVISION \ + pnpm run build; \ + else \ + echo "✅ Using prebuilt app from CI context"; \ + fi -SHELL ["/bin/ash", "-xeo", "pipefail", "-c"] -RUN npm install -g pnpm \ - && pnpm run telemetry \ - && NEXT_PUBLIC_BUILDTIME=$BUILDTIME NEXT_PUBLIC_VERSION=$VERSION NEXT_PUBLIC_REVISION=$REVISION pnpm run build - -# Production image, copy all the files and run next -FROM docker.io/node:22-alpine AS runner -LABEL org.opencontainers.image.title "Homepage" -LABEL org.opencontainers.image.description "A self-hosted services landing page, with docker and service integrations." +# ========================= +# Runtime Stage +# ========================= +FROM node:22-alpine AS runner +LABEL org.opencontainers.image.title="Homepage" +LABEL org.opencontainers.image.description="A self-hosted services landing page, with docker and service integrations." LABEL org.opencontainers.image.url="https://github.com/gethomepage/homepage" LABEL org.opencontainers.image.documentation='https://github.com/gethomepage/homepage/wiki' LABEL org.opencontainers.image.source='https://github.com/gethomepage/homepage' LABEL org.opencontainers.image.licenses='Apache-2.0' -ENV NODE_ENV=production - +# Setup WORKDIR /app -# Copy files from context (this allows the files to copy before the builder stage is done). -COPY --link --chown=1000:1000 package.json next.config.js ./ +# Copy some files from context COPY --link --chown=1000:1000 /public ./public/ - -# Copy files from builder -COPY --link --from=builder --chown=1000:1000 /app/.next/standalone ./ -COPY --link --from=builder --chown=1000:1000 /app/.next/static/ ./.next/static/ COPY --link --chmod=755 docker-entrypoint.sh /usr/local/bin/ +# Copy only necessary files from the build stage +COPY --link --from=builder --chown=1000:1000 /app/.next/standalone/ ./ +COPY --link --from=builder --chown=1000:1000 /app/.next/static/ ./.next/static + RUN apk add --no-cache su-exec +ENV NODE_ENV=production ENV HOSTNAME=0.0.0.0 ENV PORT=3000 EXPOSE $PORT HEALTHCHECK --interval=10s --timeout=3s --start-period=20s \ - CMD wget --no-verbose --tries=1 --spider --no-check-certificate http://127.0.0.1:$PORT/api/healthcheck || exit 1 + CMD wget --no-verbose --tries=1 --spider http://127.0.0.1:$PORT/api/healthcheck || exit 1 ENTRYPOINT ["docker-entrypoint.sh"] CMD ["node", "server.js"] From eda06965fa55709bb7dbbc8bca1d2616d7f36b51 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sun, 30 Mar 2025 21:40:03 -0700 Subject: [PATCH 05/21] Chore: add organize imports to pre-commit (#5104) --- .pre-commit-config.yaml | 7 ++-- .prettierrc | 1 - .prettierrc.js | 5 +++ next-i18next.config.js | 4 +-- package.json | 1 + pnpm-lock.yaml | 26 +++++++++++--- src/components/bookmarks/group.jsx | 8 ++--- src/components/bookmarks/item.jsx | 4 +-- src/components/favicon.jsx | 2 +- src/components/quicklaunch.jsx | 6 ++-- src/components/resolvedicon.jsx | 2 +- src/components/services/dropdown.jsx | 4 +-- src/components/services/group.jsx | 8 ++--- src/components/services/item.jsx | 10 +++--- src/components/services/kubernetes-status.jsx | 2 +- src/components/services/widget.jsx | 2 +- src/components/services/widget/block.jsx | 2 +- src/components/tab.jsx | 2 +- src/components/toggles/color.jsx | 4 +-- src/components/version.jsx | 4 +-- src/components/widgets/datetime/datetime.jsx | 2 +- src/components/widgets/glances/glances.jsx | 6 ++-- .../widgets/kubernetes/kubernetes.jsx | 4 +-- src/components/widgets/kubernetes/node.jsx | 2 +- src/components/widgets/longhorn/longhorn.jsx | 2 +- .../widgets/openmeteo/openmeteo.jsx | 14 ++++---- .../widgets/openweathermap/weather.jsx | 12 +++---- src/components/widgets/resources/cpu.jsx | 6 ++-- src/components/widgets/resources/cputemp.jsx | 6 ++-- src/components/widgets/resources/disk.jsx | 6 ++-- src/components/widgets/resources/memory.jsx | 6 ++-- src/components/widgets/resources/network.jsx | 6 ++-- .../widgets/resources/resources.jsx | 6 ++-- src/components/widgets/resources/uptime.jsx | 6 ++-- src/components/widgets/search/search.jsx | 12 +++---- src/components/widgets/stocks/stocks.jsx | 8 ++--- .../widgets/unifi_console/unifi_console.jsx | 8 ++--- src/components/widgets/weather/weather.jsx | 14 ++++---- src/components/widgets/widget.jsx | 2 +- src/components/widgets/widget/container.jsx | 4 +-- .../widgets/widget/container_button.jsx | 2 +- .../widgets/widget/container_form.jsx | 2 +- .../widgets/widget/container_link.jsx | 2 +- src/components/widgets/widget/resources.jsx | 2 +- src/pages/_app.jsx | 6 ++-- src/pages/_document.jsx | 2 +- src/pages/api/config/[path].js | 2 +- src/pages/api/hash.js | 2 +- src/pages/api/releases.js | 2 +- src/pages/api/search/searchSuggestion.js | 2 +- src/pages/api/services/proxy.js | 10 +++--- src/pages/api/widgets/glances.js | 4 +-- src/pages/api/widgets/longhorn.js | 4 +-- src/pages/api/widgets/openweathermap.js | 2 +- src/pages/api/widgets/stocks.js | 2 +- src/pages/api/widgets/weather.js | 2 +- src/pages/index.jsx | 36 +++++++++---------- src/utils/config/api-response.js | 6 ++-- src/utils/config/config.js | 4 +-- src/utils/config/docker.js | 2 +- src/utils/config/kubernetes.js | 4 +-- src/utils/config/service-helpers.js | 6 ++-- src/utils/contexts/color.jsx | 2 +- src/utils/contexts/settings.jsx | 2 +- src/utils/contexts/tab.jsx | 2 +- src/utils/contexts/theme.jsx | 2 +- src/utils/hooks/window-focus.js | 2 +- src/utils/kubernetes/export.js | 6 ++-- src/utils/kubernetes/ingress-list.js | 2 +- src/utils/kubernetes/resource-helpers.js | 6 ++-- src/utils/kubernetes/traefik-list.js | 2 +- src/utils/proxy/handlers/credentialed.js | 10 +++--- src/utils/proxy/handlers/generic.js | 6 ++-- src/utils/proxy/handlers/jsonrpc.js | 4 +-- src/utils/proxy/handlers/synology.js | 2 +- src/utils/proxy/http.js | 2 +- src/utils/proxy/validate-widget-data.js | 2 +- src/widgets/adguard/component.jsx | 4 +-- src/widgets/apcups/component.jsx | 2 +- src/widgets/apcups/proxy.js | 2 +- src/widgets/argocd/component.jsx | 2 +- src/widgets/atsumeru/component.jsx | 4 +-- src/widgets/audiobookshelf/component.jsx | 4 +-- src/widgets/audiobookshelf/proxy.js | 4 +-- src/widgets/authentik/component.jsx | 4 +-- src/widgets/autobrr/component.jsx | 4 +-- src/widgets/azuredevops/component.jsx | 4 +-- src/widgets/bazarr/component.jsx | 4 +-- src/widgets/bazarr/widget.js | 2 +- src/widgets/beszel/component.jsx | 4 +-- src/widgets/beszel/proxy.js | 2 +- src/widgets/caddy/component.jsx | 4 +-- src/widgets/calendar/agenda.jsx | 2 +- src/widgets/calendar/component.jsx | 8 ++--- src/widgets/calendar/event.jsx | 6 ++-- src/widgets/calendar/integrations/ical.jsx | 6 ++-- src/widgets/calendar/integrations/lidarr.jsx | 2 +- src/widgets/calendar/integrations/radarr.jsx | 4 +-- src/widgets/calendar/integrations/readarr.jsx | 2 +- src/widgets/calendar/integrations/sonarr.jsx | 2 +- src/widgets/calendar/monthly.jsx | 4 +-- src/widgets/calendar/proxy.js | 2 +- src/widgets/calibreweb/component.jsx | 4 +-- src/widgets/changedetectionio/component.jsx | 4 +-- src/widgets/channelsdvrserver/component.jsx | 4 +-- src/widgets/cloudflared/component.jsx | 2 +- src/widgets/coinmarketcap/component.jsx | 8 ++--- src/widgets/crowdsec/component.jsx | 4 +-- src/widgets/crowdsec/proxy.js | 4 +-- src/widgets/customapi/component.jsx | 8 ++--- src/widgets/deluge/component.jsx | 4 +-- src/widgets/deluge/proxy.js | 4 +-- src/widgets/develancacheui/component.jsx | 4 +-- src/widgets/diskstation/component.jsx | 4 +-- src/widgets/docker/component.jsx | 8 ++--- src/widgets/downloadstation/component.jsx | 4 +-- src/widgets/emby/component.jsx | 6 ++-- src/widgets/esphome/component.jsx | 2 +- src/widgets/evcc/component.jsx | 4 +-- src/widgets/fileflows/component.jsx | 4 +-- src/widgets/firefly/component.jsx | 4 +-- src/widgets/flood/component.jsx | 4 +-- src/widgets/flood/proxy.js | 4 +-- src/widgets/freshrss/component.jsx | 4 +-- src/widgets/freshrss/proxy.js | 4 +-- src/widgets/frigate/component.jsx | 4 +-- src/widgets/fritzbox/component.jsx | 4 +-- src/widgets/fritzbox/proxy.js | 2 +- src/widgets/gamedig/component.jsx | 4 +-- src/widgets/gamedig/proxy.js | 2 +- src/widgets/gatus/component.jsx | 4 +-- src/widgets/ghostfolio/component.jsx | 4 +-- src/widgets/gitea/component.jsx | 2 +- src/widgets/gitlab/component.jsx | 4 +-- src/widgets/glances/component.jsx | 12 +++---- src/widgets/glances/components/chart.jsx | 2 +- src/widgets/glances/components/chart_dual.jsx | 2 +- src/widgets/glances/components/container.jsx | 2 +- src/widgets/glances/metrics/containers.jsx | 4 +-- src/widgets/glances/metrics/cpu.jsx | 6 ++-- src/widgets/glances/metrics/disk.jsx | 6 ++-- src/widgets/glances/metrics/fs.jsx | 2 +- src/widgets/glances/metrics/gpu.jsx | 6 ++-- src/widgets/glances/metrics/info.jsx | 2 +- src/widgets/glances/metrics/memory.jsx | 6 ++-- src/widgets/glances/metrics/net.jsx | 6 ++-- src/widgets/glances/metrics/process.jsx | 4 +-- src/widgets/glances/metrics/sensor.jsx | 6 ++-- src/widgets/gluetun/component.jsx | 2 +- src/widgets/gotify/component.jsx | 2 +- src/widgets/grafana/component.jsx | 4 +-- src/widgets/hdhomerun/component.jsx | 2 +- src/widgets/headscale/component.jsx | 4 +-- src/widgets/healthchecks/component.jsx | 2 +- src/widgets/hoarder/component.jsx | 4 +-- src/widgets/homeassistant/component.jsx | 2 +- src/widgets/homeassistant/proxy.js | 2 +- src/widgets/homebox/component.jsx | 4 +-- src/widgets/homebox/proxy.js | 4 +-- src/widgets/homebridge/component.jsx | 4 +-- src/widgets/homebridge/proxy.js | 4 +-- src/widgets/iframe/component.jsx | 2 +- src/widgets/immich/component.jsx | 4 +-- src/widgets/jackett/component.jsx | 4 +-- src/widgets/jackett/proxy.js | 4 +-- src/widgets/jdownloader/component.jsx | 2 +- src/widgets/jdownloader/proxy.js | 4 +-- src/widgets/jellyseerr/component.jsx | 2 +- src/widgets/kavita/component.jsx | 4 +-- src/widgets/kavita/proxy.js | 4 +-- src/widgets/komga/component.jsx | 4 +-- src/widgets/komga/proxy.js | 2 +- src/widgets/kopia/component.jsx | 4 +-- src/widgets/kubernetes/component.jsx | 6 ++-- src/widgets/lidarr/component.jsx | 4 +-- src/widgets/linkwarden/component.jsx | 4 +-- src/widgets/lubelogger/component.jsx | 4 +-- src/widgets/mailcow/component.jsx | 4 +-- src/widgets/mastodon/component.jsx | 4 +-- src/widgets/mealie/component.jsx | 4 +-- src/widgets/medusa/component.jsx | 4 +-- src/widgets/mikrotik/component.jsx | 4 +-- src/widgets/minecraft/component.jsx | 4 +-- src/widgets/minecraft/proxy.js | 2 +- src/widgets/miniflux/component.jsx | 4 +-- src/widgets/moonraker/component.jsx | 4 +-- src/widgets/mylar/component.jsx | 4 +-- src/widgets/myspeed/component.jsx | 4 +-- src/widgets/navidrome/component.jsx | 2 +- src/widgets/netalertx/component.jsx | 4 +-- src/widgets/netdata/component.jsx | 4 +-- src/widgets/nextcloud/component.jsx | 4 +-- src/widgets/nextdns/component.jsx | 4 +-- src/widgets/npm/component.jsx | 2 +- src/widgets/npm/proxy.js | 2 +- src/widgets/nzbget/component.jsx | 4 +-- src/widgets/octoprint/component.jsx | 2 +- src/widgets/omada/component.jsx | 4 +-- src/widgets/omada/proxy.js | 2 +- src/widgets/ombi/component.jsx | 2 +- src/widgets/opendtu/component.jsx | 4 +-- src/widgets/openmediavault/component.jsx | 2 +- .../methods/downloader_get_downloadlist.jsx | 2 +- .../methods/services_get_status.jsx | 2 +- .../openmediavault/methods/smart_get_list.jsx | 2 +- src/widgets/openmediavault/proxy.js | 6 ++-- src/widgets/openwrt/methods/interface.jsx | 4 +-- src/widgets/openwrt/methods/system.jsx | 4 +-- src/widgets/openwrt/proxy.js | 4 +-- src/widgets/opnsense/component.jsx | 4 +-- src/widgets/overseerr/component.jsx | 4 +-- src/widgets/paperlessngx/component.jsx | 2 +- src/widgets/peanut/component.jsx | 4 +-- src/widgets/pfsense/component.jsx | 4 +-- src/widgets/photoprism/component.jsx | 4 +-- src/widgets/photoprism/proxy.js | 4 +-- src/widgets/pihole/component.jsx | 4 +-- src/widgets/pihole/proxy.js | 4 +-- src/widgets/plantit/component.jsx | 4 +-- src/widgets/plex/component.jsx | 2 +- src/widgets/plex/proxy.js | 4 +-- src/widgets/portainer/component.jsx | 2 +- src/widgets/prometheus/component.jsx | 4 +-- src/widgets/prometheusmetric/component.jsx | 4 +-- src/widgets/prowlarr/component.jsx | 4 +-- src/widgets/proxmox/component.jsx | 4 +-- src/widgets/proxmoxbackupserver/component.jsx | 4 +-- src/widgets/pterodactyl/component.jsx | 2 +- src/widgets/pyload/component.jsx | 4 +-- src/widgets/pyload/proxy.js | 4 +-- src/widgets/qbittorrent/component.jsx | 4 +-- src/widgets/qbittorrent/proxy.js | 4 +-- src/widgets/qnap/component.jsx | 4 +-- src/widgets/qnap/proxy.js | 4 +-- src/widgets/radarr/component.jsx | 4 +-- src/widgets/radarr/widget.js | 2 +- src/widgets/readarr/component.jsx | 4 +-- src/widgets/readarr/widget.js | 2 +- src/widgets/romm/component.jsx | 4 +-- src/widgets/rutorrent/component.jsx | 4 +-- src/widgets/rutorrent/proxy.js | 4 +-- src/widgets/sabnzbd/component.jsx | 4 +-- src/widgets/scrutiny/component.jsx | 2 +- src/widgets/slskd/component.jsx | 4 +-- src/widgets/slskd/widget.js | 1 - src/widgets/sonarr/component.jsx | 4 +-- src/widgets/sonarr/widget.js | 2 +- src/widgets/speedtest/component.jsx | 4 +-- src/widgets/spoolman/component.jsx | 4 +-- src/widgets/stash/component.jsx | 4 +-- src/widgets/stocks/component.jsx | 4 +-- src/widgets/strelaysrv/component.jsx | 4 +-- src/widgets/suwayomi/component.jsx | 4 +-- src/widgets/suwayomi/proxy.js | 4 +-- src/widgets/swagdashboard/component.jsx | 2 +- src/widgets/tailscale/component.jsx | 4 +-- src/widgets/tandoor/component.jsx | 2 +- src/widgets/tautulli/component.jsx | 6 ++-- src/widgets/tdarr/component.jsx | 4 +-- src/widgets/tdarr/proxy.js | 4 +-- src/widgets/technitium/component.jsx | 4 +-- src/widgets/technitium/widget.js | 2 +- src/widgets/traefik/component.jsx | 2 +- src/widgets/transmission/component.jsx | 4 +-- src/widgets/transmission/proxy.js | 4 +-- src/widgets/truenas/component.jsx | 4 +-- src/widgets/truenas/widget.js | 2 +- src/widgets/tubearchivist/component.jsx | 4 +-- src/widgets/unifi/component.jsx | 4 +-- src/widgets/unifi/proxy.js | 6 ++-- src/widgets/unmanic/component.jsx | 6 ++-- src/widgets/unmanic/widget.js | 2 +- src/widgets/uptimekuma/component.jsx | 4 +-- src/widgets/uptimerobot/component.jsx | 4 +-- src/widgets/urbackup/component.jsx | 4 +-- src/widgets/vikunja/component.jsx | 4 +-- src/widgets/vikunja/widget.js | 2 +- src/widgets/watchtower/component.jsx | 4 +-- src/widgets/watchtower/proxy.js | 4 +-- src/widgets/wgeasy/component.jsx | 2 +- src/widgets/whatsupdocker/component.jsx | 2 +- src/widgets/widgets.js | 22 ++++++------ src/widgets/xteve/component.jsx | 4 +-- src/widgets/xteve/proxy.js | 4 +-- src/widgets/zabbix/component.jsx | 4 +-- 285 files changed, 601 insertions(+), 576 deletions(-) delete mode 100644 .prettierrc create mode 100644 .prettierrc.js diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6cc46b478..0b4f56245 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -9,11 +9,14 @@ repos: - id: check-yaml exclude: "(^mkdocs\\.yml$)" - id: check-added-large-files -- repo: https://github.com/pre-commit/mirrors-prettier - rev: 'v3.0.3' +- repo: https://github.com/rbubley/mirrors-prettier + rev: 'v3.3.3' hooks: - id: prettier types_or: - javascript - markdown - jsx + additional_dependencies: + - prettier@3.3.3 + - 'prettier-plugin-organize-imports@4.1.0' diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 0967ef424..000000000 --- a/.prettierrc +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 000000000..b48ef0072 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,5 @@ +const config = { + plugins: [require("prettier-plugin-organize-imports")], +}; + +module.exports = config; diff --git a/next-i18next.config.js b/next-i18next.config.js index a1b5c7b3f..f6968dc35 100644 --- a/next-i18next.config.js +++ b/next-i18next.config.js @@ -131,8 +131,8 @@ module.exports = { ? BIBIT_UNITS : BIT_UNITS : options.binary - ? BIBYTE_UNITS - : BYTE_UNITS; + ? BIBYTE_UNITS + : BYTE_UNITS; if (value === 0) return `0 ${sizes[0]}/s`; diff --git a/package.json b/package.json index 7f0fbdf76..07be3d1d8 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,7 @@ "eslint-plugin-react-hooks": "^5.1.0", "postcss": "^8.5.2", "prettier": "^3.5.2", + "prettier-plugin-organize-imports": "^4.1.0", "tailwind-scrollbar": "^4.0.1", "tailwindcss": "^4.0.9", "typescript": "^5.7.3" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2848e2391..40069cada 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -101,10 +101,6 @@ importers: xml-js: specifier: ^1.6.11 version: 1.6.11 - optionalDependencies: - osx-temperature-sensor: - specifier: ^1.0.8 - version: 1.0.8 devDependencies: '@tailwindcss/forms': specifier: ^0.5.10 @@ -142,6 +138,9 @@ importers: prettier: specifier: ^3.5.2 version: 3.5.2 + prettier-plugin-organize-imports: + specifier: ^4.1.0 + version: 4.1.0(prettier@3.5.2)(typescript@5.7.3) tailwind-scrollbar: specifier: ^4.0.1 version: 4.0.1(react@18.3.1)(tailwindcss@4.0.9) @@ -151,6 +150,10 @@ importers: typescript: specifier: ^5.7.3 version: 5.7.3 + optionalDependencies: + osx-temperature-sensor: + specifier: ^1.0.8 + version: 1.0.8 packages: @@ -2144,6 +2147,16 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} + prettier-plugin-organize-imports@4.1.0: + resolution: {integrity: sha512-5aWRdCgv645xaa58X8lOxzZoiHAldAPChljr/MT0crXVOWTZ+Svl4hIWlz+niYSlO6ikE5UXkN1JrRvIP2ut0A==} + peerDependencies: + prettier: '>=2.0' + typescript: '>=2.9' + vue-tsc: ^2.1.0 + peerDependenciesMeta: + vue-tsc: + optional: true + prettier@3.5.2: resolution: {integrity: sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==} engines: {node: '>=14'} @@ -4883,6 +4896,11 @@ snapshots: dependencies: fast-diff: 1.3.0 + prettier-plugin-organize-imports@4.1.0(prettier@3.5.2)(typescript@5.7.3): + dependencies: + prettier: 3.5.2 + typescript: 5.7.3 + prettier@3.5.2: {} pretty-bytes@6.1.1: {} diff --git a/src/components/bookmarks/group.jsx b/src/components/bookmarks/group.jsx index 726f54e8d..2334dad5a 100644 --- a/src/components/bookmarks/group.jsx +++ b/src/components/bookmarks/group.jsx @@ -1,10 +1,10 @@ -import { useRef, useEffect } from "react"; -import classNames from "classnames"; import { Disclosure, Transition } from "@headlessui/react"; -import { MdKeyboardArrowDown } from "react-icons/md"; -import ErrorBoundary from "components/errorboundry"; +import classNames from "classnames"; import List from "components/bookmarks/list"; +import ErrorBoundary from "components/errorboundry"; import ResolvedIcon from "components/resolvedicon"; +import { useEffect, useRef } from "react"; +import { MdKeyboardArrowDown } from "react-icons/md"; export default function BookmarksGroup({ bookmarks, diff --git a/src/components/bookmarks/item.jsx b/src/components/bookmarks/item.jsx index c9b84eac5..7ea16bbaa 100644 --- a/src/components/bookmarks/item.jsx +++ b/src/components/bookmarks/item.jsx @@ -1,7 +1,7 @@ -import { useContext } from "react"; import classNames from "classnames"; -import { SettingsContext } from "utils/contexts/settings"; import ResolvedIcon from "components/resolvedicon"; +import { useContext } from "react"; +import { SettingsContext } from "utils/contexts/settings"; export default function Item({ bookmark, iconOnly = false }) { const description = bookmark.description ?? new URL(bookmark.href).hostname; diff --git a/src/components/favicon.jsx b/src/components/favicon.jsx index 8221c799c..8961d655e 100644 --- a/src/components/favicon.jsx +++ b/src/components/favicon.jsx @@ -1,6 +1,6 @@ /* eslint-disable @next/next/no-img-element */ /* eslint-disable jsx-a11y/alt-text */ -import { useRef, useEffect, useContext } from "react"; +import { useContext, useEffect, useRef } from "react"; import { ColorContext } from "utils/contexts/color"; import themes from "utils/styles/themes"; diff --git a/src/components/quicklaunch.jsx b/src/components/quicklaunch.jsx index e1f6bc095..14f0f4fb1 100644 --- a/src/components/quicklaunch.jsx +++ b/src/components/quicklaunch.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "react-i18next"; -import { useEffect, useState, useRef, useCallback, useContext } from "react"; import classNames from "classnames"; +import { useCallback, useContext, useEffect, useRef, useState } from "react"; +import { useTranslation } from "react-i18next"; import useSWR from "swr"; import { SettingsContext } from "utils/contexts/settings"; @@ -53,7 +53,7 @@ export default function QuickLaunch({ servicesAndBookmarks, searchString, setSea const result = results[currentItemIndex]; window.open( result.href, - newWindow ? "_blank" : result.target ?? searchProvider?.target ?? settings.target ?? "_blank", + newWindow ? "_blank" : (result.target ?? searchProvider?.target ?? settings.target ?? "_blank"), "noreferrer", ); } diff --git a/src/components/resolvedicon.jsx b/src/components/resolvedicon.jsx index eb2a5c0d1..77ba91191 100644 --- a/src/components/resolvedicon.jsx +++ b/src/components/resolvedicon.jsx @@ -1,5 +1,5 @@ -import { useContext } from "react"; import Image from "next/image"; +import { useContext } from "react"; import { SettingsContext } from "utils/contexts/settings"; import { ThemeContext } from "utils/contexts/theme"; diff --git a/src/components/services/dropdown.jsx b/src/components/services/dropdown.jsx index 00b8a4295..e8e11d97a 100644 --- a/src/components/services/dropdown.jsx +++ b/src/components/services/dropdown.jsx @@ -1,7 +1,7 @@ -import { Fragment } from "react"; import { Menu, Transition } from "@headlessui/react"; -import { BiCog } from "react-icons/bi"; import classNames from "classnames"; +import { Fragment } from "react"; +import { BiCog } from "react-icons/bi"; export default function Dropdown({ options, value, setValue }) { return ( diff --git a/src/components/services/group.jsx b/src/components/services/group.jsx index 3e6327a44..cad7b5aa3 100644 --- a/src/components/services/group.jsx +++ b/src/components/services/group.jsx @@ -1,9 +1,9 @@ -import { useRef, useEffect } from "react"; -import classNames from "classnames"; import { Disclosure, Transition } from "@headlessui/react"; -import { MdKeyboardArrowDown } from "react-icons/md"; -import List from "components/services/list"; +import classNames from "classnames"; import ResolvedIcon from "components/resolvedicon"; +import List from "components/services/list"; +import { useEffect, useRef } from "react"; +import { MdKeyboardArrowDown } from "react-icons/md"; import { columnMap } from "../../utils/layout/columns"; diff --git a/src/components/services/item.jsx b/src/components/services/item.jsx index 72b0fd50a..8e8516117 100644 --- a/src/components/services/item.jsx +++ b/src/components/services/item.jsx @@ -1,15 +1,15 @@ import classNames from "classnames"; +import ResolvedIcon from "components/resolvedicon"; import { useContext, useState } from "react"; +import { SettingsContext } from "utils/contexts/settings"; import Docker from "widgets/docker/component"; import Kubernetes from "widgets/kubernetes/component"; -import { SettingsContext } from "utils/contexts/settings"; -import ResolvedIcon from "components/resolvedicon"; -import Status from "./status"; -import Widget from "./widget"; +import KubernetesStatus from "./kubernetes-status"; import Ping from "./ping"; import SiteMonitor from "./site-monitor"; -import KubernetesStatus from "./kubernetes-status"; +import Status from "./status"; +import Widget from "./widget"; export default function Item({ service, groupName, useEqualHeights }) { const hasLink = service.href && service.href !== "#"; diff --git a/src/components/services/kubernetes-status.jsx b/src/components/services/kubernetes-status.jsx index a256a2df0..e4ea958d5 100644 --- a/src/components/services/kubernetes-status.jsx +++ b/src/components/services/kubernetes-status.jsx @@ -1,5 +1,5 @@ -import useSWR from "swr"; import { t } from "i18next"; +import useSWR from "swr"; export default function KubernetesStatus({ service, style }) { const podSelectorString = service.podSelector !== undefined ? `podSelector=${service.podSelector}` : ""; diff --git a/src/components/services/widget.jsx b/src/components/services/widget.jsx index bda638a46..6e3a63608 100644 --- a/src/components/services/widget.jsx +++ b/src/components/services/widget.jsx @@ -1,5 +1,5 @@ -import { useTranslation } from "next-i18next"; import ErrorBoundary from "components/errorboundry"; +import { useTranslation } from "next-i18next"; import components from "widgets/components"; diff --git a/src/components/services/widget/block.jsx b/src/components/services/widget/block.jsx index 8cd74aad4..720140cce 100644 --- a/src/components/services/widget/block.jsx +++ b/src/components/services/widget/block.jsx @@ -1,5 +1,5 @@ -import { useTranslation } from "next-i18next"; import classNames from "classnames"; +import { useTranslation } from "next-i18next"; export default function Block({ value, label }) { const { t } = useTranslation(); diff --git a/src/components/tab.jsx b/src/components/tab.jsx index 2c3984c93..dc183fe4a 100644 --- a/src/components/tab.jsx +++ b/src/components/tab.jsx @@ -1,5 +1,5 @@ -import { useContext } from "react"; import classNames from "classnames"; +import { useContext } from "react"; import { TabContext } from "utils/contexts/tab"; function slugify(tabName) { diff --git a/src/components/toggles/color.jsx b/src/components/toggles/color.jsx index 60cc8de8e..7ea700ab3 100644 --- a/src/components/toggles/color.jsx +++ b/src/components/toggles/color.jsx @@ -1,7 +1,7 @@ -import { useContext, Fragment } from "react"; -import { IoColorPalette } from "react-icons/io5"; import { Popover, Transition } from "@headlessui/react"; import classNames from "classnames"; +import { Fragment, useContext } from "react"; +import { IoColorPalette } from "react-icons/io5"; import { ColorContext } from "utils/contexts/color"; const colors = [ diff --git a/src/components/version.jsx b/src/components/version.jsx index b8ee1eb86..946fb0a98 100644 --- a/src/components/version.jsx +++ b/src/components/version.jsx @@ -1,8 +1,8 @@ +import { compareVersions, validate } from "compare-versions"; import cache from "memory-cache"; import { useTranslation } from "next-i18next"; -import useSWR from "swr"; -import { compareVersions, validate } from "compare-versions"; import { MdNewReleases } from "react-icons/md"; +import useSWR from "swr"; const LATEST_RELEASE_CACHE_KEY = "latestRelease"; diff --git a/src/components/widgets/datetime/datetime.jsx b/src/components/widgets/datetime/datetime.jsx index a7aec5dab..b59cf8099 100644 --- a/src/components/widgets/datetime/datetime.jsx +++ b/src/components/widgets/datetime/datetime.jsx @@ -1,5 +1,5 @@ -import { useState, useEffect } from "react"; import { useTranslation } from "next-i18next"; +import { useEffect, useState } from "react"; import Container from "../widget/container"; import Raw from "../widget/raw"; diff --git a/src/components/widgets/glances/glances.jsx b/src/components/widgets/glances/glances.jsx index 0803b88cd..7f7728085 100644 --- a/src/components/widgets/glances/glances.jsx +++ b/src/components/widgets/glances/glances.jsx @@ -1,9 +1,9 @@ -import useSWR from "swr"; +import classNames from "classnames"; +import { useTranslation } from "next-i18next"; import { useContext } from "react"; import { FaMemory, FaRegClock, FaThermometerHalf } from "react-icons/fa"; import { FiCpu, FiHardDrive } from "react-icons/fi"; -import { useTranslation } from "next-i18next"; -import classNames from "classnames"; +import useSWR from "swr"; import { SettingsContext } from "utils/contexts/settings"; import Error from "../widget/error"; diff --git a/src/components/widgets/kubernetes/kubernetes.jsx b/src/components/widgets/kubernetes/kubernetes.jsx index f7b101c7d..50b173bca 100644 --- a/src/components/widgets/kubernetes/kubernetes.jsx +++ b/src/components/widgets/kubernetes/kubernetes.jsx @@ -1,8 +1,8 @@ -import useSWR from "swr"; import { useTranslation } from "next-i18next"; +import useSWR from "swr"; -import Error from "../widget/error"; import Container from "../widget/container"; +import Error from "../widget/error"; import Raw from "../widget/raw"; import Node from "./node"; diff --git a/src/components/widgets/kubernetes/node.jsx b/src/components/widgets/kubernetes/node.jsx index ba8f8b770..aebb40f24 100644 --- a/src/components/widgets/kubernetes/node.jsx +++ b/src/components/widgets/kubernetes/node.jsx @@ -1,7 +1,7 @@ +import { useTranslation } from "next-i18next"; import { FaMemory } from "react-icons/fa"; import { FiAlertTriangle, FiCpu, FiServer } from "react-icons/fi"; import { SiKubernetes } from "react-icons/si"; -import { useTranslation } from "next-i18next"; import UsageBar from "../resources/usage-bar"; diff --git a/src/components/widgets/longhorn/longhorn.jsx b/src/components/widgets/longhorn/longhorn.jsx index 22047e2c6..235c77d05 100644 --- a/src/components/widgets/longhorn/longhorn.jsx +++ b/src/components/widgets/longhorn/longhorn.jsx @@ -1,7 +1,7 @@ import useSWR from "swr"; -import Error from "../widget/error"; import Container from "../widget/container"; +import Error from "../widget/error"; import Raw from "../widget/raw"; import Node from "./node"; diff --git a/src/components/widgets/openmeteo/openmeteo.jsx b/src/components/widgets/openmeteo/openmeteo.jsx index 4d3e7e89b..a46f53abd 100644 --- a/src/components/widgets/openmeteo/openmeteo.jsx +++ b/src/components/widgets/openmeteo/openmeteo.jsx @@ -1,16 +1,16 @@ -import useSWR from "swr"; -import { useState } from "react"; -import { WiCloudDown } from "react-icons/wi"; -import { MdLocationDisabled, MdLocationSearching } from "react-icons/md"; import { useTranslation } from "next-i18next"; +import { useState } from "react"; +import { MdLocationDisabled, MdLocationSearching } from "react-icons/md"; +import { WiCloudDown } from "react-icons/wi"; +import useSWR from "swr"; -import Error from "../widget/error"; +import mapIcon from "../../../utils/weather/openmeteo-condition-map"; import Container from "../widget/container"; import ContainerButton from "../widget/container_button"; -import WidgetIcon from "../widget/widget_icon"; +import Error from "../widget/error"; import PrimaryText from "../widget/primary_text"; import SecondaryText from "../widget/secondary_text"; -import mapIcon from "../../../utils/weather/openmeteo-condition-map"; +import WidgetIcon from "../widget/widget_icon"; function Widget({ options }) { const { t } = useTranslation(); diff --git a/src/components/widgets/openweathermap/weather.jsx b/src/components/widgets/openweathermap/weather.jsx index df0280e3e..3336ed4fc 100644 --- a/src/components/widgets/openweathermap/weather.jsx +++ b/src/components/widgets/openweathermap/weather.jsx @@ -1,16 +1,16 @@ -import useSWR from "swr"; -import { useState } from "react"; -import { WiCloudDown } from "react-icons/wi"; -import { MdLocationDisabled, MdLocationSearching } from "react-icons/md"; import { useTranslation } from "next-i18next"; +import { useState } from "react"; +import { MdLocationDisabled, MdLocationSearching } from "react-icons/md"; +import { WiCloudDown } from "react-icons/wi"; +import useSWR from "swr"; -import Error from "../widget/error"; +import mapIcon from "../../../utils/weather/owm-condition-map"; import Container from "../widget/container"; import ContainerButton from "../widget/container_button"; +import Error from "../widget/error"; import PrimaryText from "../widget/primary_text"; import SecondaryText from "../widget/secondary_text"; import WidgetIcon from "../widget/widget_icon"; -import mapIcon from "../../../utils/weather/owm-condition-map"; function Widget({ options }) { const { t, i18n } = useTranslation(); diff --git a/src/components/widgets/resources/cpu.jsx b/src/components/widgets/resources/cpu.jsx index 1963637d7..1bea4af94 100644 --- a/src/components/widgets/resources/cpu.jsx +++ b/src/components/widgets/resources/cpu.jsx @@ -1,9 +1,9 @@ -import useSWR from "swr"; -import { FiCpu } from "react-icons/fi"; import { useTranslation } from "next-i18next"; +import { FiCpu } from "react-icons/fi"; +import useSWR from "swr"; -import Resource from "../widget/resource"; import Error from "../widget/error"; +import Resource from "../widget/resource"; export default function Cpu({ expanded, refresh = 1500 }) { const { t } = useTranslation(); diff --git a/src/components/widgets/resources/cputemp.jsx b/src/components/widgets/resources/cputemp.jsx index ef994c658..248cd396b 100644 --- a/src/components/widgets/resources/cputemp.jsx +++ b/src/components/widgets/resources/cputemp.jsx @@ -1,9 +1,9 @@ -import useSWR from "swr"; -import { FaThermometerHalf } from "react-icons/fa"; import { useTranslation } from "next-i18next"; +import { FaThermometerHalf } from "react-icons/fa"; +import useSWR from "swr"; -import Resource from "../widget/resource"; import Error from "../widget/error"; +import Resource from "../widget/resource"; function convertToFahrenheit(t) { return (t * 9) / 5 + 32; diff --git a/src/components/widgets/resources/disk.jsx b/src/components/widgets/resources/disk.jsx index 15da77806..d5706ba5a 100644 --- a/src/components/widgets/resources/disk.jsx +++ b/src/components/widgets/resources/disk.jsx @@ -1,9 +1,9 @@ -import useSWR from "swr"; -import { FiHardDrive } from "react-icons/fi"; import { useTranslation } from "next-i18next"; +import { FiHardDrive } from "react-icons/fi"; +import useSWR from "swr"; -import Resource from "../widget/resource"; import Error from "../widget/error"; +import Resource from "../widget/resource"; export default function Disk({ options, expanded, diskUnits, refresh = 1500 }) { const { t } = useTranslation(); diff --git a/src/components/widgets/resources/memory.jsx b/src/components/widgets/resources/memory.jsx index 155b7ecb4..a8c82cbf3 100644 --- a/src/components/widgets/resources/memory.jsx +++ b/src/components/widgets/resources/memory.jsx @@ -1,9 +1,9 @@ -import useSWR from "swr"; -import { FaMemory } from "react-icons/fa"; import { useTranslation } from "next-i18next"; +import { FaMemory } from "react-icons/fa"; +import useSWR from "swr"; -import Resource from "../widget/resource"; import Error from "../widget/error"; +import Resource from "../widget/resource"; export default function Memory({ expanded, refresh = 1500 }) { const { t } = useTranslation(); diff --git a/src/components/widgets/resources/network.jsx b/src/components/widgets/resources/network.jsx index a2a3acac5..482860301 100644 --- a/src/components/widgets/resources/network.jsx +++ b/src/components/widgets/resources/network.jsx @@ -1,9 +1,9 @@ -import useSWR from "swr"; -import { FaNetworkWired } from "react-icons/fa"; import { useTranslation } from "next-i18next"; +import { FaNetworkWired } from "react-icons/fa"; +import useSWR from "swr"; -import Resource from "../widget/resource"; import Error from "../widget/error"; +import Resource from "../widget/resource"; export default function Network({ options, refresh = 1500 }) { const { t } = useTranslation(); diff --git a/src/components/widgets/resources/resources.jsx b/src/components/widgets/resources/resources.jsx index db26caa78..1002f98c5 100644 --- a/src/components/widgets/resources/resources.jsx +++ b/src/components/widgets/resources/resources.jsx @@ -1,12 +1,12 @@ import Container from "../widget/container"; import Raw from "../widget/raw"; -import Disk from "./disk"; import Cpu from "./cpu"; -import Memory from "./memory"; import CpuTemp from "./cputemp"; -import Uptime from "./uptime"; +import Disk from "./disk"; +import Memory from "./memory"; import Network from "./network"; +import Uptime from "./uptime"; export default function Resources({ options }) { const { expanded, units, diskUnits, tempmin, tempmax } = options; diff --git a/src/components/widgets/resources/uptime.jsx b/src/components/widgets/resources/uptime.jsx index 2fac0fcdf..f21634c2b 100644 --- a/src/components/widgets/resources/uptime.jsx +++ b/src/components/widgets/resources/uptime.jsx @@ -1,9 +1,9 @@ -import useSWR from "swr"; -import { FaRegClock } from "react-icons/fa"; import { useTranslation } from "next-i18next"; +import { FaRegClock } from "react-icons/fa"; +import useSWR from "swr"; -import Resource from "../widget/resource"; import Error from "../widget/error"; +import Resource from "../widget/resource"; export default function Uptime({ refresh = 1500 }) { const { t } = useTranslation(); diff --git a/src/components/widgets/search/search.jsx b/src/components/widgets/search/search.jsx index e0564c488..6699a374f 100644 --- a/src/components/widgets/search/search.jsx +++ b/src/components/widgets/search/search.jsx @@ -1,10 +1,10 @@ -import { useState, useEffect, Fragment } from "react"; -import { useTranslation } from "next-i18next"; -import { FiSearch } from "react-icons/fi"; -import { SiDuckduckgo, SiGoogle, SiBaidu, SiBrave } from "react-icons/si"; -import { BiLogoBing } from "react-icons/bi"; -import { Listbox, Transition, Combobox } from "@headlessui/react"; +import { Combobox, Listbox, Transition } from "@headlessui/react"; import classNames from "classnames"; +import { useTranslation } from "next-i18next"; +import { Fragment, useEffect, useState } from "react"; +import { BiLogoBing } from "react-icons/bi"; +import { FiSearch } from "react-icons/fi"; +import { SiBaidu, SiBrave, SiDuckduckgo, SiGoogle } from "react-icons/si"; import ContainerForm from "../widget/container_form"; import Raw from "../widget/raw"; diff --git a/src/components/widgets/stocks/stocks.jsx b/src/components/widgets/stocks/stocks.jsx index 1a9018d38..e66578781 100644 --- a/src/components/widgets/stocks/stocks.jsx +++ b/src/components/widgets/stocks/stocks.jsx @@ -1,13 +1,13 @@ -import useSWR from "swr"; -import { useState } from "react"; import { useTranslation } from "next-i18next"; +import { useState } from "react"; import { FaChartLine } from "react-icons/fa6"; +import useSWR from "swr"; -import Error from "../widget/error"; import Container from "../widget/container"; +import Error from "../widget/error"; import PrimaryText from "../widget/primary_text"; -import WidgetIcon from "../widget/widget_icon"; import Raw from "../widget/raw"; +import WidgetIcon from "../widget/widget_icon"; export default function Widget({ options }) { const { t, i18n } = useTranslation(); diff --git a/src/components/widgets/unifi_console/unifi_console.jsx b/src/components/widgets/unifi_console/unifi_console.jsx index 5295dbb73..09e6952fc 100644 --- a/src/components/widgets/unifi_console/unifi_console.jsx +++ b/src/components/widgets/unifi_console/unifi_console.jsx @@ -1,13 +1,13 @@ -import { BiError, BiWifi, BiCheckCircle, BiXCircle, BiNetworkChart } from "react-icons/bi"; -import { MdSettingsEthernet } from "react-icons/md"; import { useTranslation } from "next-i18next"; +import { BiCheckCircle, BiError, BiNetworkChart, BiWifi, BiXCircle } from "react-icons/bi"; +import { MdSettingsEthernet } from "react-icons/md"; import { SiUbiquiti } from "react-icons/si"; -import Error from "../widget/error"; import Container from "../widget/container"; +import Error from "../widget/error"; +import PrimaryText from "../widget/primary_text"; import Raw from "../widget/raw"; import WidgetIcon from "../widget/widget_icon"; -import PrimaryText from "../widget/primary_text"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/components/widgets/weather/weather.jsx b/src/components/widgets/weather/weather.jsx index 4ebb08c53..98768963d 100644 --- a/src/components/widgets/weather/weather.jsx +++ b/src/components/widgets/weather/weather.jsx @@ -1,16 +1,16 @@ -import useSWR from "swr"; -import { useState } from "react"; -import { WiCloudDown } from "react-icons/wi"; -import { MdLocationDisabled, MdLocationSearching } from "react-icons/md"; import { useTranslation } from "next-i18next"; +import { useState } from "react"; +import { MdLocationDisabled, MdLocationSearching } from "react-icons/md"; +import { WiCloudDown } from "react-icons/wi"; +import useSWR from "swr"; -import Error from "../widget/error"; +import mapIcon from "../../../utils/weather/condition-map"; import Container from "../widget/container"; +import ContainerButton from "../widget/container_button"; +import Error from "../widget/error"; import PrimaryText from "../widget/primary_text"; import SecondaryText from "../widget/secondary_text"; import WidgetIcon from "../widget/widget_icon"; -import ContainerButton from "../widget/container_button"; -import mapIcon from "../../../utils/weather/condition-map"; function Widget({ options }) { const { t, i18n } = useTranslation(); diff --git a/src/components/widgets/widget.jsx b/src/components/widgets/widget.jsx index 6cb48fdec..ebc706ace 100644 --- a/src/components/widgets/widget.jsx +++ b/src/components/widgets/widget.jsx @@ -1,5 +1,5 @@ -import dynamic from "next/dynamic"; import ErrorBoundary from "components/errorboundry"; +import dynamic from "next/dynamic"; const widgetMappings = { weatherapi: dynamic(() => import("components/widgets/weather/weather")), diff --git a/src/components/widgets/widget/container.jsx b/src/components/widgets/widget/container.jsx index ae06d8ba7..fe6397e0b 100644 --- a/src/components/widgets/widget/container.jsx +++ b/src/components/widgets/widget/container.jsx @@ -2,10 +2,10 @@ import classNames from "classnames"; import { useContext } from "react"; import { SettingsContext } from "utils/contexts/settings"; -import WidgetIcon from "./widget_icon"; import PrimaryText from "./primary_text"; -import SecondaryText from "./secondary_text"; import Raw from "./raw"; +import SecondaryText from "./secondary_text"; +import WidgetIcon from "./widget_icon"; export function getAllClasses(options, additionalClassNames = "") { if (options?.style?.header === "boxedWidgets") { diff --git a/src/components/widgets/widget/container_button.jsx b/src/components/widgets/widget/container_button.jsx index a6379081d..e08025111 100644 --- a/src/components/widgets/widget/container_button.jsx +++ b/src/components/widgets/widget/container_button.jsx @@ -1,4 +1,4 @@ -import { getAllClasses, getInnerBlock, getBottomBlock } from "./container"; +import { getAllClasses, getBottomBlock, getInnerBlock } from "./container"; export default function ContainerButton({ children = [], options, additionalClassNames = "", callback }) { return ( diff --git a/src/components/widgets/widget/container_form.jsx b/src/components/widgets/widget/container_form.jsx index 68cbd64be..a9afef3a6 100644 --- a/src/components/widgets/widget/container_form.jsx +++ b/src/components/widgets/widget/container_form.jsx @@ -1,4 +1,4 @@ -import { getAllClasses, getInnerBlock, getBottomBlock } from "./container"; +import { getAllClasses, getBottomBlock, getInnerBlock } from "./container"; export default function ContainerForm({ children = [], options, additionalClassNames = "", callback }) { return ( diff --git a/src/components/widgets/widget/container_link.jsx b/src/components/widgets/widget/container_link.jsx index 6f157875f..a36f311cc 100644 --- a/src/components/widgets/widget/container_link.jsx +++ b/src/components/widgets/widget/container_link.jsx @@ -1,4 +1,4 @@ -import { getAllClasses, getInnerBlock, getBottomBlock } from "./container"; +import { getAllClasses, getBottomBlock, getInnerBlock } from "./container"; export default function ContainerLink({ children = [], options, additionalClassNames = "", target }) { return ( diff --git a/src/components/widgets/widget/resources.jsx b/src/components/widgets/widget/resources.jsx index 2f594942f..b9a48a416 100644 --- a/src/components/widgets/widget/resources.jsx +++ b/src/components/widgets/widget/resources.jsx @@ -1,8 +1,8 @@ import classNames from "classnames"; import ContainerLink from "./container_link"; -import Resource from "./resource"; import Raw from "./raw"; +import Resource from "./resource"; import WidgetLabel from "./widget_label"; export default function Resources({ options, children, target, additionalClassNames }) { diff --git a/src/pages/_app.jsx b/src/pages/_app.jsx index c5465a804..8e88f6b28 100644 --- a/src/pages/_app.jsx +++ b/src/pages/_app.jsx @@ -1,14 +1,14 @@ /* eslint-disable react/jsx-props-no-spreading */ -import { SWRConfig } from "swr"; import { appWithTranslation } from "next-i18next"; import Head from "next/head"; import "styles/globals.css"; -import "styles/theme.css"; import "styles/manrope.css"; +import "styles/theme.css"; +import { SWRConfig } from "swr"; import { ColorProvider } from "utils/contexts/color"; -import { ThemeProvider } from "utils/contexts/theme"; import { SettingsProvider } from "utils/contexts/settings"; import { TabProvider } from "utils/contexts/tab"; +import { ThemeProvider } from "utils/contexts/theme"; import nextI18nextConfig from "../../next-i18next.config"; diff --git a/src/pages/_document.jsx b/src/pages/_document.jsx index 310834386..ece38aec9 100644 --- a/src/pages/_document.jsx +++ b/src/pages/_document.jsx @@ -1,4 +1,4 @@ -import { Html, Head, Main, NextScript } from "next/document"; +import { Head, Html, Main, NextScript } from "next/document"; export default function Document() { return ( diff --git a/src/pages/api/config/[path].js b/src/pages/api/config/[path].js index 6cb04698f..b69ddff58 100644 --- a/src/pages/api/config/[path].js +++ b/src/pages/api/config/[path].js @@ -1,5 +1,5 @@ -import path from "path"; import fs from "fs"; +import path from "path"; import { CONF_DIR } from "utils/config/config"; import createLogger from "utils/logger"; diff --git a/src/pages/api/hash.js b/src/pages/api/hash.js index 992f9ea62..33fb4ef55 100644 --- a/src/pages/api/hash.js +++ b/src/pages/api/hash.js @@ -1,6 +1,6 @@ -import { join } from "path"; import { createHash } from "crypto"; import { readFileSync } from "fs"; +import { join } from "path"; import checkAndCopyConfig, { CONF_DIR } from "utils/config/config"; diff --git a/src/pages/api/releases.js b/src/pages/api/releases.js index 372ace9d5..01d0e8a5f 100644 --- a/src/pages/api/releases.js +++ b/src/pages/api/releases.js @@ -1,5 +1,5 @@ -import { cachedRequest } from "utils/proxy/http"; import createLogger from "utils/logger"; +import { cachedRequest } from "utils/proxy/http"; const logger = createLogger("releases"); diff --git a/src/pages/api/search/searchSuggestion.js b/src/pages/api/search/searchSuggestion.js index 209d1f2cf..13f3f3015 100644 --- a/src/pages/api/search/searchSuggestion.js +++ b/src/pages/api/search/searchSuggestion.js @@ -1,8 +1,8 @@ import { searchProviders } from "components/widgets/search/search"; import { getSettings } from "utils/config/config"; -import { cachedRequest } from "utils/proxy/http"; import { widgetsFromConfig } from "utils/config/widget-helpers"; +import { cachedRequest } from "utils/proxy/http"; export default async function handler(req, res) { const { query, providerName } = req.query; diff --git a/src/pages/api/services/proxy.js b/src/pages/api/services/proxy.js index 3f8adc883..0cdf806ff 100644 --- a/src/pages/api/services/proxy.js +++ b/src/pages/api/services/proxy.js @@ -1,9 +1,9 @@ -import { formatApiCall } from "utils/proxy/api-helpers"; -import createLogger from "utils/logger"; -import genericProxyHandler from "utils/proxy/handlers/generic"; -import widgets from "widgets/widgets"; -import calendarProxyHandler from "widgets/calendar/proxy"; import getServiceWidget from "utils/config/service-helpers"; +import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import genericProxyHandler from "utils/proxy/handlers/generic"; +import calendarProxyHandler from "widgets/calendar/proxy"; +import widgets from "widgets/widgets"; const logger = createLogger("servicesProxy"); diff --git a/src/pages/api/widgets/glances.js b/src/pages/api/widgets/glances.js index 199c133e3..f0a3a7d9b 100644 --- a/src/pages/api/widgets/glances.js +++ b/src/pages/api/widgets/glances.js @@ -1,6 +1,6 @@ -import { httpProxy } from "utils/proxy/http"; -import createLogger from "utils/logger"; import { getPrivateWidgetOptions } from "utils/config/widget-helpers"; +import createLogger from "utils/logger"; +import { httpProxy } from "utils/proxy/http"; const logger = createLogger("glances"); diff --git a/src/pages/api/widgets/longhorn.js b/src/pages/api/widgets/longhorn.js index 9126e937e..c45086bcc 100644 --- a/src/pages/api/widgets/longhorn.js +++ b/src/pages/api/widgets/longhorn.js @@ -1,6 +1,6 @@ -import { httpProxy } from "../../../utils/proxy/http"; -import createLogger from "../../../utils/logger"; import { getSettings } from "../../../utils/config/config"; +import createLogger from "../../../utils/logger"; +import { httpProxy } from "../../../utils/proxy/http"; const logger = createLogger("longhorn"); diff --git a/src/pages/api/widgets/openweathermap.js b/src/pages/api/widgets/openweathermap.js index 3bdc7a822..993ee1f5e 100644 --- a/src/pages/api/widgets/openweathermap.js +++ b/src/pages/api/widgets/openweathermap.js @@ -1,6 +1,6 @@ -import { cachedRequest } from "utils/proxy/http"; import { getSettings } from "utils/config/config"; import { getPrivateWidgetOptions } from "utils/config/widget-helpers"; +import { cachedRequest } from "utils/proxy/http"; export default async function handler(req, res) { const { latitude, longitude, units, provider, cache, lang, index } = req.query; diff --git a/src/pages/api/widgets/stocks.js b/src/pages/api/widgets/stocks.js index 4e9f3f55e..77881ad79 100644 --- a/src/pages/api/widgets/stocks.js +++ b/src/pages/api/widgets/stocks.js @@ -1,6 +1,6 @@ -import { cachedRequest } from "utils/proxy/http"; import { getSettings } from "utils/config/config"; import createLogger from "utils/logger"; +import { cachedRequest } from "utils/proxy/http"; const logger = createLogger("stocks"); diff --git a/src/pages/api/widgets/weather.js b/src/pages/api/widgets/weather.js index 9e63e48d9..78418f74b 100644 --- a/src/pages/api/widgets/weather.js +++ b/src/pages/api/widgets/weather.js @@ -1,6 +1,6 @@ -import { cachedRequest } from "utils/proxy/http"; import { getSettings } from "utils/config/config"; import { getPrivateWidgetOptions } from "utils/config/widget-helpers"; +import { cachedRequest } from "utils/proxy/http"; export default async function handler(req, res) { const { latitude, longitude, provider, cache, lang, index } = req.query; diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 78702796d..f8d48fdff 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -1,31 +1,31 @@ /* eslint-disable react/no-array-index-key */ -import useSWR, { SWRConfig } from "swr"; -import Head from "next/head"; -import Script from "next/script"; -import dynamic from "next/dynamic"; import classNames from "classnames"; -import { useTranslation } from "next-i18next"; -import { useEffect, useContext, useState, useMemo } from "react"; -import { BiError } from "react-icons/bi"; -import { serverSideTranslations } from "next-i18next/serverSideTranslations"; -import { useRouter } from "next/router"; -import Tab, { slugifyAndEncode } from "components/tab"; -import ServicesGroup from "components/services/group"; import BookmarksGroup from "components/bookmarks/group"; -import Widget from "components/widgets/widget"; -import Revalidate from "components/toggles/revalidate"; -import { ColorContext } from "utils/contexts/color"; -import { ThemeContext } from "utils/contexts/theme"; -import { SettingsContext } from "utils/contexts/settings"; -import { TabContext } from "utils/contexts/tab"; import ErrorBoundary from "components/errorboundry"; import QuickLaunch from "components/quicklaunch"; +import ServicesGroup from "components/services/group"; +import Tab, { slugifyAndEncode } from "components/tab"; +import Revalidate from "components/toggles/revalidate"; +import Widget from "components/widgets/widget"; +import { useTranslation } from "next-i18next"; +import { serverSideTranslations } from "next-i18next/serverSideTranslations"; +import dynamic from "next/dynamic"; +import Head from "next/head"; +import { useRouter } from "next/router"; +import Script from "next/script"; +import { useContext, useEffect, useMemo, useState } from "react"; +import { BiError } from "react-icons/bi"; +import useSWR, { SWRConfig } from "swr"; +import { ColorContext } from "utils/contexts/color"; +import { SettingsContext } from "utils/contexts/settings"; +import { TabContext } from "utils/contexts/tab"; +import { ThemeContext } from "utils/contexts/theme"; import { bookmarksResponse, servicesResponse, widgetsResponse } from "utils/config/api-response"; -import themes from "utils/styles/themes"; import { getSettings } from "utils/config/config"; import useWindowFocus from "utils/hooks/window-focus"; import createLogger from "utils/logger"; +import themes from "utils/styles/themes"; const ThemeToggle = dynamic(() => import("components/toggles/theme"), { ssr: false, diff --git a/src/utils/config/api-response.js b/src/utils/config/api-response.js index 03f155fb9..4691f9bcd 100644 --- a/src/utils/config/api-response.js +++ b/src/utils/config/api-response.js @@ -4,13 +4,13 @@ import path from "path"; import yaml from "js-yaml"; -import checkAndCopyConfig, { getSettings, substituteEnvironmentVars, CONF_DIR } from "utils/config/config"; +import checkAndCopyConfig, { CONF_DIR, getSettings, substituteEnvironmentVars } from "utils/config/config"; import { + cleanServiceGroups, + findGroupByName, servicesFromConfig, servicesFromDocker, - cleanServiceGroups, servicesFromKubernetes, - findGroupByName, } from "utils/config/service-helpers"; import { cleanWidgetGroups, widgetsFromConfig } from "utils/config/widget-helpers"; diff --git a/src/utils/config/config.js b/src/utils/config/config.js index 18dedf625..3f6888420 100644 --- a/src/utils/config/config.js +++ b/src/utils/config/config.js @@ -1,9 +1,9 @@ /* eslint-disable no-console */ -import { join } from "path"; import { copyFileSync, existsSync, mkdirSync, readFileSync } from "fs"; +import { join } from "path"; -import cache from "memory-cache"; import yaml from "js-yaml"; +import cache from "memory-cache"; const cacheKey = "homepageEnvironmentVariables"; const homepageVarPrefix = "HOMEPAGE_VAR_"; diff --git a/src/utils/config/docker.js b/src/utils/config/docker.js index 6ea728e9a..ed1d33470 100644 --- a/src/utils/config/docker.js +++ b/src/utils/config/docker.js @@ -1,5 +1,5 @@ -import path from "path"; import { readFileSync } from "fs"; +import path from "path"; import yaml from "js-yaml"; diff --git a/src/utils/config/kubernetes.js b/src/utils/config/kubernetes.js index 6d2fc17b7..680c408e7 100644 --- a/src/utils/config/kubernetes.js +++ b/src/utils/config/kubernetes.js @@ -1,8 +1,8 @@ -import path from "path"; import { readFileSync } from "fs"; +import path from "path"; +import { ApiextensionsV1Api, KubeConfig } from "@kubernetes/client-node"; import yaml from "js-yaml"; -import { KubeConfig, ApiextensionsV1Api } from "@kubernetes/client-node"; import checkAndCopyConfig, { CONF_DIR, substituteEnvironmentVars } from "utils/config/config"; diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index 38e7a2bf0..c3df6579b 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -1,15 +1,15 @@ import { promises as fs } from "fs"; import path from "path"; -import yaml from "js-yaml"; import Docker from "dockerode"; +import yaml from "js-yaml"; -import createLogger from "utils/logger"; import checkAndCopyConfig, { CONF_DIR, getSettings, substituteEnvironmentVars } from "utils/config/config"; import getDockerArguments from "utils/config/docker"; -import kubernetes from "utils/kubernetes/export"; import { getKubeConfig } from "utils/config/kubernetes"; import * as shvl from "utils/config/shvl"; +import kubernetes from "utils/kubernetes/export"; +import createLogger from "utils/logger"; const logger = createLogger("service-helpers"); diff --git a/src/utils/contexts/color.jsx b/src/utils/contexts/color.jsx index d7d985f05..bc16d605e 100644 --- a/src/utils/contexts/color.jsx +++ b/src/utils/contexts/color.jsx @@ -1,4 +1,4 @@ -import { createContext, useState, useEffect, useMemo } from "react"; +import { createContext, useEffect, useMemo, useState } from "react"; let lastColor = false; diff --git a/src/utils/contexts/settings.jsx b/src/utils/contexts/settings.jsx index d6993b14b..764519530 100644 --- a/src/utils/contexts/settings.jsx +++ b/src/utils/contexts/settings.jsx @@ -1,4 +1,4 @@ -import { createContext, useState, useMemo } from "react"; +import { createContext, useMemo, useState } from "react"; export const SettingsContext = createContext(); diff --git a/src/utils/contexts/tab.jsx b/src/utils/contexts/tab.jsx index 8cd5d5201..2a3d34578 100644 --- a/src/utils/contexts/tab.jsx +++ b/src/utils/contexts/tab.jsx @@ -1,4 +1,4 @@ -import { createContext, useState, useMemo } from "react"; +import { createContext, useMemo, useState } from "react"; export const TabContext = createContext(); diff --git a/src/utils/contexts/theme.jsx b/src/utils/contexts/theme.jsx index 85d613fcd..385eeaa28 100644 --- a/src/utils/contexts/theme.jsx +++ b/src/utils/contexts/theme.jsx @@ -1,4 +1,4 @@ -import { createContext, useState, useEffect, useMemo } from "react"; +import { createContext, useEffect, useMemo, useState } from "react"; const getInitialTheme = () => { if (typeof window !== "undefined" && window.localStorage) { diff --git a/src/utils/hooks/window-focus.js b/src/utils/hooks/window-focus.js index 3ad57ad02..a221e48ea 100644 --- a/src/utils/hooks/window-focus.js +++ b/src/utils/hooks/window-focus.js @@ -1,4 +1,4 @@ -import { useState, useEffect } from "react"; +import { useEffect, useState } from "react"; const hasFocus = () => typeof document !== "undefined" && document.hasFocus(); diff --git a/src/utils/kubernetes/export.js b/src/utils/kubernetes/export.js index ba41593e0..ae53aaca8 100644 --- a/src/utils/kubernetes/export.js +++ b/src/utils/kubernetes/export.js @@ -1,7 +1,7 @@ -import listIngress from "utils/kubernetes/ingress-list"; -import listTraefikIngress from "utils/kubernetes/traefik-list"; import listHttpRoute from "utils/kubernetes/httproute-list"; -import { isDiscoverable, constructedServiceFromResource } from "utils/kubernetes/resource-helpers"; +import listIngress from "utils/kubernetes/ingress-list"; +import { constructedServiceFromResource, isDiscoverable } from "utils/kubernetes/resource-helpers"; +import listTraefikIngress from "utils/kubernetes/traefik-list"; const kubernetes = { listIngress, diff --git a/src/utils/kubernetes/ingress-list.js b/src/utils/kubernetes/ingress-list.js index 49b5d6671..1cd9ca952 100644 --- a/src/utils/kubernetes/ingress-list.js +++ b/src/utils/kubernetes/ingress-list.js @@ -1,6 +1,6 @@ import { NetworkingV1Api } from "@kubernetes/client-node"; -import { getKubernetes, getKubeConfig } from "utils/config/kubernetes"; +import { getKubeConfig, getKubernetes } from "utils/config/kubernetes"; import createLogger from "utils/logger"; const logger = createLogger("ingress-list"); diff --git a/src/utils/kubernetes/resource-helpers.js b/src/utils/kubernetes/resource-helpers.js index 1b59526a9..0ac143ac5 100644 --- a/src/utils/kubernetes/resource-helpers.js +++ b/src/utils/kubernetes/resource-helpers.js @@ -1,15 +1,15 @@ import { CustomObjectsApi } from "@kubernetes/client-node"; +import { substituteEnvironmentVars } from "utils/config/config"; import { - getKubeConfig, ANNOTATION_BASE, ANNOTATION_WIDGET_BASE, + getKubeConfig, HTTPROUTE_API_GROUP, HTTPROUTE_API_VERSION, } from "utils/config/kubernetes"; -import { substituteEnvironmentVars } from "utils/config/config"; -import createLogger from "utils/logger"; import * as shvl from "utils/config/shvl"; +import createLogger from "utils/logger"; const logger = createLogger("resource-helpers"); const kc = getKubeConfig(); diff --git a/src/utils/kubernetes/traefik-list.js b/src/utils/kubernetes/traefik-list.js index 0368629ac..f6e072413 100644 --- a/src/utils/kubernetes/traefik-list.js +++ b/src/utils/kubernetes/traefik-list.js @@ -1,6 +1,6 @@ import { CustomObjectsApi } from "@kubernetes/client-node"; -import { getKubernetes, getKubeConfig, checkCRD, ANNOTATION_BASE } from "utils/config/kubernetes"; +import { ANNOTATION_BASE, checkCRD, getKubeConfig, getKubernetes } from "utils/config/kubernetes"; import createLogger from "utils/logger"; const logger = createLogger("traefik-list"); diff --git a/src/utils/proxy/handlers/credentialed.js b/src/utils/proxy/handlers/credentialed.js index 056e919ff..d0dbc2d68 100644 --- a/src/utils/proxy/handlers/credentialed.js +++ b/src/utils/proxy/handlers/credentialed.js @@ -1,9 +1,9 @@ -import getServiceWidget from "utils/config/service-helpers"; -import { formatApiCall, sanitizeErrorURL } from "utils/proxy/api-helpers"; -import validateWidgetData from "utils/proxy/validate-widget-data"; -import { httpProxy } from "utils/proxy/http"; -import createLogger from "utils/logger"; import { getSettings } from "utils/config/config"; +import getServiceWidget from "utils/config/service-helpers"; +import createLogger from "utils/logger"; +import { formatApiCall, sanitizeErrorURL } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; +import validateWidgetData from "utils/proxy/validate-widget-data"; import widgets from "widgets/widgets"; const logger = createLogger("credentialedProxyHandler"); diff --git a/src/utils/proxy/handlers/generic.js b/src/utils/proxy/handlers/generic.js index 4a71f704f..1914114c2 100644 --- a/src/utils/proxy/handlers/generic.js +++ b/src/utils/proxy/handlers/generic.js @@ -1,8 +1,8 @@ import getServiceWidget from "utils/config/service-helpers"; -import { formatApiCall, sanitizeErrorURL } from "utils/proxy/api-helpers"; -import validateWidgetData from "utils/proxy/validate-widget-data"; -import { httpProxy } from "utils/proxy/http"; import createLogger from "utils/logger"; +import { formatApiCall, sanitizeErrorURL } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; +import validateWidgetData from "utils/proxy/validate-widget-data"; import widgets from "widgets/widgets"; const logger = createLogger("genericProxyHandler"); diff --git a/src/utils/proxy/handlers/jsonrpc.js b/src/utils/proxy/handlers/jsonrpc.js index f9fb18832..bdb10e022 100644 --- a/src/utils/proxy/handlers/jsonrpc.js +++ b/src/utils/proxy/handlers/jsonrpc.js @@ -1,9 +1,9 @@ import { JSONRPCClient, JSONRPCErrorException } from "json-rpc-2.0"; -import { formatApiCall } from "utils/proxy/api-helpers"; -import { httpProxy } from "utils/proxy/http"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; import widgets from "widgets/widgets"; const logger = createLogger("jsonrpcProxyHandler"); diff --git a/src/utils/proxy/handlers/synology.js b/src/utils/proxy/handlers/synology.js index 030e53bad..6fe98dce9 100644 --- a/src/utils/proxy/handlers/synology.js +++ b/src/utils/proxy/handlers/synology.js @@ -1,9 +1,9 @@ import cache from "memory-cache"; import getServiceWidget from "utils/config/service-helpers"; +import createLogger from "utils/logger"; import { asJson, formatApiCall } from "utils/proxy/api-helpers"; import { httpProxy } from "utils/proxy/http"; -import createLogger from "utils/logger"; import widgets from "widgets/widgets"; const INFO_ENDPOINT = "{url}/webapi/query.cgi?api=SYNO.API.Info&version=1&method=query"; diff --git a/src/utils/proxy/http.js b/src/utils/proxy/http.js index f8d2dcce9..1a22a7f71 100644 --- a/src/utils/proxy/http.js +++ b/src/utils/proxy/http.js @@ -5,8 +5,8 @@ import { createUnzip, constants as zlibConstants } from "node:zlib"; import { http, https } from "follow-redirects"; import cache from "memory-cache"; -import { addCookieToJar, setCookieHeader } from "./cookie-jar"; import { sanitizeErrorURL } from "./api-helpers"; +import { addCookieToJar, setCookieHeader } from "./cookie-jar"; import createLogger from "utils/logger"; diff --git a/src/utils/proxy/validate-widget-data.js b/src/utils/proxy/validate-widget-data.js index 8f865fe26..de2a3c4ed 100644 --- a/src/utils/proxy/validate-widget-data.js +++ b/src/utils/proxy/validate-widget-data.js @@ -1,6 +1,6 @@ /* eslint-disable no-console */ -import widgets from "widgets/widgets"; import createLogger from "utils/logger"; +import widgets from "widgets/widgets"; const logger = createLogger("validateWidgetData"); diff --git a/src/widgets/adguard/component.jsx b/src/widgets/adguard/component.jsx index 6cb9175a3..e5a7670a5 100644 --- a/src/widgets/adguard/component.jsx +++ b/src/widgets/adguard/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/apcups/component.jsx b/src/widgets/apcups/component.jsx index c1c26b5cc..85e621dbb 100644 --- a/src/widgets/apcups/component.jsx +++ b/src/widgets/apcups/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/apcups/proxy.js b/src/widgets/apcups/proxy.js index 8e1d7ffcf..bf22730ed 100644 --- a/src/widgets/apcups/proxy.js +++ b/src/widgets/apcups/proxy.js @@ -1,5 +1,5 @@ -import net from "node:net"; import { Buffer } from "node:buffer"; +import net from "node:net"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; diff --git a/src/widgets/argocd/component.jsx b/src/widgets/argocd/component.jsx index d4283acf7..f61bed432 100644 --- a/src/widgets/argocd/component.jsx +++ b/src/widgets/argocd/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/atsumeru/component.jsx b/src/widgets/atsumeru/component.jsx index 2b87ac348..01cc8e463 100644 --- a/src/widgets/atsumeru/component.jsx +++ b/src/widgets/atsumeru/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/audiobookshelf/component.jsx b/src/widgets/audiobookshelf/component.jsx index 0444b6b48..b410e1a7b 100755 --- a/src/widgets/audiobookshelf/component.jsx +++ b/src/widgets/audiobookshelf/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/audiobookshelf/proxy.js b/src/widgets/audiobookshelf/proxy.js index 1a89736b1..afff3ba96 100644 --- a/src/widgets/audiobookshelf/proxy.js +++ b/src/widgets/audiobookshelf/proxy.js @@ -1,7 +1,7 @@ -import { httpProxy } from "utils/proxy/http"; -import { formatApiCall } from "utils/proxy/api-helpers"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; import widgets from "widgets/widgets"; const proxyName = "audiobookshelfProxyHandler"; diff --git a/src/widgets/authentik/component.jsx b/src/widgets/authentik/component.jsx index d44465515..edf5ece19 100644 --- a/src/widgets/authentik/component.jsx +++ b/src/widgets/authentik/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/autobrr/component.jsx b/src/widgets/autobrr/component.jsx index a73a7d173..5454cd3cd 100644 --- a/src/widgets/autobrr/component.jsx +++ b/src/widgets/autobrr/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/azuredevops/component.jsx b/src/widgets/azuredevops/component.jsx index bfe9797fd..7a36aab2d 100644 --- a/src/widgets/azuredevops/component.jsx +++ b/src/widgets/azuredevops/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/bazarr/component.jsx b/src/widgets/bazarr/component.jsx index 120774fb5..f79ec2065 100644 --- a/src/widgets/bazarr/component.jsx +++ b/src/widgets/bazarr/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/bazarr/widget.js b/src/widgets/bazarr/widget.js index 5b89b2b40..c54e38ad0 100644 --- a/src/widgets/bazarr/widget.js +++ b/src/widgets/bazarr/widget.js @@ -1,5 +1,5 @@ -import genericProxyHandler from "utils/proxy/handlers/generic"; import { asJson } from "utils/proxy/api-helpers"; +import genericProxyHandler from "utils/proxy/handlers/generic"; const widget = { api: "{url}/api/{endpoint}/wanted?apikey={key}", diff --git a/src/widgets/beszel/component.jsx b/src/widgets/beszel/component.jsx index a191c31fe..e80a9fabe 100644 --- a/src/widgets/beszel/component.jsx +++ b/src/widgets/beszel/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/beszel/proxy.js b/src/widgets/beszel/proxy.js index 078e22c35..96dfc913b 100644 --- a/src/widgets/beszel/proxy.js +++ b/src/widgets/beszel/proxy.js @@ -1,10 +1,10 @@ import cache from "memory-cache"; import getServiceWidget from "utils/config/service-helpers"; +import createLogger from "utils/logger"; import { formatApiCall } from "utils/proxy/api-helpers"; import { httpProxy } from "utils/proxy/http"; import widgets from "widgets/widgets"; -import createLogger from "utils/logger"; const proxyName = "beszelProxyHandler"; const tokenCacheKey = `${proxyName}__token`; diff --git a/src/widgets/caddy/component.jsx b/src/widgets/caddy/component.jsx index 60e71e9e6..1613760d0 100644 --- a/src/widgets/caddy/component.jsx +++ b/src/widgets/caddy/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/calendar/agenda.jsx b/src/widgets/calendar/agenda.jsx index 6a3be0319..cb00c1d2c 100644 --- a/src/widgets/calendar/agenda.jsx +++ b/src/widgets/calendar/agenda.jsx @@ -1,5 +1,5 @@ -import { DateTime } from "luxon"; import classNames from "classnames"; +import { DateTime } from "luxon"; import { useTranslation } from "next-i18next"; import Event, { compareDateTimezone } from "./event"; diff --git a/src/widgets/calendar/component.jsx b/src/widgets/calendar/component.jsx index 56858fade..0647d4adb 100644 --- a/src/widgets/calendar/component.jsx +++ b/src/widgets/calendar/component.jsx @@ -1,12 +1,12 @@ -import { useEffect, useMemo, useState, useContext } from "react"; -import dynamic from "next/dynamic"; +import Container from "components/services/widget/container"; import { DateTime } from "luxon"; import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; +import dynamic from "next/dynamic"; +import { useContext, useEffect, useMemo, useState } from "react"; import { SettingsContext } from "utils/contexts/settings"; -import Monthly from "./monthly"; import Agenda from "./agenda"; +import Monthly from "./monthly"; const colorVariants = { // https://tailwindcss.com/docs/content-configuration#dynamic-class-names diff --git a/src/widgets/calendar/event.jsx b/src/widgets/calendar/event.jsx index 754c6ee97..6ea2e1aea 100644 --- a/src/widgets/calendar/event.jsx +++ b/src/widgets/calendar/event.jsx @@ -1,7 +1,7 @@ -import { useState } from "react"; -import { useTranslation } from "next-i18next"; -import { DateTime } from "luxon"; import classNames from "classnames"; +import { DateTime } from "luxon"; +import { useTranslation } from "next-i18next"; +import { useState } from "react"; import { IoMdCheckmarkCircleOutline } from "react-icons/io"; export default function Event({ event, colorVariants, showDate = false, showTime = false, showDateColumn = true }) { diff --git a/src/widgets/calendar/integrations/ical.jsx b/src/widgets/calendar/integrations/ical.jsx index 777299823..462179776 100644 --- a/src/widgets/calendar/integrations/ical.jsx +++ b/src/widgets/calendar/integrations/ical.jsx @@ -1,11 +1,11 @@ -import { DateTime } from "luxon"; import { parseString } from "cal-parser"; -import { useEffect } from "react"; +import { DateTime } from "luxon"; import { useTranslation } from "next-i18next"; +import { useEffect } from "react"; import { RRule } from "rrule"; -import useWidgetAPI from "../../../utils/proxy/use-widget-api"; import Error from "../../../components/services/widget/error"; +import useWidgetAPI from "../../../utils/proxy/use-widget-api"; // https://gist.github.com/jlevy/c246006675becc446360a798e2b2d781 function simpleHash(str) { diff --git a/src/widgets/calendar/integrations/lidarr.jsx b/src/widgets/calendar/integrations/lidarr.jsx index d4a6edbe2..65ad1da25 100644 --- a/src/widgets/calendar/integrations/lidarr.jsx +++ b/src/widgets/calendar/integrations/lidarr.jsx @@ -1,8 +1,8 @@ import { DateTime } from "luxon"; import { useEffect } from "react"; -import useWidgetAPI from "../../../utils/proxy/use-widget-api"; import Error from "../../../components/services/widget/error"; +import useWidgetAPI from "../../../utils/proxy/use-widget-api"; export default function Integration({ config, params, setEvents, hideErrors = false }) { const { data: lidarrData, error: lidarrError } = useWidgetAPI(config, "calendar", { diff --git a/src/widgets/calendar/integrations/radarr.jsx b/src/widgets/calendar/integrations/radarr.jsx index 945eadd9b..9c8880a90 100644 --- a/src/widgets/calendar/integrations/radarr.jsx +++ b/src/widgets/calendar/integrations/radarr.jsx @@ -1,9 +1,9 @@ import { DateTime } from "luxon"; -import { useEffect } from "react"; import { useTranslation } from "next-i18next"; +import { useEffect } from "react"; -import useWidgetAPI from "../../../utils/proxy/use-widget-api"; import Error from "../../../components/services/widget/error"; +import useWidgetAPI from "../../../utils/proxy/use-widget-api"; export default function Integration({ config, params, setEvents, hideErrors = false }) { const { t } = useTranslation(); diff --git a/src/widgets/calendar/integrations/readarr.jsx b/src/widgets/calendar/integrations/readarr.jsx index 6ae919ef2..4fe3872e6 100644 --- a/src/widgets/calendar/integrations/readarr.jsx +++ b/src/widgets/calendar/integrations/readarr.jsx @@ -1,8 +1,8 @@ import { DateTime } from "luxon"; import { useEffect } from "react"; -import useWidgetAPI from "../../../utils/proxy/use-widget-api"; import Error from "../../../components/services/widget/error"; +import useWidgetAPI from "../../../utils/proxy/use-widget-api"; export default function Integration({ config, params, setEvents, hideErrors = false }) { const { data: readarrData, error: readarrError } = useWidgetAPI(config, "calendar", { diff --git a/src/widgets/calendar/integrations/sonarr.jsx b/src/widgets/calendar/integrations/sonarr.jsx index 34cc679dd..abdec3287 100644 --- a/src/widgets/calendar/integrations/sonarr.jsx +++ b/src/widgets/calendar/integrations/sonarr.jsx @@ -1,8 +1,8 @@ import { DateTime } from "luxon"; import { useEffect } from "react"; -import useWidgetAPI from "../../../utils/proxy/use-widget-api"; import Error from "../../../components/services/widget/error"; +import useWidgetAPI from "../../../utils/proxy/use-widget-api"; export default function Integration({ config, params, setEvents, hideErrors = false }) { const { data: sonarrData, error: sonarrError } = useWidgetAPI(config, "calendar", { diff --git a/src/widgets/calendar/monthly.jsx b/src/widgets/calendar/monthly.jsx index 7313232f0..4e8702613 100644 --- a/src/widgets/calendar/monthly.jsx +++ b/src/widgets/calendar/monthly.jsx @@ -1,7 +1,7 @@ -import { useMemo } from "react"; -import { DateTime, Info } from "luxon"; import classNames from "classnames"; +import { DateTime, Info } from "luxon"; import { useTranslation } from "next-i18next"; +import { useMemo } from "react"; import Event, { compareDateTimezone } from "./event"; diff --git a/src/widgets/calendar/proxy.js b/src/widgets/calendar/proxy.js index d36f30c90..c98441eea 100644 --- a/src/widgets/calendar/proxy.js +++ b/src/widgets/calendar/proxy.js @@ -1,6 +1,6 @@ import getServiceWidget from "utils/config/service-helpers"; -import { httpProxy } from "utils/proxy/http"; import createLogger from "utils/logger"; +import { httpProxy } from "utils/proxy/http"; const logger = createLogger("calendarProxyHandler"); diff --git a/src/widgets/calibreweb/component.jsx b/src/widgets/calibreweb/component.jsx index c334d7d2c..be8424e55 100644 --- a/src/widgets/calibreweb/component.jsx +++ b/src/widgets/calibreweb/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/changedetectionio/component.jsx b/src/widgets/changedetectionio/component.jsx index a08f38d9e..d7d7272bb 100644 --- a/src/widgets/changedetectionio/component.jsx +++ b/src/widgets/changedetectionio/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/channelsdvrserver/component.jsx b/src/widgets/channelsdvrserver/component.jsx index 42202c05b..79ca3f149 100644 --- a/src/widgets/channelsdvrserver/component.jsx +++ b/src/widgets/channelsdvrserver/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/cloudflared/component.jsx b/src/widgets/cloudflared/component.jsx index 8825402c3..790a5f34b 100644 --- a/src/widgets/cloudflared/component.jsx +++ b/src/widgets/cloudflared/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/coinmarketcap/component.jsx b/src/widgets/coinmarketcap/component.jsx index 35a3401fe..fd9c030f4 100644 --- a/src/widgets/coinmarketcap/component.jsx +++ b/src/widgets/coinmarketcap/component.jsx @@ -1,9 +1,9 @@ -import { useState } from "react"; -import { useTranslation } from "next-i18next"; import classNames from "classnames"; -import Container from "components/services/widget/container"; -import Block from "components/services/widget/block"; import Dropdown from "components/services/dropdown"; +import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; +import { useState } from "react"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/crowdsec/component.jsx b/src/widgets/crowdsec/component.jsx index 5bc34d1a1..f567ad70c 100644 --- a/src/widgets/crowdsec/component.jsx +++ b/src/widgets/crowdsec/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/crowdsec/proxy.js b/src/widgets/crowdsec/proxy.js index 85803845b..d3257fa6f 100644 --- a/src/widgets/crowdsec/proxy.js +++ b/src/widgets/crowdsec/proxy.js @@ -1,9 +1,9 @@ import cache from "memory-cache"; -import { httpProxy } from "utils/proxy/http"; -import { formatApiCall } from "utils/proxy/api-helpers"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; import widgets from "widgets/widgets"; const proxyName = "crowdsecProxyHandler"; diff --git a/src/widgets/customapi/component.jsx b/src/widgets/customapi/component.jsx index b651045fd..50a371ad1 100644 --- a/src/widgets/customapi/component.jsx +++ b/src/widgets/customapi/component.jsx @@ -1,10 +1,10 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; -import Block from "components/services/widget/block"; import classNames from "classnames"; +import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; -import useWidgetAPI from "utils/proxy/use-widget-api"; import * as shvl from "utils/config/shvl"; +import useWidgetAPI from "utils/proxy/use-widget-api"; function getValue(field, data) { let value = data; diff --git a/src/widgets/deluge/component.jsx b/src/widgets/deluge/component.jsx index 510340b7e..eb6ddfaa1 100644 --- a/src/widgets/deluge/component.jsx +++ b/src/widgets/deluge/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import QueueEntry from "../../components/widgets/queue/queueEntry"; diff --git a/src/widgets/deluge/proxy.js b/src/widgets/deluge/proxy.js index 0430a6ac8..ef255160a 100644 --- a/src/widgets/deluge/proxy.js +++ b/src/widgets/deluge/proxy.js @@ -1,7 +1,7 @@ -import { formatApiCall } from "utils/proxy/api-helpers"; -import { sendJsonRpcRequest } from "utils/proxy/handlers/jsonrpc"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { sendJsonRpcRequest } from "utils/proxy/handlers/jsonrpc"; import widgets from "widgets/widgets"; const logger = createLogger("delugeProxyHandler"); diff --git a/src/widgets/develancacheui/component.jsx b/src/widgets/develancacheui/component.jsx index 4fc184efa..61f608e1e 100644 --- a/src/widgets/develancacheui/component.jsx +++ b/src/widgets/develancacheui/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/diskstation/component.jsx b/src/widgets/diskstation/component.jsx index 9c516af9b..0ca0b8aed 100644 --- a/src/widgets/diskstation/component.jsx +++ b/src/widgets/diskstation/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/docker/component.jsx b/src/widgets/docker/component.jsx index 074ce1eba..6e05454f8 100644 --- a/src/widgets/docker/component.jsx +++ b/src/widgets/docker/component.jsx @@ -1,9 +1,9 @@ -import useSWR from "swr"; -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; +import useSWR from "swr"; -import { calculateCPUPercent, calculateUsedMemory, calculateThroughput } from "./stats-helpers"; +import { calculateCPUPercent, calculateThroughput, calculateUsedMemory } from "./stats-helpers"; export default function Component({ service }) { const { t } = useTranslation(); diff --git a/src/widgets/downloadstation/component.jsx b/src/widgets/downloadstation/component.jsx index 0d9d8085a..016f4953a 100644 --- a/src/widgets/downloadstation/component.jsx +++ b/src/widgets/downloadstation/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/emby/component.jsx b/src/widgets/emby/component.jsx index 41220e227..88858da2a 100644 --- a/src/widgets/emby/component.jsx +++ b/src/widgets/emby/component.jsx @@ -1,8 +1,8 @@ -import { useTranslation } from "next-i18next"; -import { BsVolumeMuteFill, BsFillPlayFill, BsPauseFill, BsCpu, BsFillCpuFill } from "react-icons/bs"; -import { MdOutlineSmartDisplay } from "react-icons/md"; import Block from "components/services/widget/block"; import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; +import { BsCpu, BsFillCpuFill, BsFillPlayFill, BsPauseFill, BsVolumeMuteFill } from "react-icons/bs"; +import { MdOutlineSmartDisplay } from "react-icons/md"; import { getURLSearchParams } from "utils/proxy/api-helpers"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/esphome/component.jsx b/src/widgets/esphome/component.jsx index 6ed1b7b15..e0f020899 100644 --- a/src/widgets/esphome/component.jsx +++ b/src/widgets/esphome/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; import Block from "components/services/widget/block"; import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/evcc/component.jsx b/src/widgets/evcc/component.jsx index 2f086902a..d0debdc3d 100644 --- a/src/widgets/evcc/component.jsx +++ b/src/widgets/evcc/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/fileflows/component.jsx b/src/widgets/fileflows/component.jsx index 9b8e07942..fdc75c6ec 100755 --- a/src/widgets/fileflows/component.jsx +++ b/src/widgets/fileflows/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/firefly/component.jsx b/src/widgets/firefly/component.jsx index baff2304c..af236a809 100644 --- a/src/widgets/firefly/component.jsx +++ b/src/widgets/firefly/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/flood/component.jsx b/src/widgets/flood/component.jsx index 44c03fd36..92a2b61a0 100644 --- a/src/widgets/flood/component.jsx +++ b/src/widgets/flood/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/flood/proxy.js b/src/widgets/flood/proxy.js index e0c101731..5e5335ae1 100644 --- a/src/widgets/flood/proxy.js +++ b/src/widgets/flood/proxy.js @@ -1,7 +1,7 @@ -import { formatApiCall } from "utils/proxy/api-helpers"; -import { httpProxy } from "utils/proxy/http"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; const logger = createLogger("floodProxyHandler"); diff --git a/src/widgets/freshrss/component.jsx b/src/widgets/freshrss/component.jsx index c5029b8fe..70833e1dd 100644 --- a/src/widgets/freshrss/component.jsx +++ b/src/widgets/freshrss/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/freshrss/proxy.js b/src/widgets/freshrss/proxy.js index 881094bd7..6168db866 100644 --- a/src/widgets/freshrss/proxy.js +++ b/src/widgets/freshrss/proxy.js @@ -1,9 +1,9 @@ import cache from "memory-cache"; -import { httpProxy } from "utils/proxy/http"; -import { formatApiCall } from "utils/proxy/api-helpers"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; import widgets from "widgets/widgets"; const proxyName = "freshrssProxyHandler"; diff --git a/src/widgets/frigate/component.jsx b/src/widgets/frigate/component.jsx index a19a464a1..ab67c4611 100644 --- a/src/widgets/frigate/component.jsx +++ b/src/widgets/frigate/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/fritzbox/component.jsx b/src/widgets/fritzbox/component.jsx index c557ece58..d7928c20b 100644 --- a/src/widgets/fritzbox/component.jsx +++ b/src/widgets/fritzbox/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/fritzbox/proxy.js b/src/widgets/fritzbox/proxy.js index 205215607..c8c57fbc4 100644 --- a/src/widgets/fritzbox/proxy.js +++ b/src/widgets/fritzbox/proxy.js @@ -2,9 +2,9 @@ import { xml2json } from "xml-js"; import { fritzboxDefaultFields } from "./component"; -import { httpProxy } from "utils/proxy/http"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { httpProxy } from "utils/proxy/http"; const logger = createLogger("fritzboxProxyHandler"); diff --git a/src/widgets/gamedig/component.jsx b/src/widgets/gamedig/component.jsx index 1c1275385..5acd1b9c1 100644 --- a/src/widgets/gamedig/component.jsx +++ b/src/widgets/gamedig/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/gamedig/proxy.js b/src/widgets/gamedig/proxy.js index 731bb4451..79d7fa02b 100644 --- a/src/widgets/gamedig/proxy.js +++ b/src/widgets/gamedig/proxy.js @@ -1,7 +1,7 @@ import { GameDig } from "gamedig"; -import createLogger from "utils/logger"; import getServiceWidget from "utils/config/service-helpers"; +import createLogger from "utils/logger"; const proxyName = "gamedigProxyHandler"; const logger = createLogger(proxyName); diff --git a/src/widgets/gatus/component.jsx b/src/widgets/gatus/component.jsx index 668c03883..25aae239e 100644 --- a/src/widgets/gatus/component.jsx +++ b/src/widgets/gatus/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/ghostfolio/component.jsx b/src/widgets/ghostfolio/component.jsx index 524e30d9e..f25875864 100644 --- a/src/widgets/ghostfolio/component.jsx +++ b/src/widgets/ghostfolio/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/gitea/component.jsx b/src/widgets/gitea/component.jsx index c45ded065..81b69d67d 100644 --- a/src/widgets/gitea/component.jsx +++ b/src/widgets/gitea/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/gitlab/component.jsx b/src/widgets/gitlab/component.jsx index a012ee129..4d2805ba5 100644 --- a/src/widgets/gitlab/component.jsx +++ b/src/widgets/gitlab/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/glances/component.jsx b/src/widgets/glances/component.jsx index bff31ac16..4ca0cc723 100644 --- a/src/widgets/glances/component.jsx +++ b/src/widgets/glances/component.jsx @@ -1,13 +1,13 @@ -import Memory from "./metrics/memory"; +import Containers from "./metrics/containers"; import Cpu from "./metrics/cpu"; -import Sensor from "./metrics/sensor"; -import Net from "./metrics/net"; -import Process from "./metrics/process"; import Disk from "./metrics/disk"; +import Fs from "./metrics/fs"; import GPU from "./metrics/gpu"; import Info from "./metrics/info"; -import Fs from "./metrics/fs"; -import Containers from "./metrics/containers"; +import Memory from "./metrics/memory"; +import Net from "./metrics/net"; +import Process from "./metrics/process"; +import Sensor from "./metrics/sensor"; export default function Component({ service }) { const { widget } = service; diff --git a/src/widgets/glances/components/chart.jsx b/src/widgets/glances/components/chart.jsx index 132fcc8e4..b919a92d0 100644 --- a/src/widgets/glances/components/chart.jsx +++ b/src/widgets/glances/components/chart.jsx @@ -1,5 +1,5 @@ import { PureComponent } from "react"; -import { AreaChart, Area, ResponsiveContainer, Tooltip } from "recharts"; +import { Area, AreaChart, ResponsiveContainer, Tooltip } from "recharts"; import CustomTooltip from "./custom_tooltip"; diff --git a/src/widgets/glances/components/chart_dual.jsx b/src/widgets/glances/components/chart_dual.jsx index 5fabe755a..d6ec20762 100644 --- a/src/widgets/glances/components/chart_dual.jsx +++ b/src/widgets/glances/components/chart_dual.jsx @@ -1,5 +1,5 @@ import { PureComponent } from "react"; -import { AreaChart, Area, ResponsiveContainer, Tooltip } from "recharts"; +import { Area, AreaChart, ResponsiveContainer, Tooltip } from "recharts"; import CustomTooltip from "./custom_tooltip"; diff --git a/src/widgets/glances/components/container.jsx b/src/widgets/glances/components/container.jsx index 0b6fb5f2d..7bcd5c462 100644 --- a/src/widgets/glances/components/container.jsx +++ b/src/widgets/glances/components/container.jsx @@ -1,5 +1,5 @@ -import { useContext } from "react"; import classNames from "classnames"; +import { useContext } from "react"; import { SettingsContext } from "utils/contexts/settings"; import Error from "./error"; diff --git a/src/widgets/glances/metrics/containers.jsx b/src/widgets/glances/metrics/containers.jsx index 4b7ac0018..93ecbc28f 100644 --- a/src/widgets/glances/metrics/containers.jsx +++ b/src/widgets/glances/metrics/containers.jsx @@ -1,8 +1,8 @@ -import { useTranslation } from "next-i18next"; import ResolvedIcon from "components/resolvedicon"; +import { useTranslation } from "next-i18next"; -import Container from "../components/container"; import Block from "../components/block"; +import Container from "../components/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/glances/metrics/cpu.jsx b/src/widgets/glances/metrics/cpu.jsx index e993fca91..3debf11a4 100644 --- a/src/widgets/glances/metrics/cpu.jsx +++ b/src/widgets/glances/metrics/cpu.jsx @@ -1,9 +1,9 @@ -import dynamic from "next/dynamic"; -import { useState, useEffect } from "react"; import { useTranslation } from "next-i18next"; +import dynamic from "next/dynamic"; +import { useEffect, useState } from "react"; -import Container from "../components/container"; import Block from "../components/block"; +import Container from "../components/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/glances/metrics/disk.jsx b/src/widgets/glances/metrics/disk.jsx index 0a459e07c..69dd2d999 100644 --- a/src/widgets/glances/metrics/disk.jsx +++ b/src/widgets/glances/metrics/disk.jsx @@ -1,9 +1,9 @@ -import dynamic from "next/dynamic"; -import { useState, useEffect } from "react"; import { useTranslation } from "next-i18next"; +import dynamic from "next/dynamic"; +import { useEffect, useState } from "react"; -import Container from "../components/container"; import Block from "../components/block"; +import Container from "../components/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/glances/metrics/fs.jsx b/src/widgets/glances/metrics/fs.jsx index 4dd238e06..317a781fe 100644 --- a/src/widgets/glances/metrics/fs.jsx +++ b/src/widgets/glances/metrics/fs.jsx @@ -1,7 +1,7 @@ import { useTranslation } from "next-i18next"; -import Container from "../components/container"; import Block from "../components/block"; +import Container from "../components/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/glances/metrics/gpu.jsx b/src/widgets/glances/metrics/gpu.jsx index 37b06ce3e..7eab536ca 100644 --- a/src/widgets/glances/metrics/gpu.jsx +++ b/src/widgets/glances/metrics/gpu.jsx @@ -1,9 +1,9 @@ -import dynamic from "next/dynamic"; -import { useState, useEffect } from "react"; import { useTranslation } from "next-i18next"; +import dynamic from "next/dynamic"; +import { useEffect, useState } from "react"; -import Container from "../components/container"; import Block from "../components/block"; +import Container from "../components/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/glances/metrics/info.jsx b/src/widgets/glances/metrics/info.jsx index 5e9698001..3c0ef4297 100644 --- a/src/widgets/glances/metrics/info.jsx +++ b/src/widgets/glances/metrics/info.jsx @@ -1,7 +1,7 @@ import { useTranslation } from "next-i18next"; -import Container from "../components/container"; import Block from "../components/block"; +import Container from "../components/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/glances/metrics/memory.jsx b/src/widgets/glances/metrics/memory.jsx index 8cfddb668..e5fbc3502 100644 --- a/src/widgets/glances/metrics/memory.jsx +++ b/src/widgets/glances/metrics/memory.jsx @@ -1,9 +1,9 @@ -import dynamic from "next/dynamic"; -import { useState, useEffect } from "react"; import { useTranslation } from "next-i18next"; +import dynamic from "next/dynamic"; +import { useEffect, useState } from "react"; -import Container from "../components/container"; import Block from "../components/block"; +import Container from "../components/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/glances/metrics/net.jsx b/src/widgets/glances/metrics/net.jsx index 372c4ec61..2bdd491ce 100644 --- a/src/widgets/glances/metrics/net.jsx +++ b/src/widgets/glances/metrics/net.jsx @@ -1,9 +1,9 @@ -import dynamic from "next/dynamic"; -import { useState, useEffect } from "react"; import { useTranslation } from "next-i18next"; +import dynamic from "next/dynamic"; +import { useEffect, useState } from "react"; -import Container from "../components/container"; import Block from "../components/block"; +import Container from "../components/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/glances/metrics/process.jsx b/src/widgets/glances/metrics/process.jsx index 06001e6e6..ad3fee543 100644 --- a/src/widgets/glances/metrics/process.jsx +++ b/src/widgets/glances/metrics/process.jsx @@ -1,8 +1,8 @@ -import { useTranslation } from "next-i18next"; import ResolvedIcon from "components/resolvedicon"; +import { useTranslation } from "next-i18next"; -import Container from "../components/container"; import Block from "../components/block"; +import Container from "../components/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/glances/metrics/sensor.jsx b/src/widgets/glances/metrics/sensor.jsx index 3cb38c1c6..b5a16d10c 100644 --- a/src/widgets/glances/metrics/sensor.jsx +++ b/src/widgets/glances/metrics/sensor.jsx @@ -1,9 +1,9 @@ -import dynamic from "next/dynamic"; -import { useState, useEffect } from "react"; import { useTranslation } from "next-i18next"; +import dynamic from "next/dynamic"; +import { useEffect, useState } from "react"; -import Container from "../components/container"; import Block from "../components/block"; +import Container from "../components/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/gluetun/component.jsx b/src/widgets/gluetun/component.jsx index a834cb4cd..f71282371 100644 --- a/src/widgets/gluetun/component.jsx +++ b/src/widgets/gluetun/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/gotify/component.jsx b/src/widgets/gotify/component.jsx index 57b6b9c7c..6cf9cea94 100644 --- a/src/widgets/gotify/component.jsx +++ b/src/widgets/gotify/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/grafana/component.jsx b/src/widgets/grafana/component.jsx index 859be0176..82d6e5c99 100755 --- a/src/widgets/grafana/component.jsx +++ b/src/widgets/grafana/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/hdhomerun/component.jsx b/src/widgets/hdhomerun/component.jsx index dd55013f5..2532f92bc 100644 --- a/src/widgets/hdhomerun/component.jsx +++ b/src/widgets/hdhomerun/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/headscale/component.jsx b/src/widgets/headscale/component.jsx index 9d0da65b7..acee3a82d 100644 --- a/src/widgets/headscale/component.jsx +++ b/src/widgets/headscale/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/healthchecks/component.jsx b/src/widgets/healthchecks/component.jsx index 5fcef856a..b65f91c5c 100644 --- a/src/widgets/healthchecks/component.jsx +++ b/src/widgets/healthchecks/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; import Block from "components/services/widget/block"; import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import { i18n } from "../../../next-i18next.config"; diff --git a/src/widgets/hoarder/component.jsx b/src/widgets/hoarder/component.jsx index 99497d6f5..4be6fbab2 100644 --- a/src/widgets/hoarder/component.jsx +++ b/src/widgets/hoarder/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/homeassistant/component.jsx b/src/widgets/homeassistant/component.jsx index 5bd2f55c9..1df415ae2 100644 --- a/src/widgets/homeassistant/component.jsx +++ b/src/widgets/homeassistant/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/homeassistant/proxy.js b/src/widgets/homeassistant/proxy.js index e1f02ddbb..7702eb5d1 100644 --- a/src/widgets/homeassistant/proxy.js +++ b/src/widgets/homeassistant/proxy.js @@ -1,6 +1,6 @@ -import { httpProxy } from "utils/proxy/http"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { httpProxy } from "utils/proxy/http"; const logger = createLogger("homeassistantProxyHandler"); diff --git a/src/widgets/homebox/component.jsx b/src/widgets/homebox/component.jsx index d5ca97be9..4c550748e 100644 --- a/src/widgets/homebox/component.jsx +++ b/src/widgets/homebox/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/homebox/proxy.js b/src/widgets/homebox/proxy.js index c91ce5528..8a4550fc7 100644 --- a/src/widgets/homebox/proxy.js +++ b/src/widgets/homebox/proxy.js @@ -1,9 +1,9 @@ import cache from "memory-cache"; -import { formatApiCall } from "utils/proxy/api-helpers"; -import { httpProxy } from "utils/proxy/http"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; const proxyName = "homeboxProxyHandler"; const sessionTokenCacheKey = `${proxyName}__sessionToken`; diff --git a/src/widgets/homebridge/component.jsx b/src/widgets/homebridge/component.jsx index 97896af19..6201b70bc 100644 --- a/src/widgets/homebridge/component.jsx +++ b/src/widgets/homebridge/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/homebridge/proxy.js b/src/widgets/homebridge/proxy.js index 4da9197b0..675e2976c 100644 --- a/src/widgets/homebridge/proxy.js +++ b/src/widgets/homebridge/proxy.js @@ -1,9 +1,9 @@ import cache from "memory-cache"; -import { httpProxy } from "utils/proxy/http"; -import { formatApiCall } from "utils/proxy/api-helpers"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; import widgets from "widgets/widgets"; const proxyName = "homebridgeProxyHandler"; diff --git a/src/widgets/iframe/component.jsx b/src/widgets/iframe/component.jsx index 01146771b..9d2d60ca2 100644 --- a/src/widgets/iframe/component.jsx +++ b/src/widgets/iframe/component.jsx @@ -1,6 +1,6 @@ -import { useState, useEffect } from "react"; import classNames from "classnames"; import Container from "components/services/widget/container"; +import { useEffect, useState } from "react"; export default function Component({ service }) { const [refreshTimer, setRefreshTimer] = useState(0); diff --git a/src/widgets/immich/component.jsx b/src/widgets/immich/component.jsx index 7f6147978..a38cac1ec 100644 --- a/src/widgets/immich/component.jsx +++ b/src/widgets/immich/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/jackett/component.jsx b/src/widgets/jackett/component.jsx index 9c5ce0c51..63e3e1c36 100644 --- a/src/widgets/jackett/component.jsx +++ b/src/widgets/jackett/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/jackett/proxy.js b/src/widgets/jackett/proxy.js index 035309b36..10e851759 100644 --- a/src/widgets/jackett/proxy.js +++ b/src/widgets/jackett/proxy.js @@ -1,7 +1,7 @@ -import { httpProxy } from "utils/proxy/http"; -import { formatApiCall } from "utils/proxy/api-helpers"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; import widgets from "widgets/widgets"; const logger = createLogger("jackettProxyHandler"); diff --git a/src/widgets/jdownloader/component.jsx b/src/widgets/jdownloader/component.jsx index 6350faeb5..a7722c7c4 100644 --- a/src/widgets/jdownloader/component.jsx +++ b/src/widgets/jdownloader/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; import Block from "components/services/widget/block"; import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/jdownloader/proxy.js b/src/widgets/jdownloader/proxy.js index ae8c845ca..d5d5ac3d7 100644 --- a/src/widgets/jdownloader/proxy.js +++ b/src/widgets/jdownloader/proxy.js @@ -2,11 +2,11 @@ import crypto from "crypto"; import querystring from "querystring"; -import { sha256, uniqueRid, validateRid, createEncryptionToken, decrypt, encrypt } from "./tools"; +import { createEncryptionToken, decrypt, encrypt, sha256, uniqueRid, validateRid } from "./tools"; import getServiceWidget from "utils/config/service-helpers"; -import { httpProxy } from "utils/proxy/http"; import createLogger from "utils/logger"; +import { httpProxy } from "utils/proxy/http"; const proxyName = "jdownloaderProxyHandler"; const logger = createLogger(proxyName); diff --git a/src/widgets/jellyseerr/component.jsx b/src/widgets/jellyseerr/component.jsx index 06456c4db..d99fffdbc 100644 --- a/src/widgets/jellyseerr/component.jsx +++ b/src/widgets/jellyseerr/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/kavita/component.jsx b/src/widgets/kavita/component.jsx index df9823282..887b3bbe9 100644 --- a/src/widgets/kavita/component.jsx +++ b/src/widgets/kavita/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/kavita/proxy.js b/src/widgets/kavita/proxy.js index 842e4b875..cb3b3569d 100644 --- a/src/widgets/kavita/proxy.js +++ b/src/widgets/kavita/proxy.js @@ -1,9 +1,9 @@ import cache from "memory-cache"; -import { httpProxy } from "utils/proxy/http"; -import { formatApiCall } from "utils/proxy/api-helpers"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; import widgets from "widgets/widgets"; const proxyName = "kavitaProxyHandler"; diff --git a/src/widgets/komga/component.jsx b/src/widgets/komga/component.jsx index 4272ddfc1..1e31b7263 100644 --- a/src/widgets/komga/component.jsx +++ b/src/widgets/komga/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/komga/proxy.js b/src/widgets/komga/proxy.js index a827f4089..b3d72690e 100644 --- a/src/widgets/komga/proxy.js +++ b/src/widgets/komga/proxy.js @@ -1,8 +1,8 @@ import getServiceWidget from "utils/config/service-helpers"; +import createLogger from "utils/logger"; import { formatApiCall } from "utils/proxy/api-helpers"; import { httpProxy } from "utils/proxy/http"; import widgets from "widgets/widgets"; -import createLogger from "utils/logger"; const proxyName = "komgaProxyHandler"; const logger = createLogger(proxyName); diff --git a/src/widgets/kopia/component.jsx b/src/widgets/kopia/component.jsx index 92c6774c7..d022a545a 100755 --- a/src/widgets/kopia/component.jsx +++ b/src/widgets/kopia/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/kubernetes/component.jsx b/src/widgets/kubernetes/component.jsx index b93e07fba..d3587a59a 100644 --- a/src/widgets/kubernetes/component.jsx +++ b/src/widgets/kubernetes/component.jsx @@ -1,7 +1,7 @@ -import useSWR from "swr"; -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; +import useSWR from "swr"; export default function Component({ service }) { const { t } = useTranslation(); diff --git a/src/widgets/lidarr/component.jsx b/src/widgets/lidarr/component.jsx index 28295e570..92f5b8939 100644 --- a/src/widgets/lidarr/component.jsx +++ b/src/widgets/lidarr/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/linkwarden/component.jsx b/src/widgets/linkwarden/component.jsx index 8046faf9d..b2b0d91a8 100644 --- a/src/widgets/linkwarden/component.jsx +++ b/src/widgets/linkwarden/component.jsx @@ -1,6 +1,6 @@ -import React, { useState, useEffect } from "react"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useEffect, useState } from "react"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/lubelogger/component.jsx b/src/widgets/lubelogger/component.jsx index 8a18f1585..390b74ea7 100644 --- a/src/widgets/lubelogger/component.jsx +++ b/src/widgets/lubelogger/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "react-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "react-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/mailcow/component.jsx b/src/widgets/mailcow/component.jsx index 96ef0e45a..e5d9db657 100644 --- a/src/widgets/mailcow/component.jsx +++ b/src/widgets/mailcow/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/mastodon/component.jsx b/src/widgets/mastodon/component.jsx index dbb363206..3a5d9ab64 100644 --- a/src/widgets/mastodon/component.jsx +++ b/src/widgets/mastodon/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/mealie/component.jsx b/src/widgets/mealie/component.jsx index aa18c4590..4a5581576 100644 --- a/src/widgets/mealie/component.jsx +++ b/src/widgets/mealie/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/medusa/component.jsx b/src/widgets/medusa/component.jsx index a5ea4ca1c..88f55bcb7 100644 --- a/src/widgets/medusa/component.jsx +++ b/src/widgets/medusa/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/mikrotik/component.jsx b/src/widgets/mikrotik/component.jsx index a34ce62fb..4bab67926 100644 --- a/src/widgets/mikrotik/component.jsx +++ b/src/widgets/mikrotik/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/minecraft/component.jsx b/src/widgets/minecraft/component.jsx index e277abb6e..00c5f6f83 100644 --- a/src/widgets/minecraft/component.jsx +++ b/src/widgets/minecraft/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/minecraft/proxy.js b/src/widgets/minecraft/proxy.js index 5f238acbe..d1fe1463a 100644 --- a/src/widgets/minecraft/proxy.js +++ b/src/widgets/minecraft/proxy.js @@ -1,7 +1,7 @@ import mc from "minecraftstatuspinger"; -import createLogger from "utils/logger"; import getServiceWidget from "utils/config/service-helpers"; +import createLogger from "utils/logger"; const proxyName = "minecraftProxyHandler"; const logger = createLogger(proxyName); diff --git a/src/widgets/miniflux/component.jsx b/src/widgets/miniflux/component.jsx index 5f5f649eb..2cbbb254a 100644 --- a/src/widgets/miniflux/component.jsx +++ b/src/widgets/miniflux/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/moonraker/component.jsx b/src/widgets/moonraker/component.jsx index ed99e418a..238c83276 100644 --- a/src/widgets/moonraker/component.jsx +++ b/src/widgets/moonraker/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/mylar/component.jsx b/src/widgets/mylar/component.jsx index 0306b1b60..95ec1aca5 100644 --- a/src/widgets/mylar/component.jsx +++ b/src/widgets/mylar/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/myspeed/component.jsx b/src/widgets/myspeed/component.jsx index 7de1b2b0c..dacd2b599 100644 --- a/src/widgets/myspeed/component.jsx +++ b/src/widgets/myspeed/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/navidrome/component.jsx b/src/widgets/navidrome/component.jsx index 7a89f6cac..6218e6d91 100644 --- a/src/widgets/navidrome/component.jsx +++ b/src/widgets/navidrome/component.jsx @@ -1,5 +1,5 @@ -import { useTranslation } from "next-i18next"; import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/netalertx/component.jsx b/src/widgets/netalertx/component.jsx index a52defd32..786db9a55 100644 --- a/src/widgets/netalertx/component.jsx +++ b/src/widgets/netalertx/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/netdata/component.jsx b/src/widgets/netdata/component.jsx index 98d0f7978..2d04aa238 100644 --- a/src/widgets/netdata/component.jsx +++ b/src/widgets/netdata/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/nextcloud/component.jsx b/src/widgets/nextcloud/component.jsx index 2989b6f45..d1f1cac9b 100755 --- a/src/widgets/nextcloud/component.jsx +++ b/src/widgets/nextcloud/component.jsx @@ -1,7 +1,7 @@ +import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import { useTranslation } from "next-i18next"; import { useMemo } from "react"; -import Container from "components/services/widget/container"; -import Block from "components/services/widget/block"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/nextdns/component.jsx b/src/widgets/nextdns/component.jsx index 75c04a85c..45e012811 100644 --- a/src/widgets/nextdns/component.jsx +++ b/src/widgets/nextdns/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/npm/component.jsx b/src/widgets/npm/component.jsx index 1ffaf27e3..54e123a8d 100644 --- a/src/widgets/npm/component.jsx +++ b/src/widgets/npm/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/npm/proxy.js b/src/widgets/npm/proxy.js index 6c7ba09ef..793077829 100644 --- a/src/widgets/npm/proxy.js +++ b/src/widgets/npm/proxy.js @@ -1,10 +1,10 @@ import cache from "memory-cache"; import getServiceWidget from "utils/config/service-helpers"; +import createLogger from "utils/logger"; import { formatApiCall } from "utils/proxy/api-helpers"; import { httpProxy } from "utils/proxy/http"; import widgets from "widgets/widgets"; -import createLogger from "utils/logger"; const proxyName = "npmProxyHandler"; const tokenCacheKey = `${proxyName}__token`; diff --git a/src/widgets/nzbget/component.jsx b/src/widgets/nzbget/component.jsx index 4c0a9d481..a11ac9da1 100644 --- a/src/widgets/nzbget/component.jsx +++ b/src/widgets/nzbget/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/octoprint/component.jsx b/src/widgets/octoprint/component.jsx index 21c3f7d0e..e6b138091 100644 --- a/src/widgets/octoprint/component.jsx +++ b/src/widgets/octoprint/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/omada/component.jsx b/src/widgets/omada/component.jsx index 0d76e1a13..bf301d811 100644 --- a/src/widgets/omada/component.jsx +++ b/src/widgets/omada/component.jsx @@ -1,8 +1,8 @@ import { useTranslation } from "next-i18next"; -import useWidgetAPI from "../../utils/proxy/use-widget-api"; -import Container from "../../components/services/widget/container"; import Block from "../../components/services/widget/block"; +import Container from "../../components/services/widget/container"; +import useWidgetAPI from "../../utils/proxy/use-widget-api"; export default function Component({ service }) { const { t } = useTranslation(); diff --git a/src/widgets/omada/proxy.js b/src/widgets/omada/proxy.js index f4da12936..a5af47b2e 100644 --- a/src/widgets/omada/proxy.js +++ b/src/widgets/omada/proxy.js @@ -1,6 +1,6 @@ -import { httpProxy } from "utils/proxy/http"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { httpProxy } from "utils/proxy/http"; const proxyName = "omadaProxyHandler"; diff --git a/src/widgets/ombi/component.jsx b/src/widgets/ombi/component.jsx index 3beb1198e..859c01aa7 100644 --- a/src/widgets/ombi/component.jsx +++ b/src/widgets/ombi/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/opendtu/component.jsx b/src/widgets/opendtu/component.jsx index 4fed88e49..c1b924b9e 100644 --- a/src/widgets/opendtu/component.jsx +++ b/src/widgets/opendtu/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/openmediavault/component.jsx b/src/widgets/openmediavault/component.jsx index bd34a7502..c14581f9f 100644 --- a/src/widgets/openmediavault/component.jsx +++ b/src/widgets/openmediavault/component.jsx @@ -1,6 +1,6 @@ +import DownloaderGetDownloadList from "./methods/downloader_get_downloadlist"; import ServicesGetStatus from "./methods/services_get_status"; import SmartGetList from "./methods/smart_get_list"; -import DownloaderGetDownloadList from "./methods/downloader_get_downloadlist"; export default function Component({ service }) { switch (service.widget.method) { diff --git a/src/widgets/openmediavault/methods/downloader_get_downloadlist.jsx b/src/widgets/openmediavault/methods/downloader_get_downloadlist.jsx index 22327b923..7caf34265 100644 --- a/src/widgets/openmediavault/methods/downloader_get_downloadlist.jsx +++ b/src/widgets/openmediavault/methods/downloader_get_downloadlist.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/openmediavault/methods/services_get_status.jsx b/src/widgets/openmediavault/methods/services_get_status.jsx index 0579f41ae..7ab0f8c1a 100644 --- a/src/widgets/openmediavault/methods/services_get_status.jsx +++ b/src/widgets/openmediavault/methods/services_get_status.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/openmediavault/methods/smart_get_list.jsx b/src/widgets/openmediavault/methods/smart_get_list.jsx index 6c812449d..4998c02fa 100644 --- a/src/widgets/openmediavault/methods/smart_get_list.jsx +++ b/src/widgets/openmediavault/methods/smart_get_list.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/openmediavault/proxy.js b/src/widgets/openmediavault/proxy.js index 9cda42e86..d2365f2b4 100644 --- a/src/widgets/openmediavault/proxy.js +++ b/src/widgets/openmediavault/proxy.js @@ -1,8 +1,8 @@ -import { formatApiCall } from "utils/proxy/api-helpers"; -import { httpProxy } from "utils/proxy/http"; import getServiceWidget from "utils/config/service-helpers"; -import { addCookieToJar, setCookieHeader } from "utils/proxy/cookie-jar"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { addCookieToJar, setCookieHeader } from "utils/proxy/cookie-jar"; +import { httpProxy } from "utils/proxy/http"; import widgets from "widgets/widgets"; const PROXY_NAME = "OMVProxyHandler"; diff --git a/src/widgets/openwrt/methods/interface.jsx b/src/widgets/openwrt/methods/interface.jsx index e02e3171f..4f77036f4 100644 --- a/src/widgets/openwrt/methods/interface.jsx +++ b/src/widgets/openwrt/methods/interface.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/openwrt/methods/system.jsx b/src/widgets/openwrt/methods/system.jsx index 56c3dc9e3..55c0b0058 100644 --- a/src/widgets/openwrt/methods/system.jsx +++ b/src/widgets/openwrt/methods/system.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/openwrt/proxy.js b/src/widgets/openwrt/proxy.js index 0a0da3ff5..5db907907 100644 --- a/src/widgets/openwrt/proxy.js +++ b/src/widgets/openwrt/proxy.js @@ -1,7 +1,7 @@ -import { sendJsonRpcRequest } from "utils/proxy/handlers/jsonrpc"; -import { formatApiCall } from "utils/proxy/api-helpers"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { sendJsonRpcRequest } from "utils/proxy/handlers/jsonrpc"; import widgets from "widgets/widgets"; const PROXY_NAME = "OpenWRTProxyHandler"; diff --git a/src/widgets/opnsense/component.jsx b/src/widgets/opnsense/component.jsx index b8a90d72a..1caaab472 100644 --- a/src/widgets/opnsense/component.jsx +++ b/src/widgets/opnsense/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/overseerr/component.jsx b/src/widgets/overseerr/component.jsx index 3ec66587f..d5c643925 100644 --- a/src/widgets/overseerr/component.jsx +++ b/src/widgets/overseerr/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/paperlessngx/component.jsx b/src/widgets/paperlessngx/component.jsx index 6585d231d..bafc2e99f 100644 --- a/src/widgets/paperlessngx/component.jsx +++ b/src/widgets/paperlessngx/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/peanut/component.jsx b/src/widgets/peanut/component.jsx index bc0b739b6..54a293adb 100644 --- a/src/widgets/peanut/component.jsx +++ b/src/widgets/peanut/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/pfsense/component.jsx b/src/widgets/pfsense/component.jsx index 18a549331..9f43488b1 100644 --- a/src/widgets/pfsense/component.jsx +++ b/src/widgets/pfsense/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/photoprism/component.jsx b/src/widgets/photoprism/component.jsx index 71772a7ae..21817a107 100644 --- a/src/widgets/photoprism/component.jsx +++ b/src/widgets/photoprism/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/photoprism/proxy.js b/src/widgets/photoprism/proxy.js index fe5096b3a..1959817aa 100644 --- a/src/widgets/photoprism/proxy.js +++ b/src/widgets/photoprism/proxy.js @@ -1,7 +1,7 @@ -import { formatApiCall } from "utils/proxy/api-helpers"; -import { httpProxy } from "utils/proxy/http"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; const logger = createLogger("photoprismProxyHandler"); diff --git a/src/widgets/pihole/component.jsx b/src/widgets/pihole/component.jsx index e065bf39e..6895ab28f 100644 --- a/src/widgets/pihole/component.jsx +++ b/src/widgets/pihole/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/pihole/proxy.js b/src/widgets/pihole/proxy.js index 2f2d9a884..75cd0fb5c 100644 --- a/src/widgets/pihole/proxy.js +++ b/src/widgets/pihole/proxy.js @@ -1,9 +1,9 @@ import cache from "memory-cache"; -import { httpProxy } from "utils/proxy/http"; -import { formatApiCall } from "utils/proxy/api-helpers"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; import widgets from "widgets/widgets"; const proxyName = "piholeProxyHandler"; diff --git a/src/widgets/plantit/component.jsx b/src/widgets/plantit/component.jsx index af46e964e..d93304e73 100644 --- a/src/widgets/plantit/component.jsx +++ b/src/widgets/plantit/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/plex/component.jsx b/src/widgets/plex/component.jsx index 688893d30..153d57b51 100644 --- a/src/widgets/plex/component.jsx +++ b/src/widgets/plex/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; import Block from "components/services/widget/block"; import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/plex/proxy.js b/src/widgets/plex/proxy.js index c092ebaa3..18ffc49b6 100644 --- a/src/widgets/plex/proxy.js +++ b/src/widgets/plex/proxy.js @@ -2,10 +2,10 @@ import cache from "memory-cache"; import { xml2json } from "xml-js"; -import { formatApiCall } from "utils/proxy/api-helpers"; -import { httpProxy } from "utils/proxy/http"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; import widgets from "widgets/widgets"; const proxyName = "plexProxyHandler"; diff --git a/src/widgets/portainer/component.jsx b/src/widgets/portainer/component.jsx index 149707fcd..f8a89507d 100644 --- a/src/widgets/portainer/component.jsx +++ b/src/widgets/portainer/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/prometheus/component.jsx b/src/widgets/prometheus/component.jsx index 003831e5f..7b3722d09 100644 --- a/src/widgets/prometheus/component.jsx +++ b/src/widgets/prometheus/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/prometheusmetric/component.jsx b/src/widgets/prometheusmetric/component.jsx index 3ea20af0f..d58efde91 100644 --- a/src/widgets/prometheusmetric/component.jsx +++ b/src/widgets/prometheusmetric/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/prowlarr/component.jsx b/src/widgets/prowlarr/component.jsx index 55f286345..13d388f70 100644 --- a/src/widgets/prowlarr/component.jsx +++ b/src/widgets/prowlarr/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "react-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "react-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/proxmox/component.jsx b/src/widgets/proxmox/component.jsx index fc4c728c2..51762a737 100644 --- a/src/widgets/proxmox/component.jsx +++ b/src/widgets/proxmox/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/proxmoxbackupserver/component.jsx b/src/widgets/proxmoxbackupserver/component.jsx index 2eb122586..efc71bbba 100644 --- a/src/widgets/proxmoxbackupserver/component.jsx +++ b/src/widgets/proxmoxbackupserver/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/pterodactyl/component.jsx b/src/widgets/pterodactyl/component.jsx index b1ccab8d7..9a702eeff 100644 --- a/src/widgets/pterodactyl/component.jsx +++ b/src/widgets/pterodactyl/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/pyload/component.jsx b/src/widgets/pyload/component.jsx index f0e58f529..f618f75e5 100644 --- a/src/widgets/pyload/component.jsx +++ b/src/widgets/pyload/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/pyload/proxy.js b/src/widgets/pyload/proxy.js index a380c865d..2a1949c17 100644 --- a/src/widgets/pyload/proxy.js +++ b/src/widgets/pyload/proxy.js @@ -1,10 +1,10 @@ import cache from "memory-cache"; import getServiceWidget from "utils/config/service-helpers"; -import { formatApiCall } from "utils/proxy/api-helpers"; -import widgets from "widgets/widgets"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; import { httpProxy } from "utils/proxy/http"; +import widgets from "widgets/widgets"; const proxyName = "pyloadProxyHandler"; const logger = createLogger(proxyName); diff --git a/src/widgets/qbittorrent/component.jsx b/src/widgets/qbittorrent/component.jsx index 7fc47f999..c9f648165 100644 --- a/src/widgets/qbittorrent/component.jsx +++ b/src/widgets/qbittorrent/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import QueueEntry from "../../components/widgets/queue/queueEntry"; diff --git a/src/widgets/qbittorrent/proxy.js b/src/widgets/qbittorrent/proxy.js index aead75820..8f1874bf5 100644 --- a/src/widgets/qbittorrent/proxy.js +++ b/src/widgets/qbittorrent/proxy.js @@ -1,7 +1,7 @@ -import { formatApiCall } from "utils/proxy/api-helpers"; -import { httpProxy } from "utils/proxy/http"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; const logger = createLogger("qbittorrentProxyHandler"); diff --git a/src/widgets/qnap/component.jsx b/src/widgets/qnap/component.jsx index 79f3c8be3..d7fdf8bc3 100644 --- a/src/widgets/qnap/component.jsx +++ b/src/widgets/qnap/component.jsx @@ -1,8 +1,8 @@ /* eslint no-underscore-dangle: ["error", { "allow": ["_text", "_cdata"] }] */ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/qnap/proxy.js b/src/widgets/qnap/proxy.js index 07917d28c..1c5356ae6 100644 --- a/src/widgets/qnap/proxy.js +++ b/src/widgets/qnap/proxy.js @@ -3,10 +3,10 @@ import cache from "memory-cache"; import { xml2json } from "xml-js"; -import { httpProxy } from "utils/proxy/http"; -import { formatApiCall } from "utils/proxy/api-helpers"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; const proxyName = "qnapProxyHandler"; const sessionTokenCacheKey = `${proxyName}__sessionToken`; diff --git a/src/widgets/radarr/component.jsx b/src/widgets/radarr/component.jsx index 70ddcb332..bcf9301b6 100644 --- a/src/widgets/radarr/component.jsx +++ b/src/widgets/radarr/component.jsx @@ -1,7 +1,7 @@ +import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import { useTranslation } from "next-i18next"; import { useCallback } from "react"; -import Container from "components/services/widget/container"; -import Block from "components/services/widget/block"; import QueueEntry from "../../components/widgets/queue/queueEntry"; diff --git a/src/widgets/radarr/widget.js b/src/widgets/radarr/widget.js index 7d370378d..4f71b8d96 100644 --- a/src/widgets/radarr/widget.js +++ b/src/widgets/radarr/widget.js @@ -1,5 +1,5 @@ -import genericProxyHandler from "utils/proxy/handlers/generic"; import { asJson, jsonArrayFilter } from "utils/proxy/api-helpers"; +import genericProxyHandler from "utils/proxy/handlers/generic"; const widget = { api: "{url}/api/v3/{endpoint}?apikey={key}", diff --git a/src/widgets/readarr/component.jsx b/src/widgets/readarr/component.jsx index cbf68a4d9..845b78203 100644 --- a/src/widgets/readarr/component.jsx +++ b/src/widgets/readarr/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/readarr/widget.js b/src/widgets/readarr/widget.js index 58cc09c4c..f786f0bca 100644 --- a/src/widgets/readarr/widget.js +++ b/src/widgets/readarr/widget.js @@ -1,5 +1,5 @@ -import genericProxyHandler from "utils/proxy/handlers/generic"; import { jsonArrayFilter } from "utils/proxy/api-helpers"; +import genericProxyHandler from "utils/proxy/handlers/generic"; const widget = { api: "{url}/api/v1/{endpoint}?apikey={key}", diff --git a/src/widgets/romm/component.jsx b/src/widgets/romm/component.jsx index 5c6349d0f..b0787fb3e 100644 --- a/src/widgets/romm/component.jsx +++ b/src/widgets/romm/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/rutorrent/component.jsx b/src/widgets/rutorrent/component.jsx index 9d2ad4e22..245a786cb 100644 --- a/src/widgets/rutorrent/component.jsx +++ b/src/widgets/rutorrent/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/rutorrent/proxy.js b/src/widgets/rutorrent/proxy.js index e0ae44fec..910f2311a 100644 --- a/src/widgets/rutorrent/proxy.js +++ b/src/widgets/rutorrent/proxy.js @@ -1,8 +1,8 @@ import getServiceWidget from "utils/config/service-helpers"; +import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; import { httpProxy } from "utils/proxy/http"; import widgets from "widgets/widgets"; -import { formatApiCall } from "utils/proxy/api-helpers"; -import createLogger from "utils/logger"; const logger = createLogger("rutorrentProxyHandler"); diff --git a/src/widgets/sabnzbd/component.jsx b/src/widgets/sabnzbd/component.jsx index 5a9ba4886..9807dd935 100644 --- a/src/widgets/sabnzbd/component.jsx +++ b/src/widgets/sabnzbd/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/scrutiny/component.jsx b/src/widgets/scrutiny/component.jsx index f81a519c9..2450a95e0 100644 --- a/src/widgets/scrutiny/component.jsx +++ b/src/widgets/scrutiny/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/slskd/component.jsx b/src/widgets/slskd/component.jsx index 8c26d4e48..40a206b6a 100644 --- a/src/widgets/slskd/component.jsx +++ b/src/widgets/slskd/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/slskd/widget.js b/src/widgets/slskd/widget.js index fdea77387..3eedd356e 100644 --- a/src/widgets/slskd/widget.js +++ b/src/widgets/slskd/widget.js @@ -1,5 +1,4 @@ import credentialedProxyHandler from "utils/proxy/handlers/credentialed"; -import { asJson } from "utils/proxy/api-helpers"; const widget = { api: `{url}/api/v0/{endpoint}`, diff --git a/src/widgets/sonarr/component.jsx b/src/widgets/sonarr/component.jsx index 725e6d668..19cc2c12c 100644 --- a/src/widgets/sonarr/component.jsx +++ b/src/widgets/sonarr/component.jsx @@ -1,7 +1,7 @@ +import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import { useTranslation } from "next-i18next"; import { useCallback } from "react"; -import Container from "components/services/widget/container"; -import Block from "components/services/widget/block"; import QueueEntry from "../../components/widgets/queue/queueEntry"; diff --git a/src/widgets/sonarr/widget.js b/src/widgets/sonarr/widget.js index acb4a5512..1fcef8eb5 100644 --- a/src/widgets/sonarr/widget.js +++ b/src/widgets/sonarr/widget.js @@ -1,5 +1,5 @@ -import genericProxyHandler from "utils/proxy/handlers/generic"; import { asJson } from "utils/proxy/api-helpers"; +import genericProxyHandler from "utils/proxy/handlers/generic"; const widget = { api: "{url}/api/v3/{endpoint}?apikey={key}", diff --git a/src/widgets/speedtest/component.jsx b/src/widgets/speedtest/component.jsx index e34f53aca..7be00aa22 100644 --- a/src/widgets/speedtest/component.jsx +++ b/src/widgets/speedtest/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/spoolman/component.jsx b/src/widgets/spoolman/component.jsx index b690f9c04..62eb3a1d6 100644 --- a/src/widgets/spoolman/component.jsx +++ b/src/widgets/spoolman/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/stash/component.jsx b/src/widgets/stash/component.jsx index e3986d4b1..965c6b59f 100644 --- a/src/widgets/stash/component.jsx +++ b/src/widgets/stash/component.jsx @@ -1,7 +1,7 @@ +import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import { useTranslation } from "next-i18next"; import { useEffect, useState } from "react"; -import Container from "components/services/widget/container"; -import Block from "components/services/widget/block"; import { formatProxyUrl } from "utils/proxy/api-helpers"; diff --git a/src/widgets/stocks/component.jsx b/src/widgets/stocks/component.jsx index bcd3b1107..be471ddf3 100644 --- a/src/widgets/stocks/component.jsx +++ b/src/widgets/stocks/component.jsx @@ -1,7 +1,7 @@ -import { useTranslation } from "next-i18next"; import classNames from "classnames"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/strelaysrv/component.jsx b/src/widgets/strelaysrv/component.jsx index 0aa70d887..026e19b70 100644 --- a/src/widgets/strelaysrv/component.jsx +++ b/src/widgets/strelaysrv/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/suwayomi/component.jsx b/src/widgets/suwayomi/component.jsx index 1a8625b9c..1cbd8c537 100644 --- a/src/widgets/suwayomi/component.jsx +++ b/src/widgets/suwayomi/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/suwayomi/proxy.js b/src/widgets/suwayomi/proxy.js index def811ccf..4df55b959 100644 --- a/src/widgets/suwayomi/proxy.js +++ b/src/widgets/suwayomi/proxy.js @@ -1,7 +1,7 @@ -import { httpProxy } from "utils/proxy/http"; -import { formatApiCall } from "utils/proxy/api-helpers"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; import widgets from "widgets/widgets"; const proxyName = "suwayomiProxyHandler"; diff --git a/src/widgets/swagdashboard/component.jsx b/src/widgets/swagdashboard/component.jsx index 2b17278f6..4220e3c8e 100644 --- a/src/widgets/swagdashboard/component.jsx +++ b/src/widgets/swagdashboard/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/tailscale/component.jsx b/src/widgets/tailscale/component.jsx index a6e76bed5..b95cb016b 100644 --- a/src/widgets/tailscale/component.jsx +++ b/src/widgets/tailscale/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/tandoor/component.jsx b/src/widgets/tandoor/component.jsx index b31cad951..4a02d539c 100644 --- a/src/widgets/tandoor/component.jsx +++ b/src/widgets/tandoor/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/tautulli/component.jsx b/src/widgets/tautulli/component.jsx index 50e8295f3..3f6443dd1 100644 --- a/src/widgets/tautulli/component.jsx +++ b/src/widgets/tautulli/component.jsx @@ -1,8 +1,8 @@ /* eslint-disable camelcase */ -import { useTranslation } from "next-i18next"; -import { BsFillPlayFill, BsPauseFill, BsCpu, BsFillCpuFill } from "react-icons/bs"; -import { MdOutlineSmartDisplay, MdSmartDisplay } from "react-icons/md"; import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; +import { BsCpu, BsFillCpuFill, BsFillPlayFill, BsPauseFill } from "react-icons/bs"; +import { MdOutlineSmartDisplay, MdSmartDisplay } from "react-icons/md"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/tdarr/component.jsx b/src/widgets/tdarr/component.jsx index ce9d43fd5..824a56b34 100644 --- a/src/widgets/tdarr/component.jsx +++ b/src/widgets/tdarr/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/tdarr/proxy.js b/src/widgets/tdarr/proxy.js index 88da30fdf..d6897dfc7 100644 --- a/src/widgets/tdarr/proxy.js +++ b/src/widgets/tdarr/proxy.js @@ -1,7 +1,7 @@ -import { httpProxy } from "utils/proxy/http"; -import { formatApiCall } from "utils/proxy/api-helpers"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; import widgets from "widgets/widgets"; const proxyName = "tdarrProxyHandler"; diff --git a/src/widgets/technitium/component.jsx b/src/widgets/technitium/component.jsx index 22f56e961..fa221025b 100644 --- a/src/widgets/technitium/component.jsx +++ b/src/widgets/technitium/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/technitium/widget.js b/src/widgets/technitium/widget.js index c3432a677..fc4577bef 100644 --- a/src/widgets/technitium/widget.js +++ b/src/widgets/technitium/widget.js @@ -1,5 +1,5 @@ -import genericProxyHandler from "utils/proxy/handlers/generic"; import { asJson } from "utils/proxy/api-helpers"; +import genericProxyHandler from "utils/proxy/handlers/generic"; const widget = { api: "{url}/api/{endpoint}?token={key}&utc=true", diff --git a/src/widgets/traefik/component.jsx b/src/widgets/traefik/component.jsx index 598170fa1..e4b3b46ba 100644 --- a/src/widgets/traefik/component.jsx +++ b/src/widgets/traefik/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/transmission/component.jsx b/src/widgets/transmission/component.jsx index bd19c52e8..474fe69f8 100644 --- a/src/widgets/transmission/component.jsx +++ b/src/widgets/transmission/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/transmission/proxy.js b/src/widgets/transmission/proxy.js index 8b8049bc8..b0be7bac7 100644 --- a/src/widgets/transmission/proxy.js +++ b/src/widgets/transmission/proxy.js @@ -1,9 +1,9 @@ import cache from "memory-cache"; -import { httpProxy } from "utils/proxy/http"; -import { formatApiCall } from "utils/proxy/api-helpers"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; import widgets from "widgets/widgets"; const proxyName = "transmissionProxyHandler"; diff --git a/src/widgets/truenas/component.jsx b/src/widgets/truenas/component.jsx index 0e56bc915..12ceef564 100644 --- a/src/widgets/truenas/component.jsx +++ b/src/widgets/truenas/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import Pool from "widgets/truenas/pool"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/truenas/widget.js b/src/widgets/truenas/widget.js index d322753f2..528114edb 100644 --- a/src/widgets/truenas/widget.js +++ b/src/widgets/truenas/widget.js @@ -1,5 +1,5 @@ -import credentialedProxyHandler from "utils/proxy/handlers/credentialed"; import { asJson, jsonArrayFilter } from "utils/proxy/api-helpers"; +import credentialedProxyHandler from "utils/proxy/handlers/credentialed"; const widget = { api: "{url}/api/v2.0/{endpoint}", diff --git a/src/widgets/tubearchivist/component.jsx b/src/widgets/tubearchivist/component.jsx index 6af255cd2..427298e48 100644 --- a/src/widgets/tubearchivist/component.jsx +++ b/src/widgets/tubearchivist/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/unifi/component.jsx b/src/widgets/unifi/component.jsx index 0c00b487d..ad58d1d99 100644 --- a/src/widgets/unifi/component.jsx +++ b/src/widgets/unifi/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/unifi/proxy.js b/src/widgets/unifi/proxy.js index 24be7dd97..c932fc41c 100644 --- a/src/widgets/unifi/proxy.js +++ b/src/widgets/unifi/proxy.js @@ -1,11 +1,11 @@ import cache from "memory-cache"; -import { formatApiCall } from "utils/proxy/api-helpers"; -import { httpProxy } from "utils/proxy/http"; -import { addCookieToJar, setCookieHeader } from "utils/proxy/cookie-jar"; import getServiceWidget from "utils/config/service-helpers"; import { getPrivateWidgetOptions } from "utils/config/widget-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { addCookieToJar, setCookieHeader } from "utils/proxy/cookie-jar"; +import { httpProxy } from "utils/proxy/http"; import widgets from "widgets/widgets"; const udmpPrefix = "/proxy/network"; diff --git a/src/widgets/unmanic/component.jsx b/src/widgets/unmanic/component.jsx index 7cc8eec12..12069e523 100644 --- a/src/widgets/unmanic/component.jsx +++ b/src/widgets/unmanic/component.jsx @@ -1,9 +1,9 @@ -import { useEffect, useState } from "react"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useEffect, useState } from "react"; -import useWidgetAPI from "utils/proxy/use-widget-api"; import { formatProxyUrl } from "utils/proxy/api-helpers"; +import useWidgetAPI from "utils/proxy/use-widget-api"; export default function Component({ service }) { const { widget } = service; diff --git a/src/widgets/unmanic/widget.js b/src/widgets/unmanic/widget.js index 4c9713e4e..ef4493e9a 100644 --- a/src/widgets/unmanic/widget.js +++ b/src/widgets/unmanic/widget.js @@ -1,5 +1,5 @@ -import genericProxyHandler from "utils/proxy/handlers/generic"; import { asJson } from "utils/proxy/api-helpers"; +import genericProxyHandler from "utils/proxy/handlers/generic"; const widget = { api: "{url}/unmanic/api/v2/{endpoint}", diff --git a/src/widgets/uptimekuma/component.jsx b/src/widgets/uptimekuma/component.jsx index d044c2552..e8a42e48f 100644 --- a/src/widgets/uptimekuma/component.jsx +++ b/src/widgets/uptimekuma/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/uptimerobot/component.jsx b/src/widgets/uptimerobot/component.jsx index c18462baf..a1f234c2e 100644 --- a/src/widgets/uptimerobot/component.jsx +++ b/src/widgets/uptimerobot/component.jsx @@ -1,7 +1,7 @@ +import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import { useTranslation } from "next-i18next"; import { useEffect, useState } from "react"; -import Container from "components/services/widget/container"; -import Block from "components/services/widget/block"; import { formatProxyUrl } from "utils/proxy/api-helpers"; diff --git a/src/widgets/urbackup/component.jsx b/src/widgets/urbackup/component.jsx index 76769e13a..9d8f92ba1 100644 --- a/src/widgets/urbackup/component.jsx +++ b/src/widgets/urbackup/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/vikunja/component.jsx b/src/widgets/vikunja/component.jsx index 7f8efb419..1afccd38d 100644 --- a/src/widgets/vikunja/component.jsx +++ b/src/widgets/vikunja/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/vikunja/widget.js b/src/widgets/vikunja/widget.js index 9a1920266..8e5e680a7 100644 --- a/src/widgets/vikunja/widget.js +++ b/src/widgets/vikunja/widget.js @@ -1,5 +1,5 @@ -import credentialedProxyHandler from "utils/proxy/handlers/credentialed"; import { asJson } from "utils/proxy/api-helpers"; +import credentialedProxyHandler from "utils/proxy/handlers/credentialed"; const widget = { api: `{url}/api/v1/{endpoint}`, diff --git a/src/widgets/watchtower/component.jsx b/src/widgets/watchtower/component.jsx index 0bed94450..58b2a3f5b 100644 --- a/src/widgets/watchtower/component.jsx +++ b/src/widgets/watchtower/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/watchtower/proxy.js b/src/widgets/watchtower/proxy.js index 588d08ee0..484c3c7db 100644 --- a/src/widgets/watchtower/proxy.js +++ b/src/widgets/watchtower/proxy.js @@ -1,7 +1,7 @@ -import { httpProxy } from "utils/proxy/http"; -import { formatApiCall } from "utils/proxy/api-helpers"; import getServiceWidget from "utils/config/service-helpers"; import createLogger from "utils/logger"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import { httpProxy } from "utils/proxy/http"; import widgets from "widgets/widgets"; const proxyName = "watchtowerProxyHandler"; diff --git a/src/widgets/wgeasy/component.jsx b/src/widgets/wgeasy/component.jsx index eb42532e9..829b120d7 100644 --- a/src/widgets/wgeasy/component.jsx +++ b/src/widgets/wgeasy/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/whatsupdocker/component.jsx b/src/widgets/whatsupdocker/component.jsx index 52afe09d2..cc3b51740 100644 --- a/src/widgets/whatsupdocker/component.jsx +++ b/src/widgets/whatsupdocker/component.jsx @@ -1,5 +1,5 @@ -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/widgets.js b/src/widgets/widgets.js index 21cff92b1..992855d03 100644 --- a/src/widgets/widgets.js +++ b/src/widgets/widgets.js @@ -41,15 +41,15 @@ import gotify from "./gotify/widget"; import grafana from "./grafana/widget"; import hdhomerun from "./hdhomerun/widget"; import headscale from "./headscale/widget"; +import healthchecks from "./healthchecks/widget"; import hoarder from "./hoarder/widget"; import homeassistant from "./homeassistant/widget"; import homebox from "./homebox/widget"; import homebridge from "./homebridge/widget"; -import healthchecks from "./healthchecks/widget"; import immich from "./immich/widget"; import jackett from "./jackett/widget"; -import jellyseerr from "./jellyseerr/widget"; import jdownloader from "./jdownloader/widget"; +import jellyseerr from "./jellyseerr/widget"; import kavita from "./kavita/widget"; import komga from "./komga/widget"; import kopia from "./kopia/widget"; @@ -60,9 +60,9 @@ import mailcow from "./mailcow/widget"; import mastodon from "./mastodon/widget"; import mealie from "./mealie/widget"; import medusa from "./medusa/widget"; +import mikrotik from "./mikrotik/widget"; import minecraft from "./minecraft/widget"; import miniflux from "./miniflux/widget"; -import mikrotik from "./mikrotik/widget"; import mjpeg from "./mjpeg/widget"; import moonraker from "./moonraker/widget"; import mylar from "./mylar/widget"; @@ -78,15 +78,14 @@ import octoprint from "./octoprint/widget"; import omada from "./omada/widget"; import ombi from "./ombi/widget"; import opendtu from "./opendtu/widget"; -import opnsense from "./opnsense/widget"; -import overseerr from "./overseerr/widget"; import openmediavault from "./openmediavault/widget"; import openwrt from "./openwrt/widget"; +import opnsense from "./opnsense/widget"; +import overseerr from "./overseerr/widget"; import paperlessngx from "./paperlessngx/widget"; import peanut from "./peanut/widget"; import pfsense from "./pfsense/widget"; import photoprism from "./photoprism/widget"; -import proxmoxbackupserver from "./proxmoxbackupserver/widget"; import pihole from "./pihole/widget"; import plantit from "./plantit/widget"; import plex from "./plex/widget"; @@ -95,12 +94,14 @@ import prometheus from "./prometheus/widget"; import prometheusmetric from "./prometheusmetric/widget"; import prowlarr from "./prowlarr/widget"; import proxmox from "./proxmox/widget"; +import proxmoxbackupserver from "./proxmoxbackupserver/widget"; import pterodactyl from "./pterodactyl/widget"; import pyload from "./pyload/widget"; import qbittorrent from "./qbittorrent/widget"; import qnap from "./qnap/widget"; import radarr from "./radarr/widget"; import readarr from "./readarr/widget"; +import romm from "./romm/widget"; import rutorrent from "./rutorrent/widget"; import sabnzbd from "./sabnzbd/widget"; import scrutiny from "./scrutiny/widget"; @@ -111,28 +112,27 @@ import spoolman from "./spoolman/widget"; import stash from "./stash/widget"; import stocks from "./stocks/widget"; import strelaysrv from "./strelaysrv/widget"; -import swagdashboard from "./swagdashboard/widget"; import suwayomi from "./suwayomi/widget"; +import swagdashboard from "./swagdashboard/widget"; import tailscale from "./tailscale/widget"; import tandoor from "./tandoor/widget"; import tautulli from "./tautulli/widget"; -import technitium from "./technitium/widget"; import tdarr from "./tdarr/widget"; +import technitium from "./technitium/widget"; import traefik from "./traefik/widget"; import transmission from "./transmission/widget"; -import tubearchivist from "./tubearchivist/widget"; import truenas from "./truenas/widget"; +import tubearchivist from "./tubearchivist/widget"; import unifi from "./unifi/widget"; import unmanic from "./unmanic/widget"; import uptimekuma from "./uptimekuma/widget"; import uptimerobot from "./uptimerobot/widget"; +import urbackup from "./urbackup/widget"; import vikunja from "./vikunja/widget"; import watchtower from "./watchtower/widget"; import wgeasy from "./wgeasy/widget"; import whatsupdocker from "./whatsupdocker/widget"; import xteve from "./xteve/widget"; -import urbackup from "./urbackup/widget"; -import romm from "./romm/widget"; import zabbix from "./zabbix/widget"; const widgets = { diff --git a/src/widgets/xteve/component.jsx b/src/widgets/xteve/component.jsx index 9d514e759..41f2beb06 100644 --- a/src/widgets/xteve/component.jsx +++ b/src/widgets/xteve/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/xteve/proxy.js b/src/widgets/xteve/proxy.js index 453e36456..53d82bc4a 100644 --- a/src/widgets/xteve/proxy.js +++ b/src/widgets/xteve/proxy.js @@ -1,8 +1,8 @@ +import getServiceWidget from "utils/config/service-helpers"; +import createLogger from "utils/logger"; import { formatApiCall } from "utils/proxy/api-helpers"; import { httpProxy } from "utils/proxy/http"; -import createLogger from "utils/logger"; import widgets from "widgets/widgets"; -import getServiceWidget from "utils/config/service-helpers"; const logger = createLogger("xteveProxyHandler"); diff --git a/src/widgets/zabbix/component.jsx b/src/widgets/zabbix/component.jsx index a2cc81686..b6a5b20bc 100644 --- a/src/widgets/zabbix/component.jsx +++ b/src/widgets/zabbix/component.jsx @@ -1,6 +1,6 @@ -import { useTranslation } from "next-i18next"; -import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; From 1666106dcd5e7e8a4c0a0f66da23a1684dd5385c Mon Sep 17 00:00:00 2001 From: RoboMagus <68224306+RoboMagus@users.noreply.github.com> Date: Mon, 31 Mar 2025 15:44:17 +0200 Subject: [PATCH 06/21] Chore: add more Docker Semver Tags (#5107) Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com> --- .github/workflows/docker-publish.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index afb7fca43..7a133c1da 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -77,6 +77,15 @@ jobs: images: | ${{ env.IMAGE_NAME }} ghcr.io/${{ env.IMAGE_NAME }} + tags: | + # Default tags + type=schedule,pattern=nightly + type=ref,event=branch + type=ref,event=tag + # Versioning tags + type=semver,pattern=v{{version}} + type=semver,pattern=v{{major}}.{{minor}} + type=semver,pattern=v{{major}} flavor: | latest=auto From 6741eb723d1781972465304d9ab5f27d7c3101b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 09:22:36 -0700 Subject: [PATCH 07/21] Chore(deps): Bump i18next from 21.10.0 to 24.2.3 (#5109) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 51 ++++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 42 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 07be3d1d8..2386454c1 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "dockerode": "^4.0.4", "follow-redirects": "^1.15.9", "gamedig": "^5.2.0", - "i18next": "^21.10.0", + "i18next": "^24.2.3", "js-yaml": "^4.1.0", "json-rpc-2.0": "^1.7.0", "luxon": "^3.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 40069cada..2e0b8b3f2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -33,8 +33,8 @@ importers: specifier: ^5.2.0 version: 5.2.0 i18next: - specifier: ^21.10.0 - version: 21.10.0 + specifier: ^24.2.3 + version: 24.2.3(typescript@5.7.3) js-yaml: specifier: ^4.1.0 version: 4.1.0 @@ -73,7 +73,7 @@ importers: version: 18.3.1(react@18.3.1) react-i18next: specifier: ^11.18.6 - version: 11.18.6(i18next@21.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 11.18.6(i18next@24.2.3(typescript@5.7.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-icons: specifier: ^5.4.0 version: 5.4.0(react@18.3.1) @@ -101,6 +101,10 @@ importers: xml-js: specifier: ^1.6.11 version: 1.6.11 + optionalDependencies: + osx-temperature-sensor: + specifier: ^1.0.8 + version: 1.0.8 devDependencies: '@tailwindcss/forms': specifier: ^0.5.10 @@ -150,10 +154,6 @@ importers: typescript: specifier: ^5.7.3 version: 5.7.3 - optionalDependencies: - osx-temperature-sensor: - specifier: ^1.0.8 - version: 1.0.8 packages: @@ -165,6 +165,10 @@ packages: resolution: {integrity: sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==} engines: {node: '>=6.9.0'} + '@babel/runtime@7.27.0': + resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} + engines: {node: '>=6.9.0'} + '@balena/dockerignore@1.0.2': resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==} @@ -1554,6 +1558,14 @@ packages: i18next@21.10.0: resolution: {integrity: sha512-YeuIBmFsGjUfO3qBmMOc0rQaun4mIpGKET5WDwvu8lU7gvwpcariZLNtL0Fzj+zazcHUrlXHiptcFhBMFaxzfg==} + i18next@24.2.3: + resolution: {integrity: sha512-lfbf80OzkocvX7nmZtu7nSTNbrTYR52sLWxPtlXX1zAhVw8WEnFk4puUkCR4B1dNQwbSpEHHHemcZu//7EcB7A==} + peerDependencies: + typescript: ^5 + peerDependenciesMeta: + typescript: + optional: true + ical-date-parser@4.0.0: resolution: {integrity: sha512-XRCK/FU1akC2ZaJOdKIeZI6BLLgzWUuE0pegSrrkEva89GOan5mNkLVqCU4EMhCJ9nkG5TLWdMXrVX1fNAkFzw==} @@ -2783,6 +2795,10 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 + '@babel/runtime@7.27.0': + dependencies: + regenerator-runtime: 0.14.1 + '@balena/dockerignore@1.0.2': {} '@colors/colors@1.6.0': {} @@ -3741,7 +3757,7 @@ snapshots: dom-helpers@5.2.1: dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.0 csstype: 3.1.3 dom-serializer@2.0.0: @@ -4346,7 +4362,13 @@ snapshots: i18next@21.10.0: dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.0 + + i18next@24.2.3(typescript@5.7.3): + dependencies: + '@babel/runtime': 7.27.0 + optionalDependencies: + typescript: 5.7.3 ical-date-parser@4.0.0: {} @@ -4967,6 +4989,15 @@ snapshots: optionalDependencies: react-dom: 18.3.1(react@18.3.1) + react-i18next@11.18.6(i18next@24.2.3(typescript@5.7.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + html-parse-stringify: 3.0.1 + i18next: 24.2.3(typescript@5.7.3) + react: 18.3.1 + optionalDependencies: + react-dom: 18.3.1(react@18.3.1) + react-icons@5.4.0(react@18.3.1): dependencies: react: 18.3.1 @@ -4985,7 +5016,7 @@ snapshots: react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.0 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 From 5e946ed2c251e098d1cfd48cd0e78866809ee305 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 09:24:24 -0700 Subject: [PATCH 08/21] Chore(deps-dev): Bump postcss from 8.5.2 to 8.5.3 (#5110) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 21 +++++++-------------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 2386454c1..25a0e85e3 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "eslint-plugin-prettier": "^5.2.3", "eslint-plugin-react": "^7.37.4", "eslint-plugin-react-hooks": "^5.1.0", - "postcss": "^8.5.2", + "postcss": "^8.5.3", "prettier": "^3.5.2", "prettier-plugin-organize-imports": "^4.1.0", "tailwind-scrollbar": "^4.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2e0b8b3f2..e1255a5c6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -137,8 +137,8 @@ importers: specifier: ^5.1.0 version: 5.1.0(eslint@9.21.0(jiti@2.4.2)) postcss: - specifier: ^8.5.2 - version: 8.5.2 + specifier: ^8.5.3 + version: 8.5.3 prettier: specifier: ^3.5.2 version: 3.5.2 @@ -1975,11 +1975,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@3.3.8: - resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -2147,8 +2142,8 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.2: - resolution: {integrity: sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==} + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -3163,7 +3158,7 @@ snapshots: '@tailwindcss/node': 4.0.9 '@tailwindcss/oxide': 4.0.9 lightningcss: 1.29.1 - postcss: 8.5.2 + postcss: 8.5.3 tailwindcss: 4.0.9 '@tanstack/react-virtual@3.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': @@ -4726,8 +4721,6 @@ snapshots: nanoid@3.3.11: {} - nanoid@3.3.8: {} - natural-compare@1.4.0: {} next-i18next@12.1.0(next@15.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): @@ -4906,9 +4899,9 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.5.2: + postcss@8.5.3: dependencies: - nanoid: 3.3.8 + nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 From f46568ec2a1eaae1204230631e92870d33ccf6de Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 09:24:46 -0700 Subject: [PATCH 09/21] Chore(deps-dev): Bump eslint-config-prettier from 10.0.2 to 10.1.1 (#5112) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 25a0e85e3..3a0d1d119 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "@tailwindcss/postcss": "^4.0.9", "eslint": "^9.21.0", "eslint-config-next": "^15.1.7", - "eslint-config-prettier": "^10.0.2", + "eslint-config-prettier": "^10.1.1", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-prettier": "^5.2.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e1255a5c6..d68783f68 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -119,8 +119,8 @@ importers: specifier: ^15.1.7 version: 15.1.7(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) eslint-config-prettier: - specifier: ^10.0.2 - version: 10.0.2(eslint@9.21.0(jiti@2.4.2)) + specifier: ^10.1.1 + version: 10.1.1(eslint@9.21.0(jiti@2.4.2)) eslint-plugin-import: specifier: ^2.31.0 version: 2.31.0(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-typescript@3.8.2)(eslint@9.21.0(jiti@2.4.2)) @@ -129,7 +129,7 @@ importers: version: 6.10.2(eslint@9.21.0(jiti@2.4.2)) eslint-plugin-prettier: specifier: ^5.2.3 - version: 5.2.3(eslint-config-prettier@10.0.2(eslint@9.21.0(jiti@2.4.2)))(eslint@9.21.0(jiti@2.4.2))(prettier@3.5.2) + version: 5.2.3(eslint-config-prettier@10.1.1(eslint@9.21.0(jiti@2.4.2)))(eslint@9.21.0(jiti@2.4.2))(prettier@3.5.2) eslint-plugin-react: specifier: ^7.37.4 version: 7.37.4(eslint@9.21.0(jiti@2.4.2)) @@ -1207,8 +1207,8 @@ packages: typescript: optional: true - eslint-config-prettier@10.0.2: - resolution: {integrity: sha512-1105/17ZIMjmCOJOPNfVdbXafLCLj3hPmkmB7dLgt7XsQ/zkxSuDerE/xgO3RxoHysR1N1whmquY0lSn2O0VLg==} + eslint-config-prettier@10.1.1: + resolution: {integrity: sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -3920,7 +3920,7 @@ snapshots: - eslint-plugin-import-x - supports-color - eslint-config-prettier@10.0.2(eslint@9.21.0(jiti@2.4.2)): + eslint-config-prettier@10.1.1(eslint@9.21.0(jiti@2.4.2)): dependencies: eslint: 9.21.0(jiti@2.4.2) @@ -4006,14 +4006,14 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-prettier@5.2.3(eslint-config-prettier@10.0.2(eslint@9.21.0(jiti@2.4.2)))(eslint@9.21.0(jiti@2.4.2))(prettier@3.5.2): + eslint-plugin-prettier@5.2.3(eslint-config-prettier@10.1.1(eslint@9.21.0(jiti@2.4.2)))(eslint@9.21.0(jiti@2.4.2))(prettier@3.5.2): dependencies: eslint: 9.21.0(jiti@2.4.2) prettier: 3.5.2 prettier-linter-helpers: 1.0.0 synckit: 0.9.2 optionalDependencies: - eslint-config-prettier: 10.0.2(eslint@9.21.0(jiti@2.4.2)) + eslint-config-prettier: 10.1.1(eslint@9.21.0(jiti@2.4.2)) eslint-plugin-react-hooks@5.1.0(eslint@9.21.0(jiti@2.4.2)): dependencies: From a59ee5a6057e4e42708745489ff2c8d5541d77eb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 09:32:05 -0700 Subject: [PATCH 10/21] Chore(deps-dev): Bump eslint-config-next from 15.1.7 to 15.2.4 (#5113) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 405 ++++++++++++++++++++++++++++++++++++------------- 2 files changed, 302 insertions(+), 105 deletions(-) diff --git a/package.json b/package.json index 3a0d1d119..53d1e7708 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "@tailwindcss/forms": "^0.5.10", "@tailwindcss/postcss": "^4.0.9", "eslint": "^9.21.0", - "eslint-config-next": "^15.1.7", + "eslint-config-next": "^15.2.4", "eslint-config-prettier": "^10.1.1", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d68783f68..d2eabfe97 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -116,14 +116,14 @@ importers: specifier: ^9.21.0 version: 9.21.0(jiti@2.4.2) eslint-config-next: - specifier: ^15.1.7 - version: 15.1.7(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + specifier: ^15.2.4 + version: 15.2.4(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) eslint-config-prettier: specifier: ^10.1.1 version: 10.1.1(eslint@9.21.0(jiti@2.4.2)) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-typescript@3.8.2)(eslint@9.21.0(jiti@2.4.2)) + version: 2.31.0(@typescript-eslint/parser@8.29.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-typescript@3.10.0)(eslint@9.21.0(jiti@2.4.2)) eslint-plugin-jsx-a11y: specifier: ^6.10.2 version: 6.10.2(eslint@9.21.0(jiti@2.4.2)) @@ -179,15 +179,30 @@ packages: '@dabh/diagnostics@2.0.3': resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} + '@emnapi/core@1.4.0': + resolution: {integrity: sha512-H+N/FqT07NmLmt6OFFtDfwe8PNygprzBikrEMyQfgqSmT0vzE515Pz7R8izwB9q/zsH/MA64AKoul3sA6/CzVg==} + '@emnapi/runtime@1.3.1': resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + '@emnapi/runtime@1.4.0': + resolution: {integrity: sha512-64WYIf4UYcdLnbKn/umDlNjQDSS8AgZrI/R9+x5ilkUVFxXcA1Ebl+gQLc/6mERA4407Xof0R7wEyEuj091CVw==} + + '@emnapi/wasi-threads@1.0.1': + resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} + '@eslint-community/eslint-utils@4.4.1': resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.5.1': + resolution: {integrity: sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/regexpp@4.12.1': resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -383,11 +398,14 @@ packages: '@kubernetes/client-node@1.0.0': resolution: {integrity: sha512-a8NSvFDSHKFZ0sR1hbPSf8IDFNJwctEU5RodSCNiq/moRXWmrdmqhb1RRQzF+l+TSBaDgHw3YsYNxxE92STBzw==} + '@napi-rs/wasm-runtime@0.2.8': + resolution: {integrity: sha512-OBlgKdX7gin7OIq4fadsjpg+cp2ZphvAIKucHsNfTdJiqdOmOEwQd/bHi0VwNrcw5xpBJyUw6cK/QilCqy1BSg==} + '@next/env@15.2.3': resolution: {integrity: sha512-a26KnbW9DFEUsSxAxKBORR/uD9THoYoKbkpFywMN/AFvboTt94b8+g/07T8J6ACsdLag8/PDU60ov4rPxRAixw==} - '@next/eslint-plugin-next@15.1.7': - resolution: {integrity: sha512-kRP7RjSxfTO13NE317ek3mSGzoZlI33nc/i5hs1KaWpK+egs85xg0DJ4p32QEiHnR0mVjuUfhRIun7awqfL7pQ==} + '@next/eslint-plugin-next@15.2.4': + resolution: {integrity: sha512-O8ScvKtnxkp8kL9TpJTTKnMqlkZnS+QxwoQnJwPGBxjBbzd6OVVPEJ5/pMNrktSyXQD/chEfzfFzYLM6JANOOQ==} '@next/swc-darwin-arm64@15.2.3': resolution: {integrity: sha512-uaBhA8aLbXLqwjnsHSkxs353WrRgQgiFjduDpc7YXEU0B54IKx3vU+cxQlYwPCyC8uYEEX7THhtQQsfHnvv8dw==} @@ -494,8 +512,8 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@rushstack/eslint-patch@1.10.5': - resolution: {integrity: sha512-kkKUDVlII2DQiKy7UstOR1ErJP8kUKAQ4oa+SQtM0K+lPdmmjj0YnnxBgtTVYH7mUKtbsxeFC9y0AmK7Yb78/A==} + '@rushstack/eslint-patch@1.11.0': + resolution: {integrity: sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==} '@sindresorhus/is@5.6.0': resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} @@ -601,6 +619,9 @@ packages: '@tanstack/virtual-core@3.13.0': resolution: {integrity: sha512-NBKJP3OIdmZY3COJdWkSonr50FMVIi+aj5ZJ7hI/DTpEKg2RMfo/KvP8A3B/zOSpMgIe52B5E2yn7rryULzA6g==} + '@tybys/wasm-util@0.9.0': + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + '@types/d3-array@3.2.1': resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} @@ -670,53 +691,128 @@ packages: '@types/ws@8.5.14': resolution: {integrity: sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==} - '@typescript-eslint/eslint-plugin@8.24.1': - resolution: {integrity: sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA==} + '@typescript-eslint/eslint-plugin@8.29.0': + resolution: {integrity: sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.24.1': - resolution: {integrity: sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ==} + '@typescript-eslint/parser@8.29.0': + resolution: {integrity: sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.24.1': - resolution: {integrity: sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==} + '@typescript-eslint/scope-manager@8.29.0': + resolution: {integrity: sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.24.1': - resolution: {integrity: sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==} + '@typescript-eslint/type-utils@8.29.0': + resolution: {integrity: sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.24.1': - resolution: {integrity: sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==} + '@typescript-eslint/types@8.29.0': + resolution: {integrity: sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.24.1': - resolution: {integrity: sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==} + '@typescript-eslint/typescript-estree@8.29.0': + resolution: {integrity: sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.24.1': - resolution: {integrity: sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==} + '@typescript-eslint/utils@8.29.0': + resolution: {integrity: sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.24.1': - resolution: {integrity: sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==} + '@typescript-eslint/visitor-keys@8.29.0': + resolution: {integrity: sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@unrs/resolver-binding-darwin-arm64@1.3.3': + resolution: {integrity: sha512-EpRILdWr3/xDa/7MoyfO7JuBIJqpBMphtu4+80BK1bRfFcniVT74h3Z7q1+WOc92FuIAYatB1vn9TJR67sORGw==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.3.3': + resolution: {integrity: sha512-ntj/g7lPyqwinMJWZ+DKHBse8HhVxswGTmNgFKJtdgGub3M3zp5BSZ3bvMP+kBT6dnYJLSVlDqdwOq1P8i0+/g==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.3.3': + resolution: {integrity: sha512-l6BT8f2CU821EW7U8hSUK8XPq4bmyTlt9Mn4ERrfjJNoCw0/JoHAh9amZZtV3cwC3bwwIat+GUnrcHTG9+qixw==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.3.3': + resolution: {integrity: sha512-8ScEc5a4y7oE2BonRvzJ+2GSkBaYWyh0/Ko4Q25e/ix6ANpJNhwEPZvCR6GVRmsQAYMIfQvYLdM6YEN+qRjnAQ==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.3.3': + resolution: {integrity: sha512-8qQ6l1VTzLNd3xb2IEXISOKwMGXDCzY/UNy/7SovFW2Sp0K3YbL7Ao7R18v6SQkLqQlhhqSBIFRk+u6+qu5R5A==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.3.3': + resolution: {integrity: sha512-v81R2wjqcWXJlQY23byqYHt9221h4anQ6wwN64oMD/WAE+FmxPHFZee5bhRkNVtzqO/q7wki33VFWlhiADwUeQ==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-musl@1.3.3': + resolution: {integrity: sha512-cAOx/j0u5coMg4oct/BwMzvWJdVciVauUvsd+GQB/1FZYKQZmqPy0EjJzJGbVzFc6gbnfEcSqvQE6gvbGf2N8Q==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.3.3': + resolution: {integrity: sha512-mq2blqwErgDJD4gtFDlTX/HZ7lNP8YCHYFij2gkXPtMzrXxPW1hOtxL6xg4NWxvnj4bppppb0W3s/buvM55yfg==} + cpu: [ppc64] + os: [linux] + + '@unrs/resolver-binding-linux-s390x-gnu@1.3.3': + resolution: {integrity: sha512-u0VRzfFYysarYHnztj2k2xr+eu9rmgoTUUgCCIT37Nr+j0A05Xk2c3RY8Mh5+DhCl2aYibihnaAEJHeR0UOFIQ==} + cpu: [s390x] + os: [linux] + + '@unrs/resolver-binding-linux-x64-gnu@1.3.3': + resolution: {integrity: sha512-OrVo5ZsG29kBF0Ug95a2KidS16PqAMmQNozM6InbquOfW/udouk063e25JVLqIBhHLB2WyBnixOQ19tmeC/hIg==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-linux-x64-musl@1.3.3': + resolution: {integrity: sha512-PYnmrwZ4HMp9SkrOhqPghY/aoL+Rtd4CQbr93GlrRTjK6kDzfMfgz3UH3jt6elrQAfupa1qyr1uXzeVmoEAxUA==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-wasm32-wasi@1.3.3': + resolution: {integrity: sha512-81AnQY6fShmktQw4hWDUIilsKSdvr/acdJ5azAreu2IWNlaJOKphJSsUVWE+yCk6kBMoQyG9ZHCb/krb5K0PEA==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.3.3': + resolution: {integrity: sha512-X/42BMNw7cW6xrB9syuP5RusRnWGoq+IqvJO8IDpp/BZg64J1uuIW6qA/1Cl13Y4LyLXbJVYbYNSKwR/FiHEng==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.3.3': + resolution: {integrity: sha512-EGNnNGQxMU5aTN7js3ETYvuw882zcO+dsVjs+DwO2j/fRVKth87C8e2GzxW1L3+iWAXMyJhvFBKRavk9Og1Z6A==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.3.3': + resolution: {integrity: sha512-GraLbYqOJcmW1qY3osB+2YIiD62nVf2/bVLHZmrb4t/YSUwE03l7TwcDJl08T/Tm3SVhepX8RQkpzWbag/Sb4w==} + cpu: [x64] + os: [win32] + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1198,8 +1294,8 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - eslint-config-next@15.1.7: - resolution: {integrity: sha512-zXoMnYUIy3XHaAoOhrcYkT9UQWvXqWju2K7NNsmb5wd/7XESDwof61eUdW4QhERr3eJ9Ko/vnXqIrj8kk/drYw==} + eslint-config-next@15.2.4: + resolution: {integrity: sha512-v4gYjd4eYIme8qzaJItpR5MMBXJ0/YV07u7eb50kEnlEmX7yhOjdUdzz70v4fiINYRjLf8X8TbogF0k7wlz6sA==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 || ^9.0.0 typescript: '>=3.3.1' @@ -1216,8 +1312,8 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-import-resolver-typescript@3.8.2: - resolution: {integrity: sha512-o0nvXxsatYCDTzI1K5b3aYGQ6PjpDGJEVN86zqJw5SEewhmmggfRTotd2dqWr2t2zbeYpIEWGTCkgtUpIEIcaQ==} + eslint-import-resolver-typescript@3.10.0: + resolution: {integrity: sha512-aV3/dVsT0/H9BtpNwbaqvl+0xGMRGzncLyhm793NFGvbwGGvzyAykqWZ8oZlZuGwuHkwJjhWJkG1cM3ynvd2pQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -1365,8 +1461,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fastq@1.19.0: - resolution: {integrity: sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==} + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} fdir@6.4.3: resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} @@ -1618,8 +1714,8 @@ packages: resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} - is-bun-module@1.3.0: - resolution: {integrity: sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==} + is-bun-module@2.0.0: + resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} @@ -2309,8 +2405,8 @@ packages: resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} engines: {node: '>=14.16'} - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} rfc4648@1.5.4: @@ -2434,8 +2530,8 @@ packages: resolution: {integrity: sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg==} engines: {node: '>=10.16.0'} - stable-hash@0.0.4: - resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} + stable-hash@0.0.5: + resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} stack-trace@0.0.10: resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} @@ -2577,8 +2673,8 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - tinyglobby@0.2.11: - resolution: {integrity: sha512-32TmKeeKUahv0Go8WmQgiEp9Y21NuxjwjqiRC1nrUB51YacfSwuB44xgXD+HdIppmMRgjQNPdrHyA6vIybYZ+g==} + tinyglobby@0.2.12: + resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} engines: {node: '>=12.0.0'} tldts-core@6.1.82: @@ -2614,8 +2710,8 @@ packages: resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} engines: {node: '>= 14.0.0'} - ts-api-utils@2.0.1: - resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -2665,6 +2761,9 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} + unrs-resolver@1.3.3: + resolution: {integrity: sha512-PFLAGQzYlyjniXdbmQ3dnGMZJXX5yrl2YS4DLRfR3BhgUsE1zpRIrccp9XMOGRfIHpdFvCn/nr5N1KMVda4x3A==} + urbackup-server-api@0.8.9: resolution: {integrity: sha512-Igu6A0xSZeMsiN6PWT7zG4aD+iJR5fXT/j5+xwAvnD/vCNfvVrettIsXv6MftxOajvTmtlgaYu8KDoH1EJQ6DQ==} @@ -2804,16 +2903,37 @@ snapshots: enabled: 2.0.0 kuler: 2.0.0 + '@emnapi/core@1.4.0': + dependencies: + '@emnapi/wasi-threads': 1.0.1 + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.3.1': dependencies: tslib: 2.8.1 optional: true + '@emnapi/runtime@1.4.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.0.1': + dependencies: + tslib: 2.8.1 + optional: true + '@eslint-community/eslint-utils@4.4.1(eslint@9.21.0(jiti@2.4.2))': dependencies: eslint: 9.21.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.5.1(eslint@9.21.0(jiti@2.4.2))': + dependencies: + eslint: 9.21.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + '@eslint-community/regexpp@4.12.1': {} '@eslint/config-array@0.19.2': @@ -3006,9 +3126,16 @@ snapshots: - encoding - utf-8-validate + '@napi-rs/wasm-runtime@0.2.8': + dependencies: + '@emnapi/core': 1.4.0 + '@emnapi/runtime': 1.4.0 + '@tybys/wasm-util': 0.9.0 + optional: true + '@next/env@15.2.3': {} - '@next/eslint-plugin-next@15.1.7': + '@next/eslint-plugin-next@15.2.4': dependencies: fast-glob: 3.3.1 @@ -3046,7 +3173,7 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.0 + fastq: 1.19.1 '@nolyfill/is-core-module@1.0.39': {} @@ -3080,7 +3207,7 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@rushstack/eslint-patch@1.10.5': {} + '@rushstack/eslint-patch@1.11.0': {} '@sindresorhus/is@5.6.0': {} @@ -3169,6 +3296,11 @@ snapshots: '@tanstack/virtual-core@3.13.0': {} + '@tybys/wasm-util@0.9.0': + dependencies: + tslib: 2.8.1 + optional: true + '@types/d3-array@3.2.1': {} '@types/d3-color@3.1.3': {} @@ -3238,83 +3370,130 @@ snapshots: dependencies: '@types/node': 22.13.4 - '@typescript-eslint/eslint-plugin@8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.24.1 - '@typescript-eslint/type-utils': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.24.1 + '@typescript-eslint/parser': 8.29.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.29.0 + '@typescript-eslint/type-utils': 8.29.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.29.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.29.0 eslint: 9.21.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 2.0.1(typescript@5.7.3) + ts-api-utils: 2.1.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/parser@8.29.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/scope-manager': 8.24.1 - '@typescript-eslint/types': 8.24.1 - '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.24.1 + '@typescript-eslint/scope-manager': 8.29.0 + '@typescript-eslint/types': 8.29.0 + '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.29.0 debug: 4.4.0 eslint: 9.21.0(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.24.1': + '@typescript-eslint/scope-manager@8.29.0': dependencies: - '@typescript-eslint/types': 8.24.1 - '@typescript-eslint/visitor-keys': 8.24.1 + '@typescript-eslint/types': 8.29.0 + '@typescript-eslint/visitor-keys': 8.29.0 - '@typescript-eslint/type-utils@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/type-utils@8.29.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) - '@typescript-eslint/utils': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.29.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) debug: 4.4.0 eslint: 9.21.0(jiti@2.4.2) - ts-api-utils: 2.0.1(typescript@5.7.3) + ts-api-utils: 2.1.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.24.1': {} + '@typescript-eslint/types@8.29.0': {} - '@typescript-eslint/typescript-estree@8.24.1(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.29.0(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 8.24.1 - '@typescript-eslint/visitor-keys': 8.24.1 + '@typescript-eslint/types': 8.29.0 + '@typescript-eslint/visitor-keys': 8.29.0 debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.1 - ts-api-utils: 2.0.1(typescript@5.7.3) + ts-api-utils: 2.1.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/utils@8.29.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.24.1 - '@typescript-eslint/types': 8.24.1 - '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) + '@eslint-community/eslint-utils': 4.5.1(eslint@9.21.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.29.0 + '@typescript-eslint/types': 8.29.0 + '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.7.3) eslint: 9.21.0(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.24.1': + '@typescript-eslint/visitor-keys@8.29.0': dependencies: - '@typescript-eslint/types': 8.24.1 + '@typescript-eslint/types': 8.29.0 eslint-visitor-keys: 4.2.0 + '@unrs/resolver-binding-darwin-arm64@1.3.3': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.3.3': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.3.3': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.3.3': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.3.3': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.3.3': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.3.3': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.3.3': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.3.3': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.3.3': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.3.3': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.3.3': + dependencies: + '@napi-rs/wasm-runtime': 0.2.8 + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.3.3': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.3.3': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.3.3': + optional: true + acorn-jsx@5.3.2(acorn@8.14.0): dependencies: acorn: 8.14.0 @@ -3900,16 +4079,16 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-next@15.1.7(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3): + eslint-config-next@15.2.4(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@next/eslint-plugin-next': 15.1.7 - '@rushstack/eslint-patch': 1.10.5 - '@typescript-eslint/eslint-plugin': 8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/parser': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@next/eslint-plugin-next': 15.2.4 + '@rushstack/eslint-patch': 1.11.0 + '@typescript-eslint/eslint-plugin': 8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.29.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) eslint: 9.21.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.8.2(eslint-plugin-import@2.31.0)(eslint@9.21.0(jiti@2.4.2)) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-typescript@3.8.2)(eslint@9.21.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 3.10.0(eslint-plugin-import@2.31.0)(eslint@9.21.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.29.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-typescript@3.10.0)(eslint@9.21.0(jiti@2.4.2)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.21.0(jiti@2.4.2)) eslint-plugin-react: 7.37.4(eslint@9.21.0(jiti@2.4.2)) eslint-plugin-react-hooks: 5.1.0(eslint@9.21.0(jiti@2.4.2)) @@ -3932,33 +4111,33 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.8.2(eslint-plugin-import@2.31.0)(eslint@9.21.0(jiti@2.4.2)): + eslint-import-resolver-typescript@3.10.0(eslint-plugin-import@2.31.0)(eslint@9.21.0(jiti@2.4.2)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.0 - enhanced-resolve: 5.18.1 eslint: 9.21.0(jiti@2.4.2) get-tsconfig: 4.10.0 - is-bun-module: 1.3.0 - stable-hash: 0.0.4 - tinyglobby: 0.2.11 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.12 + unrs-resolver: 1.3.3 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-typescript@3.8.2)(eslint@9.21.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.29.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-typescript@3.10.0)(eslint@9.21.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.2)(eslint@9.21.0(jiti@2.4.2)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.29.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.0)(eslint@9.21.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.29.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) eslint: 9.21.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.8.2(eslint-plugin-import@2.31.0)(eslint@9.21.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 3.10.0(eslint-plugin-import@2.31.0)(eslint@9.21.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-typescript@3.8.2)(eslint@9.21.0(jiti@2.4.2)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.29.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-typescript@3.10.0)(eslint@9.21.0(jiti@2.4.2)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -3969,7 +4148,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.21.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.2)(eslint@9.21.0(jiti@2.4.2)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.29.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.0)(eslint@9.21.0(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -3981,7 +4160,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.29.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -4139,9 +4318,9 @@ snapshots: fast-levenshtein@2.0.6: {} - fastq@1.19.0: + fastq@1.19.1: dependencies: - reusify: 1.0.4 + reusify: 1.1.0 fdir@6.4.3(picomatch@4.0.2): optionalDependencies: @@ -4417,7 +4596,7 @@ snapshots: call-bound: 1.0.3 has-tostringtag: 1.0.2 - is-bun-module@1.3.0: + is-bun-module@2.0.0: dependencies: semver: 7.7.1 @@ -5106,7 +5285,7 @@ snapshots: dependencies: lowercase-keys: 3.0.0 - reusify@1.0.4: {} + reusify@1.1.0: {} rfc4648@1.5.4: {} @@ -5268,7 +5447,7 @@ snapshots: cpu-features: 0.0.10 nan: 2.22.0 - stable-hash@0.0.4: {} + stable-hash@0.0.5: {} stack-trace@0.0.10: {} @@ -5428,7 +5607,7 @@ snapshots: tiny-invariant@1.3.3: {} - tinyglobby@0.2.11: + tinyglobby@0.2.12: dependencies: fdir: 6.4.3(picomatch@4.0.2) picomatch: 4.0.2 @@ -5459,7 +5638,7 @@ snapshots: triple-beam@1.4.1: {} - ts-api-utils@2.0.1(typescript@5.7.3): + ts-api-utils@2.1.0(typescript@5.7.3): dependencies: typescript: 5.7.3 @@ -5524,6 +5703,24 @@ snapshots: unpipe@1.0.0: {} + unrs-resolver@1.3.3: + optionalDependencies: + '@unrs/resolver-binding-darwin-arm64': 1.3.3 + '@unrs/resolver-binding-darwin-x64': 1.3.3 + '@unrs/resolver-binding-freebsd-x64': 1.3.3 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.3.3 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.3.3 + '@unrs/resolver-binding-linux-arm64-gnu': 1.3.3 + '@unrs/resolver-binding-linux-arm64-musl': 1.3.3 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.3.3 + '@unrs/resolver-binding-linux-s390x-gnu': 1.3.3 + '@unrs/resolver-binding-linux-x64-gnu': 1.3.3 + '@unrs/resolver-binding-linux-x64-musl': 1.3.3 + '@unrs/resolver-binding-wasm32-wasi': 1.3.3 + '@unrs/resolver-binding-win32-arm64-msvc': 1.3.3 + '@unrs/resolver-binding-win32-ia32-msvc': 1.3.3 + '@unrs/resolver-binding-win32-x64-msvc': 1.3.3 + urbackup-server-api@0.8.9: dependencies: async-mutex: 0.3.2 From dbc26e835c25b519086304999bf94e9db17647c0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 09:36:44 -0700 Subject: [PATCH 11/21] Chore(deps): Bump swr from 1.3.0 to 2.3.3 (#5111) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 29 +++++++++++++++++++++++------ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 53d1e7708..96772f7f4 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "react-icons": "^5.4.0", "recharts": "^2.15.1", "rrule": "^2.8.1", - "swr": "^1.3.0", + "swr": "^2.3.3", "systeminformation": "^5.25.11", "tough-cookie": "^5.1.2", "urbackup-server-api": "^0.8.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d2eabfe97..938fd85bb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -84,8 +84,8 @@ importers: specifier: ^2.8.1 version: 2.8.1 swr: - specifier: ^1.3.0 - version: 1.3.0(react@18.3.1) + specifier: ^2.3.3 + version: 2.3.3(react@18.3.1) systeminformation: specifier: ^5.25.11 version: 5.25.11 @@ -1190,6 +1190,10 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} @@ -2628,10 +2632,10 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - swr@1.3.0: - resolution: {integrity: sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==} + swr@2.3.3: + resolution: {integrity: sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==} peerDependencies: - react: ^16.11.0 || ^17.0.0 || ^18.0.0 + react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 synckit@0.9.2: resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} @@ -2770,6 +2774,11 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -3899,6 +3908,8 @@ snapshots: depd@2.0.0: {} + dequal@2.0.3: {} + detect-libc@1.0.3: {} detect-libc@2.0.3: @@ -5557,9 +5568,11 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - swr@1.3.0(react@18.3.1): + swr@2.3.3(react@18.3.1): dependencies: + dequal: 2.0.3 react: 18.3.1 + use-sync-external-store: 1.5.0(react@18.3.1) synckit@0.9.2: dependencies: @@ -5732,6 +5745,10 @@ snapshots: dependencies: punycode: 2.3.1 + use-sync-external-store@1.5.0(react@18.3.1): + dependencies: + react: 18.3.1 + util-deprecate@1.0.2: {} uuid@10.0.0: {} From 52399e21e137264c944078f1bb54ab0a77dee816 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Tue, 1 Apr 2025 09:48:28 -0700 Subject: [PATCH 12/21] Fix depth issue with t --- src/components/quicklaunch.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/quicklaunch.jsx b/src/components/quicklaunch.jsx index 14f0f4fb1..7278647fa 100644 --- a/src/components/quicklaunch.jsx +++ b/src/components/quicklaunch.jsx @@ -204,7 +204,8 @@ export default function QuickLaunch({ servicesAndBookmarks, searchString, setSea return () => { abortController.abort(); }; - }, [searchString, servicesAndBookmarks, searchDescriptions, hideVisitURL, searchSuggestions, searchProvider, url, t]); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [searchString, servicesAndBookmarks, searchDescriptions, hideVisitURL, searchSuggestions, searchProvider, url]); const [hidden, setHidden] = useState(true); useEffect(() => { From 6597ec566bb164b8815b8cfbfbf79af1632b545e Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Tue, 1 Apr 2025 09:52:33 -0700 Subject: [PATCH 13/21] Fix translation issue --- src/components/quicklaunch.jsx | 2 +- src/components/services/ping.jsx | 2 +- src/components/services/site-monitor.jsx | 2 +- src/components/services/status.jsx | 2 +- src/components/services/widget/error.jsx | 2 +- src/components/widgets/widget/error.jsx | 2 +- src/widgets/lubelogger/component.jsx | 2 +- src/widgets/prowlarr/component.jsx | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/components/quicklaunch.jsx b/src/components/quicklaunch.jsx index 7278647fa..a98276596 100644 --- a/src/components/quicklaunch.jsx +++ b/src/components/quicklaunch.jsx @@ -1,6 +1,6 @@ import classNames from "classnames"; +import { useTranslation } from "next-i18next"; import { useCallback, useContext, useEffect, useRef, useState } from "react"; -import { useTranslation } from "react-i18next"; import useSWR from "swr"; import { SettingsContext } from "utils/contexts/settings"; diff --git a/src/components/services/ping.jsx b/src/components/services/ping.jsx index 670f9d4bf..f8665e33c 100644 --- a/src/components/services/ping.jsx +++ b/src/components/services/ping.jsx @@ -1,4 +1,4 @@ -import { useTranslation } from "react-i18next"; +import { useTranslation } from "next-i18next"; import useSWR from "swr"; export default function Ping({ groupName, serviceName, style }) { diff --git a/src/components/services/site-monitor.jsx b/src/components/services/site-monitor.jsx index 4dceb44ce..79496f65c 100644 --- a/src/components/services/site-monitor.jsx +++ b/src/components/services/site-monitor.jsx @@ -1,4 +1,4 @@ -import { useTranslation } from "react-i18next"; +import { useTranslation } from "next-i18next"; import useSWR from "swr"; export default function SiteMonitor({ groupName, serviceName, style }) { diff --git a/src/components/services/status.jsx b/src/components/services/status.jsx index 3a6f3b330..2688ca0f3 100644 --- a/src/components/services/status.jsx +++ b/src/components/services/status.jsx @@ -1,4 +1,4 @@ -import { useTranslation } from "react-i18next"; +import { useTranslation } from "next-i18next"; import useSWR from "swr"; export default function Status({ service, style }) { diff --git a/src/components/services/widget/error.jsx b/src/components/services/widget/error.jsx index 30c41283c..0d4757d3e 100644 --- a/src/components/services/widget/error.jsx +++ b/src/components/services/widget/error.jsx @@ -1,4 +1,4 @@ -import { useTranslation } from "react-i18next"; +import { useTranslation } from "next-i18next"; import { IoAlertCircle } from "react-icons/io5"; function displayError(error) { diff --git a/src/components/widgets/widget/error.jsx b/src/components/widgets/widget/error.jsx index e454256f4..e0e8b1e14 100644 --- a/src/components/widgets/widget/error.jsx +++ b/src/components/widgets/widget/error.jsx @@ -1,4 +1,4 @@ -import { useTranslation } from "react-i18next"; +import { useTranslation } from "next-i18next"; import { BiError } from "react-icons/bi"; import Container from "./container"; diff --git a/src/widgets/lubelogger/component.jsx b/src/widgets/lubelogger/component.jsx index 390b74ea7..5ec889830 100644 --- a/src/widgets/lubelogger/component.jsx +++ b/src/widgets/lubelogger/component.jsx @@ -1,6 +1,6 @@ import Block from "components/services/widget/block"; import Container from "components/services/widget/container"; -import { useTranslation } from "react-i18next"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; diff --git a/src/widgets/prowlarr/component.jsx b/src/widgets/prowlarr/component.jsx index 13d388f70..e454c1a7c 100644 --- a/src/widgets/prowlarr/component.jsx +++ b/src/widgets/prowlarr/component.jsx @@ -1,6 +1,6 @@ import Block from "components/services/widget/block"; import Container from "components/services/widget/container"; -import { useTranslation } from "react-i18next"; +import { useTranslation } from "next-i18next"; import useWidgetAPI from "utils/proxy/use-widget-api"; From ae9fbdcb8bae4c00388aca132faa67d6b33069e1 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sat, 5 Apr 2025 23:54:48 -0700 Subject: [PATCH 14/21] Chore: change hoarder widget to karakeep (#5143) --- docs/widgets/services/hoarder.md | 17 ------- docs/widgets/services/index.md | 2 +- docs/widgets/services/karakeep.md | 17 +++++++ mkdocs.yml | 2 +- public/locales/en/common.json | 2 +- src/components/services/widget/container.jsx | 17 ++++++- src/utils/proxy/handlers/credentialed.js | 1 + src/widgets/components.js | 3 +- src/widgets/hoarder/component.jsx | 49 -------------------- src/widgets/karakeep/component.jsx | 49 ++++++++++++++++++++ src/widgets/{hoarder => karakeep}/widget.js | 0 src/widgets/widgets.js | 5 +- 12 files changed, 91 insertions(+), 73 deletions(-) delete mode 100644 docs/widgets/services/hoarder.md create mode 100644 docs/widgets/services/karakeep.md delete mode 100644 src/widgets/hoarder/component.jsx create mode 100644 src/widgets/karakeep/component.jsx rename src/widgets/{hoarder => karakeep}/widget.js (100%) diff --git a/docs/widgets/services/hoarder.md b/docs/widgets/services/hoarder.md deleted file mode 100644 index 3e8c82ad8..000000000 --- a/docs/widgets/services/hoarder.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Hoarder -description: Hoarder Widget Configuration ---- - -Learn more about [Hoarder](https://hoarder.app). - -Generate an API key for your user at `User Settings > API Keys`. - -Allowed fields: `["bookmarks", "favorites", "archived", "highlights", "lists", "tags"]` (maximum of 4). - -```yaml -widget: - type: hoarder - url: http[s]://hoarder.host.or.ip[:port] - key: hoarderapikey -``` diff --git a/docs/widgets/services/index.md b/docs/widgets/services/index.md index beb6d4917..80ff72ba0 100644 --- a/docs/widgets/services/index.md +++ b/docs/widgets/services/index.md @@ -51,7 +51,7 @@ You can also find a list of all available service widgets in the sidebar navigat - [HDHomeRun](hdhomerun.md) - [Headscale](headscale.md) - [Healthchecks](healthchecks.md) -- [Hoarder](hoarder.md) +- [Karakeep](karakeep.md) - [Home Assistant](homeassistant.md) - [HomeBox](homebox.md) - [Homebridge](homebridge.md) diff --git a/docs/widgets/services/karakeep.md b/docs/widgets/services/karakeep.md new file mode 100644 index 000000000..a29023159 --- /dev/null +++ b/docs/widgets/services/karakeep.md @@ -0,0 +1,17 @@ +--- +title: Karakeep +description: Karakeep Widget Configuration +--- + +Learn more about [Karakeep](https://karakeep.app) (formerly known as Hoarder). + +Generate an API key for your user at `User Settings > API Keys`. + +Allowed fields: `["bookmarks", "favorites", "archived", "highlights", "lists", "tags"]` (maximum of 4). + +```yaml +widget: + type: karakeep + url: http[s]://karakeep.host.or.ip[:port] + key: karakeep_api_key +``` diff --git a/mkdocs.yml b/mkdocs.yml index 01a5295b8..8bb19e435 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -74,7 +74,7 @@ nav: - widgets/services/hdhomerun.md - widgets/services/headscale.md - widgets/services/healthchecks.md - - widgets/services/hoarder.md + - widgets/services/karakeep.md - widgets/services/homeassistant.md - widgets/services/homebox.md - widgets/services/homebridge.md diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 4a9c33d54..09b9c2d3b 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -1024,7 +1024,7 @@ "bcharge":"Battery Charge", "timeleft":"Time Left" }, - "hoarder": { + "karakeep": { "bookmarks": "Bookmarks", "favorites": "Favorites", "archived": "Archived", diff --git a/src/components/services/widget/container.jsx b/src/components/services/widget/container.jsx index 9b10233c5..f59573829 100644 --- a/src/components/services/widget/container.jsx +++ b/src/components/services/widget/container.jsx @@ -3,6 +3,11 @@ import { SettingsContext } from "utils/contexts/settings"; import Error from "./error"; +const ALIASED_WIDGETS = { + pialert: "netalertx", + hoarder: "karakeep", +}; + export default function Container({ error = false, children, service }) { const { settings } = useContext(SettingsContext); @@ -32,7 +37,17 @@ export default function Container({ error = false, children, service }) { if (!field.includes(".")) { fullField = `${type}.${field}`; } - return fullField === child?.props?.label; + let matches = fullField === child?.props?.label; + // check if the field is an 'alias' + if (matches) { + return true; + } else if (ALIASED_WIDGETS[type]) { + matches = fullField.replace(type, ALIASED_WIDGETS[type]) === child?.props?.label; + + return matches; + } + // no match + return false; }), ); } diff --git a/src/utils/proxy/handlers/credentialed.js b/src/utils/proxy/handlers/credentialed.js index d0dbc2d68..017d44c93 100644 --- a/src/utils/proxy/handlers/credentialed.js +++ b/src/utils/proxy/handlers/credentialed.js @@ -42,6 +42,7 @@ export default async function credentialedProxyHandler(req, res, map) { "ghostfolio", "headscale", "hoarder", + "karakeep", "linkwarden", "mealie", "netalertx", diff --git a/src/widgets/components.js b/src/widgets/components.js index 148a626bd..880c8222e 100644 --- a/src/widgets/components.js +++ b/src/widgets/components.js @@ -47,7 +47,8 @@ const components = { grafana: dynamic(() => import("./grafana/component")), hdhomerun: dynamic(() => import("./hdhomerun/component")), headscale: dynamic(() => import("./headscale/component")), - hoarder: dynamic(() => import("./hoarder/component")), + hoarder: dynamic(() => import("./karakeep/component")), + karakeep: dynamic(() => import("./karakeep/component")), peanut: dynamic(() => import("./peanut/component")), homeassistant: dynamic(() => import("./homeassistant/component")), homebox: dynamic(() => import("./homebox/component")), diff --git a/src/widgets/hoarder/component.jsx b/src/widgets/hoarder/component.jsx deleted file mode 100644 index 4be6fbab2..000000000 --- a/src/widgets/hoarder/component.jsx +++ /dev/null @@ -1,49 +0,0 @@ -import Block from "components/services/widget/block"; -import Container from "components/services/widget/container"; -import { useTranslation } from "next-i18next"; - -import useWidgetAPI from "utils/proxy/use-widget-api"; - -export const hoarderDefaultFields = ["bookmarks", "favorites", "archived", "highlights"]; -const MAX_ALLOWED_FIELDS = 4; - -export default function Component({ service }) { - const { t } = useTranslation(); - const { widget } = service; - - const { data: statsData, error: statsError } = useWidgetAPI(widget, "stats"); - - if (statsError) { - return ; - } - - if (!widget.fields || widget.fields.length === 0) { - widget.fields = hoarderDefaultFields; - } else if (widget.fields?.length > MAX_ALLOWED_FIELDS) { - widget.fields = widget.fields.slice(0, MAX_ALLOWED_FIELDS); - } - - if (!statsData) { - return ( - - - - - - - - - ); - } - - return ( - - - - - - - - - ); -} diff --git a/src/widgets/karakeep/component.jsx b/src/widgets/karakeep/component.jsx new file mode 100644 index 000000000..8a74662d4 --- /dev/null +++ b/src/widgets/karakeep/component.jsx @@ -0,0 +1,49 @@ +import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import { useTranslation } from "next-i18next"; + +import useWidgetAPI from "utils/proxy/use-widget-api"; + +export const karakeepDefaultFields = ["bookmarks", "favorites", "archived", "highlights"]; +const MAX_ALLOWED_FIELDS = 4; + +export default function Component({ service }) { + const { t } = useTranslation(); + const { widget } = service; + + const { data: statsData, error: statsError } = useWidgetAPI(widget, "stats"); + + if (statsError) { + return ; + } + + if (!widget.fields || widget.fields.length === 0) { + widget.fields = karakeepDefaultFields; + } else if (widget.fields?.length > MAX_ALLOWED_FIELDS) { + widget.fields = widget.fields.slice(0, MAX_ALLOWED_FIELDS); + } + + if (!statsData) { + return ( + + + + + + + + + ); + } + + return ( + + + + + + + + + ); +} diff --git a/src/widgets/hoarder/widget.js b/src/widgets/karakeep/widget.js similarity index 100% rename from src/widgets/hoarder/widget.js rename to src/widgets/karakeep/widget.js diff --git a/src/widgets/widgets.js b/src/widgets/widgets.js index 992855d03..e183a9c6f 100644 --- a/src/widgets/widgets.js +++ b/src/widgets/widgets.js @@ -42,7 +42,6 @@ import grafana from "./grafana/widget"; import hdhomerun from "./hdhomerun/widget"; import headscale from "./headscale/widget"; import healthchecks from "./healthchecks/widget"; -import hoarder from "./hoarder/widget"; import homeassistant from "./homeassistant/widget"; import homebox from "./homebox/widget"; import homebridge from "./homebridge/widget"; @@ -50,6 +49,7 @@ import immich from "./immich/widget"; import jackett from "./jackett/widget"; import jdownloader from "./jdownloader/widget"; import jellyseerr from "./jellyseerr/widget"; +import karakeep from "./karakeep/widget"; import kavita from "./kavita/widget"; import komga from "./komga/widget"; import kopia from "./kopia/widget"; @@ -178,7 +178,8 @@ const widgets = { grafana, hdhomerun, headscale, - hoarder, + hoarder: karakeep, + karakeep, homeassistant, homebox, homebridge, From e2c997f29d10cd6dddb60d17e8205b7ab55c8942 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 7 Apr 2025 23:59:22 -0700 Subject: [PATCH 15/21] Change: install iputils-ping inside docker image (#5153) --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index ec59c6b01..cac7623ea 100644 --- a/Dockerfile +++ b/Dockerfile @@ -49,7 +49,7 @@ COPY --link --chmod=755 docker-entrypoint.sh /usr/local/bin/ COPY --link --from=builder --chown=1000:1000 /app/.next/standalone/ ./ COPY --link --from=builder --chown=1000:1000 /app/.next/static/ ./.next/static -RUN apk add --no-cache su-exec +RUN apk add --no-cache su-exec iputils-ping ENV NODE_ENV=production ENV HOSTNAME=0.0.0.0 From 0a1bf3b2be10220e5ee5ec8de7578f8f35bedd7f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Apr 2025 15:08:54 -0700 Subject: [PATCH 16/21] Chore(deps): Bump next from 15.2.3 to 15.2.4 (#5159) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 106 +++++++++++++++++++++++-------------------------- 2 files changed, 50 insertions(+), 58 deletions(-) diff --git a/package.json b/package.json index 96772f7f4..0c3afd920 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "luxon": "^3.5.0", "memory-cache": "^0.2.0", "minecraftstatuspinger": "^1.2.2", - "next": "^15.2.3", + "next": "^15.2.4", "next-i18next": "^12.1.0", "ping": "^0.4.4", "pretty-bytes": "^6.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 938fd85bb..170e380e4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -51,11 +51,11 @@ importers: specifier: ^1.2.2 version: 1.2.2 next: - specifier: ^15.2.3 - version: 15.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^15.2.4 + version: 15.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-i18next: specifier: ^12.1.0 - version: 12.1.0(next@15.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 12.1.0(next@15.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ping: specifier: ^0.4.4 version: 0.4.4 @@ -182,9 +182,6 @@ packages: '@emnapi/core@1.4.0': resolution: {integrity: sha512-H+N/FqT07NmLmt6OFFtDfwe8PNygprzBikrEMyQfgqSmT0vzE515Pz7R8izwB9q/zsH/MA64AKoul3sA6/CzVg==} - '@emnapi/runtime@1.3.1': - resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} - '@emnapi/runtime@1.4.0': resolution: {integrity: sha512-64WYIf4UYcdLnbKn/umDlNjQDSS8AgZrI/R9+x5ilkUVFxXcA1Ebl+gQLc/6mERA4407Xof0R7wEyEuj091CVw==} @@ -401,56 +398,56 @@ packages: '@napi-rs/wasm-runtime@0.2.8': resolution: {integrity: sha512-OBlgKdX7gin7OIq4fadsjpg+cp2ZphvAIKucHsNfTdJiqdOmOEwQd/bHi0VwNrcw5xpBJyUw6cK/QilCqy1BSg==} - '@next/env@15.2.3': - resolution: {integrity: sha512-a26KnbW9DFEUsSxAxKBORR/uD9THoYoKbkpFywMN/AFvboTt94b8+g/07T8J6ACsdLag8/PDU60ov4rPxRAixw==} + '@next/env@15.2.4': + resolution: {integrity: sha512-+SFtMgoiYP3WoSswuNmxJOCwi06TdWE733D+WPjpXIe4LXGULwEaofiiAy6kbS0+XjM5xF5n3lKuBwN2SnqD9g==} '@next/eslint-plugin-next@15.2.4': resolution: {integrity: sha512-O8ScvKtnxkp8kL9TpJTTKnMqlkZnS+QxwoQnJwPGBxjBbzd6OVVPEJ5/pMNrktSyXQD/chEfzfFzYLM6JANOOQ==} - '@next/swc-darwin-arm64@15.2.3': - resolution: {integrity: sha512-uaBhA8aLbXLqwjnsHSkxs353WrRgQgiFjduDpc7YXEU0B54IKx3vU+cxQlYwPCyC8uYEEX7THhtQQsfHnvv8dw==} + '@next/swc-darwin-arm64@15.2.4': + resolution: {integrity: sha512-1AnMfs655ipJEDC/FHkSr0r3lXBgpqKo4K1kiwfUf3iE68rDFXZ1TtHdMvf7D0hMItgDZ7Vuq3JgNMbt/+3bYw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.2.3': - resolution: {integrity: sha512-pVwKvJ4Zk7h+4hwhqOUuMx7Ib02u3gDX3HXPKIShBi9JlYllI0nU6TWLbPT94dt7FSi6mSBhfc2JrHViwqbOdw==} + '@next/swc-darwin-x64@15.2.4': + resolution: {integrity: sha512-3qK2zb5EwCwxnO2HeO+TRqCubeI/NgCe+kL5dTJlPldV/uwCnUgC7VbEzgmxbfrkbjehL4H9BPztWOEtsoMwew==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.2.3': - resolution: {integrity: sha512-50ibWdn2RuFFkOEUmo9NCcQbbV9ViQOrUfG48zHBCONciHjaUKtHcYFiCwBVuzD08fzvzkWuuZkd4AqbvKO7UQ==} + '@next/swc-linux-arm64-gnu@15.2.4': + resolution: {integrity: sha512-HFN6GKUcrTWvem8AZN7tT95zPb0GUGv9v0d0iyuTb303vbXkkbHDp/DxufB04jNVD+IN9yHy7y/6Mqq0h0YVaQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.2.3': - resolution: {integrity: sha512-2gAPA7P652D3HzR4cLyAuVYwYqjG0mt/3pHSWTCyKZq/N/dJcUAEoNQMyUmwTZWCJRKofB+JPuDVP2aD8w2J6Q==} + '@next/swc-linux-arm64-musl@15.2.4': + resolution: {integrity: sha512-Oioa0SORWLwi35/kVB8aCk5Uq+5/ZIumMK1kJV+jSdazFm2NzPDztsefzdmzzpx5oGCJ6FkUC7vkaUseNTStNA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.2.3': - resolution: {integrity: sha512-ODSKvrdMgAJOVU4qElflYy1KSZRM3M45JVbeZu42TINCMG3anp7YCBn80RkISV6bhzKwcUqLBAmOiWkaGtBA9w==} + '@next/swc-linux-x64-gnu@15.2.4': + resolution: {integrity: sha512-yb5WTRaHdkgOqFOZiu6rHV1fAEK0flVpaIN2HB6kxHVSy/dIajWbThS7qON3W9/SNOH2JWkVCyulgGYekMePuw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.2.3': - resolution: {integrity: sha512-ZR9kLwCWrlYxwEoytqPi1jhPd1TlsSJWAc+H/CJHmHkf2nD92MQpSRIURR1iNgA/kuFSdxB8xIPt4p/T78kwsg==} + '@next/swc-linux-x64-musl@15.2.4': + resolution: {integrity: sha512-Dcdv/ix6srhkM25fgXiyOieFUkz+fOYkHlydWCtB0xMST6X9XYI3yPDKBZt1xuhOytONsIFJFB08xXYsxUwJLw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.2.3': - resolution: {integrity: sha512-+G2FrDcfm2YDbhDiObDU/qPriWeiz/9cRR0yMWJeTLGGX6/x8oryO3tt7HhodA1vZ8r2ddJPCjtLcpaVl7TE2Q==} + '@next/swc-win32-arm64-msvc@15.2.4': + resolution: {integrity: sha512-dW0i7eukvDxtIhCYkMrZNQfNicPDExt2jPb9AZPpL7cfyUo7QSNl1DjsHjmmKp6qNAqUESyT8YFl/Aw91cNJJg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.2.3': - resolution: {integrity: sha512-gHYS9tc+G2W0ZC8rBL+H6RdtXIyk40uLiaos0yj5US85FNhbFEndMA2nW3z47nzOWiSvXTZ5kBClc3rD0zJg0w==} + '@next/swc-win32-x64-msvc@15.2.4': + resolution: {integrity: sha512-SbnWkJmkS7Xl3kre8SdMF6F/XDh1DTFEhp0jRTj/uB8iPKoU2bb2NDfcu+iifv1+mxQEd1g2vvSxcZbXSKyWiQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -985,8 +982,8 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001706: - resolution: {integrity: sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==} + caniuse-lite@1.0.30001712: + resolution: {integrity: sha512-MBqPpGYYdQ7/hfKiet9SCI+nmN5/hp4ZzveOJubl5DTAMa5oggjAuoi0Z4onBpKPFI2ePGnQuQIzF3VxDjDJig==} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -2085,8 +2082,8 @@ packages: next: '>= 10.0.0' react: '>= 16.8.0' - next@15.2.3: - resolution: {integrity: sha512-x6eDkZxk2rPpu46E1ZVUWIBhYCLszmUY6fvHBFcbzJ9dD+qRX6vcHusaqqDlnY+VngKzKbAiG2iRCkPbmi8f7w==} + next@15.2.4: + resolution: {integrity: sha512-VwL+LAaPSxEkd3lU2xWbgEOtrM8oedmyhBqaVNmgKB+GvZlCy9rgaEc+y2on0wv+l0oSFqLtYD6dcC1eAedUaQ==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: @@ -2918,11 +2915,6 @@ snapshots: tslib: 2.8.1 optional: true - '@emnapi/runtime@1.3.1': - dependencies: - tslib: 2.8.1 - optional: true - '@emnapi/runtime@1.4.0': dependencies: tslib: 2.8.1 @@ -3078,7 +3070,7 @@ snapshots: '@img/sharp-wasm32@0.33.5': dependencies: - '@emnapi/runtime': 1.3.1 + '@emnapi/runtime': 1.4.0 optional: true '@img/sharp-win32-ia32@0.33.5': @@ -3142,34 +3134,34 @@ snapshots: '@tybys/wasm-util': 0.9.0 optional: true - '@next/env@15.2.3': {} + '@next/env@15.2.4': {} '@next/eslint-plugin-next@15.2.4': dependencies: fast-glob: 3.3.1 - '@next/swc-darwin-arm64@15.2.3': + '@next/swc-darwin-arm64@15.2.4': optional: true - '@next/swc-darwin-x64@15.2.3': + '@next/swc-darwin-x64@15.2.4': optional: true - '@next/swc-linux-arm64-gnu@15.2.3': + '@next/swc-linux-arm64-gnu@15.2.4': optional: true - '@next/swc-linux-arm64-musl@15.2.3': + '@next/swc-linux-arm64-musl@15.2.4': optional: true - '@next/swc-linux-x64-gnu@15.2.3': + '@next/swc-linux-x64-gnu@15.2.4': optional: true - '@next/swc-linux-x64-musl@15.2.3': + '@next/swc-linux-x64-musl@15.2.4': optional: true - '@next/swc-win32-arm64-msvc@15.2.3': + '@next/swc-win32-arm64-msvc@15.2.4': optional: true - '@next/swc-win32-x64-msvc@15.2.3': + '@next/swc-win32-x64-msvc@15.2.4': optional: true '@nodelib/fs.scandir@2.1.5': @@ -3703,7 +3695,7 @@ snapshots: callsites@3.1.0: {} - caniuse-lite@1.0.30001706: {} + caniuse-lite@1.0.30001712: {} chalk@4.1.2: dependencies: @@ -4913,7 +4905,7 @@ snapshots: natural-compare@1.4.0: {} - next-i18next@12.1.0(next@15.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next-i18next@12.1.0(next@15.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.26.9 '@types/hoist-non-react-statics': 3.3.6 @@ -4921,33 +4913,33 @@ snapshots: hoist-non-react-statics: 3.3.2 i18next: 21.10.0 i18next-fs-backend: 1.2.0 - next: 15.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 15.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-i18next: 11.18.6(i18next@21.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - react-dom - react-native - next@15.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@15.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@next/env': 15.2.3 + '@next/env': 15.2.4 '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 - caniuse-lite: 1.0.30001706 + caniuse-lite: 1.0.30001712 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) styled-jsx: 5.1.6(react@18.3.1) optionalDependencies: - '@next/swc-darwin-arm64': 15.2.3 - '@next/swc-darwin-x64': 15.2.3 - '@next/swc-linux-arm64-gnu': 15.2.3 - '@next/swc-linux-arm64-musl': 15.2.3 - '@next/swc-linux-x64-gnu': 15.2.3 - '@next/swc-linux-x64-musl': 15.2.3 - '@next/swc-win32-arm64-msvc': 15.2.3 - '@next/swc-win32-x64-msvc': 15.2.3 + '@next/swc-darwin-arm64': 15.2.4 + '@next/swc-darwin-x64': 15.2.4 + '@next/swc-linux-arm64-gnu': 15.2.4 + '@next/swc-linux-arm64-musl': 15.2.4 + '@next/swc-linux-x64-gnu': 15.2.4 + '@next/swc-linux-x64-musl': 15.2.4 + '@next/swc-win32-arm64-msvc': 15.2.4 + '@next/swc-win32-x64-msvc': 15.2.4 sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' From 1fe4f4977127a3f58146e9fa39611e745d4a8eb0 Mon Sep 17 00:00:00 2001 From: Kevin Stone Date: Sun, 20 Apr 2025 17:39:25 -0700 Subject: [PATCH 17/21] Fix: Longhorn still showing Total despite `total: false` (#5200) --- src/components/widgets/longhorn/longhorn.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/widgets/longhorn/longhorn.jsx b/src/components/widgets/longhorn/longhorn.jsx index 235c77d05..db68cd7b8 100644 --- a/src/components/widgets/longhorn/longhorn.jsx +++ b/src/components/widgets/longhorn/longhorn.jsx @@ -32,8 +32,8 @@ export default function Longhorn({ options }) {
{data.nodes .filter((node) => { - if (node.id === "total" && total) { - return true; + if (node.id === "total") { + return total; } if (!nodes) { return false; From d99c3cb6915781ab162c053e43e6f691860669e1 Mon Sep 17 00:00:00 2001 From: xethlyx <46338199+xethlyx@users.noreply.github.com> Date: Sun, 20 Apr 2025 20:39:56 -0400 Subject: [PATCH 18/21] Fix: kubernetes statistics not respecting selector (#5199) --- .../api/kubernetes/stats/[...service].js | 54 ++++++++----------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/src/pages/api/kubernetes/stats/[...service].js b/src/pages/api/kubernetes/stats/[...service].js index 3c89dc393..ab4541834 100644 --- a/src/pages/api/kubernetes/stats/[...service].js +++ b/src/pages/api/kubernetes/stats/[...service].js @@ -53,9 +53,11 @@ export default async function handler(req, res) { return; } + const podNames = new Set(); let cpuLimit = 0; let memLimit = 0; pods.forEach((pod) => { + podNames.add(pod.metadata.name); pod.spec.containers.forEach((container) => { if (container?.resources?.limits?.cpu) { cpuLimit += parseCpu(container?.resources?.limits?.cpu); @@ -66,42 +68,32 @@ export default async function handler(req, res) { }); }); - const podStatsList = await Promise.all( - pods.map(async (pod) => { - let depMem = 0; - let depCpu = 0; - const podMetrics = await metricsApi - .getPodMetrics(namespace, pod.items) - .then((response) => response.items) - .catch((err) => { - // 404 generally means that the metrics have not been populated yet - if (err.statusCode !== 404) { - logger.error("Error getting pod metrics: %d %s %s", err.statusCode, err.body, err.response); - } - return null; - }); - if (podMetrics) { - podMetrics.forEach((metrics) => { - metrics.containers.forEach((container) => { - depMem += parseMemory(container.usage.memory); - depCpu += parseCpu(container.usage.cpu); - }); - }); + const namespaceMetrics = await metricsApi + .getPodMetrics(namespace) + .then((response) => response.items) + .catch((err) => { + // 404 generally means that the metrics have not been populated yet + if (err.statusCode !== 404) { + logger.error("Error getting pod metrics: %d %s %s", err.statusCode, err.body, err.response); } - return { - mem: depMem, - cpu: depCpu, - }; - }), - ); + return null; + }); + const stats = { mem: 0, cpu: 0, }; - podStatsList.forEach((podStat) => { - stats.mem += podStat.mem; - stats.cpu += podStat.cpu; - }); + + if (namespaceMetrics) { + const podMetrics = namespaceMetrics.filter((item) => podNames.has(item.metadata.name)); + podMetrics.forEach((metrics) => { + metrics.containers.forEach((container) => { + stats.mem += parseMemory(container.usage.memory); + stats.cpu += parseCpu(container.usage.cpu); + }); + }); + } + stats.cpuLimit = cpuLimit; stats.memLimit = memLimit; stats.cpuUsage = cpuLimit ? 100 * (stats.cpu / cpuLimit) : 0; From a35da39c0338b345a1eebf4d3ca1e7facf903a8a Mon Sep 17 00:00:00 2001 From: Rayan Mestiri Date: Fri, 25 Apr 2025 10:11:03 +0200 Subject: [PATCH 19/21] Enhancement: add label formatting for dynamic-list customapi widget (#5217) --- docs/widgets/services/customapi.md | 1 + src/widgets/customapi/component.jsx | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/widgets/services/customapi.md b/docs/widgets/services/customapi.md index 70947a101..37a48fd8c 100644 --- a/docs/widgets/services/customapi.md +++ b/docs/widgets/services/customapi.md @@ -189,6 +189,7 @@ widget: name: id # required, field in each item to use as the item name (left side) label: ip_address # required, field in each item to use as the item label (right side) limit: 5 # optional, limit the number of items to display + format: text # optional - format of the label field target: https://example.com/server/{id} # optional, makes items clickable with template support ``` diff --git a/src/widgets/customapi/component.jsx b/src/widgets/customapi/component.jsx index 50a371ad1..f537e8daa 100644 --- a/src/widgets/customapi/component.jsx +++ b/src/widgets/customapi/component.jsx @@ -267,14 +267,14 @@ export default function Component({ service }) { >
{itemName}
-
{itemLabel}
+
{formatValue(t, mappings, itemLabel)}
) : (
{itemName}
-
{itemLabel}
+
{formatValue(t, mappings, itemLabel)}
); From 4a9ca62efde9d1613acce3f9b9750d8f0d7eb8fe Mon Sep 17 00:00:00 2001 From: choehn86 <42713647+choehn86@users.noreply.github.com> Date: Mon, 28 Apr 2025 11:00:02 -0400 Subject: [PATCH 20/21] Enhancement: Add support for specifying a datastore to PBS widget (#4614) Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com> --- src/utils/config/service-helpers.js | 6 ++++++ src/widgets/proxmoxbackupserver/component.jsx | 13 ++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index c3df6579b..297e55a70 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -362,6 +362,9 @@ export function cleanServiceGroups(groups) { // proxmox node, + // proxmoxbackupserver + datastore, + // speedtest bitratePrecision, @@ -437,6 +440,9 @@ export function cleanServiceGroups(groups) { if (type === "proxmox") { if (node) widget.node = node; } + if (type === "proxmoxbackupserver") { + if (datastore) widget.datastore = datastore; + } if (type === "kubernetes") { if (namespace) widget.namespace = namespace; if (app) widget.app = app; diff --git a/src/widgets/proxmoxbackupserver/component.jsx b/src/widgets/proxmoxbackupserver/component.jsx index efc71bbba..b13f87565 100644 --- a/src/widgets/proxmoxbackupserver/component.jsx +++ b/src/widgets/proxmoxbackupserver/component.jsx @@ -29,7 +29,18 @@ export default function Component({ service }) { ); } - const datastoreUsage = datastoreData.data ? (datastoreData.data[0].used / datastoreData.data[0].total) * 100 : 0; + const datastoreIndex = !!widget.datastore + ? datastoreData.data.findIndex(function (ds) { + return ds.store == widget.datastore; + }) + : -1; + const datastoreUsage = + datastoreIndex > -1 + ? (datastoreData.data[datastoreIndex].used / datastoreData.data[datastoreIndex].total) * 100 + : (datastoreData.data.reduce((sum, datastore) => sum + datastore.used, 0) / + datastoreData.data.reduce((sum, datastore) => sum + datastore.total, 0)) * + 100; + const cpuUsage = hostData.data.cpu * 100; const memoryUsage = (hostData.data.memory.used / hostData.data.memory.total) * 100; const failedTasks = tasksData.total >= 100 ? "99+" : tasksData.total; From cf54c7b8246ef17033ad177edf49552a7a16242a Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 28 Apr 2025 08:20:50 -0700 Subject: [PATCH 21/21] Bump version to 1.1.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0c3afd920..3b6e4d2dc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homepage", - "version": "1.1.1", + "version": "1.1.2", "private": true, "scripts": { "preinstall": "npx only-allow pnpm",