mirror of
https://github.com/Drop-OSS/drop.git
synced 2026-06-22 04:11:32 +10:00
Fix GitHub Actions build (#427)
* Fix server build * Remove server drop-base submod * Update lockfile * Use debian images for build * Fix pino errors, lint * Fix macOS keychain lookup
This commit is contained in:
@@ -83,6 +83,10 @@ jobs:
|
|||||||
security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
|
security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
|
||||||
security set-keychain-settings -t 3600 -u build.keychain
|
security set-keychain-settings -t 3600 -u build.keychain
|
||||||
|
|
||||||
|
# Add build.keychain to the user keychain search list so that codesign
|
||||||
|
# (invoked later by tauri-action WITHOUT an explicit --keychain) can
|
||||||
|
# resolve the signing identity from it.
|
||||||
|
security list-keychains -d user -s build.keychain $(security list-keychains -d user | tr -d '"')
|
||||||
|
|
||||||
echo "Created keychain"
|
echo "Created keychain"
|
||||||
|
|
||||||
@@ -118,8 +122,12 @@ jobs:
|
|||||||
- uses: tauri-apps/tauri-action@v0
|
- uses: tauri-apps/tauri-action@v0
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
|
# Do NOT set APPLE_CERTIFICATE / APPLE_CERTIFICATE_PASSWORD here. Doing so
|
||||||
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
|
# makes tauri-action import the cert into its own throwaway keychain and
|
||||||
|
# look up the identity by Apple-only name prefixes (e.g.
|
||||||
|
# "Developer ID Application:"), which never matches our "Drop OSS" cert
|
||||||
|
# and fails with "failed to resolve signing identity". Instead we rely on
|
||||||
|
# the build.keychain prepared above and only pass the resolved identity.
|
||||||
APPLE_SIGNING_IDENTITY: ${{ env.CERT_ID }}
|
APPLE_SIGNING_IDENTITY: ${{ env.CERT_ID }}
|
||||||
NO_STRIP: true
|
NO_STRIP: true
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -89,8 +89,6 @@ jobs:
|
|||||||
build-args: |
|
build-args: |
|
||||||
BUILD_DROP_VERSION=${{ steps.get_final_ver.outputs.final_ver }}
|
BUILD_DROP_VERSION=${{ steps.get_final_ver.outputs.final_ver }}
|
||||||
BUILD_GIT_REF=${{ github.sha }}
|
BUILD_GIT_REF=${{ github.sha }}
|
||||||
context: ./server
|
|
||||||
file: ./server/Dockerfile
|
|
||||||
|
|
||||||
- name: Export digest
|
- name: Export digest
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
+27
-6
@@ -1,6 +1,8 @@
|
|||||||
# syntax=docker/dockerfile:1
|
# syntax=docker/dockerfile:1
|
||||||
|
|
||||||
FROM node:lts-alpine AS base
|
# Pinned to bookworm so the glibc here matches the torrential build stage
|
||||||
|
# and the libarchive runtime package is named `libarchive13` (trixie renames it to libarchive13t64).
|
||||||
|
FROM node:lts-bookworm-slim AS base
|
||||||
ENV PNPM_HOME="/pnpm"
|
ENV PNPM_HOME="/pnpm"
|
||||||
ENV PATH="$PNPM_HOME:$PATH"
|
ENV PATH="$PNPM_HOME:$PATH"
|
||||||
RUN corepack enable
|
RUN corepack enable
|
||||||
@@ -20,11 +22,17 @@ FROM base AS deps
|
|||||||
RUN pnpm install --frozen-lockfile --ignore-scripts
|
RUN pnpm install --frozen-lockfile --ignore-scripts
|
||||||
|
|
||||||
### BUILD TORRENTIAL
|
### BUILD TORRENTIAL
|
||||||
FROM rustlang/rust:nightly-alpine AS torrential-build
|
# Bookworm-pinned to match the runtime image's glibc (a trixie build would not run on bookworm).
|
||||||
RUN apk add musl-dev pkgconfig libarchive-dev libarchive
|
FROM rustlang/rust:nightly-bookworm-slim AS torrential-build
|
||||||
|
## libarchive-dev + pkg-config let libarchive3-sys link libarchive dynamically (glibc).
|
||||||
|
## protobuf-compiler is kept for parity (torrential's build.rs uses a vendored protoc).
|
||||||
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
pkg-config \
|
||||||
|
libarchive-dev \
|
||||||
|
protobuf-compiler \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
WORKDIR /build
|
WORKDIR /build
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN apk add protoc
|
|
||||||
RUN cargo build --release --manifest-path ./torrential/Cargo.toml
|
RUN cargo build --release --manifest-path ./torrential/Cargo.toml
|
||||||
|
|
||||||
### BUILD APP
|
### BUILD APP
|
||||||
@@ -34,7 +42,8 @@ ENV NODE_ENV=production
|
|||||||
ENV NUXT_TELEMETRY_DISABLED=1
|
ENV NUXT_TELEMETRY_DISABLED=1
|
||||||
|
|
||||||
## add git so drop can determine its git ref at build
|
## add git so drop can determine its git ref at build
|
||||||
RUN apk add --no-cache git
|
RUN apt-get update && apt-get install -y --no-install-recommends git \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
## copy deps and rest of project files
|
## copy deps and rest of project files
|
||||||
COPY . .
|
COPY . .
|
||||||
@@ -55,7 +64,19 @@ ENV NODE_ENV=production
|
|||||||
ENV NUXT_TELEMETRY_DISABLED=1
|
ENV NUXT_TELEMETRY_DISABLED=1
|
||||||
|
|
||||||
# RUN --mount=type=cache,target=/root/.yarn YARN_CACHE_FOLDER=/root/.yarn yarn add --network-timeout 1000000 --no-lockfile --ignore-scripts prisma@6.11.1
|
# RUN --mount=type=cache,target=/root/.yarn YARN_CACHE_FOLDER=/root/.yarn yarn add --network-timeout 1000000 --no-lockfile --ignore-scripts prisma@6.11.1
|
||||||
RUN apk add --no-cache pnpm 7zip nginx
|
## runtime deps:
|
||||||
|
## - libarchive13: torrential now links libarchive dynamically (glibc build)
|
||||||
|
## - p7zip-full: provides the 7z CLI
|
||||||
|
## - nginx: front-end proxy
|
||||||
|
## - openssl + ca-certificates: required by Prisma's query engine on Debian
|
||||||
|
## pnpm itself is provided by corepack (enabled in the base stage)
|
||||||
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
libarchive13 \
|
||||||
|
p7zip-full \
|
||||||
|
nginx \
|
||||||
|
openssl \
|
||||||
|
ca-certificates \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
RUN pnpm install prisma@7.3.0 --global
|
RUN pnpm install prisma@7.3.0 --global
|
||||||
# init prisma to download all required files
|
# init prisma to download all required files
|
||||||
RUN pnpm prisma init
|
RUN pnpm prisma init
|
||||||
|
|||||||
Vendored
-23
@@ -1,23 +0,0 @@
|
|||||||
on: push
|
|
||||||
name: Clippy check
|
|
||||||
jobs:
|
|
||||||
clippy_check:
|
|
||||||
runs-on: ubuntu-24.04
|
|
||||||
permissions:
|
|
||||||
checks: write
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
- name: install dependencies (ubuntu only)
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y libglib2.0-dev libgtk-3-dev libwebkit2gtk-4.1-dev
|
|
||||||
|
|
||||||
- uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
toolchain: nightly
|
|
||||||
components: clippy
|
|
||||||
override: true
|
|
||||||
- uses: actions-rs/clippy-check@v1
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
args: --manifest-path ./src-tauri/Cargo.toml
|
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
"tauri": "tauri"
|
"tauri": "tauri"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"pino": "^9.7.0",
|
"pino": "^9.14.0",
|
||||||
"pino-pretty": "^13.1.1",
|
"pino-pretty": "^13.1.1",
|
||||||
"tauri": "^0.15.0"
|
"tauri": "^0.15.0"
|
||||||
},
|
},
|
||||||
|
|||||||
Generated
+50
-75
@@ -60,7 +60,7 @@ importers:
|
|||||||
desktop:
|
desktop:
|
||||||
dependencies:
|
dependencies:
|
||||||
pino:
|
pino:
|
||||||
specifier: ^9.7.0
|
specifier: ^9.14.0
|
||||||
version: 9.14.0
|
version: 9.14.0
|
||||||
pino-pretty:
|
pino-pretty:
|
||||||
specifier: ^13.1.1
|
specifier: ^13.1.1
|
||||||
@@ -209,10 +209,10 @@ importers:
|
|||||||
specifier: ^1.0.2
|
specifier: ^1.0.2
|
||||||
version: 1.0.2
|
version: 1.0.2
|
||||||
pino:
|
pino:
|
||||||
specifier: 9.7.0
|
specifier: ^9.14.0
|
||||||
version: 9.7.0
|
version: 9.14.0
|
||||||
pino-pretty:
|
pino-pretty:
|
||||||
specifier: ^13.0.0
|
specifier: ^13.1.1
|
||||||
version: 13.1.3
|
version: 13.1.3
|
||||||
prisma:
|
prisma:
|
||||||
specifier: 7.3.0
|
specifier: 7.3.0
|
||||||
@@ -375,8 +375,8 @@ importers:
|
|||||||
specifier: ^12.23.11
|
specifier: ^12.23.11
|
||||||
version: 12.38.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
|
version: 12.38.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
|
||||||
next:
|
next:
|
||||||
specifier: 15.4.4
|
specifier: 15.5.18
|
||||||
version: 15.4.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0)
|
version: 15.5.18(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0)
|
||||||
react:
|
react:
|
||||||
specifier: ^19
|
specifier: ^19
|
||||||
version: 19.2.5
|
version: 19.2.5
|
||||||
@@ -398,7 +398,7 @@ importers:
|
|||||||
version: 0.2.2(@content-collections/core@0.11.1(typescript@5.9.3))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
|
version: 0.2.2(@content-collections/core@0.11.1(typescript@5.9.3))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
|
||||||
'@content-collections/next':
|
'@content-collections/next':
|
||||||
specifier: ^0.2.7
|
specifier: ^0.2.7
|
||||||
version: 0.2.11(@content-collections/core@0.11.1(typescript@5.9.3))(next@15.4.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0))
|
version: 0.2.11(@content-collections/core@0.11.1(typescript@5.9.3))(next@15.5.18(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0))
|
||||||
'@eslint/eslintrc':
|
'@eslint/eslintrc':
|
||||||
specifier: ^3
|
specifier: ^3
|
||||||
version: 3.3.5
|
version: 3.3.5
|
||||||
@@ -1849,60 +1849,60 @@ packages:
|
|||||||
'@emnapi/core': ^1.7.1
|
'@emnapi/core': ^1.7.1
|
||||||
'@emnapi/runtime': ^1.7.1
|
'@emnapi/runtime': ^1.7.1
|
||||||
|
|
||||||
'@next/env@15.4.4':
|
'@next/env@15.5.18':
|
||||||
resolution: {integrity: sha512-SJKOOkULKENyHSYXE5+KiFU6itcIb6wSBjgM92meK0HVKpo94dNOLZVdLLuS7/BxImROkGoPsjR4EnuDucqiiA==}
|
resolution: {integrity: sha512-hAV85Ckd9QR6RvH04MEKwsfLTksvFpO47j9xwtoIuvuPnlwecpSi+uZTtm8HirVbtlI2Fnz//xpcSTjFdyJk+g==}
|
||||||
|
|
||||||
'@next/eslint-plugin-next@15.4.4':
|
'@next/eslint-plugin-next@15.4.4':
|
||||||
resolution: {integrity: sha512-1FDsyN//ai3Jd97SEd7scw5h1yLdzDACGOPRofr2GD3sEFsBylEEoL0MHSerd4n2dq9Zm/mFMqi4+NRMOreOKA==}
|
resolution: {integrity: sha512-1FDsyN//ai3Jd97SEd7scw5h1yLdzDACGOPRofr2GD3sEFsBylEEoL0MHSerd4n2dq9Zm/mFMqi4+NRMOreOKA==}
|
||||||
|
|
||||||
'@next/swc-darwin-arm64@15.4.4':
|
'@next/swc-darwin-arm64@15.5.18':
|
||||||
resolution: {integrity: sha512-eVG55dnGwfUuG+TtnUCt+mEJ+8TGgul6nHEvdb8HEH7dmJIFYOCApAaFrIrxwtEq2Cdf+0m5sG1Np8cNpw9EAw==}
|
resolution: {integrity: sha512-w0WvQf1n+txiwns/9pwIQteCJpZTbxzO2SE0FLcwuD4v0WEh1JPOjdyxWL21XwJsdpx8cFRjyzxzCS/siP7HcQ==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@next/swc-darwin-x64@15.4.4':
|
'@next/swc-darwin-x64@15.5.18':
|
||||||
resolution: {integrity: sha512-zqG+/8apsu49CltEj4NAmCGZvHcZbOOOsNoTVeIXphYWIbE4l6A/vuQHyqll0flU2o3dmYCXsBW5FmbrGDgljQ==}
|
resolution: {integrity: sha512-znn71QmDuxm+BOaglihMZfvyySMnNljkVIY5Z2TCssBmm+WqL6c19VhtH5ktFkHa8EZ2bnTUpcNcmNSQsg67og==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@next/swc-linux-arm64-gnu@15.4.4':
|
'@next/swc-linux-arm64-gnu@15.5.18':
|
||||||
resolution: {integrity: sha512-LRD4l2lq4R+2QCHBQVC0wjxxkLlALGJCwigaJ5FSRSqnje+MRKHljQNZgDCaKUZQzO/TXxlmUdkZP/X3KNGZaw==}
|
resolution: {integrity: sha512-yPPe5MNL+igZUa+OsqQJisqSfh6oarIuA1Q0BDxljGJhRQyZeP+WRHh7rs/jZUGMh5aY0YdIjXZG0VohkKkUdw==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [glibc]
|
libc: [glibc]
|
||||||
|
|
||||||
'@next/swc-linux-arm64-musl@15.4.4':
|
'@next/swc-linux-arm64-musl@15.5.18':
|
||||||
resolution: {integrity: sha512-LsGUCTvuZ0690fFWerA4lnQvjkYg9gHo12A3wiPUR4kCxbx/d+SlwmonuTH2SWZI+RVGA9VL3N0S03WTYv6bYg==}
|
resolution: {integrity: sha512-glaCczEWIrHsokFZ3pP08U4BpKxwIdnT+txdOM32OBgpL9Yw4aqx8NejmgtZQZOdstQ5f0L3CasIZudzCuD+nw==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [musl]
|
libc: [musl]
|
||||||
|
|
||||||
'@next/swc-linux-x64-gnu@15.4.4':
|
'@next/swc-linux-x64-gnu@15.5.18':
|
||||||
resolution: {integrity: sha512-aOy5yNRpLL3wNiJVkFYl6w22hdREERNjvegE6vvtix8LHRdsTHhWTpgvcYdCK7AIDCQW5ATmzr9XkPHvSoAnvg==}
|
resolution: {integrity: sha512-oUfg2EgJmU3R0OCOWiokGFUTvZiPfXtriXiuF3YNxRoROCdgvTedHIzYoeKH34gsZxS/V7mHbfq2hpAHwhH1/A==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [glibc]
|
libc: [glibc]
|
||||||
|
|
||||||
'@next/swc-linux-x64-musl@15.4.4':
|
'@next/swc-linux-x64-musl@15.5.18':
|
||||||
resolution: {integrity: sha512-FL7OAn4UkR8hKQRGBmlHiHinzOb07tsfARdGh7v0Z0jEJ3sz8/7L5bR23ble9E6DZMabSStqlATHlSxv1fuzAg==}
|
resolution: {integrity: sha512-JLxSP3KTd9iu/bvUMQxH7RJo9xKSHf55/6RPE4a6FTSZygGn7uvZbCej0AHXydwkggQGSD9UddSjwv6Xz5ESfA==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [musl]
|
libc: [musl]
|
||||||
|
|
||||||
'@next/swc-win32-arm64-msvc@15.4.4':
|
'@next/swc-win32-arm64-msvc@15.5.18':
|
||||||
resolution: {integrity: sha512-eEdNW/TXwjYhOulQh0pffTMMItWVwKCQpbziSBmgBNFZIIRn2GTXrhrewevs8wP8KXWYMx8Z+mNU0X+AfvtrRg==}
|
resolution: {integrity: sha512-ir1v7enP52K2HNz3tQQvwF+x7VNxBk1ciiZ18WBPvxf4C59IqdfmHPJYK3vH7rSxpuCVw/8C712wTXNAtEp+NA==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@next/swc-win32-x64-msvc@15.4.4':
|
'@next/swc-win32-x64-msvc@15.5.18':
|
||||||
resolution: {integrity: sha512-SE5pYNbn/xZKMy1RE3pAs+4xD32OI4rY6mzJa4XUkp/ItZY+OMjIgilskmErt8ls/fVJ+Ihopi2QIeW6O3TrMw==}
|
resolution: {integrity: sha512-LIu5me6QTANCd25E7I5uIEfvgQ06RK7tvHAbYo3zCb3VpxQEPvMcSpd87NwUABDT6MbGPdEGR5VRiK4PPTJhQg==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
@@ -5784,10 +5784,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-tWhw7z4jFuQgZB9tbQyUh5BY9nNd/wimM+fBLfmmJjakkJDNvbJKm0nQ5ruPKC0us1HGg7L6iBk1fxpSzcgSaA==}
|
resolution: {integrity: sha512-tWhw7z4jFuQgZB9tbQyUh5BY9nNd/wimM+fBLfmmJjakkJDNvbJKm0nQ5ruPKC0us1HGg7L6iBk1fxpSzcgSaA==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
fast-redact@3.5.0:
|
|
||||||
resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==}
|
|
||||||
engines: {node: '>=6'}
|
|
||||||
|
|
||||||
fast-safe-stringify@2.1.1:
|
fast-safe-stringify@2.1.1:
|
||||||
resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==}
|
resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==}
|
||||||
|
|
||||||
@@ -7635,10 +7631,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==}
|
resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
|
|
||||||
next@15.4.4:
|
next@15.5.18:
|
||||||
resolution: {integrity: sha512-kNcubvJjOL9yUOfwtZF3HfDhuhp+kVD+FM2A6Tyua1eI/xfmY4r/8ZS913MMz+oWKDlbps/dQOWdDricuIkXLw==}
|
resolution: {integrity: sha512-eKL8zUJkX9Y5lE+RX/2YJoItVdGlIscyVyboeD9wSpp0PaGqjoA4tTpT2qPqz9ax+5IzGESyLSeZ/RCwbSZ2uQ==}
|
||||||
engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
|
engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
|
||||||
deprecated: This version has a security vulnerability. Please upgrade to a patched version. See https://nextjs.org/blog/CVE-2025-66478 for more details.
|
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@opentelemetry/api': ^1.1.0
|
'@opentelemetry/api': ^1.1.0
|
||||||
@@ -8221,10 +8216,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w==}
|
resolution: {integrity: sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
pino@9.7.0:
|
|
||||||
resolution: {integrity: sha512-vnMCM6xZTb1WDmLvtG2lE/2p+t9hDEIvTWJsu6FejkE62vB7gDhvzrpFR4Cw2to+9JNQxVnkAKVPA1KPB98vWg==}
|
|
||||||
hasBin: true
|
|
||||||
|
|
||||||
pkg-types@1.3.1:
|
pkg-types@1.3.1:
|
||||||
resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
|
resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
|
||||||
|
|
||||||
@@ -11204,11 +11195,11 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@content-collections/next@0.2.11(@content-collections/core@0.11.1(typescript@5.9.3))(next@15.4.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0))':
|
'@content-collections/next@0.2.11(@content-collections/core@0.11.1(typescript@5.9.3))(next@15.5.18(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@content-collections/core': 0.11.1(typescript@5.9.3)
|
'@content-collections/core': 0.11.1(typescript@5.9.3)
|
||||||
'@content-collections/integrations': 0.5.0(@content-collections/core@0.11.1(typescript@5.9.3))
|
'@content-collections/integrations': 0.5.0(@content-collections/core@0.11.1(typescript@5.9.3))
|
||||||
next: 15.4.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0)
|
next: 15.5.18(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0)
|
||||||
|
|
||||||
'@cto.af/wtf8@0.0.5': {}
|
'@cto.af/wtf8@0.0.5': {}
|
||||||
|
|
||||||
@@ -12103,34 +12094,34 @@ snapshots:
|
|||||||
'@tybys/wasm-util': 0.10.2
|
'@tybys/wasm-util': 0.10.2
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/env@15.4.4': {}
|
'@next/env@15.5.18': {}
|
||||||
|
|
||||||
'@next/eslint-plugin-next@15.4.4':
|
'@next/eslint-plugin-next@15.4.4':
|
||||||
dependencies:
|
dependencies:
|
||||||
fast-glob: 3.3.1
|
fast-glob: 3.3.1
|
||||||
|
|
||||||
'@next/swc-darwin-arm64@15.4.4':
|
'@next/swc-darwin-arm64@15.5.18':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-darwin-x64@15.4.4':
|
'@next/swc-darwin-x64@15.5.18':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-arm64-gnu@15.4.4':
|
'@next/swc-linux-arm64-gnu@15.5.18':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-arm64-musl@15.4.4':
|
'@next/swc-linux-arm64-musl@15.5.18':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-x64-gnu@15.4.4':
|
'@next/swc-linux-x64-gnu@15.5.18':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-x64-musl@15.4.4':
|
'@next/swc-linux-x64-musl@15.5.18':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-win32-arm64-msvc@15.4.4':
|
'@next/swc-win32-arm64-msvc@15.5.18':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next/swc-win32-x64-msvc@15.4.4':
|
'@next/swc-win32-x64-msvc@15.5.18':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@nodelib/fs.scandir@2.1.5':
|
'@nodelib/fs.scandir@2.1.5':
|
||||||
@@ -17044,8 +17035,6 @@ snapshots:
|
|||||||
|
|
||||||
fast-npm-meta@1.5.1: {}
|
fast-npm-meta@1.5.1: {}
|
||||||
|
|
||||||
fast-redact@3.5.0: {}
|
|
||||||
|
|
||||||
fast-safe-stringify@2.1.1: {}
|
fast-safe-stringify@2.1.1: {}
|
||||||
|
|
||||||
fast-string-truncated-width@1.2.1: {}
|
fast-string-truncated-width@1.2.1: {}
|
||||||
@@ -19351,24 +19340,24 @@ snapshots:
|
|||||||
|
|
||||||
neotraverse@0.6.18: {}
|
neotraverse@0.6.18: {}
|
||||||
|
|
||||||
next@15.4.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0):
|
next@15.5.18(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@next/env': 15.4.4
|
'@next/env': 15.5.18
|
||||||
'@swc/helpers': 0.5.15
|
'@swc/helpers': 0.5.15
|
||||||
caniuse-lite: 1.0.30001788
|
caniuse-lite: 1.0.30001793
|
||||||
postcss: 8.4.31
|
postcss: 8.4.31
|
||||||
react: 19.2.5
|
react: 19.2.5
|
||||||
react-dom: 19.2.5(react@19.2.5)
|
react-dom: 19.2.5(react@19.2.5)
|
||||||
styled-jsx: 5.1.6(react@19.2.5)
|
styled-jsx: 5.1.6(react@19.2.5)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@next/swc-darwin-arm64': 15.4.4
|
'@next/swc-darwin-arm64': 15.5.18
|
||||||
'@next/swc-darwin-x64': 15.4.4
|
'@next/swc-darwin-x64': 15.5.18
|
||||||
'@next/swc-linux-arm64-gnu': 15.4.4
|
'@next/swc-linux-arm64-gnu': 15.5.18
|
||||||
'@next/swc-linux-arm64-musl': 15.4.4
|
'@next/swc-linux-arm64-musl': 15.5.18
|
||||||
'@next/swc-linux-x64-gnu': 15.4.4
|
'@next/swc-linux-x64-gnu': 15.5.18
|
||||||
'@next/swc-linux-x64-musl': 15.4.4
|
'@next/swc-linux-x64-musl': 15.5.18
|
||||||
'@next/swc-win32-arm64-msvc': 15.4.4
|
'@next/swc-win32-arm64-msvc': 15.5.18
|
||||||
'@next/swc-win32-x64-msvc': 15.4.4
|
'@next/swc-win32-x64-msvc': 15.5.18
|
||||||
sass: 1.99.0
|
sass: 1.99.0
|
||||||
sharp: 0.34.5
|
sharp: 0.34.5
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@@ -20382,20 +20371,6 @@ snapshots:
|
|||||||
sonic-boom: 4.2.1
|
sonic-boom: 4.2.1
|
||||||
thread-stream: 3.1.0
|
thread-stream: 3.1.0
|
||||||
|
|
||||||
pino@9.7.0:
|
|
||||||
dependencies:
|
|
||||||
atomic-sleep: 1.0.0
|
|
||||||
fast-redact: 3.5.0
|
|
||||||
on-exit-leak-free: 2.1.2
|
|
||||||
pino-abstract-transport: 2.0.0
|
|
||||||
pino-std-serializers: 7.1.0
|
|
||||||
process-warning: 5.0.0
|
|
||||||
quick-format-unescaped: 4.0.4
|
|
||||||
real-require: 0.2.0
|
|
||||||
safe-stable-stringify: 2.5.0
|
|
||||||
sonic-boom: 4.2.1
|
|
||||||
thread-stream: 3.1.0
|
|
||||||
|
|
||||||
pkg-types@1.3.1:
|
pkg-types@1.3.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
confbox: 0.1.8
|
confbox: 0.1.8
|
||||||
@@ -20601,7 +20576,7 @@ snapshots:
|
|||||||
|
|
||||||
postcss@8.4.31:
|
postcss@8.4.31:
|
||||||
dependencies:
|
dependencies:
|
||||||
nanoid: 3.3.11
|
nanoid: 3.3.12
|
||||||
picocolors: 1.1.1
|
picocolors: 1.1.1
|
||||||
source-map-js: 1.2.1
|
source-map-js: 1.2.1
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
# Server
|
# Server
|
||||||
|
|
||||||
The hosted, accessible portion of Drop. Exposes a web UI and API for applications to use.
|
The hosted, accessible portion of Drop. Exposes a web UI and API for applications to use.
|
||||||
|
|||||||
+1
-1
@@ -5,4 +5,4 @@ plugins:
|
|||||||
opt: target=ts
|
opt: target=ts
|
||||||
|
|
||||||
inputs:
|
inputs:
|
||||||
- directory: ../
|
- directory: ../
|
||||||
|
|||||||
Submodule server/drop-base deleted from dad3487be6
@@ -11,9 +11,9 @@ export default withNuxt([
|
|||||||
eslintConfigPrettier,
|
eslintConfigPrettier,
|
||||||
|
|
||||||
// vue-i18n plugin
|
// vue-i18n plugin
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
...vueI18n.configs.recommended,
|
...vueI18n.configs.recommended,
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
{
|
{
|
||||||
rules: {
|
rules: {
|
||||||
// Optional.
|
// Optional.
|
||||||
@@ -37,10 +37,10 @@ export default withNuxt([
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
{
|
{
|
||||||
plugins: {
|
plugins: {
|
||||||
drop: { rules: { "no-prisma-delete": noPrismaDelete } },
|
drop: { rules: { "no-prisma-delete": noPrismaDelete } },
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
]);
|
]);
|
||||||
|
|||||||
+2
-2
@@ -56,8 +56,8 @@
|
|||||||
"nuxt-security": "2.2.0",
|
"nuxt-security": "2.2.0",
|
||||||
"otp-io": "^1.2.7",
|
"otp-io": "^1.2.7",
|
||||||
"parse-cosekey": "^1.0.2",
|
"parse-cosekey": "^1.0.2",
|
||||||
"pino": "9.7.0",
|
"pino": "^9.14.0",
|
||||||
"pino-pretty": "^13.0.0",
|
"pino-pretty": "^13.1.1",
|
||||||
"prisma": "7.3.0",
|
"prisma": "7.3.0",
|
||||||
"sanitize-filename": "^1.6.3",
|
"sanitize-filename": "^1.6.3",
|
||||||
"semver": "^7.7.1",
|
"semver": "^7.7.1",
|
||||||
|
|||||||
@@ -14,9 +14,9 @@ export const FilesystemProviderConfig = type({
|
|||||||
baseDir: "string",
|
baseDir: "string",
|
||||||
});
|
});
|
||||||
|
|
||||||
export class FilesystemProvider
|
export class FilesystemProvider implements LibraryProvider<
|
||||||
implements LibraryProvider<typeof FilesystemProviderConfig.infer>
|
typeof FilesystemProviderConfig.infer
|
||||||
{
|
> {
|
||||||
private config: typeof FilesystemProviderConfig.infer;
|
private config: typeof FilesystemProviderConfig.infer;
|
||||||
private myId: string;
|
private myId: string;
|
||||||
|
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ export const FlatFilesystemProviderConfig = type({
|
|||||||
baseDir: "string",
|
baseDir: "string",
|
||||||
});
|
});
|
||||||
|
|
||||||
export class FlatFilesystemProvider
|
export class FlatFilesystemProvider implements LibraryProvider<
|
||||||
implements LibraryProvider<typeof FlatFilesystemProviderConfig.infer>
|
typeof FlatFilesystemProviderConfig.infer
|
||||||
{
|
> {
|
||||||
private config: typeof FlatFilesystemProviderConfig.infer;
|
private config: typeof FlatFilesystemProviderConfig.infer;
|
||||||
private myId: string;
|
private myId: string;
|
||||||
|
|
||||||
|
|||||||
@@ -188,7 +188,10 @@ export class PCGamingWikiProvider implements MetadataProvider {
|
|||||||
return url.pathname.replace("/games/", "").replace(/\/$/, "");
|
return url.pathname.replace("/games/", "").replace(/\/$/, "");
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
logger.warn("Pcgamingwiki, unknown host", url.hostname);
|
logger.warn(
|
||||||
|
{ hostname: url.hostname },
|
||||||
|
"Pcgamingwiki, unknown host",
|
||||||
|
);
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -222,8 +225,8 @@ export class PCGamingWikiProvider implements MetadataProvider {
|
|||||||
});
|
});
|
||||||
if (ratingObj instanceof type.errors) {
|
if (ratingObj instanceof type.errors) {
|
||||||
logger.info(
|
logger.info(
|
||||||
|
{ summary: ratingObj.summary },
|
||||||
"pcgamingwiki: failed to properly get review rating",
|
"pcgamingwiki: failed to properly get review rating",
|
||||||
ratingObj.summary,
|
|
||||||
);
|
);
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
@@ -327,7 +330,7 @@ export class PCGamingWikiProvider implements MetadataProvider {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
private parseTS(isoStr: string): DateTime {
|
private parseTS(isoStr: string): DateTime {
|
||||||
return DateTime.fromISO(isoStr.split(";")[0]);
|
return DateTime.fromISO(isoStr.split(";")[0]!);
|
||||||
}
|
}
|
||||||
|
|
||||||
private parseWebsitesGetFirst(websiteStr?: string | null): string {
|
private parseWebsitesGetFirst(websiteStr?: string | null): string {
|
||||||
@@ -429,7 +432,7 @@ export class PCGamingWikiProvider implements MetadataProvider {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const released = game.Released
|
const released = game.Released
|
||||||
? DateTime.fromISO(game.Released.split(";")[0]).toJSDate()
|
? DateTime.fromISO(game.Released.split(";")[0]!).toJSDate()
|
||||||
: new Date();
|
: new Date();
|
||||||
|
|
||||||
const metadata: GameMetadata = {
|
const metadata: GameMetadata = {
|
||||||
|
|||||||
@@ -306,7 +306,8 @@ export class SteamProvider implements MetadataProvider {
|
|||||||
"https://store.steampowered.com/publisher/",
|
"https://store.steampowered.com/publisher/",
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.map((v) => v.attribs.href);
|
.map((v) => v.attribs.href)
|
||||||
|
.filter((v) => v !== undefined);
|
||||||
|
|
||||||
const companies: {
|
const companies: {
|
||||||
[key: string]: {
|
[key: string]: {
|
||||||
@@ -320,6 +321,8 @@ export class SteamProvider implements MetadataProvider {
|
|||||||
.substring("https://store.steampowered.com/".length, v.indexOf("?"))
|
.substring("https://store.steampowered.com/".length, v.indexOf("?"))
|
||||||
.split("/");
|
.split("/");
|
||||||
|
|
||||||
|
if (!type || !name) return;
|
||||||
|
|
||||||
companies[name] ??= { pub: false, dev: false };
|
companies[name] ??= { pub: false, dev: false };
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case "publisher":
|
case "publisher":
|
||||||
@@ -546,7 +549,9 @@ export class SteamProvider implements MetadataProvider {
|
|||||||
let titleMatch = ogTitleRegex.exec(html);
|
let titleMatch = ogTitleRegex.exec(html);
|
||||||
titleMatch ??= titleTagRegex.exec(html);
|
titleMatch ??= titleTagRegex.exec(html);
|
||||||
|
|
||||||
return titleMatch ? this._decodeHtmlEntities(titleMatch[1]) : undefined;
|
return titleMatch && titleMatch[1]
|
||||||
|
? this._decodeHtmlEntities(titleMatch[1])
|
||||||
|
: undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _extractDescription(html: string): string | undefined {
|
private _extractDescription(html: string): string | undefined {
|
||||||
@@ -558,7 +563,9 @@ export class SteamProvider implements MetadataProvider {
|
|||||||
let descMatch = ogDescRegex.exec(html);
|
let descMatch = ogDescRegex.exec(html);
|
||||||
descMatch ??= nameDescRegex.exec(html);
|
descMatch ??= nameDescRegex.exec(html);
|
||||||
|
|
||||||
return descMatch ? this._decodeHtmlEntities(descMatch[1]) : undefined;
|
return descMatch && descMatch[1]
|
||||||
|
? this._decodeHtmlEntities(descMatch[1])
|
||||||
|
: undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _extractImage(html: string): string | undefined {
|
private _extractImage(html: string): string | undefined {
|
||||||
@@ -583,6 +590,7 @@ export class SteamProvider implements MetadataProvider {
|
|||||||
curatorUrlMatch ??= linkfilterRegex.exec(html);
|
curatorUrlMatch ??= linkfilterRegex.exec(html);
|
||||||
|
|
||||||
if (!curatorUrlMatch) return undefined;
|
if (!curatorUrlMatch) return undefined;
|
||||||
|
if (!curatorUrlMatch[1]) return undefined;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return decodeURIComponent(curatorUrlMatch[1]);
|
return decodeURIComponent(curatorUrlMatch[1]);
|
||||||
@@ -601,11 +609,12 @@ export class SteamProvider implements MetadataProvider {
|
|||||||
bannerMatch ??= backgroundImageRegex.exec(html);
|
bannerMatch ??= backgroundImageRegex.exec(html);
|
||||||
|
|
||||||
if (!bannerMatch) return undefined;
|
if (!bannerMatch) return undefined;
|
||||||
|
if (!bannerMatch[1]) return undefined;
|
||||||
|
|
||||||
let bannerUrl = bannerMatch[1].replace(/['"]/g, "");
|
let bannerUrl = bannerMatch[1].replace(/['"]/g, "");
|
||||||
// Clean up the URL
|
// Clean up the URL
|
||||||
if (bannerUrl.includes("?")) {
|
if (bannerUrl.includes("?")) {
|
||||||
bannerUrl = bannerUrl.split("?")[0];
|
bannerUrl = bannerUrl.split("?")[0]!;
|
||||||
}
|
}
|
||||||
return bannerUrl;
|
return bannerUrl;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -123,7 +123,10 @@ export class FsObjectBackend extends ObjectBackend {
|
|||||||
const metadataRaw = JSON.parse(fs.readFileSync(metadataPath, "utf-8"));
|
const metadataRaw = JSON.parse(fs.readFileSync(metadataPath, "utf-8"));
|
||||||
const metadata = objectMetadata(metadataRaw);
|
const metadata = objectMetadata(metadataRaw);
|
||||||
if (metadata instanceof type.errors) {
|
if (metadata instanceof type.errors) {
|
||||||
logger.error("FsObjectBackend#fetchMetadata", metadata.summary);
|
logger.error(
|
||||||
|
{ summary: metadata.summary },
|
||||||
|
"FsObjectBackend#fetchMetadata",
|
||||||
|
);
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
await this.metadataCache.set(id, metadata);
|
await this.metadataCache.set(id, metadata);
|
||||||
@@ -198,8 +201,8 @@ export class FsObjectBackend extends ObjectBackend {
|
|||||||
);
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
cleanupLogger.error(
|
cleanupLogger.error(
|
||||||
|
{ error },
|
||||||
`[FsObjectBackend#cleanupMetadata]: Failed to remove ${file}`,
|
`[FsObjectBackend#cleanupMetadata]: Failed to remove ${file}`,
|
||||||
error,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ class TaskHandler {
|
|||||||
parentTask?.progress ??
|
parentTask?.progress ??
|
||||||
((progress: number) => {
|
((progress: number) => {
|
||||||
if (progress < 0 || progress > 100) {
|
if (progress < 0 || progress > 100) {
|
||||||
logger.error("Progress must be between 0 and 100", { progress });
|
logger.error({ progress }, "Progress must be between 0 and 100");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const taskEntry = this.taskPool.get(task.id);
|
const taskEntry = this.taskPool.get(task.id);
|
||||||
|
|||||||
@@ -49,10 +49,13 @@ export default defineDropTask({
|
|||||||
|
|
||||||
// if response failed somehow
|
// if response failed somehow
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
logger.info("Failed to check for update ", {
|
logger.info(
|
||||||
status: response.status,
|
{
|
||||||
body: response.body,
|
status: response.status,
|
||||||
});
|
body: response.body,
|
||||||
|
},
|
||||||
|
"Failed to check for update ",
|
||||||
|
);
|
||||||
|
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Failed to check for update: ${response.status} ${response.body}`,
|
`Failed to check for update: ${response.status} ${response.body}`,
|
||||||
|
|||||||
Reference in New Issue
Block a user