6 Commits

Author SHA1 Message Date
3aeec4d23e Fix PDF once and for all
All checks were successful
Publish Docker Image / Publish Docker Image (push) Successful in 57s
2025-05-01 20:46:50 -04:00
debfcf7226 Attempt 2
All checks were successful
Publish Development Docker Image / Publish Development Docker Image (push) Successful in 8s
Publish Docker Image / Publish Docker Image (push) Successful in 27s
2025-04-07 17:33:54 -04:00
15bbc27238 Attempt to propegate app version properly
All checks were successful
Publish Development Docker Image / Publish Development Docker Image (push) Successful in 8s
2025-04-07 17:17:05 -04:00
16bd44c599 Fix app version?
All checks were successful
Publish Development Docker Image / Publish Development Docker Image (push) Successful in 9s
2025-04-07 17:06:40 -04:00
d13b16c032 Update TUS backend
All checks were successful
Publish Development Docker Image / Publish Development Docker Image (push) Successful in 1m34s
2025-04-07 16:54:17 -04:00
d144f7385b Quietly embed version to homepage 2025-04-07 15:08:07 -04:00
13 changed files with 478 additions and 81 deletions

30
.gitea/workflows/ci-dev.yml Executable file
View File

@ -0,0 +1,30 @@
version: "1"
name: Publish Development Docker Image
on:
push:
tags:
- "v[0-9]+\\.[0-9]+\\.[0-9]+-dev"
jobs:
build:
name: Publish Development Docker Image
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to Registry
run: echo "${{ secrets.ACCESS_TOKEN }}" | docker login git.altaiar.dev -u "${{ secrets.USERNAME }}" --password-stdin
- name: Build & Tag Image
run: |
docker build --build-arg APP_VERSION=${{ gitea.ref_name }} -t git.altaiar.dev/${{ gitea.repository }}:${{ gitea.ref_name }} .
docker tag git.altaiar.dev/${{ gitea.repository }}:${{ gitea.ref_name }} git.altaiar.dev/${{ gitea.repository }}:dev
- name: Push Images
run: |
docker push git.altaiar.dev/${{ gitea.repository }}:${{ gitea.ref_name }}
docker push git.altaiar.dev/${{ gitea.repository }}:dev

View File

@ -1,10 +1,9 @@
version: "1"
name: Publish Docker Image
on:
push:
tags:
- "*"
- "v[0-9]+\\.[0-9]+\\.[0-9]+"
jobs:
build:
@ -22,7 +21,7 @@ jobs:
- name: Build & Tag Image
run: |
docker build -t git.altaiar.dev/${{ gitea.repository }}:${{ gitea.ref_name }} .
docker build --build-arg APP_VERSION=${{ gitea.ref_name }} -t git.altaiar.dev/${{ gitea.repository }}:${{ gitea.ref_name }} .
docker tag git.altaiar.dev/${{ gitea.repository }}:${{ gitea.ref_name }} git.altaiar.dev/${{ gitea.repository }}:latest
- name: Push Images

View File

@ -1,6 +1,6 @@
# base
# ----
FROM node:20-bookworm-slim as base
FROM node:20-bookworm-slim AS base
RUN corepack enable
@ -32,7 +32,7 @@ COPY --chown=node:node graphql.config.js .
# api build
# ---------
FROM base as api_build
FROM base AS api_build
# If your api side build relies on build-time environment variables,
# specify them here as ARGs. (But don't put secrets in your Dockerfile!)
@ -51,13 +51,14 @@ ARG EMAIL_FROM
ARG EMAIL_TO
ARG FIRST_NAME
ARG LAST_NAME
ARG APP_VERSION
COPY --chown=node:node api api
RUN yarn rw build api
# web prerender build
# -------------------
FROM api_build as web_build_with_prerender
FROM api_build AS web_build_with_prerender
ARG FIRST_NAME
ARG LAST_NAME
@ -67,13 +68,16 @@ ARG CITY
ARG DEFAULT_THEME
ARG API_ADDRESS_PROD
ARG API_ADDRESS_DEV
ARG APP_VERSION
ENV APP_VERSION=$APP_VERSION
COPY --chown=node:node web web
RUN yarn rw build web
# web build
# ---------
FROM base as web_build
FROM base AS web_build
ARG FIRST_NAME
ARG LAST_NAME
@ -83,13 +87,16 @@ ARG CITY
ARG DEFAULT_THEME
ARG API_ADDRESS_PROD
ARG API_ADDRESS_DEV
ARG APP_VERSION
ENV APP_VERSION=$APP_VERSION
COPY --chown=node:node web web
RUN yarn rw build web --no-prerender
# api serve
# ---------
FROM node:20-bookworm-slim as api_serve
FROM node:20-bookworm-slim AS api_serve
RUN corepack enable
@ -119,7 +126,10 @@ COPY --chown=node:node --from=api_build /home/node/app/api/dist /home/node/app/a
COPY --chown=node:node --from=api_build /home/node/app/api/db /home/node/app/api/db
COPY --chown=node:node --from=api_build /home/node/app/node_modules/.prisma /home/node/app/node_modules/.prisma
ARG APP_VERSION
ENV NODE_ENV=production
ENV APP_VERSION=$APP_VERSION
# default api serve command
# ---------
@ -132,7 +142,7 @@ CMD [ "./api/dist/server.js" ]
# web serve
# ---------
FROM node:20-bookworm-slim as web_serve
FROM node:20-bookworm-slim AS web_serve
RUN corepack enable
@ -156,6 +166,9 @@ COPY --chown=node:node graphql.config.js .
COPY --chown=node:node --from=web_build /home/node/app/web/dist /home/node/app/web/dist
ARG APP_VERSION
ENV APP_VERSION=$APP_VERSION
ENV NODE_ENV=production \
API_PROXY_TARGET=http://api:8911
@ -164,7 +177,7 @@ CMD "node_modules/.bin/rw-web-server" "--api-proxy-target" "$API_PROXY_TARGET"
# console
# -------
FROM base as console
FROM base AS console
# To add more packages:
#

View File

@ -9,8 +9,8 @@
"@redwoodjs/api-server": "8.4.0",
"@redwoodjs/auth-dbauth-api": "8.4.0",
"@redwoodjs/graphql-server": "8.4.0",
"@tus/file-store": "^1.4.0",
"@tus/server": "^1.7.0",
"@tus/file-store": "^2.0.0",
"@tus/server": "^2.0.0",
"countries-list": "^3.1.1",
"graphql-scalars": "^1.23.0",
"nodemailer": "^6.9.14"

View File

@ -19,7 +19,7 @@ interface User {
resetTokenExpiresAt: Date | null
}
export const handleTusUpload = (
export const handleTusUpload = async (
req: FastifyRequest,
res: FastifyReply,
tusHandler: Server,
@ -28,7 +28,7 @@ export const handleTusUpload = (
if (isProduction) {
if (req.method === 'OPTIONS') handleOptionsRequest(res)
else if (isPublicEndpoint && req.method === 'GET')
tusHandler.handle(req.raw, res.raw)
await tusHandler.handle(req.raw, res.raw)
else if (['GET', 'POST', 'HEAD', 'PATCH'].includes(req.method)) {
if (req.headers.cookie) handleAuthenticatedRequest(req, res, tusHandler)
else {
@ -41,7 +41,7 @@ export const handleTusUpload = (
}
} else {
setCorsHeaders(res)
tusHandler.handle(req.raw, res.raw)
await tusHandler.handle(req.raw, res.raw)
}
}

View File

@ -1,8 +1,6 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import Cors from '@fastify/cors'
import RateLimit from '@fastify/rate-limit'
import { FileStore } from '@tus/file-store'
import { Server } from '@tus/server'
import { isProduction } from '@redwoodjs/api/logger'
import { createServer } from '@redwoodjs/api-server'
@ -17,6 +15,8 @@ enum Theme {
;(async () => {
const { countries } = await import('countries-list')
const { FileStore } = await import('@tus/file-store')
const { Server } = await import('@tus/server')
if (!Object.keys(countries).includes(process.env.COUNTRY))
throw new Error(
@ -28,6 +28,8 @@ enum Theme {
'Invalid DEFAULT_THEME environment variable, please select either light or dark'
)
logger.info(`Portfolio ${process.env.APP_VERSION}`)
const server = await createServer({
logger,
configureApiServer: async (server) => {
@ -52,7 +54,10 @@ enum Theme {
datastore: new FileStore({
directory: `./files_${isProduction ? 'prod' : 'dev'}`,
}),
onResponseError: (_req, res, _err) => logger.error(res),
onResponseError(_, err) {
logger.error(err)
return { status_code: 500, body: 'Internal Server Error' }
},
})
server.addContentTypeParser(

View File

@ -4,8 +4,8 @@
"allowJs": true,
"esModuleInterop": true,
"target": "ES2023",
"module": "Node16",
"moduleResolution": "Node16",
"module": "NodeNext",
"moduleResolution": "nodenext",
"skipLibCheck": false,
"rootDirs": [
"./src",

View File

@ -9,7 +9,7 @@
title = "${FIRST_NAME} ${LAST_NAME}"
port = 8910
apiUrl = "/api"
includeEnvironmentVariables = ["FIRST_NAME", "LAST_NAME", "COUNTRY", "STATE", "CITY", "DEFAULT_THEME", "API_ADDRESS_PROD", "API_ADDRESS_DEV"]
includeEnvironmentVariables = ["FIRST_NAME", "LAST_NAME", "COUNTRY", "STATE", "CITY", "DEFAULT_THEME", "API_ADDRESS_PROD", "API_ADDRESS_DEV", "APP_VERSION"]
[generate]
tests = false
stories = false

View File

@ -41,7 +41,8 @@
"react": "18.3.1",
"react-colorful": "^5.6.1",
"react-dom": "18.3.1",
"react-html-parser": "^2.0.2"
"react-html-parser": "^2.0.2",
"react-pdf": "^9.2.1"
},
"devDependencies": {
"@redwoodjs/vite": "8.4.0",

View File

@ -1,7 +1,14 @@
import { mdiOpenInNew } from '@mdi/js';
import Icon from '@mdi/react';
import { useState } from 'react'
import { Document, Page as PdfPage, pdfjs } from "react-pdf";
import "react-pdf/dist/Page/AnnotationLayer.css";
import "react-pdf/dist/Page/TextLayer.css";
import { mdiAlertOutline } from '@mdi/js'
import Icon from '@mdi/react'
pdfjs.GlobalWorkerOptions.workerSrc = new URL(
"pdfjs-dist/build/pdf.worker.min.mjs",
import.meta.url
).toString();
interface PDFProps {
url: string
@ -9,33 +16,33 @@ interface PDFProps {
}
const PDF = ({ url, form = false }: PDFProps) => {
const [error, setError] = useState<boolean>(false)
const [numPages, setNumPages] = useState<number>(0);
function onLoadSuccess({ numPages }: { numPages: number }) {
setNumPages(numPages);
}
return error ? (
<div role="alert" className="alert alert-warning">
<Icon path={mdiAlertOutline} className="size-7" />
<span>
Could not load PDF, this is common in in-app browsers, try opening this
page in a regular browser
</span>
</div>
) : (
<iframe
src={url}
title="PDF"
content="application/pdf"
return (
<div
className="overflow-y-auto flex justify-center"
style={{
width: 'calc(100vw - 1rem)',
height: `calc(100vh - ${form ? '8.5rem' : '6rem'})`,
}}
allowFullScreen
className="rounded-xl"
onError={() => setError(true)}
onLoad={() => setError(false)}
sandbox="allow-same-origin allow-scripts allow-forms allow-popups"
referrerPolicy="no-referrer-when-downgrade"
loading="lazy"
/>
>
<a
href={url}
target="_blank"
rel="noopener noreferrer"
className="fixed top-20 left-0 z-10 m-2 p-2 rounded-xl btn btn-square btn-ghost shadow-lg"
>
<Icon path={mdiOpenInNew} size={1} className="text-gray-600" />
</a>
<Document file={url} onLoadSuccess={onLoadSuccess}>
{Array.from({ length: numPages }, (_, i) => (
<PdfPage key={i} pageNumber={i + 1} width={800} />
))}
</Document>
</div>
)
}

View File

@ -53,7 +53,7 @@ const Uploader = ({
onBeforeUpload: (files) => {
for (const [key, file] of Object.entries(files)) {
instance.setFileMeta(key, {
name: new Date().getTime().toString(),
name: `${new Date().getTime().toString()}.${file.extension}`,
type: file.type,
contentType: file.type,
})
@ -68,7 +68,7 @@ const Uploader = ({
removeFingerprintOnSuccess: true,
})
.use(Compressor, {
mimeType: 'image/webp',
mimeType: type === 'image' ? 'image/webp' : 'application/pdf',
})
if (type === 'image')

View File

@ -65,14 +65,30 @@ const HomePage = () => (
</div>
</div>
<div className="fixed bottom-2 left-2 z-10">
<a
href="https://git.altaiar.dev/ahmed/portfolio"
target="_blank"
rel="noreferrer"
className="btn btn-square"
>
{getLogoComponent('gitea')}
</a>
{process.env.APP_VERSION !== undefined ? (
<div
className="tooltip tooltip-right"
data-tip={process.env.APP_VERSION}
>
<a
href={`https://git.altaiar.dev/ahmed/portfolio/releases/tag/${process.env.APP_VERSION}`}
target="_blank"
rel="noreferrer"
className="btn btn-square"
>
{getLogoComponent('github')}
</a>
</div>
) : (
<a
href={'https://git.altaiar.dev/ahmed/portfolio'}
target="_blank"
rel="noreferrer"
className="btn btn-square"
>
{getLogoComponent('gitea')}
</a>
)}
</div>
</>
)

376
yarn.lock
View File

@ -3625,6 +3625,13 @@ __metadata:
languageName: node
linkType: hard
"@ioredis/commands@npm:^1.1.1":
version: 1.2.0
resolution: "@ioredis/commands@npm:1.2.0"
checksum: 10c0/a5d3c29dd84d8a28b7c67a441ac1715cbd7337a7b88649c0f17c345d89aa218578d2b360760017c48149ef8a70f44b051af9ac0921a0622c2b479614c4f65b36
languageName: node
linkType: hard
"@isaacs/cliui@npm:^8.0.2":
version: 8.0.2
resolution: "@isaacs/cliui@npm:8.0.2"
@ -4549,7 +4556,7 @@ __metadata:
languageName: node
linkType: hard
"@redis/client@npm:^1.5.13":
"@redis/client@npm:^1.6.0":
version: 1.6.0
resolution: "@redis/client@npm:1.6.0"
dependencies:
@ -6069,39 +6076,43 @@ __metadata:
languageName: node
linkType: hard
"@tus/file-store@npm:^1.4.0":
version: 1.4.0
resolution: "@tus/file-store@npm:1.4.0"
"@tus/file-store@npm:^2.0.0":
version: 2.0.0
resolution: "@tus/file-store@npm:2.0.0"
dependencies:
"@redis/client": "npm:^1.5.13"
"@tus/utils": "npm:^0.3.0"
"@redis/client": "npm:^1.6.0"
"@tus/utils": "npm:^0.6.0"
debug: "npm:^4.3.4"
dependenciesMeta:
"@redis/client":
optional: true
checksum: 10c0/28ca244dc9acd9ff62fd58c7b4af7c91b71eac12b357899ccc65fb7f583b93832674d7c3716da92293e54ab9d5227585d7d844be3bc2e4aa4015e1af818a6ec6
checksum: 10c0/428373995bf84b3beda59da2ac77434cd4d3ff6f508ad3cf7226e7acd54c2625388d967fae511cf62cc74f93110c59a5ae3918003d0d80d327ae0429661dc8fa
languageName: node
linkType: hard
"@tus/server@npm:^1.7.0":
version: 1.7.0
resolution: "@tus/server@npm:1.7.0"
"@tus/server@npm:^2.0.0":
version: 2.0.0
resolution: "@tus/server@npm:2.0.0"
dependencies:
"@redis/client": "npm:^1.5.13"
"@tus/utils": "npm:^0.3.0"
"@redis/client": "npm:^1.6.0"
"@tus/utils": "npm:^0.6.0"
debug: "npm:^4.3.4"
ioredis: "npm:^5.4.1"
lodash.throttle: "npm:^4.1.1"
set-cookie-parser: "npm:^2.7.1"
dependenciesMeta:
"@redis/client":
optional: true
checksum: 10c0/64c06dbd4af16a6ac380acd702a125b69cf04a33e38485ef0e92e128a2f814b28202d83bcf89de180181ba45b30741675464f74688dc7e3c3f38462662ea8f23
ioredis:
optional: true
checksum: 10c0/9263cb6a1a5cf11d3aa2b7ab911417c740b24ddd9dec118a7a1c776d9ca4eb3e25d5bd142853559c86ff327d0d539f6484511d2c366f37e8ed8f3e7c876f8a8e
languageName: node
linkType: hard
"@tus/utils@npm:^0.3.0":
version: 0.3.0
resolution: "@tus/utils@npm:0.3.0"
checksum: 10c0/65b357c80022018067b53640b984e79531e5335d04467eff24f256ae175bbf7055293e169e1589fd2064221fc1ffcc8032080c31f9b56655d1a17f4f3698b43a
"@tus/utils@npm:^0.6.0":
version: 0.6.0
resolution: "@tus/utils@npm:0.6.0"
checksum: 10c0/d4e16864679539fe39234935869f3f75ba84ef05b6879e48d4bc0227f2db33ba5d2d3560e123bb6c4c04e897318e2435a95db6b1ac7b1ebccb7cb8efccc00661
languageName: node
linkType: hard
@ -7333,8 +7344,8 @@ __metadata:
"@redwoodjs/api-server": "npm:8.4.0"
"@redwoodjs/auth-dbauth-api": "npm:8.4.0"
"@redwoodjs/graphql-server": "npm:8.4.0"
"@tus/file-store": "npm:^1.4.0"
"@tus/server": "npm:^1.7.0"
"@tus/file-store": "npm:^2.0.0"
"@tus/server": "npm:^2.0.0"
"@types/nodemailer": "npm:^6.4.15"
countries-list: "npm:^3.1.1"
graphql-scalars: "npm:^1.23.0"
@ -7976,7 +7987,7 @@ __metadata:
languageName: node
linkType: hard
"bl@npm:^4.1.0":
"bl@npm:^4.0.3, bl@npm:^4.1.0":
version: 4.1.0
resolution: "bl@npm:4.1.0"
dependencies:
@ -8377,6 +8388,17 @@ __metadata:
languageName: node
linkType: hard
"canvas@npm:^3.0.0-rc2":
version: 3.1.0
resolution: "canvas@npm:3.1.0"
dependencies:
node-addon-api: "npm:^7.0.0"
node-gyp: "npm:latest"
prebuild-install: "npm:^7.1.1"
checksum: 10c0/28da5184c1d7e97049ba6a24f10690b9ed4b303bbd25517d95c892fa3a6331417791657a3a7467068e40af0dda2dcc9120d062f7426a3d796131e69a30e3cbf1
languageName: node
linkType: hard
"capital-case@npm:^1.0.4":
version: 1.0.4
resolution: "capital-case@npm:1.0.4"
@ -8576,6 +8598,13 @@ __metadata:
languageName: node
linkType: hard
"chownr@npm:^1.1.1":
version: 1.1.4
resolution: "chownr@npm:1.1.4"
checksum: 10c0/ed57952a84cc0c802af900cf7136de643d3aba2eecb59d29344bc2f3f9bf703a301b9d84cdc71f82c3ffc9ccde831b0d92f5b45f91727d6c9da62f23aef9d9db
languageName: node
linkType: hard
"chownr@npm:^2.0.0":
version: 2.0.0
resolution: "chownr@npm:2.0.0"
@ -8736,7 +8765,14 @@ __metadata:
languageName: node
linkType: hard
"cluster-key-slot@npm:1.1.2":
"clsx@npm:^2.0.0":
version: 2.1.1
resolution: "clsx@npm:2.1.1"
checksum: 10c0/c4c8eb865f8c82baab07e71bfa8897c73454881c4f99d6bc81585aecd7c441746c1399d08363dc096c550cceaf97bd4ce1e8854e1771e9998d9f94c4fe075839
languageName: node
linkType: hard
"cluster-key-slot@npm:1.1.2, cluster-key-slot@npm:^1.1.0":
version: 1.1.2
resolution: "cluster-key-slot@npm:1.1.2"
checksum: 10c0/d7d39ca28a8786e9e801eeb8c770e3c3236a566625d7299a47bb71113fb2298ce1039596acb82590e598c52dbc9b1f088c8f587803e697cb58e1867a95ff94d3
@ -9489,6 +9525,15 @@ __metadata:
languageName: node
linkType: hard
"decompress-response@npm:^6.0.0":
version: 6.0.0
resolution: "decompress-response@npm:6.0.0"
dependencies:
mimic-response: "npm:^3.1.0"
checksum: 10c0/bd89d23141b96d80577e70c54fb226b2f40e74a6817652b80a116d7befb8758261ad073a8895648a29cc0a5947021ab66705cb542fa9c143c82022b27c5b175e
languageName: node
linkType: hard
"dedent@npm:^1.0.0":
version: 1.5.3
resolution: "dedent@npm:1.5.3"
@ -9593,6 +9638,13 @@ __metadata:
languageName: node
linkType: hard
"denque@npm:^2.1.0":
version: 2.1.0
resolution: "denque@npm:2.1.0"
checksum: 10c0/f9ef81aa0af9c6c614a727cb3bd13c5d7db2af1abf9e6352045b86e85873e629690f6222f4edd49d10e4ccf8f078bbeec0794fafaf61b659c0589d0c511ec363
languageName: node
linkType: hard
"depd@npm:2.0.0":
version: 2.0.0
resolution: "depd@npm:2.0.0"
@ -9647,6 +9699,13 @@ __metadata:
languageName: node
linkType: hard
"detect-libc@npm:^2.0.0":
version: 2.0.4
resolution: "detect-libc@npm:2.0.4"
checksum: 10c0/c15541f836eba4b1f521e4eecc28eefefdbc10a94d3b8cb4c507689f332cc111babb95deda66f2de050b22122113189986d5190be97d51b5a2b23b938415e67c
languageName: node
linkType: hard
"detect-newline@npm:^3.0.0":
version: 3.1.0
resolution: "detect-newline@npm:3.1.0"
@ -9986,7 +10045,7 @@ __metadata:
languageName: node
linkType: hard
"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.4":
"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1, end-of-stream@npm:^1.4.4":
version: 1.4.4
resolution: "end-of-stream@npm:1.4.4"
dependencies:
@ -10847,6 +10906,13 @@ __metadata:
languageName: node
linkType: hard
"expand-template@npm:^2.0.3":
version: 2.0.3
resolution: "expand-template@npm:2.0.3"
checksum: 10c0/1c9e7afe9acadf9d373301d27f6a47b34e89b3391b1ef38b7471d381812537ef2457e620ae7f819d2642ce9c43b189b3583813ec395e2938319abe356a9b2f51
languageName: node
linkType: hard
"expect@npm:^29.0.0, expect@npm:^29.7.0":
version: 29.7.0
resolution: "expect@npm:29.7.0"
@ -11337,6 +11403,13 @@ __metadata:
languageName: node
linkType: hard
"fs-constants@npm:^1.0.0":
version: 1.0.0
resolution: "fs-constants@npm:1.0.0"
checksum: 10c0/a0cde99085f0872f4d244e83e03a46aa387b74f5a5af750896c6b05e9077fac00e9932fdf5aef84f2f16634cd473c63037d7a512576da7d5c2b9163d1909f3a8
languageName: node
linkType: hard
"fs-extra@npm:11.1.1":
version: 11.1.1
resolution: "fs-extra@npm:11.1.1"
@ -11530,6 +11603,13 @@ __metadata:
languageName: node
linkType: hard
"github-from-package@npm:0.0.0":
version: 0.0.0
resolution: "github-from-package@npm:0.0.0"
checksum: 10c0/737ee3f52d0a27e26332cde85b533c21fcdc0b09fb716c3f8e522cfaa9c600d4a631dec9fcde179ec9d47cca89017b7848ed4d6ae6b6b78f936c06825b1fcc12
languageName: node
linkType: hard
"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2":
version: 5.1.2
resolution: "glob-parent@npm:5.1.2"
@ -12283,6 +12363,23 @@ __metadata:
languageName: node
linkType: hard
"ioredis@npm:^5.4.1":
version: 5.6.0
resolution: "ioredis@npm:5.6.0"
dependencies:
"@ioredis/commands": "npm:^1.1.1"
cluster-key-slot: "npm:^1.1.0"
debug: "npm:^4.3.4"
denque: "npm:^2.1.0"
lodash.defaults: "npm:^4.2.0"
lodash.isarguments: "npm:^3.1.0"
redis-errors: "npm:^1.2.0"
redis-parser: "npm:^3.0.0"
standard-as-callback: "npm:^2.1.0"
checksum: 10c0/a885e5146640fc448706871290ef424ffa39af561f7ee3cf1590085209a509f85e99082bdaaf3cd32fa66758aea3fc2055d1109648ddca96fac4944bf2092c30
languageName: node
linkType: hard
"ip-address@npm:^9.0.5":
version: 9.0.5
resolution: "ip-address@npm:9.0.5"
@ -14028,6 +14125,13 @@ __metadata:
languageName: node
linkType: hard
"lodash.defaults@npm:^4.2.0":
version: 4.2.0
resolution: "lodash.defaults@npm:4.2.0"
checksum: 10c0/d5b77aeb702caa69b17be1358faece33a84497bcca814897383c58b28a2f8dfc381b1d9edbec239f8b425126a3bbe4916223da2a576bb0411c2cefd67df80707
languageName: node
linkType: hard
"lodash.includes@npm:^4.3.0":
version: 4.3.0
resolution: "lodash.includes@npm:4.3.0"
@ -14035,6 +14139,13 @@ __metadata:
languageName: node
linkType: hard
"lodash.isarguments@npm:^3.1.0":
version: 3.1.0
resolution: "lodash.isarguments@npm:3.1.0"
checksum: 10c0/5e8f95ba10975900a3920fb039a3f89a5a79359a1b5565e4e5b4310ed6ebe64011e31d402e34f577eca983a1fc01ff86c926e3cbe602e1ddfc858fdd353e62d8
languageName: node
linkType: hard
"lodash.isboolean@npm:^3.0.3":
version: 3.0.3
resolution: "lodash.isboolean@npm:3.0.3"
@ -14241,6 +14352,13 @@ __metadata:
languageName: node
linkType: hard
"make-cancellable-promise@npm:^1.3.1":
version: 1.3.2
resolution: "make-cancellable-promise@npm:1.3.2"
checksum: 10c0/10aa0450c743dcf20b55414c433ca45926b775b22eb6d25fa386fc499a8f3fc64c70eb575d99bdd16667d300068f51702822c293bc4e72da7ff4f82d0ea48184
languageName: node
linkType: hard
"make-dir@npm:^1.0.0":
version: 1.3.0
resolution: "make-dir@npm:1.3.0"
@ -14276,6 +14394,13 @@ __metadata:
languageName: node
linkType: hard
"make-event-props@npm:^1.6.0":
version: 1.6.2
resolution: "make-event-props@npm:1.6.2"
checksum: 10c0/ecf0b742e43a392c07e2267baca2397e750d38cc14ef3cb72ef8bfe4a8c8b0fd99a03a2eeab84a26c2b204f7c231da6af31fa26321fbfd413ded43ba1825e867
languageName: node
linkType: hard
"make-fetch-happen@npm:^13.0.0":
version: 13.0.1
resolution: "make-fetch-happen@npm:13.0.1"
@ -14378,6 +14503,18 @@ __metadata:
languageName: node
linkType: hard
"merge-refs@npm:^1.3.0":
version: 1.3.0
resolution: "merge-refs@npm:1.3.0"
peerDependencies:
"@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
"@types/react":
optional: true
checksum: 10c0/403d20d283a595565a6bef813415df509dad12a5ad157f0ae04861b3aee4a3691971ccae7079e20497d9f367a478ad60e5b63a2ca9ffb2cc3d511284b49b4bd6
languageName: node
linkType: hard
"merge-stream@npm:^2.0.0":
version: 2.0.0
resolution: "merge-stream@npm:2.0.0"
@ -14490,6 +14627,13 @@ __metadata:
languageName: node
linkType: hard
"mimic-response@npm:^3.1.0":
version: 3.1.0
resolution: "mimic-response@npm:3.1.0"
checksum: 10c0/0d6f07ce6e03e9e4445bee655202153bdb8a98d67ee8dc965ac140900d7a2688343e6b4c9a72cfc9ef2f7944dfd76eef4ab2482eb7b293a68b84916bac735362
languageName: node
linkType: hard
"min-indent@npm:^1.0.0":
version: 1.0.1
resolution: "min-indent@npm:1.0.1"
@ -14565,7 +14709,7 @@ __metadata:
languageName: node
linkType: hard
"minimist@npm:^1.2.0, minimist@npm:^1.2.6":
"minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.6":
version: 1.2.8
resolution: "minimist@npm:1.2.8"
checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6
@ -14663,6 +14807,13 @@ __metadata:
languageName: node
linkType: hard
"mkdirp-classic@npm:^0.5.2, mkdirp-classic@npm:^0.5.3":
version: 0.5.3
resolution: "mkdirp-classic@npm:0.5.3"
checksum: 10c0/95371d831d196960ddc3833cc6907e6b8f67ac5501a6582f47dfae5eb0f092e9f8ce88e0d83afcae95d6e2b61a01741ba03714eeafb6f7a6e9dcc158ac85b168
languageName: node
linkType: hard
"mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.6":
version: 0.5.6
resolution: "mkdirp@npm:0.5.6"
@ -14799,6 +14950,13 @@ __metadata:
languageName: node
linkType: hard
"napi-build-utils@npm:^2.0.0":
version: 2.0.0
resolution: "napi-build-utils@npm:2.0.0"
checksum: 10c0/5833aaeb5cc5c173da47a102efa4680a95842c13e0d9cc70428bd3ee8d96bb2172f8860d2811799b5daa5cbeda779933601492a2028a6a5351c6d0fcf6de83db
languageName: node
linkType: hard
"natural-compare@npm:^1.4.0":
version: 1.4.0
resolution: "natural-compare@npm:1.4.0"
@ -14830,6 +14988,15 @@ __metadata:
languageName: node
linkType: hard
"node-abi@npm:^3.3.0":
version: 3.75.0
resolution: "node-abi@npm:3.75.0"
dependencies:
semver: "npm:^7.3.5"
checksum: 10c0/c43a2409407df3737848fd96202b0a49e15039994aecce963969e9ef7342a8fc544aba94e0bfd8155fb9de5f5fe9a4b6ccad8bf509e7c46caf096fc4491d63f2
languageName: node
linkType: hard
"node-addon-api@npm:^7.0.0":
version: 7.1.0
resolution: "node-addon-api@npm:7.1.0"
@ -15575,6 +15742,13 @@ __metadata:
languageName: node
linkType: hard
"path2d@npm:^0.2.1":
version: 0.2.2
resolution: "path2d@npm:0.2.2"
checksum: 10c0/1bb76c7f275d07f1bc7ca12171d828e91bf8a12596f0765a52e9d4d47fe1a428455dc1dd4c9002924a9bc554f6ac25e09a6c22eaecf32e5e33fba2985b5168f8
languageName: node
linkType: hard
"pbkdf2@npm:^3.0.3, pbkdf2@npm:^3.1.2":
version: 3.1.2
resolution: "pbkdf2@npm:3.1.2"
@ -15588,6 +15762,21 @@ __metadata:
languageName: node
linkType: hard
"pdfjs-dist@npm:4.8.69":
version: 4.8.69
resolution: "pdfjs-dist@npm:4.8.69"
dependencies:
canvas: "npm:^3.0.0-rc2"
path2d: "npm:^0.2.1"
dependenciesMeta:
canvas:
optional: true
path2d:
optional: true
checksum: 10c0/dc297f2a36aa36834a2892cb78c3cafc7ac01753a2e7c4316a1f6e8c1d337a52a3bfbf7fdff7aaba615893b53f2d06a0efc2176525592b4d7b51021279c101be
languageName: node
linkType: hard
"picocolors@npm:^1, picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.0":
version: 1.1.0
resolution: "picocolors@npm:1.1.0"
@ -15847,6 +16036,28 @@ __metadata:
languageName: node
linkType: hard
"prebuild-install@npm:^7.1.1":
version: 7.1.3
resolution: "prebuild-install@npm:7.1.3"
dependencies:
detect-libc: "npm:^2.0.0"
expand-template: "npm:^2.0.3"
github-from-package: "npm:0.0.0"
minimist: "npm:^1.2.3"
mkdirp-classic: "npm:^0.5.3"
napi-build-utils: "npm:^2.0.0"
node-abi: "npm:^3.3.0"
pump: "npm:^3.0.0"
rc: "npm:^1.2.7"
simple-get: "npm:^4.0.0"
tar-fs: "npm:^2.0.0"
tunnel-agent: "npm:^0.6.0"
bin:
prebuild-install: bin.js
checksum: 10c0/25919a42b52734606a4036ab492d37cfe8b601273d8dfb1fa3c84e141a0a475e7bad3ab848c741d2f810cef892fcf6059b8c7fe5b29f98d30e0c29ad009bedff
languageName: node
linkType: hard
"prelude-ls@npm:^1.2.1":
version: 1.2.1
resolution: "prelude-ls@npm:1.2.1"
@ -16466,7 +16677,7 @@ __metadata:
languageName: node
linkType: hard
"rc@npm:1.2.8, rc@npm:^1.2.8":
"rc@npm:1.2.8, rc@npm:^1.2.7, rc@npm:^1.2.8":
version: 1.2.8
resolution: "rc@npm:1.2.8"
dependencies:
@ -16575,6 +16786,29 @@ __metadata:
languageName: node
linkType: hard
"react-pdf@npm:^9.2.1":
version: 9.2.1
resolution: "react-pdf@npm:9.2.1"
dependencies:
clsx: "npm:^2.0.0"
dequal: "npm:^2.0.3"
make-cancellable-promise: "npm:^1.3.1"
make-event-props: "npm:^1.6.0"
merge-refs: "npm:^1.3.0"
pdfjs-dist: "npm:4.8.69"
tiny-invariant: "npm:^1.0.0"
warning: "npm:^4.0.0"
peerDependencies:
"@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
"@types/react":
optional: true
checksum: 10c0/69b5456b3941ea08f03319a94b155db782232dee4b3e03513c4a4c10cc3d81d129fc3284136990b51d5dcf766192abc64d71e1d258ca7e0eb4e6592343fea6a4
languageName: node
linkType: hard
"react-refresh@npm:0.14.0":
version: 0.14.0
resolution: "react-refresh@npm:0.14.0"
@ -16708,6 +16942,22 @@ __metadata:
languageName: node
linkType: hard
"redis-errors@npm:^1.0.0, redis-errors@npm:^1.2.0":
version: 1.2.0
resolution: "redis-errors@npm:1.2.0"
checksum: 10c0/5b316736e9f532d91a35bff631335137a4f974927bb2fb42bf8c2f18879173a211787db8ac4c3fde8f75ed6233eb0888e55d52510b5620e30d69d7d719c8b8a7
languageName: node
linkType: hard
"redis-parser@npm:^3.0.0":
version: 3.0.0
resolution: "redis-parser@npm:3.0.0"
dependencies:
redis-errors: "npm:^1.0.0"
checksum: 10c0/ee16ac4c7b2a60b1f42a2cdaee22b005bd4453eb2d0588b8a4939718997ae269da717434da5d570fe0b05030466eeb3f902a58cf2e8e1ca058bf6c9c596f632f
languageName: node
linkType: hard
"reflect.getprototypeof@npm:^1.0.4":
version: 1.0.6
resolution: "reflect.getprototypeof@npm:1.0.6"
@ -17386,6 +17636,13 @@ __metadata:
languageName: node
linkType: hard
"set-cookie-parser@npm:^2.7.1":
version: 2.7.1
resolution: "set-cookie-parser@npm:2.7.1"
checksum: 10c0/060c198c4c92547ac15988256f445eae523f57f2ceefeccf52d30d75dedf6bff22b9c26f756bd44e8e560d44ff4ab2130b178bd2e52ef5571bf7be3bd7632d9a
languageName: node
linkType: hard
"set-function-length@npm:^1.2.1":
version: 1.2.2
resolution: "set-function-length@npm:1.2.2"
@ -17524,6 +17781,24 @@ __metadata:
languageName: node
linkType: hard
"simple-concat@npm:^1.0.0":
version: 1.0.1
resolution: "simple-concat@npm:1.0.1"
checksum: 10c0/62f7508e674414008910b5397c1811941d457dfa0db4fd5aa7fa0409eb02c3609608dfcd7508cace75b3a0bf67a2a77990711e32cd213d2c76f4fd12ee86d776
languageName: node
linkType: hard
"simple-get@npm:^4.0.0":
version: 4.0.1
resolution: "simple-get@npm:4.0.1"
dependencies:
decompress-response: "npm:^6.0.0"
once: "npm:^1.3.1"
simple-concat: "npm:^1.0.0"
checksum: 10c0/b0649a581dbca741babb960423248899203165769747142033479a7dc5e77d7b0fced0253c731cd57cf21e31e4d77c9157c3069f4448d558ebc96cf9e1eebcf0
languageName: node
linkType: hard
"simple-update-notifier@npm:^2.0.0":
version: 2.0.0
resolution: "simple-update-notifier@npm:2.0.0"
@ -17753,6 +18028,13 @@ __metadata:
languageName: node
linkType: hard
"standard-as-callback@npm:^2.1.0":
version: 2.1.0
resolution: "standard-as-callback@npm:2.1.0"
checksum: 10c0/012677236e3d3fdc5689d29e64ea8a599331c4babe86956bf92fc5e127d53f85411c5536ee0079c52c43beb0026b5ce7aa1d834dd35dd026e82a15d1bcaead1f
languageName: node
linkType: hard
"statuses@npm:2.0.1":
version: 2.0.1
resolution: "statuses@npm:2.0.1"
@ -18177,6 +18459,31 @@ __metadata:
languageName: node
linkType: hard
"tar-fs@npm:^2.0.0":
version: 2.1.2
resolution: "tar-fs@npm:2.1.2"
dependencies:
chownr: "npm:^1.1.1"
mkdirp-classic: "npm:^0.5.2"
pump: "npm:^3.0.0"
tar-stream: "npm:^2.1.4"
checksum: 10c0/9c704bd4a53be7565caf34ed001d1428532457fe3546d8fc1233f0f0882c3d2403f8602e8046e0b0adeb31fe95336572a69fb28851a391523126b697537670fc
languageName: node
linkType: hard
"tar-stream@npm:^2.1.4":
version: 2.2.0
resolution: "tar-stream@npm:2.2.0"
dependencies:
bl: "npm:^4.0.3"
end-of-stream: "npm:^1.4.1"
fs-constants: "npm:^1.0.0"
inherits: "npm:^2.0.3"
readable-stream: "npm:^3.1.1"
checksum: 10c0/2f4c910b3ee7196502e1ff015a7ba321ec6ea837667220d7bcb8d0852d51cb04b87f7ae471008a6fb8f5b1a1b5078f62f3a82d30c706f20ada1238ac797e7692
languageName: node
linkType: hard
"tar-stream@npm:^3.0.0":
version: 3.1.7
resolution: "tar-stream@npm:3.1.7"
@ -18292,7 +18599,7 @@ __metadata:
languageName: node
linkType: hard
"tiny-invariant@npm:^1.3.3":
"tiny-invariant@npm:^1.0.0, tiny-invariant@npm:^1.3.3":
version: 1.3.3
resolution: "tiny-invariant@npm:1.3.3"
checksum: 10c0/65af4a07324b591a059b35269cd696aba21bef2107f29b9f5894d83cc143159a204b299553435b03874ebb5b94d019afa8b8eff241c8a4cfee95872c2e1c1c4a
@ -18567,6 +18874,15 @@ __metadata:
languageName: node
linkType: hard
"tunnel-agent@npm:^0.6.0":
version: 0.6.0
resolution: "tunnel-agent@npm:0.6.0"
dependencies:
safe-buffer: "npm:^5.0.1"
checksum: 10c0/4c7a1b813e7beae66fdbf567a65ec6d46313643753d0beefb3c7973d66fcec3a1e7f39759f0a0b4465883499c6dc8b0750ab8b287399af2e583823e40410a17a
languageName: node
linkType: hard
"tus-js-client@npm:^4.1.0":
version: 4.1.0
resolution: "tus-js-client@npm:4.1.0"
@ -19162,6 +19478,15 @@ __metadata:
languageName: node
linkType: hard
"warning@npm:^4.0.0":
version: 4.0.3
resolution: "warning@npm:4.0.3"
dependencies:
loose-envify: "npm:^1.0.0"
checksum: 10c0/aebab445129f3e104c271f1637fa38e55eb25f968593e3825bd2f7a12bd58dc3738bb70dc8ec85826621d80b4acfed5a29ebc9da17397c6125864d72301b937e
languageName: node
linkType: hard
"wcwidth@npm:^1.0.1":
version: 1.0.1
resolution: "wcwidth@npm:1.0.1"
@ -19234,6 +19559,7 @@ __metadata:
react-colorful: "npm:^5.6.1"
react-dom: "npm:18.3.1"
react-html-parser: "npm:^2.0.2"
react-pdf: "npm:^9.2.1"
tailwindcss: "npm:^3.4.8"
languageName: unknown
linkType: soft