Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
何 广一
chatroom
Commits
1776bb7a
Commit
1776bb7a
authored
Aug 26, 2025
by
何 广一
Browse files
created docker image
parent
9bf2ef80
Changes
9
Show whitespace changes
Inline
Side-by-side
chat-room/.eslintrc.js
0 → 100644
View file @
1776bb7a
module
.
exports
=
{
ignorePatterns
:
[
'
src/generated/prisma/**
'
],
extends
:
[
'
next/core-web-vitals
'
],
rules
:
{},
};
\ No newline at end of file
chat-room/dockerfile
View file @
1776bb7a
...
...
@@ -3,7 +3,7 @@
FROM
node:20-alpine
AS
base
WORKDIR
/app
COPY
package.json pnpm-lock.yaml ./
RUN
npm
install
-g
pnpm
&&
pnpm
install
--frozen-lockfile
--shamefully-hoist
RUN
npm
install
-g
pnpm
&&
pnpm
install
--shamefully-hoist
# ---------- Prisma + SQLite ----------
COPY
prisma ./prisma
...
...
@@ -14,15 +14,17 @@ RUN pnpm prisma migrate deploy --schema ./prisma/schema.prisma
# ---------- 构建 ----------
COPY
. .
ENV
REDIS_URL=
RUN
pnpm build
# ---------- 运行时 ----------
FROM
node:20-alpine
AS
runner
WORKDIR
/app
RUN
apk add
--no-cache
redis
COPY
--from=base /app/.next ./.next
COPY
--from=base /app/node_modules ./node_modules
COPY
--from=base /app/package.json ./package.json
COPY
--from=base /app/.next/standalone ./
COPY
--from=base /app/.next/static ./.next/static
COPY
--from=base /app/public ./public
COPY
--from=base /app/prisma ./prisma
COPY
--from=base /app/.env.docker ./.env
...
...
chat-room/eslint.config.mjs
View file @
1776bb7a
...
...
@@ -11,6 +11,10 @@ const compat = new FlatCompat({
const
eslintConfig
=
[
...
compat
.
extends
(
"
next/core-web-vitals
"
,
"
next/typescript
"
),
{
ignores
:
[
"
src/generated/prisma/**
"
],
},
];
export
default
eslintConfig
;
chat-room/next.config.ts
View file @
1776bb7a
import
type
{
NextConfig
}
from
"
next
"
;
const
nextConfig
:
NextConfig
=
{
output
:
'
standalone
'
/* config options here */
};
...
...
chat-room/package.json
View file @
1776bb7a
...
...
@@ -10,6 +10,7 @@
"redis"
:
"start redis-server --port 6379"
},
"dependencies"
:
{
"@types/node"
:
"^20"
,
"@types/react"
:
"^19"
,
"@types/react-dom"
:
"^19"
,
"@prisma/client"
:
"6.14.0"
,
...
...
chat-room/pnpm-lock.yaml
View file @
1776bb7a
...
...
@@ -11,12 +11,15 @@ importers:
'
@prisma/client'
:
specifier
:
6.14.0
version
:
6.14.0(prisma@6.14.0(typescript@5.9.2))(typescript@5.9.2)
'
@types/node'
:
specifier
:
^20
version
:
20.19.11
'
@types/react'
:
specifier
:
^19
version
:
19.1.
9
version
:
19.1.
11
'
@types/react-dom'
:
specifier
:
^19
version
:
19.1.
7
(@types/react@19.1.
9
)
version
:
19.1.
8
(@types/react@19.1.
11
)
next
:
specifier
:
15.4.6
version
:
15.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
...
...
@@ -34,32 +37,29 @@ importers:
version
:
5.8.2
zod
:
specifier
:
^4.1.1
version
:
4.1.
1
version
:
4.1.
3
devDependencies
:
'
@eslint/eslintrc'
:
specifier
:
^3
version
:
3.3.1
'
@tailwindcss/postcss'
:
specifier
:
^4
version
:
4.1.11
'
@types/node'
:
specifier
:
^20
version
:
20.19.10
version
:
4.1.12
concurrently
:
specifier
:
^9.2.0
version
:
9.2.
0
version
:
9.2.
1
eslint
:
specifier
:
^9
version
:
9.3
3
.0(jiti@2.5.1)
version
:
9.3
4
.0(jiti@2.5.1)
eslint-config-next
:
specifier
:
15.4.6
version
:
15.4.6(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2)
version
:
15.4.6(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2)
prisma
:
specifier
:
6.14.0
version
:
6.14.0(typescript@5.9.2)
tailwindcss
:
specifier
:
^4
version
:
4.1.1
1
version
:
4.1.1
2
typescript
:
specifier
:
^5
version
:
5.9.2
...
...
@@ -70,10 +70,6 @@ packages:
resolution
:
{
integrity
:
sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==
}
engines
:
{
node
:
'
>=10'
}
'
@ampproject/remapping@2.3.0'
:
resolution
:
{
integrity
:
sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==
}
engines
:
{
node
:
'
>=6.0.0'
}
'
@emnapi/core@1.4.5'
:
resolution
:
{
integrity
:
sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==
}
...
...
@@ -109,8 +105,8 @@ packages:
resolution
:
{
integrity
:
sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==
}
engines
:
{
node
:
^18.18.0 || ^20.9.0 || >=21.1.0
}
'
@eslint/js@9.3
3
.0'
:
resolution
:
{
integrity
:
sha512-
5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A
==
}
'
@eslint/js@9.3
4
.0'
:
resolution
:
{
integrity
:
sha512-
EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw
==
}
engines
:
{
node
:
^18.18.0 || ^20.9.0 || >=21.1.0
}
'
@eslint/object-schema@2.1.6'
:
...
...
@@ -267,18 +263,21 @@ packages:
resolution
:
{
integrity
:
sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==
}
engines
:
{
node
:
'
>=18.0.0'
}
'
@jridgewell/gen-mapping@0.3.12'
:
resolution
:
{
integrity
:
sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==
}
'
@jridgewell/gen-mapping@0.3.13'
:
resolution
:
{
integrity
:
sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==
}
'
@jridgewell/remapping@2.3.5'
:
resolution
:
{
integrity
:
sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==
}
'
@jridgewell/resolve-uri@3.1.2'
:
resolution
:
{
integrity
:
sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
}
engines
:
{
node
:
'
>=6.0.0'
}
'
@jridgewell/sourcemap-codec@1.5.
4
'
:
resolution
:
{
integrity
:
sha512-
VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw
==
}
'
@jridgewell/sourcemap-codec@1.5.
5
'
:
resolution
:
{
integrity
:
sha512-
cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og
==
}
'
@jridgewell/trace-mapping@0.3.
29
'
:
resolution
:
{
integrity
:
sha512-
uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmY
Q==
}
'
@jridgewell/trace-mapping@0.3.
30
'
:
resolution
:
{
integrity
:
sha512-
GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2
Q==
}
'
@napi-rs/wasm-runtime@0.2.12'
:
resolution
:
{
integrity
:
sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==
}
...
...
@@ -423,65 +422,65 @@ packages:
'
@swc/helpers@0.5.15'
:
resolution
:
{
integrity
:
sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==
}
'
@tailwindcss/node@4.1.1
1
'
:
resolution
:
{
integrity
:
sha512-
yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6
Q==
}
'
@tailwindcss/node@4.1.1
2
'
:
resolution
:
{
integrity
:
sha512-
3hm9brwvQkZFe++SBt+oLjo4OLDtkvlE8q2WalaD/7QWaeM7KEJbAiY/LJZUaCs7Xa8aUu4xy3uoyX4q54UVd
Q==
}
'
@tailwindcss/oxide-android-arm64@4.1.1
1
'
:
resolution
:
{
integrity
:
sha512-
3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg
==
}
'
@tailwindcss/oxide-android-arm64@4.1.1
2
'
:
resolution
:
{
integrity
:
sha512-
oNY5pq+1gc4T6QVTsZKwZaGpBb2N1H1fsc1GD4o7yinFySqIuRZ2E4NvGasWc6PhYJwGK2+5YT1f9Tp80zUQZQ
==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
arm64
]
os
:
[
android
]
'
@tailwindcss/oxide-darwin-arm64@4.1.1
1
'
:
resolution
:
{
integrity
:
sha512-
ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ
==
}
'
@tailwindcss/oxide-darwin-arm64@4.1.1
2
'
:
resolution
:
{
integrity
:
sha512-
cq1qmq2HEtDV9HvZlTtrj671mCdGB93bVY6J29mwCyaMYCP/JaUBXxrQQQm7Qn33AXXASPUb2HFZlWiiHWFytw
==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
arm64
]
os
:
[
darwin
]
'
@tailwindcss/oxide-darwin-x64@4.1.1
1
'
:
resolution
:
{
integrity
:
sha512-
EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw
==
}
'
@tailwindcss/oxide-darwin-x64@4.1.1
2
'
:
resolution
:
{
integrity
:
sha512-
6UCsIeFUcBfpangqlXay9Ffty9XhFH1QuUFn0WV83W8lGdX8cD5/+2ONLluALJD5+yJ7k8mVtwy3zMZmzEfbLg
==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
x64
]
os
:
[
darwin
]
'
@tailwindcss/oxide-freebsd-x64@4.1.1
1
'
:
resolution
:
{
integrity
:
sha512-
xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA
==
}
'
@tailwindcss/oxide-freebsd-x64@4.1.1
2
'
:
resolution
:
{
integrity
:
sha512-
JOH/f7j6+nYXIrHobRYCtoArJdMJh5zy5lr0FV0Qu47MID/vqJAY3r/OElPzx1C/wdT1uS7cPq+xdYYelny1ww
==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
x64
]
os
:
[
freebsd
]
'
@tailwindcss/oxide-linux-arm-gnueabihf@4.1.1
1
'
:
resolution
:
{
integrity
:
sha512-
ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg
==
}
'
@tailwindcss/oxide-linux-arm-gnueabihf@4.1.1
2
'
:
resolution
:
{
integrity
:
sha512-
v4Ghvi9AU1SYgGr3/j38PD8PEe6bRfTnNSUE3YCMIRrrNigCFtHZ2TCm8142X8fcSqHBZBceDx+JlFJEfNg5zQ
==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
arm
]
os
:
[
linux
]
'
@tailwindcss/oxide-linux-arm64-gnu@4.1.1
1
'
:
resolution
:
{
integrity
:
sha512-
mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ
==
}
'
@tailwindcss/oxide-linux-arm64-gnu@4.1.1
2
'
:
resolution
:
{
integrity
:
sha512-
YP5s1LmetL9UsvVAKusHSyPlzSRqYyRB0f+Kl/xcYQSPLEw/BvGfxzbH+ihUciePDjiXwHh+p+qbSP3SlJw+6g
==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
arm64
]
os
:
[
linux
]
'
@tailwindcss/oxide-linux-arm64-musl@4.1.1
1
'
:
resolution
:
{
integrity
:
sha512-
m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ
==
}
'
@tailwindcss/oxide-linux-arm64-musl@4.1.1
2
'
:
resolution
:
{
integrity
:
sha512-
V8pAM3s8gsrXcCv6kCHSuwyb/gPsd863iT+v1PGXC4fSL/OJqsKhfK//v8P+w9ThKIoqNbEnsZqNy+WDnwQqCA
==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
arm64
]
os
:
[
linux
]
'
@tailwindcss/oxide-linux-x64-gnu@4.1.1
1
'
:
resolution
:
{
integrity
:
sha512-
YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg
==
}
'
@tailwindcss/oxide-linux-x64-gnu@4.1.1
2
'
:
resolution
:
{
integrity
:
sha512-
xYfqYLjvm2UQ3TZggTGrwxjYaLB62b1Wiysw/YE3Yqbh86sOMoTn0feF98PonP7LtjsWOWcXEbGqDL7zv0uW8Q
==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
x64
]
os
:
[
linux
]
'
@tailwindcss/oxide-linux-x64-musl@4.1.1
1
'
:
resolution
:
{
integrity
:
sha512-
e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q
==
}
'
@tailwindcss/oxide-linux-x64-musl@4.1.1
2
'
:
resolution
:
{
integrity
:
sha512-
ha0pHPamN+fWZY7GCzz5rKunlv9L5R8kdh+YNvP5awe3LtuXb5nRi/H27GeL2U+TdhDOptU7T6Is7mdwh5Ar3A
==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
x64
]
os
:
[
linux
]
'
@tailwindcss/oxide-wasm32-wasi@4.1.1
1
'
:
resolution
:
{
integrity
:
sha512-
Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0
g==
}
'
@tailwindcss/oxide-wasm32-wasi@4.1.1
2
'
:
resolution
:
{
integrity
:
sha512-
4tSyu3dW+ktzdEpuk6g49KdEangu3eCYoqPhWNsZgUhyegEda3M9rG0/j1GV/JjVVsj+lG7jWAyrTlLzd/WEB
g==
}
engines
:
{
node
:
'
>=14.0.0'
}
cpu
:
[
wasm32
]
bundledDependencies
:
...
...
@@ -492,24 +491,24 @@ packages:
-
'
@emnapi/wasi-threads'
-
tslib
'
@tailwindcss/oxide-win32-arm64-msvc@4.1.1
1
'
:
resolution
:
{
integrity
:
sha512-
UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w
==
}
'
@tailwindcss/oxide-win32-arm64-msvc@4.1.1
2
'
:
resolution
:
{
integrity
:
sha512-
iGLyD/cVP724+FGtMWslhcFyg4xyYyM+5F4hGvKA7eifPkXHRAUDFaimu53fpNg9X8dfP75pXx/zFt/jlNF+lg
==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
arm64
]
os
:
[
win32
]
'
@tailwindcss/oxide-win32-x64-msvc@4.1.1
1
'
:
resolution
:
{
integrity
:
sha512-
YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg
==
}
'
@tailwindcss/oxide-win32-x64-msvc@4.1.1
2
'
:
resolution
:
{
integrity
:
sha512-
NKIh5rzw6CpEodv/++r0hGLlfgT/gFN+5WNdZtvh6wpU2BpGNgdjvj6H2oFc8nCM839QM1YOhjpgbAONUb4IxA
==
}
engines
:
{
node
:
'
>=
10'
}
cpu
:
[
x64
]
os
:
[
win32
]
'
@tailwindcss/oxide@4.1.1
1
'
:
resolution
:
{
integrity
:
sha512-
Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg
==
}
'
@tailwindcss/oxide@4.1.1
2
'
:
resolution
:
{
integrity
:
sha512-
gM5EoKHW/ukmlEtphNwaGx45fGoEmP10v51t9unv55voWh6WrOL19hfuIdo2FjxIaZzw776/BUQg7Pck++cIVw
==
}
engines
:
{
node
:
'
>=
10'
}
'
@tailwindcss/postcss@4.1.1
1
'
:
resolution
:
{
integrity
:
sha512-
q/EAIIpF6WpLhKEuQSEVMZNMIY8KhWoAemZ9eylNAih9jxMGAYPPWBn3I9QL/2jZ+e7OEz/tZkX5HwbBR4HohA
==
}
'
@tailwindcss/postcss@4.1.1
2
'
:
resolution
:
{
integrity
:
sha512-
5PpLYhCAwf9SJEeIsSmCDLgyVfdBhdBpzX1OJ87anT9IVR0Z9pjM0FNixCAUAHGnMBGB8K99SwAheXrT0Kh6QQ
==
}
'
@tybys/wasm-util@0.10.0'
:
resolution
:
{
integrity
:
sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==
}
...
...
@@ -523,74 +522,74 @@ packages:
'
@types/json5@0.0.29'
:
resolution
:
{
integrity
:
sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
}
'
@types/node@20.19.1
0
'
:
resolution
:
{
integrity
:
sha512-
iAFpG6DokED3roLSP0K+ybeDdIX6Bc0Vd3mLW5uDqThPWtNos3E+EqOM11mPQHKzfWHqEBuLjIlsBQQ8CsISmQ
==
}
'
@types/node@20.19.1
1
'
:
resolution
:
{
integrity
:
sha512-
uug3FEEGv0r+jrecvUUpbY8lLisvIjg6AAic6a2bSP5OEOLeJsDSnvhCDov7ipFFMXS3orMpzlmi0ZcuGkBbow
==
}
'
@types/react-dom@19.1.
7
'
:
resolution
:
{
integrity
:
sha512-
i5ZzwYpqjmrKenzkoLM2Ibzt6mAsM7pxB6BCIouEVVmgiqaMj1TjaK7hnA36hbW5aZv20kx7Lw6hWzPWg0Rurw
==
}
'
@types/react-dom@19.1.
8
'
:
resolution
:
{
integrity
:
sha512-
xG7xaBMJCpcK0RpN8jDbAACQo54ycO6h4dSSmgv8+fu6ZIAdANkx/WsawASUjVXYfy+J9AbUpRMNNEsXCDfDBQ
==
}
peerDependencies
:
'
@types/react'
:
^19.0.0
'
@types/react@19.1.
9
'
:
resolution
:
{
integrity
:
sha512-
WmdoynAX8Stew/36uTSVMcLJJ1KRh6L3IZRx1PZ7qJtBqT3dYTgyDTx8H1qoRghErydW7xw9mSJ3wS//tCRpFA
==
}
'
@types/react@19.1.
11
'
:
resolution
:
{
integrity
:
sha512-
lr3jdBw/BGj49Eps7EvqlUaoeA0xpj3pc0RoJkHpYaCHkVK7i28dKyImLQb3JVlqs3aYSXf7qYuWOW/fgZnTXQ
==
}
'
@typescript-eslint/eslint-plugin@8.
39
.0'
:
resolution
:
{
integrity
:
sha512-
bhEz6OZeUR+O/6yx9Jk6ohX6H9JSFTaiY0v9/PuKT3oGK0rn0jNplLmyFUGV+a9gfYnVNwGDwS/UkLIuXNb2R
w==
}
'
@typescript-eslint/eslint-plugin@8.
41
.0'
:
resolution
:
{
integrity
:
sha512-
8fz6oa6wEKZrhXWro/S3n2eRJqlRcIa6SlDh59FXJ5Wp5XRZ8B9ixpJDcjadHq47hMx0u+HW6SNa6LjJQ6NLt
w==
}
engines
:
{
node
:
^18.18.0 || ^20.9.0 || >=21.1.0
}
peerDependencies
:
'
@typescript-eslint/parser'
:
^8.
39
.0
'
@typescript-eslint/parser'
:
^8.
41
.0
eslint
:
^8.57.0 || ^9.0.0
typescript
:
'
>=4.8.4
<6.0.0'
'
@typescript-eslint/parser@8.
39
.0'
:
resolution
:
{
integrity
:
sha512-g
3WpVQHngx0aLXn6kfIYCZxM6rRJlWzEkVpqEFLT3SgEDsp9cpCbxxgwnE504q4H+ruSDh/VGS6nqZIDynP+v
g==
}
'
@typescript-eslint/parser@8.
41
.0'
:
resolution
:
{
integrity
:
sha512-g
TtSdWX9xiMPA/7MV9STjJOOYtWwIJIYxkQxnSV1U3xcE+mnJSH3f6zI0RYP+ew66WSlZ5ed+h0VCxsvdC1jJ
g==
}
engines
:
{
node
:
^18.18.0 || ^20.9.0 || >=21.1.0
}
peerDependencies
:
eslint
:
^8.57.0 || ^9.0.0
typescript
:
'
>=4.8.4
<6.0.0'
'
@typescript-eslint/project-service@8.
39
.0'
:
resolution
:
{
integrity
:
sha512-
CTzJqaSq30V/Z2Og9jogzZt8lJRR5TKlAdXmWgdu4hgcC9Kww5flQ+xFvMxIBWVNdxJO7OifgdOK4PokMIWPew
==
}
'
@typescript-eslint/project-service@8.
41
.0'
:
resolution
:
{
integrity
:
sha512-
b8V9SdGBQzQdjJ/IO3eDifGpDBJfvrNTp2QD9P2BeqWTGrRibgfgIlBSw6z3b6R7dPzg752tOs4u/7yCLxksSQ
==
}
engines
:
{
node
:
^18.18.0 || ^20.9.0 || >=21.1.0
}
peerDependencies
:
typescript
:
'
>=4.8.4
<6.0.0'
'
@typescript-eslint/scope-manager@8.
39
.0'
:
resolution
:
{
integrity
:
sha512-
8QOzff9UKxOh6npZQ/4FQu4mjdOCGSdO3p44ww0hk8Vu+IGbg0tB/H1LcTARRDzGCC8pDGbh2rissBuuoPgH8A
==
}
'
@typescript-eslint/scope-manager@8.
41
.0'
:
resolution
:
{
integrity
:
sha512-
n6m05bXn/Cd6DZDGyrpXrELCPVaTnLdPToyhBoFkLIMznRUQUEQdSp96s/pcWSQdqOhrgR1mzJ+yItK7T+WPMQ
==
}
engines
:
{
node
:
^18.18.0 || ^20.9.0 || >=21.1.0
}
'
@typescript-eslint/tsconfig-utils@8.
39
.0'
:
resolution
:
{
integrity
:
sha512-
Fd3/QjmFV2sKmvv3Mrj8r6N8CryYiCS8Wdb/6/rgOXAWGcFuc+VkQuG28uk/4kVNVZBQuuDHEDUpo/pQ32zsIQ
==
}
'
@typescript-eslint/tsconfig-utils@8.
41
.0'
:
resolution
:
{
integrity
:
sha512-
TDhxYFPUYRFxFhuU5hTIJk+auzM/wKvWgoNYOPcOf6i4ReYlOoYN8q1dV5kOTjNQNJgzWN3TUUQMtlLOcUgdUw
==
}
engines
:
{
node
:
^18.18.0 || ^20.9.0 || >=21.1.0
}
peerDependencies
:
typescript
:
'
>=4.8.4
<6.0.0'
'
@typescript-eslint/type-utils@8.
39
.0'
:
resolution
:
{
integrity
:
sha512-6
B3z0c1DXVT2vYA9+z9axjtc09rqKUPRmijD5m9iv8iQpHBRYRMBcgxSiKTZKm6FwWw1/cI4v6em35OsKCiN5
Q==
}
'
@typescript-eslint/type-utils@8.
41
.0'
:
resolution
:
{
integrity
:
sha512-6
3qt1h91vg3KsjVVonFJWjgSK7pZHSQFKH6uwqxAH9bBrsyRhO6ONoKyXxyVBzG1lJnFAJcKAcxLS54N1ee1O
Q==
}
engines
:
{
node
:
^18.18.0 || ^20.9.0 || >=21.1.0
}
peerDependencies
:
eslint
:
^8.57.0 || ^9.0.0
typescript
:
'
>=4.8.4
<6.0.0'
'
@typescript-eslint/types@8.
39
.0'
:
resolution
:
{
integrity
:
sha512-
ArDdaOllnCj3yn/lzKn9s0pBQYmmyme/v1HbGIGB0GB/knFI3fWMHloC+oYTJW46tVbYnGKTMDK4ah1sC2v0K
g==
}
'
@typescript-eslint/types@8.
41
.0'
:
resolution
:
{
integrity
:
sha512-
9EwxsWdVqh42afLbHP90n2VdHaWU/oWgbH2P0CfcNfdKL7CuKpwMQGjwev56vWu9cSKU7FWSu6r9zck6CVfna
g==
}
engines
:
{
node
:
^18.18.0 || ^20.9.0 || >=21.1.0
}
'
@typescript-eslint/typescript-estree@8.
39
.0'
:
resolution
:
{
integrity
:
sha512-
ndWdiflRMvfIgQRpckQQLiB5qAKQ7w++V4LlCHwp62eym1HLB/kw7D9f2e8ytONls/jt89TEasgvb+VwnRprsw
==
}
'
@typescript-eslint/typescript-estree@8.
41
.0'
:
resolution
:
{
integrity
:
sha512-
D43UwUYJmGhuwHfY7MtNKRZMmfd8+p/eNSfFe6tH5mbVDto+VQCayeAt35rOx3Cs6wxD16DQtIKw/YXxt5E0UQ
==
}
engines
:
{
node
:
^18.18.0 || ^20.9.0 || >=21.1.0
}
peerDependencies
:
typescript
:
'
>=4.8.4
<6.0.0'
'
@typescript-eslint/utils@8.
39
.0'
:
resolution
:
{
integrity
:
sha512-
4GVSvNA0Vx1Ktwvf4sFE+exxJ3QGUorQG1/A5mRfRNZtkBT2xrA/BCO2H0eALx/PnvCS6/vmYwRdDA41EoffkQ
==
}
'
@typescript-eslint/utils@8.
41
.0'
:
resolution
:
{
integrity
:
sha512-
udbCVstxZ5jiPIXrdH+BZWnPatjlYwJuJkDA4Tbo3WyYLh8NvB+h/bKeSZHDOFKfphsZYJQqaFtLeXEqurQn1A
==
}
engines
:
{
node
:
^18.18.0 || ^20.9.0 || >=21.1.0
}
peerDependencies
:
eslint
:
^8.57.0 || ^9.0.0
typescript
:
'
>=4.8.4
<6.0.0'
'
@typescript-eslint/visitor-keys@8.
39
.0'
:
resolution
:
{
integrity
:
sha512-
ldgiJ+VAhQCfIjeOgu8Kj5nSxds0ktPOSO9p4+0VDH2R2pLvQraaM5Oen2d7NxzMCm+Sn/vJT+mv2H5u6b/3fA
==
}
'
@typescript-eslint/visitor-keys@8.
41
.0'
:
resolution
:
{
integrity
:
sha512-
+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg
==
}
engines
:
{
node
:
^18.18.0 || ^20.9.0 || >=21.1.0
}
'
@unrs/resolver-binding-android-arm-eabi@1.11.1'
:
...
...
@@ -804,8 +803,8 @@ packages:
resolution
:
{
integrity
:
sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
}
engines
:
{
node
:
'
>=6'
}
caniuse-lite@1.0.3000173
4
:
resolution
:
{
integrity
:
sha512-
uhE1Ye5vgqju6OI71HTQqcBCZrvHugk0MjLak7Q+HfoBgoq5Bi+5YnwjP4fjDgrtYr/l8MVRBvzz9dPD4KyK0A
==
}
caniuse-lite@1.0.3000173
7
:
resolution
:
{
integrity
:
sha512-
BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw
==
}
chalk@4.1.2
:
resolution
:
{
integrity
:
sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
}
...
...
@@ -850,8 +849,8 @@ packages:
concat-map@0.0.1
:
resolution
:
{
integrity
:
sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
}
concurrently@9.2.
0
:
resolution
:
{
integrity
:
sha512-
IsB/fiXTupmagMW4MNp2lx2cdSN2FfZq78vF90LBB+zZHArbIQZjQtzXCiXnvTxCZSvXanTqFLWBjw2UkLx1SQ
==
}
concurrently@9.2.
1
:
resolution
:
{
integrity
:
sha512-
fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng
==
}
engines
:
{
node
:
'
>=18'
}
hasBin
:
true
...
...
@@ -1081,8 +1080,8 @@ packages:
resolution
:
{
integrity
:
sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==
}
engines
:
{
node
:
^18.18.0 || ^20.9.0 || >=21.1.0
}
eslint@9.3
3
.0
:
resolution
:
{
integrity
:
sha512-
TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA
==
}
eslint@9.3
4
.0
:
resolution
:
{
integrity
:
sha512-
RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg
==
}
engines
:
{
node
:
^18.18.0 || ^20.9.0 || >=21.1.0
}
hasBin
:
true
peerDependencies
:
...
...
@@ -1138,8 +1137,9 @@ packages:
fastq@1.19.1
:
resolution
:
{
integrity
:
sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==
}
fdir@6.4.6
:
resolution
:
{
integrity
:
sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==
}
fdir@6.5.0
:
resolution
:
{
integrity
:
sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==
}
engines
:
{
node
:
'
>=12.0.0'
}
peerDependencies
:
picomatch
:
^3 || ^4
peerDependenciesMeta
:
...
...
@@ -1508,15 +1508,12 @@ packages:
lodash.merge@4.6.2
:
resolution
:
{
integrity
:
sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
}
lodash@4.17.21
:
resolution
:
{
integrity
:
sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
}
loose-envify@1.4.0
:
resolution
:
{
integrity
:
sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
}
hasBin
:
true
magic-string@0.30.1
7
:
resolution
:
{
integrity
:
sha512-
sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA
==
}
magic-string@0.30.1
8
:
resolution
:
{
integrity
:
sha512-
yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ
==
}
math-intrinsics@1.1.0
:
resolution
:
{
integrity
:
sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==
}
...
...
@@ -1933,11 +1930,11 @@ packages:
resolution
:
{
integrity
:
sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
}
engines
:
{
node
:
'
>=
0.4'
}
tailwindcss@4.1.1
1
:
resolution
:
{
integrity
:
sha512-
2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtB
A==
}
tailwindcss@4.1.1
2
:
resolution
:
{
integrity
:
sha512-
DzFtxOi+7NsFf7DBtI3BJsynR+0Yp6etH+nRPTbpWnS2pZBaSksv/JGctNwSWzbFjp0vxSqknaUylseZqMDGr
A==
}
tapable@2.2.
2
:
resolution
:
{
integrity
:
sha512-
Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKO
g==
}
tapable@2.2.
3
:
resolution
:
{
integrity
:
sha512-
ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDz
g==
}
engines
:
{
node
:
'
>=6'
}
tar@7.4.3
:
...
...
@@ -2058,18 +2055,13 @@ packages:
resolution
:
{
integrity
:
sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
}
engines
:
{
node
:
'
>=10'
}
zod@4.1.
1
:
resolution
:
{
integrity
:
sha512-
SgMZK/h8Tigt9nnKkfJMvB/mKjiJXaX26xegP4sa+0wHIFVFWVlsQGdhklDmuargBD3Hsi3rsQRIzwJIhTPJHA
==
}
zod@4.1.
3
:
resolution
:
{
integrity
:
sha512-
1neef4bMce1hNTrxvHVKxWjKfGDn0oAli3Wy1Uwb7TRO1+wEwoZUZNP1NXIEESybOBiFnBOhI6a4m6tCLE8dog
==
}
snapshots
:
'
@alloc/quick-lru@5.2.0'
:
{}
'
@ampproject/remapping@2.3.0'
:
dependencies
:
'
@jridgewell/gen-mapping'
:
0.3.12
'@jridgewell/trace-mapping'
:
0.3.29
'
@emnapi/core@1.4.5'
:
dependencies
:
'
@emnapi/wasi-threads'
:
1.0.4
...
...
@@ -2086,9 +2078,9 @@ snapshots:
tslib
:
2.8.1
optional
:
true
'
@eslint-community/eslint-utils@4.7.0(eslint@9.3
3
.0(jiti@2.5.1))'
:
'
@eslint-community/eslint-utils@4.7.0(eslint@9.3
4
.0(jiti@2.5.1))'
:
dependencies
:
eslint
:
9.3
3
.0(jiti@2.5.1)
eslint
:
9.3
4
.0(jiti@2.5.1)
eslint-visitor-keys
:
3.4.3
'
@eslint-community/regexpp@4.12.1'
:
{}
...
...
@@ -2121,7 +2113,7 @@ snapshots:
transitivePeerDependencies
:
-
supports-color
'
@eslint/js@9.3
3
.0'
:
{}
'
@eslint/js@9.3
4
.0'
:
{}
'
@eslint/object-schema@2.1.6'
:
{}
...
...
@@ -2233,19 +2225,24 @@ snapshots:
dependencies
:
minipass
:
7.1.2
'
@jridgewell/gen-mapping@0.3.1
2
'
:
'
@jridgewell/gen-mapping@0.3.1
3
'
:
dependencies
:
'
@jridgewell/sourcemap-codec'
:
1.5.4
'@jridgewell/trace-mapping'
:
0.3.29
'
@jridgewell/sourcemap-codec'
:
1.5.5
'@jridgewell/trace-mapping'
:
0.3.30
'
@jridgewell/remapping@2.3.5'
:
dependencies
:
'
@jridgewell/gen-mapping'
:
0.3.13
'@jridgewell/trace-mapping'
:
0.3.30
'
@jridgewell/resolve-uri@3.1.2'
:
{}
'
@jridgewell/sourcemap-codec@1.5.
4
'
:
{}
'
@jridgewell/sourcemap-codec@1.5.
5
'
:
{}
'
@jridgewell/trace-mapping@0.3.
29
'
:
'
@jridgewell/trace-mapping@0.3.
30
'
:
dependencies
:
'
@jridgewell/resolve-uri'
:
3.1.2
'@jridgewell/sourcemap-codec'
:
1.5.
4
'@jridgewell/sourcemap-codec'
:
1.5.
5
'
@napi-rs/wasm-runtime@0.2.12'
:
dependencies
:
...
...
@@ -2363,77 +2360,77 @@ snapshots:
dependencies
:
tslib
:
2.8.1
'
@tailwindcss/node@4.1.1
1
'
:
'
@tailwindcss/node@4.1.1
2
'
:
dependencies
:
'
@
ampproject
/remapping'
:
2.3.
0
'
@
jridgewell
/remapping'
:
2.3.
5
enhanced-resolve
:
5.18.3
jiti
:
2.5.1
lightningcss
:
1.30.1
magic-string
:
0.30.1
7
magic-string
:
0.30.1
8
source-map-js
:
1.2.1
tailwindcss
:
4.1.1
1
tailwindcss
:
4.1.1
2
'
@tailwindcss/oxide-android-arm64@4.1.1
1
'
:
'
@tailwindcss/oxide-android-arm64@4.1.1
2
'
:
optional
:
true
'
@tailwindcss/oxide-darwin-arm64@4.1.1
1
'
:
'
@tailwindcss/oxide-darwin-arm64@4.1.1
2
'
:
optional
:
true
'
@tailwindcss/oxide-darwin-x64@4.1.1
1
'
:
'
@tailwindcss/oxide-darwin-x64@4.1.1
2
'
:
optional
:
true
'
@tailwindcss/oxide-freebsd-x64@4.1.1
1
'
:
'
@tailwindcss/oxide-freebsd-x64@4.1.1
2
'
:
optional
:
true
'
@tailwindcss/oxide-linux-arm-gnueabihf@4.1.1
1
'
:
'
@tailwindcss/oxide-linux-arm-gnueabihf@4.1.1
2
'
:
optional
:
true
'
@tailwindcss/oxide-linux-arm64-gnu@4.1.1
1
'
:
'
@tailwindcss/oxide-linux-arm64-gnu@4.1.1
2
'
:
optional
:
true
'
@tailwindcss/oxide-linux-arm64-musl@4.1.1
1
'
:
'
@tailwindcss/oxide-linux-arm64-musl@4.1.1
2
'
:
optional
:
true
'
@tailwindcss/oxide-linux-x64-gnu@4.1.1
1
'
:
'
@tailwindcss/oxide-linux-x64-gnu@4.1.1
2
'
:
optional
:
true
'
@tailwindcss/oxide-linux-x64-musl@4.1.1
1
'
:
'
@tailwindcss/oxide-linux-x64-musl@4.1.1
2
'
:
optional
:
true
'
@tailwindcss/oxide-wasm32-wasi@4.1.1
1
'
:
'
@tailwindcss/oxide-wasm32-wasi@4.1.1
2
'
:
optional
:
true
'
@tailwindcss/oxide-win32-arm64-msvc@4.1.1
1
'
:
'
@tailwindcss/oxide-win32-arm64-msvc@4.1.1
2
'
:
optional
:
true
'
@tailwindcss/oxide-win32-x64-msvc@4.1.1
1
'
:
'
@tailwindcss/oxide-win32-x64-msvc@4.1.1
2
'
:
optional
:
true
'
@tailwindcss/oxide@4.1.1
1
'
:
'
@tailwindcss/oxide@4.1.1
2
'
:
dependencies
:
detect-libc
:
2.0.4
tar
:
7.4.3
optionalDependencies
:
'
@tailwindcss/oxide-android-arm64'
:
4.1.1
1
'@tailwindcss/oxide-darwin-arm64'
:
4.1.1
1
'@tailwindcss/oxide-darwin-x64'
:
4.1.1
1
'@tailwindcss/oxide-freebsd-x64'
:
4.1.1
1
'@tailwindcss/oxide-linux-arm-gnueabihf'
:
4.1.1
1
'@tailwindcss/oxide-linux-arm64-gnu'
:
4.1.1
1
'@tailwindcss/oxide-linux-arm64-musl'
:
4.1.1
1
'@tailwindcss/oxide-linux-x64-gnu'
:
4.1.1
1
'@tailwindcss/oxide-linux-x64-musl'
:
4.1.1
1
'@tailwindcss/oxide-wasm32-wasi'
:
4.1.1
1
'@tailwindcss/oxide-win32-arm64-msvc'
:
4.1.1
1
'@tailwindcss/oxide-win32-x64-msvc'
:
4.1.1
1
'
@tailwindcss/postcss@4.1.1
1
'
:
'
@tailwindcss/oxide-android-arm64'
:
4.1.1
2
'@tailwindcss/oxide-darwin-arm64'
:
4.1.1
2
'@tailwindcss/oxide-darwin-x64'
:
4.1.1
2
'@tailwindcss/oxide-freebsd-x64'
:
4.1.1
2
'@tailwindcss/oxide-linux-arm-gnueabihf'
:
4.1.1
2
'@tailwindcss/oxide-linux-arm64-gnu'
:
4.1.1
2
'@tailwindcss/oxide-linux-arm64-musl'
:
4.1.1
2
'@tailwindcss/oxide-linux-x64-gnu'
:
4.1.1
2
'@tailwindcss/oxide-linux-x64-musl'
:
4.1.1
2
'@tailwindcss/oxide-wasm32-wasi'
:
4.1.1
2
'@tailwindcss/oxide-win32-arm64-msvc'
:
4.1.1
2
'@tailwindcss/oxide-win32-x64-msvc'
:
4.1.1
2
'
@tailwindcss/postcss@4.1.1
2
'
:
dependencies
:
'
@alloc/quick-lru'
:
5.2.0
'@tailwindcss/node'
:
4.1.1
1
'@tailwindcss/oxide'
:
4.1.1
1
'@tailwindcss/node'
:
4.1.1
2
'@tailwindcss/oxide'
:
4.1.1
2
postcss
:
8.5.6
tailwindcss
:
4.1.1
1
tailwindcss
:
4.1.1
2
'
@tybys/wasm-util@0.10.0'
:
dependencies
:
...
...
@@ -2446,27 +2443,27 @@ snapshots:
'
@types/json5@0.0.29'
:
{}
'
@types/node@20.19.1
0
'
:
'
@types/node@20.19.1
1
'
:
dependencies
:
undici-types
:
6.21.0
'
@types/react-dom@19.1.
7
(@types/react@19.1.
9
)'
:
'
@types/react-dom@19.1.
8
(@types/react@19.1.
11
)'
:
dependencies
:
'
@types/react'
:
19.1.
9
'
@types/react'
:
19.1.
11
'
@types/react@19.1.
9
'
:
'
@types/react@19.1.
11
'
:
dependencies
:
csstype
:
3.1.3
'
@typescript-eslint/eslint-plugin@8.
39
.0(@typescript-eslint/parser@8.
39
.0(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2)'
:
'
@typescript-eslint/eslint-plugin@8.
41
.0(@typescript-eslint/parser@8.
41
.0(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2)'
:
dependencies
:
'
@eslint-community/regexpp'
:
4.12.1
'@typescript-eslint/parser'
:
8.
39
.0(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2)
'@typescript-eslint/scope-manager'
:
8.
39
.0
'@typescript-eslint/type-utils'
:
8.
39
.0(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2)
'@typescript-eslint/utils'
:
8.
39
.0(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2)
'@typescript-eslint/visitor-keys'
:
8.
39
.0
eslint
:
9.3
3
.0(jiti@2.5.1)
'@typescript-eslint/parser'
:
8.
41
.0(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2)
'@typescript-eslint/scope-manager'
:
8.
41
.0
'@typescript-eslint/type-utils'
:
8.
41
.0(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2)
'@typescript-eslint/utils'
:
8.
41
.0(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2)
'@typescript-eslint/visitor-keys'
:
8.
41
.0
eslint
:
9.3
4
.0(jiti@2.5.1)
graphemer
:
1.4.0
ignore
:
7.0.5
natural-compare
:
1.4.0
...
...
@@ -2475,56 +2472,56 @@ snapshots:
transitivePeerDependencies
:
-
supports-color
'
@typescript-eslint/parser@8.
39
.0(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2)'
:
'
@typescript-eslint/parser@8.
41
.0(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2)'
:
dependencies
:
'
@typescript-eslint/scope-manager'
:
8.
39
.0
'@typescript-eslint/types'
:
8.
39
.0
'@typescript-eslint/typescript-estree'
:
8.
39
.0(typescript@5.9.2)
'@typescript-eslint/visitor-keys'
:
8.
39
.0
'
@typescript-eslint/scope-manager'
:
8.
41
.0
'@typescript-eslint/types'
:
8.
41
.0
'@typescript-eslint/typescript-estree'
:
8.
41
.0(typescript@5.9.2)
'@typescript-eslint/visitor-keys'
:
8.
41
.0
debug
:
4.4.1
eslint
:
9.3
3
.0(jiti@2.5.1)
eslint
:
9.3
4
.0(jiti@2.5.1)
typescript
:
5.9.2
transitivePeerDependencies
:
-
supports-color
'
@typescript-eslint/project-service@8.
39
.0(typescript@5.9.2)'
:
'
@typescript-eslint/project-service@8.
41
.0(typescript@5.9.2)'
:
dependencies
:
'
@typescript-eslint/tsconfig-utils'
:
8.
39
.0(typescript@5.9.2)
'@typescript-eslint/types'
:
8.
39
.0
'
@typescript-eslint/tsconfig-utils'
:
8.
41
.0(typescript@5.9.2)
'@typescript-eslint/types'
:
8.
41
.0
debug
:
4.4.1
typescript
:
5.9.2
transitivePeerDependencies
:
-
supports-color
'
@typescript-eslint/scope-manager@8.
39
.0'
:
'
@typescript-eslint/scope-manager@8.
41
.0'
:
dependencies
:
'
@typescript-eslint/types'
:
8.
39
.0
'@typescript-eslint/visitor-keys'
:
8.
39
.0
'
@typescript-eslint/types'
:
8.
41
.0
'@typescript-eslint/visitor-keys'
:
8.
41
.0
'
@typescript-eslint/tsconfig-utils@8.
39
.0(typescript@5.9.2)'
:
'
@typescript-eslint/tsconfig-utils@8.
41
.0(typescript@5.9.2)'
:
dependencies
:
typescript
:
5.9.2
'
@typescript-eslint/type-utils@8.
39
.0(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2)'
:
'
@typescript-eslint/type-utils@8.
41
.0(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2)'
:
dependencies
:
'
@typescript-eslint/types'
:
8.
39
.0
'@typescript-eslint/typescript-estree'
:
8.
39
.0(typescript@5.9.2)
'@typescript-eslint/utils'
:
8.
39
.0(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2)
'
@typescript-eslint/types'
:
8.
41
.0
'@typescript-eslint/typescript-estree'
:
8.
41
.0(typescript@5.9.2)
'@typescript-eslint/utils'
:
8.
41
.0(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2)
debug
:
4.4.1
eslint
:
9.3
3
.0(jiti@2.5.1)
eslint
:
9.3
4
.0(jiti@2.5.1)
ts-api-utils
:
2.1.0(typescript@5.9.2)
typescript
:
5.9.2
transitivePeerDependencies
:
-
supports-color
'
@typescript-eslint/types@8.
39
.0'
:
{}
'
@typescript-eslint/types@8.
41
.0'
:
{}
'
@typescript-eslint/typescript-estree@8.
39
.0(typescript@5.9.2)'
:
'
@typescript-eslint/typescript-estree@8.
41
.0(typescript@5.9.2)'
:
dependencies
:
'
@typescript-eslint/project-service'
:
8.
39
.0(typescript@5.9.2)
'@typescript-eslint/tsconfig-utils'
:
8.
39
.0(typescript@5.9.2)
'@typescript-eslint/types'
:
8.
39
.0
'@typescript-eslint/visitor-keys'
:
8.
39
.0
'
@typescript-eslint/project-service'
:
8.
41
.0(typescript@5.9.2)
'@typescript-eslint/tsconfig-utils'
:
8.
41
.0(typescript@5.9.2)
'@typescript-eslint/types'
:
8.
41
.0
'@typescript-eslint/visitor-keys'
:
8.
41
.0
debug
:
4.4.1
fast-glob
:
3.3.3
is-glob
:
4.0.3
...
...
@@ -2535,20 +2532,20 @@ snapshots:
transitivePeerDependencies
:
-
supports-color
'
@typescript-eslint/utils@8.
39
.0(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2)'
:
'
@typescript-eslint/utils@8.
41
.0(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2)'
:
dependencies
:
'
@eslint-community/eslint-utils'
:
4.7.0(eslint@9.3
3
.0(jiti@2.5.1))
'@typescript-eslint/scope-manager'
:
8.
39
.0
'@typescript-eslint/types'
:
8.
39
.0
'@typescript-eslint/typescript-estree'
:
8.
39
.0(typescript@5.9.2)
eslint
:
9.3
3
.0(jiti@2.5.1)
'
@eslint-community/eslint-utils'
:
4.7.0(eslint@9.3
4
.0(jiti@2.5.1))
'@typescript-eslint/scope-manager'
:
8.
41
.0
'@typescript-eslint/types'
:
8.
41
.0
'@typescript-eslint/typescript-estree'
:
8.
41
.0(typescript@5.9.2)
eslint
:
9.3
4
.0(jiti@2.5.1)
typescript
:
5.9.2
transitivePeerDependencies
:
-
supports-color
'
@typescript-eslint/visitor-keys@8.
39
.0'
:
'
@typescript-eslint/visitor-keys@8.
41
.0'
:
dependencies
:
'
@typescript-eslint/types'
:
8.
39
.0
'
@typescript-eslint/types'
:
8.
41
.0
eslint-visitor-keys
:
4.2.1
'
@unrs/resolver-binding-android-arm-eabi@1.11.1'
:
...
...
@@ -2761,7 +2758,7 @@ snapshots:
callsites@3.1.0
:
{}
caniuse-lite@1.0.3000173
4
:
{}
caniuse-lite@1.0.3000173
7
:
{}
chalk@4.1.2
:
dependencies
:
...
...
@@ -2808,10 +2805,9 @@ snapshots:
concat-map@0.0.1
:
{}
concurrently@9.2.
0
:
concurrently@9.2.
1
:
dependencies
:
chalk
:
4.1.2
lodash
:
4.17.21
rxjs
:
7.8.2
shell-quote
:
1.8.3
supports-color
:
8.1.1
...
...
@@ -2906,7 +2902,7 @@ snapshots:
enhanced-resolve@5.18.3
:
dependencies
:
graceful-fs
:
4.2.11
tapable
:
2.2.
2
tapable
:
2.2.
3
es-abstract@1.24.0
:
dependencies
:
...
...
@@ -3013,19 +3009,19 @@ snapshots:
escape-string-regexp@4.0.0
:
{}
eslint-config-next@15.4.6(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2)
:
eslint-config-next@15.4.6(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2)
:
dependencies
:
'
@next/eslint-plugin-next'
:
15.4.6
'@rushstack/eslint-patch'
:
1.12.0
'@typescript-eslint/eslint-plugin'
:
8.
39
.0(@typescript-eslint/parser@8.
39
.0(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2)
'@typescript-eslint/parser'
:
8.
39
.0(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2)
eslint
:
9.3
3
.0(jiti@2.5.1)
'@typescript-eslint/eslint-plugin'
:
8.
41
.0(@typescript-eslint/parser@8.
41
.0(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2)
'@typescript-eslint/parser'
:
8.
41
.0(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2)
eslint
:
9.3
4
.0(jiti@2.5.1)
eslint-import-resolver-node
:
0.3.9
eslint-import-resolver-typescript
:
3.10.1(eslint-plugin-import@2.32.0)(eslint@9.3
3
.0(jiti@2.5.1))
eslint-plugin-import
:
2.32.0(@typescript-eslint/parser@8.
39
.0(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.3
3
.0(jiti@2.5.1))
eslint-plugin-jsx-a11y
:
6.10.2(eslint@9.3
3
.0(jiti@2.5.1))
eslint-plugin-react
:
7.37.5(eslint@9.3
3
.0(jiti@2.5.1))
eslint-plugin-react-hooks
:
5.2.0(eslint@9.3
3
.0(jiti@2.5.1))
eslint-import-resolver-typescript
:
3.10.1(eslint-plugin-import@2.32.0)(eslint@9.3
4
.0(jiti@2.5.1))
eslint-plugin-import
:
2.32.0(@typescript-eslint/parser@8.
41
.0(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.3
4
.0(jiti@2.5.1))
eslint-plugin-jsx-a11y
:
6.10.2(eslint@9.3
4
.0(jiti@2.5.1))
eslint-plugin-react
:
7.37.5(eslint@9.3
4
.0(jiti@2.5.1))
eslint-plugin-react-hooks
:
5.2.0(eslint@9.3
4
.0(jiti@2.5.1))
optionalDependencies
:
typescript
:
5.9.2
transitivePeerDependencies
:
...
...
@@ -3041,33 +3037,33 @@ snapshots:
transitivePeerDependencies
:
-
supports-color
eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.3
3
.0(jiti@2.5.1))
:
eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.3
4
.0(jiti@2.5.1))
:
dependencies
:
'
@nolyfill/is-core-module'
:
1.0.39
debug
:
4.4.1
eslint
:
9.3
3
.0(jiti@2.5.1)
eslint
:
9.3
4
.0(jiti@2.5.1)
get-tsconfig
:
4.10.1
is-bun-module
:
2.0.0
stable-hash
:
0.0.5
tinyglobby
:
0.2.14
unrs-resolver
:
1.11.1
optionalDependencies
:
eslint-plugin-import
:
2.32.0(@typescript-eslint/parser@8.
39
.0(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.3
3
.0(jiti@2.5.1))
eslint-plugin-import
:
2.32.0(@typescript-eslint/parser@8.
41
.0(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.3
4
.0(jiti@2.5.1))
transitivePeerDependencies
:
-
supports-color
eslint-module-utils@2.12.1(@typescript-eslint/parser@8.
39
.0(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.3
3
.0(jiti@2.5.1))
:
eslint-module-utils@2.12.1(@typescript-eslint/parser@8.
41
.0(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.3
4
.0(jiti@2.5.1))
:
dependencies
:
debug
:
3.2.7
optionalDependencies
:
'
@typescript-eslint/parser'
:
8.
39
.0(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2)
eslint
:
9.3
3
.0(jiti@2.5.1)
'
@typescript-eslint/parser'
:
8.
41
.0(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2)
eslint
:
9.3
4
.0(jiti@2.5.1)
eslint-import-resolver-node
:
0.3.9
eslint-import-resolver-typescript
:
3.10.1(eslint-plugin-import@2.32.0)(eslint@9.3
3
.0(jiti@2.5.1))
eslint-import-resolver-typescript
:
3.10.1(eslint-plugin-import@2.32.0)(eslint@9.3
4
.0(jiti@2.5.1))
transitivePeerDependencies
:
-
supports-color
eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.
39
.0(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.3
3
.0(jiti@2.5.1))
:
eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.
41
.0(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.3
4
.0(jiti@2.5.1))
:
dependencies
:
'
@rtsao/scc'
:
1.1.0
array-includes
:
3.1.9
...
...
@@ -3076,9 +3072,9 @@ snapshots:
array.prototype.flatmap
:
1.3.3
debug
:
3.2.7
doctrine
:
2.1.0
eslint
:
9.3
3
.0(jiti@2.5.1)
eslint
:
9.3
4
.0(jiti@2.5.1)
eslint-import-resolver-node
:
0.3.9
eslint-module-utils
:
2.12.1(@typescript-eslint/parser@8.
39
.0(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.3
3
.0(jiti@2.5.1))
eslint-module-utils
:
2.12.1(@typescript-eslint/parser@8.
41
.0(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.3
4
.0(jiti@2.5.1))
hasown
:
2.0.2
is-core-module
:
2.16.1
is-glob
:
4.0.3
...
...
@@ -3090,13 +3086,13 @@ snapshots:
string.prototype.trimend
:
1.0.9
tsconfig-paths
:
3.15.0
optionalDependencies
:
'
@typescript-eslint/parser'
:
8.
39
.0(eslint@9.3
3
.0(jiti@2.5.1))(typescript@5.9.2)
'
@typescript-eslint/parser'
:
8.
41
.0(eslint@9.3
4
.0(jiti@2.5.1))(typescript@5.9.2)
transitivePeerDependencies
:
-
eslint-import-resolver-typescript
-
eslint-import-resolver-webpack
-
supports-color
eslint-plugin-jsx-a11y@6.10.2(eslint@9.3
3
.0(jiti@2.5.1))
:
eslint-plugin-jsx-a11y@6.10.2(eslint@9.3
4
.0(jiti@2.5.1))
:
dependencies
:
aria-query
:
5.3.2
array-includes
:
3.1.9
...
...
@@ -3106,7 +3102,7 @@ snapshots:
axobject-query
:
4.1.0
damerau-levenshtein
:
1.0.8
emoji-regex
:
9.2.2
eslint
:
9.3
3
.0(jiti@2.5.1)
eslint
:
9.3
4
.0(jiti@2.5.1)
hasown
:
2.0.2
jsx-ast-utils
:
3.3.5
language-tags
:
1.0.9
...
...
@@ -3115,11 +3111,11 @@ snapshots:
safe-regex-test
:
1.1.0
string.prototype.includes
:
2.0.1
eslint-plugin-react-hooks@5.2.0(eslint@9.3
3
.0(jiti@2.5.1))
:
eslint-plugin-react-hooks@5.2.0(eslint@9.3
4
.0(jiti@2.5.1))
:
dependencies
:
eslint
:
9.3
3
.0(jiti@2.5.1)
eslint
:
9.3
4
.0(jiti@2.5.1)
eslint-plugin-react@7.37.5(eslint@9.3
3
.0(jiti@2.5.1))
:
eslint-plugin-react@7.37.5(eslint@9.3
4
.0(jiti@2.5.1))
:
dependencies
:
array-includes
:
3.1.9
array.prototype.findlast
:
1.2.5
...
...
@@ -3127,7 +3123,7 @@ snapshots:
array.prototype.tosorted
:
1.1.4
doctrine
:
2.1.0
es-iterator-helpers
:
1.2.1
eslint
:
9.3
3
.0(jiti@2.5.1)
eslint
:
9.3
4
.0(jiti@2.5.1)
estraverse
:
5.3.0
hasown
:
2.0.2
jsx-ast-utils
:
3.3.5
...
...
@@ -3150,15 +3146,15 @@ snapshots:
eslint-visitor-keys@4.2.1
:
{}
eslint@9.3
3
.0(jiti@2.5.1)
:
eslint@9.3
4
.0(jiti@2.5.1)
:
dependencies
:
'
@eslint-community/eslint-utils'
:
4.7.0(eslint@9.3
3
.0(jiti@2.5.1))
'
@eslint-community/eslint-utils'
:
4.7.0(eslint@9.3
4
.0(jiti@2.5.1))
'@eslint-community/regexpp'
:
4.12.1
'@eslint/config-array'
:
0.21.0
'@eslint/config-helpers'
:
0.3.1
'@eslint/core'
:
0.15.2
'@eslint/eslintrc'
:
3.3.1
'@eslint/js'
:
9.3
3
.0
'@eslint/js'
:
9.3
4
.0
'@eslint/plugin-kit'
:
0.3.5
'@humanfs/node'
:
0.16.6
'@humanwhocodes/module-importer'
:
1.0.1
...
...
@@ -3242,7 +3238,7 @@ snapshots:
dependencies
:
reusify
:
1.1.0
fdir@6.
4.6
(picomatch@4.0.3)
:
fdir@6.
5.0
(picomatch@4.0.3)
:
optionalDependencies
:
picomatch
:
4.0.3
...
...
@@ -3602,15 +3598,13 @@ snapshots:
lodash.merge@4.6.2
:
{}
lodash@4.17.21
:
{}
loose-envify@1.4.0
:
dependencies
:
js-tokens
:
4.0.0
magic-string@0.30.1
7
:
magic-string@0.30.1
8
:
dependencies
:
'
@jridgewell/sourcemap-codec'
:
1.5.
4
'
@jridgewell/sourcemap-codec'
:
1.5.
5
math-intrinsics@1.1.0
:
{}
...
...
@@ -3651,7 +3645,7 @@ snapshots:
dependencies
:
'
@next/env'
:
15.4.6
'@swc/helpers'
:
0.5.15
caniuse-lite
:
1.0.3000173
4
caniuse-lite
:
1.0.3000173
7
postcss
:
8.4.31
react
:
19.1.0
react-dom
:
19.1.0(react@19.1.0)
...
...
@@ -4090,9 +4084,9 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0
:
{}
tailwindcss@4.1.1
1
:
{}
tailwindcss@4.1.1
2
:
{}
tapable@2.2.
2
:
{}
tapable@2.2.
3
:
{}
tar@7.4.3
:
dependencies
:
...
...
@@ -4107,7 +4101,7 @@ snapshots:
tinyglobby@0.2.14
:
dependencies
:
fdir
:
6.
4.6
(picomatch@4.0.3)
fdir
:
6.
5.0
(picomatch@4.0.3)
picomatch
:
4.0.3
to-regex-range@5.0.1
:
...
...
@@ -4276,4 +4270,4 @@ snapshots:
yocto-queue@0.1.0
:
{}
zod@4.1.
1
:
{}
zod@4.1.
3
:
{}
chat-room/src/app/api/room-api.tsx
View file @
1776bb7a
...
...
@@ -238,8 +238,8 @@ export async function AddMessage(data: Ty.MessageAddArgs): Promise<Ty.BackendRes
export
async
function
StartAuthSession
()
:
Promise
<
Ty
.
BackendResponse
<
Auth
.
Session
>>
{
const
sessionId
=
getRandomToken
();
redis
.
set
(
`Session:
${
sessionId
}
`
,
"
{}
"
);
redis
.
expire
(
`Session:
${
sessionId
}
`
,
60
*
5
);
// 5分钟内登录/注册有效
redis
?
.
set
(
`Session:
${
sessionId
}
`
,
"
{}
"
);
redis
?
.
expire
(
`Session:
${
sessionId
}
`
,
60
*
5
);
// 5分钟内登录/注册有效
return
{
code
:
0
,
...
...
@@ -252,7 +252,7 @@ export async function StartAuthSession() : Promise<Ty.BackendResponse<Auth.Sessi
export
async
function
Login
(
args
:
Auth
.
AuthArgs
)
:
Promise
<
Ty
.
BackendResponse
<
Auth
.
LoginResult
|
null
>>
{
const
{
sessionId
,
username
,
password
,
userAgent
,
userIP
}
=
args
;
const
sessionStr
=
await
redis
.
get
(
`Session:
${
sessionId
}
`
);
const
sessionStr
=
await
redis
?
.
get
(
`Session:
${
sessionId
}
`
);
if
(
!
sessionStr
)
{
return
{
...
...
@@ -289,7 +289,7 @@ export async function Login(args: Auth.AuthArgs) : Promise<Ty.BackendResponse<Au
}
});
await
redis
.
del
(
`Session:
${
sessionId
}
`
);
await
redis
?
.
del
(
`Session:
${
sessionId
}
`
);
return
{
code
:
0
,
...
...
@@ -337,7 +337,7 @@ export async function AutoLogin(args: Auth.AutoLoginArgs) : Promise<Ty.BackendRe
export
async
function
Register
(
args
:
Auth
.
AuthArgs
)
:
Promise
<
Ty
.
BackendResponse
<
Auth
.
RegisterResult
|
null
>>
{
const
{
sessionId
,
username
,
password
}
=
args
;
const
sessionStr
=
await
redis
.
get
(
`Session:
${
sessionId
}
`
);
const
sessionStr
=
await
redis
?
.
get
(
`Session:
${
sessionId
}
`
);
if
(
!
sessionStr
)
{
return
{
...
...
@@ -372,7 +372,7 @@ export async function Register(args: Auth.AuthArgs) : Promise<Ty.BackendResponse
}
});
await
redis
.
del
(
`Session:
${
sessionId
}
`
);
await
redis
?
.
del
(
`Session:
${
sessionId
}
`
);
return
{
code
:
0
,
...
...
chat-room/src/app/chat/page.tsx
View file @
1776bb7a
...
...
@@ -6,10 +6,12 @@ import UsernameCheck from './username-check';
import
PageHeaderProvider
from
'
./header
'
import
ConfirmModalProvider
from
'
./confirm-modal
'
;
import
{
RoomProvider
}
from
'
./room-context
'
import
{
Suspense
}
from
'
react
'
;
export
default
function
Home
()
{
return
(
<
Suspense
fallback
=
{
<
div
>
Loading...
</
div
>
}
>
<
RoomProvider
>
<
UsernameCheck
/>
<
ConfirmModalProvider
/>
...
...
@@ -28,5 +30,6 @@ export default function Home() {
</
div
>
</
div
>
</
RoomProvider
>
</
Suspense
>
);
}
chat-room/src/lib/db.ts
View file @
1776bb7a
...
...
@@ -8,14 +8,20 @@ declare global{
var
rateLimiter
:
RateLimiterRedis
|
undefined
;
}
const
connectRedisClient
=
async
()
=>
{
const
client
=
createClient
();
client
.
on
(
'
error
'
,
(
err
)
=>
console
.
error
(
'
Redis Client Error
'
,
err
));
await
client
.
connect
();
const
isBuild
=
process
.
env
.
NEXT_PHASE
===
'
phase-production-build
'
;
const
client
=
isBuild
?
undefined
:
createClient
();
client
?.
on
(
'
error
'
,
(
err
)
=>
console
.
error
(
'
Redis Client Error
'
,
err
));
await
client
?.
connect
();
return
client
;
};
const
getRateLimiter
=
()
=>
{
const
isBuild
=
process
.
env
.
NEXT_PHASE
===
'
phase-production-build
'
;
if
(
isBuild
)
return
undefined
;
const
rateLimiter
=
new
RateLimiterRedis
({
storeClient
:
redis
,
keyPrefix
:
'
rateLimiter
'
,
...
...
@@ -25,6 +31,8 @@ const getRateLimiter = () => {
return
rateLimiter
;
};
export
const
prisma
=
global
.
prisma
||
new
PrismaClient
();
export
const
redis
=
global
.
redisClient
||
await
connectRedisClient
();
export
const
rateLimiter
=
global
.
rateLimiter
||
getRateLimiter
();
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment