Webhook stuff works

This commit is contained in:
Atridad Lahiji 2023-11-22 14:27:15 -07:00
parent 159babe918
commit dd0172cd44
No known key found for this signature in database
9 changed files with 463 additions and 109 deletions

6
.dockerignore Normal file
View file

@ -0,0 +1,6 @@
node_modules
/.cache
/build
/public/build
.env

15
.github/workflows/fly.yml vendored Normal file
View file

@ -0,0 +1,15 @@
name: Fly Deploy
on:
push:
branches:
- master
jobs:
deploy:
name: Deploy app
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: superfly/flyctl-actions/setup-flyctl@master
- run: flyctl deploy --remote-only
env:
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}

1
.npmrc Normal file
View file

@ -0,0 +1 @@
auto-install-peers=true

49
Dockerfile Normal file
View file

@ -0,0 +1,49 @@
# syntax = docker/dockerfile:1
# Adjust NODE_VERSION as desired
ARG NODE_VERSION=18.14.2
FROM node:${NODE_VERSION}-slim as base
LABEL fly_launch_runtime="Remix"
# Remix app lives here
WORKDIR /app
# Set production environment
ENV NODE_ENV="production"
# Install pnpm
ARG PNPM_VERSION=8.9.2
RUN npm install -g pnpm@$PNPM_VERSION
# Throw-away build stage to reduce size of final image
FROM base as build
# Install packages needed to build node modules
RUN apt-get update -qq && \
apt-get install -y build-essential pkg-config python-is-python3
# Install node modules
COPY --link package.json pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile --prod=false
# Copy application code
COPY --link . .
# Build application
RUN pnpm run build
# Remove development dependencies
RUN pnpm prune --prod
# Final stage for app image
FROM base
# Copy built application
COPY --from=build /app /app
# Start the server by default, this can be overwritten at runtime
EXPOSE 3000
CMD [ "pnpm", "run", "start" ]

View file

@ -0,0 +1,79 @@
import { ActionFunctionArgs, json } from "@remix-run/node";
import { Webhook } from "svix";
import { WebhookEvent } from "@clerk/remix/api.server";
import {
onUserCreatedHandler,
onUserDeletedHandler,
} from "~/services/webhookhelpers.server";
export async function action({ request, params, context }: ActionFunctionArgs) {
// Get the headers
const headerPayload = request.headers;
const svix_id = headerPayload.get("svix-id");
const svix_timestamp = headerPayload.get("svix-timestamp");
const svix_signature = headerPayload.get("svix-signature");
// If there are no headers, error out
if (!svix_id || !svix_timestamp || !svix_signature) {
return new Response("Error occured -- no svix headers", {
status: 400,
});
}
// Get the body
const body = JSON.stringify(await request.json());
// Create a new SVIX instance with your secret.
const wh = new Webhook(process.env.CLERK_WEBHOOK_SIGNING_SECRET!);
let evt: WebhookEvent;
// Verify the payload with the headers
try {
evt = wh.verify(body, {
"svix-id": svix_id,
"svix-timestamp": svix_timestamp,
"svix-signature": svix_signature,
}) as WebhookEvent;
} catch (err) {
console.error("Error verifying webhook:", err);
return new Response("Error occured", {
status: 400,
});
}
// Get the ID and type
const { id } = evt.data;
const eventType = evt.type;
let success = false;
switch (eventType) {
case "user.created":
success = await onUserCreatedHandler(id);
if (success) {
return json(
{ result: "USER CREATED" },
{ status: 200, statusText: "USER CREATED" }
);
} else {
return json(
{ result: "USER WITH THIS ID NOT FOUND" },
{ status: 404, statusText: "USER WITH THIS ID NOT FOUND" }
);
}
case "user.deleted":
success = await onUserDeletedHandler(id);
return json(
{ result: "USER DELETED" },
{ status: 200, statusText: "USER DELETED" }
);
default:
return json(
{ result: "INVALID WEBHOOK EVENT TYPE" },
{ status: 400, statusText: "INVALID WEBHOOK EVENT TYPE" }
);
}
}

View file

@ -0,0 +1,44 @@
import { eq } from "drizzle-orm";
import { db } from "./db.server";
import { rooms } from "./schema";
export const onUserDeletedHandler = async (userId: string | undefined) => {
if (!userId) {
return false;
}
try {
await db.delete(rooms).where(eq(rooms.userId, userId));
return true;
} catch (error) {
return false;
}
};
export const onUserCreatedHandler = async (userId: string | undefined) => {
if (!userId) {
return false;
}
const userUpdateResponse = await fetch(
`https://api.clerk.com/v1/users/${userId}/metadata`,
{
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.CLERK_SECRET_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
public_metadata: {
isVIP: false,
isAdmin: false,
},
private_metadata: {},
unsafe_metadata: {},
}),
}
);
return userUpdateResponse.ok;
};

17
fly.toml Normal file
View file

@ -0,0 +1,17 @@
# fly.toml app configuration file generated for sprintpadawan on 2023-11-22T13:18:40-07:00
#
# See https://fly.io/docs/reference/configuration/ for information about how to use this file.
#
app = "sprintpadawan"
primary_region = "sea"
[build]
[http_service]
internal_port = 3000
force_https = true
auto_stop_machines = true
auto_start_machines = true
min_machines_running = 0
processes = ["app"]

View file

@ -14,11 +14,11 @@
"@clerk/remix": "^3.1.5", "@clerk/remix": "^3.1.5",
"@libsql/client": "0.4.0-pre.2", "@libsql/client": "0.4.0-pre.2",
"@paralleldrive/cuid2": "^2.2.2", "@paralleldrive/cuid2": "^2.2.2",
"@remix-run/css-bundle": "^2.3.0", "@remix-run/css-bundle": "^2.3.1",
"@remix-run/node": "^2.3.0", "@remix-run/node": "^2.3.1",
"@remix-run/react": "^2.3.0", "@remix-run/react": "^2.3.1",
"@remix-run/serve": "^2.3.0", "@remix-run/serve": "^2.3.1",
"ably": "1.2.47", "ably": "1.2.48",
"csv42": "^5.0.0", "csv42": "^5.0.0",
"drizzle-orm": "^0.29.0", "drizzle-orm": "^0.29.0",
"ioredis": "^5.3.2", "ioredis": "^5.3.2",
@ -26,13 +26,15 @@
"lucide-react": "^0.292.0", "lucide-react": "^0.292.0",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"remix-utils": "^7.1.0" "remix-utils": "^7.1.0",
"svix": "^1.14.0"
}, },
"devDependencies": { "devDependencies": {
"@remix-run/dev": "^2.3.0", "@flydotio/dockerfile": "^0.4.11",
"@remix-run/eslint-config": "^2.3.0", "@remix-run/dev": "^2.3.1",
"@remix-run/eslint-config": "^2.3.1",
"@types/react": "^18.2.38", "@types/react": "^18.2.38",
"@types/react-dom": "^18.2.16", "@types/react-dom": "^18.2.17",
"better-sqlite3": "^9.1.1", "better-sqlite3": "^9.1.1",
"daisyui": "^4.4.2", "daisyui": "^4.4.2",
"dotenv": "^16.3.1", "dotenv": "^16.3.1",

341
pnpm-lock.yaml generated
View file

@ -1,13 +1,13 @@
lockfileVersion: '6.0' lockfileVersion: '6.0'
settings: settings:
autoInstallPeers: false autoInstallPeers: true
excludeLinksFromLockfile: false excludeLinksFromLockfile: false
dependencies: dependencies:
'@clerk/remix': '@clerk/remix':
specifier: ^3.1.5 specifier: ^3.1.5
version: 3.1.5(@remix-run/react@2.3.0)(react-dom@18.2.0)(react@18.2.0) version: 3.1.5(@remix-run/react@2.3.1)(@remix-run/server-runtime@2.3.1)(react-dom@18.2.0)(react@18.2.0)
'@libsql/client': '@libsql/client':
specifier: 0.4.0-pre.2 specifier: 0.4.0-pre.2
version: 0.4.0-pre.2 version: 0.4.0-pre.2
@ -15,20 +15,20 @@ dependencies:
specifier: ^2.2.2 specifier: ^2.2.2
version: 2.2.2 version: 2.2.2
'@remix-run/css-bundle': '@remix-run/css-bundle':
specifier: ^2.3.0 specifier: ^2.3.1
version: 2.3.0 version: 2.3.1
'@remix-run/node': '@remix-run/node':
specifier: ^2.3.0 specifier: ^2.3.1
version: 2.3.0(typescript@5.3.2) version: 2.3.1(typescript@5.3.2)
'@remix-run/react': '@remix-run/react':
specifier: ^2.3.0 specifier: ^2.3.1
version: 2.3.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) version: 2.3.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2)
'@remix-run/serve': '@remix-run/serve':
specifier: ^2.3.0 specifier: ^2.3.1
version: 2.3.0(typescript@5.3.2) version: 2.3.1(typescript@5.3.2)
ably: ably:
specifier: 1.2.47 specifier: 1.2.48
version: 1.2.47(react-dom@18.2.0)(react@18.2.0) version: 1.2.48(react-dom@18.2.0)(react@18.2.0)
csv42: csv42:
specifier: ^5.0.0 specifier: ^5.0.0
version: 5.0.0 version: 5.0.0
@ -52,27 +52,33 @@ dependencies:
version: 18.2.0(react@18.2.0) version: 18.2.0(react@18.2.0)
remix-utils: remix-utils:
specifier: ^7.1.0 specifier: ^7.1.0
version: 7.1.0(@remix-run/node@2.3.0)(@remix-run/react@2.3.0)(react@18.2.0) version: 7.1.0(@remix-run/node@2.3.1)(@remix-run/react@2.3.1)(react@18.2.0)
svix:
specifier: ^1.14.0
version: 1.14.0
devDependencies: devDependencies:
'@flydotio/dockerfile':
specifier: ^0.4.11
version: 0.4.11
'@remix-run/dev': '@remix-run/dev':
specifier: ^2.3.0 specifier: ^2.3.1
version: 2.3.0(@remix-run/serve@2.3.0)(typescript@5.3.2) version: 2.3.1(@remix-run/serve@2.3.1)(typescript@5.3.2)
'@remix-run/eslint-config': '@remix-run/eslint-config':
specifier: ^2.3.0 specifier: ^2.3.1
version: 2.3.0(eslint@8.54.0)(react@18.2.0)(typescript@5.3.2) version: 2.3.1(eslint@8.54.0)(react@18.2.0)(typescript@5.3.2)
'@types/react': '@types/react':
specifier: ^18.2.38 specifier: ^18.2.38
version: 18.2.38 version: 18.2.38
'@types/react-dom': '@types/react-dom':
specifier: ^18.2.16 specifier: ^18.2.17
version: 18.2.16 version: 18.2.17
better-sqlite3: better-sqlite3:
specifier: ^9.1.1 specifier: ^9.1.1
version: 9.1.1 version: 9.1.1
daisyui: daisyui:
specifier: ^4.4.2 specifier: ^4.4.2
version: 4.4.2 version: 4.4.2(postcss@8.4.31)
dotenv: dotenv:
specifier: ^16.3.1 specifier: ^16.3.1
version: 16.3.1 version: 16.3.1
@ -548,7 +554,7 @@ packages:
tslib: 2.4.1 tslib: 2.4.1
dev: false dev: false
/@clerk/remix@3.1.5(@remix-run/react@2.3.0)(react-dom@18.2.0)(react@18.2.0): /@clerk/remix@3.1.5(@remix-run/react@2.3.1)(@remix-run/server-runtime@2.3.1)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-SWacZIwm/2zyZjsN3I1/DDYo+yoQ2B3BkcwEHwkGCLMkaJwipoS6nQtD04cr/RGbzrlBETBGR7gOUdEaIAtKOw==} resolution: {integrity: sha512-SWacZIwm/2zyZjsN3I1/DDYo+yoQ2B3BkcwEHwkGCLMkaJwipoS6nQtD04cr/RGbzrlBETBGR7gOUdEaIAtKOw==}
engines: {node: '>=18.0.0'} engines: {node: '>=18.0.0'}
peerDependencies: peerDependencies:
@ -561,7 +567,8 @@ packages:
'@clerk/clerk-react': 4.28.0(react@18.2.0) '@clerk/clerk-react': 4.28.0(react@18.2.0)
'@clerk/shared': 1.1.0(react@18.2.0) '@clerk/shared': 1.1.0(react@18.2.0)
'@clerk/types': 3.58.0 '@clerk/types': 3.58.0
'@remix-run/react': 2.3.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) '@remix-run/react': 2.3.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2)
'@remix-run/server-runtime': 2.3.1(typescript@5.3.2)
cookie: 0.5.0 cookie: 0.5.0
react: 18.2.0 react: 18.2.0
react-dom: 18.2.0(react@18.2.0) react-dom: 18.2.0(react@18.2.0)
@ -1316,6 +1323,18 @@ packages:
engines: {node: '>=14'} engines: {node: '>=14'}
dev: true dev: true
/@flydotio/dockerfile@0.4.11:
resolution: {integrity: sha512-L52UAfrOhmAn3T4TxpeRofQOSO+Kctg+uraB4nLzo4mvvh+4Z7HYxSi7Dnq0Kirz+xx6fDIc4OMNT1EdaORecA==}
engines: {node: '>=16.0.0'}
hasBin: true
dependencies:
chalk: 5.3.0
diff: 5.1.0
ejs: 3.1.9
shell-quote: 1.8.1
yargs: 17.7.2
dev: true
/@humanwhocodes/config-array@0.11.13: /@humanwhocodes/config-array@0.11.13:
resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==}
engines: {node: '>=10.10.0'} engines: {node: '>=10.10.0'}
@ -1630,17 +1649,17 @@ packages:
dev: true dev: true
optional: true optional: true
/@remix-run/css-bundle@2.3.0: /@remix-run/css-bundle@2.3.1:
resolution: {integrity: sha512-+qjS0bk716XYEtcwrCMgFkZkreOHQN70L5+ItQyNyIxeTbuwBuBzu7239p6Scg9I9A3nV+NtxpKYHzL/qB1XKA==} resolution: {integrity: sha512-07d40dZz3iS/rm2xyFzmvGylJ5K6vXbb0wCnO+60JBQGlKKZGR4O4u027EmgUT32tJP/Xryf6rpnR3QTjDxozg==}
engines: {node: '>=18.0.0'} engines: {node: '>=18.0.0'}
dev: false dev: false
/@remix-run/dev@2.3.0(@remix-run/serve@2.3.0)(typescript@5.3.2): /@remix-run/dev@2.3.1(@remix-run/serve@2.3.1)(typescript@5.3.2):
resolution: {integrity: sha512-Eno0XHyIKo5GyzN4OAwNkgkyl4H1mLWbqeVUA8T5HmVDj+8qJLIcYeayS2BmA1KYAHJBiy5ufAGi2MpaXMjKww==} resolution: {integrity: sha512-Qo6bbdDUHvg6+LiC+8paA40hWVRPBqYCoOse9hEZHRHNxY2r5JsF5RbXldx/70wtT1gJkp+k5z3MjVxkYUsqEw==}
engines: {node: '>=18.0.0'} engines: {node: '>=18.0.0'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
'@remix-run/serve': ^2.3.0 '@remix-run/serve': ^2.3.1
typescript: ^5.1.0 typescript: ^5.1.0
vite: ^4.4.9 || ^5.0.0 vite: ^4.4.9 || ^5.0.0
peerDependenciesMeta: peerDependenciesMeta:
@ -1661,10 +1680,10 @@ packages:
'@babel/types': 7.23.4 '@babel/types': 7.23.4
'@mdx-js/mdx': 2.3.0 '@mdx-js/mdx': 2.3.0
'@npmcli/package-json': 4.0.1 '@npmcli/package-json': 4.0.1
'@remix-run/node': 2.3.0(typescript@5.3.2) '@remix-run/node': 2.3.1(typescript@5.3.2)
'@remix-run/router': 1.12.0-pre.0 '@remix-run/router': 1.13.0
'@remix-run/serve': 2.3.0(typescript@5.3.2) '@remix-run/serve': 2.3.1(typescript@5.3.2)
'@remix-run/server-runtime': 2.3.0(typescript@5.3.2) '@remix-run/server-runtime': 2.3.1(typescript@5.3.2)
'@types/mdx': 2.0.10 '@types/mdx': 2.0.10
'@vanilla-extract/integration': 6.2.4 '@vanilla-extract/integration': 6.2.4
arg: 5.0.2 arg: 5.0.2
@ -1725,8 +1744,8 @@ packages:
- utf-8-validate - utf-8-validate
dev: true dev: true
/@remix-run/eslint-config@2.3.0(eslint@8.54.0)(react@18.2.0)(typescript@5.3.2): /@remix-run/eslint-config@2.3.1(eslint@8.54.0)(react@18.2.0)(typescript@5.3.2):
resolution: {integrity: sha512-iyuNO7tRjevLjwGH4nLv/6g5NROhUXIQHTNjTUhQjEkHac4/kp3EOnnQEtGmMUfLruTyz6OoOJQzTkT3l14VvQ==} resolution: {integrity: sha512-nSPsgsEz6e3UDh2cDNq+tIoOf4yBnteuLyYGXyeOlW14oQoC4k5apfsjGAb3nphZtTNvTKP2qJhyYmje8Mr3Zw==}
engines: {node: '>=18.0.0'} engines: {node: '>=18.0.0'}
peerDependencies: peerDependencies:
eslint: ^8.0.0 eslint: ^8.0.0
@ -1739,7 +1758,7 @@ packages:
'@babel/core': 7.23.3 '@babel/core': 7.23.3
'@babel/eslint-parser': 7.23.3(@babel/core@7.23.3)(eslint@8.54.0) '@babel/eslint-parser': 7.23.3(@babel/core@7.23.3)(eslint@8.54.0)
'@babel/preset-react': 7.23.3(@babel/core@7.23.3) '@babel/preset-react': 7.23.3(@babel/core@7.23.3)
'@rushstack/eslint-patch': 1.5.1 '@rushstack/eslint-patch': 1.6.0
'@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.54.0)(typescript@5.3.2) '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.54.0)(typescript@5.3.2)
'@typescript-eslint/parser': 5.62.0(eslint@8.54.0)(typescript@5.3.2) '@typescript-eslint/parser': 5.62.0(eslint@8.54.0)(typescript@5.3.2)
eslint: 8.54.0 eslint: 8.54.0
@ -1761,8 +1780,8 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@remix-run/express@2.3.0(express@4.18.2)(typescript@5.3.2): /@remix-run/express@2.3.1(express@4.18.2)(typescript@5.3.2):
resolution: {integrity: sha512-XSIR5H3YQ/anitOrp0m8PI7wqJ1Rri7LS2sHkwl8N9i+TKmZLkMAqg8SoSIaaxl/rMlA9gRCSC1msOHKw5xvzw==} resolution: {integrity: sha512-6gh+3InqBWkWRmFQtyE25PRD5bCYKBBgE0DBtqcI165otBuLK/SQul003n/lu6EateenT1RuQZgLjaDGX5UlyA==}
engines: {node: '>=18.0.0'} engines: {node: '>=18.0.0'}
peerDependencies: peerDependencies:
express: ^4.17.1 express: ^4.17.1
@ -1771,12 +1790,12 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@remix-run/node': 2.3.0(typescript@5.3.2) '@remix-run/node': 2.3.1(typescript@5.3.2)
express: 4.18.2 express: 4.18.2
typescript: 5.3.2 typescript: 5.3.2
/@remix-run/node@2.3.0(typescript@5.3.2): /@remix-run/node@2.3.1(typescript@5.3.2):
resolution: {integrity: sha512-WQybWc1EWPLMD/btDtchVrhoLvz/ek6MB0gr2cV2N3Sxgn1VaJmpsN3+sUA5lK8vR2S/kOmGun2Ut3tKi8TKHg==} resolution: {integrity: sha512-dXoNrmLrPblUM8UjgPzq3YBLXEGzm3HwtIt0iob1SlgKx0I5ii40JG0IXHDTI9f+fN9f/Ufx7Cjp0MGcUVXWVw==}
engines: {node: '>=18.0.0'} engines: {node: '>=18.0.0'}
peerDependencies: peerDependencies:
typescript: ^5.1.0 typescript: ^5.1.0
@ -1784,7 +1803,7 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@remix-run/server-runtime': 2.3.0(typescript@5.3.2) '@remix-run/server-runtime': 2.3.1(typescript@5.3.2)
'@remix-run/web-fetch': 4.4.1 '@remix-run/web-fetch': 4.4.1
'@remix-run/web-file': 3.1.0 '@remix-run/web-file': 3.1.0
'@remix-run/web-stream': 1.1.0 '@remix-run/web-stream': 1.1.0
@ -1794,8 +1813,8 @@ packages:
stream-slice: 0.1.2 stream-slice: 0.1.2
typescript: 5.3.2 typescript: 5.3.2
/@remix-run/react@2.3.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): /@remix-run/react@2.3.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2):
resolution: {integrity: sha512-8sLgNw0wbNx0Gir0CKCqJVlQ8ipKMvTfUAY/sra/jiAkUSztz1HuGXNTV+4yrP9786puiMp9mB+bJqD32SAEPg==} resolution: {integrity: sha512-7NozlZtbL5jtRGJhSrMydUGJGVp8kSjnv7APcsDojLbRHZJsLw8B0eXlVqKDg2M+WfRcBkuTI/ipgwIyLPRRyw==}
engines: {node: '>=18.0.0'} engines: {node: '>=18.0.0'}
peerDependencies: peerDependencies:
react: ^18.0.0 react: ^18.0.0
@ -1805,30 +1824,25 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@remix-run/router': 1.12.0 '@remix-run/router': 1.13.0
'@remix-run/server-runtime': 2.3.0(typescript@5.3.2) '@remix-run/server-runtime': 2.3.1(typescript@5.3.2)
react: 18.2.0 react: 18.2.0
react-dom: 18.2.0(react@18.2.0) react-dom: 18.2.0(react@18.2.0)
react-router-dom: 6.19.0(react-dom@18.2.0)(react@18.2.0) react-router-dom: 6.20.0(react-dom@18.2.0)(react@18.2.0)
typescript: 5.3.2 typescript: 5.3.2
dev: false dev: false
/@remix-run/router@1.12.0: /@remix-run/router@1.13.0:
resolution: {integrity: sha512-2hXv036Bux90e1GXTWSMfNzfDDK8LA8JYEWfyHxzvwdp6GyoWEovKc9cotb3KCKmkdwsIBuFGX7ScTWyiHv7Eg==} resolution: {integrity: sha512-5dMOnVnefRsl4uRnAdoWjtVTdh8e6aZqgM4puy9nmEADH72ck+uXwzpJLEKE9Q6F8ZljNewLgmTfkxUrBdv4WA==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
/@remix-run/router@1.12.0-pre.0: /@remix-run/serve@2.3.1(typescript@5.3.2):
resolution: {integrity: sha512-+bBn9KqD2AC0pttSGydVFOZSsT0NqQ1+rGFwMTx9dRANk6oGxrPbKTDxLLikocscGzSL5przvcK4Uxfq8yU7BQ==} resolution: {integrity: sha512-jlV0zL2XoF/4DBcFkOfydvf+bdLhS0oIELu0SQJXiWWCrV2SNkBImLpCCtTl5roYlGphhaq3zsu9mzCE2+DsiQ==}
engines: {node: '>=14.0.0'}
dev: true
/@remix-run/serve@2.3.0(typescript@5.3.2):
resolution: {integrity: sha512-/Y1xpBlaA47e5Xmz3VxXfnIbK8yn0NzKVeuflVoyvEFK0lOzSpceHc079fADQr3vItWNBzzMaNRZSUSuLY/tQw==}
engines: {node: '>=18.0.0'} engines: {node: '>=18.0.0'}
hasBin: true hasBin: true
dependencies: dependencies:
'@remix-run/express': 2.3.0(express@4.18.2)(typescript@5.3.2) '@remix-run/express': 2.3.1(express@4.18.2)(typescript@5.3.2)
'@remix-run/node': 2.3.0(typescript@5.3.2) '@remix-run/node': 2.3.1(typescript@5.3.2)
chokidar: 3.5.3 chokidar: 3.5.3
compression: 1.7.4 compression: 1.7.4
express: 4.18.2 express: 4.18.2
@ -1839,8 +1853,8 @@ packages:
- supports-color - supports-color
- typescript - typescript
/@remix-run/server-runtime@2.3.0(typescript@5.3.2): /@remix-run/server-runtime@2.3.1(typescript@5.3.2):
resolution: {integrity: sha512-9BiRK7VPm5nt/aOlRmeROXWA8HKgqjvQy+f9NNpqvf3jj62EUl0h4eUdyqRj6nNh44I+0XUBG7ZQ2xXTrGJATw==} resolution: {integrity: sha512-ym1nfuYJKn5Vd4bqGIJbZMR1wh/A/qXSzOwqCrZxjdsAmb4YLUBnUAJFIoCRBrvcge92kXq/lXjGOFYf+qidZg==}
engines: {node: '>=18.0.0'} engines: {node: '>=18.0.0'}
peerDependencies: peerDependencies:
typescript: ^5.1.0 typescript: ^5.1.0
@ -1848,7 +1862,7 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@remix-run/router': 1.12.0 '@remix-run/router': 1.13.0
'@types/cookie': 0.5.4 '@types/cookie': 0.5.4
'@web3-storage/multipart-parser': 1.0.0 '@web3-storage/multipart-parser': 1.0.0
cookie: 0.5.0 cookie: 0.5.0
@ -1890,8 +1904,8 @@ packages:
dependencies: dependencies:
web-streams-polyfill: 3.2.1 web-streams-polyfill: 3.2.1
/@rushstack/eslint-patch@1.5.1: /@rushstack/eslint-patch@1.6.0:
resolution: {integrity: sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==} resolution: {integrity: sha512-2/U3GXA6YiPYQDLGwtGlnNgKYBSwCFIHf8Y9LUY5VATHdtbLlU0Y1R3QoBnT0aB4qv/BEiVVsj7LJXoQCgJ2vA==}
dev: true dev: true
/@sindresorhus/is@4.6.0: /@sindresorhus/is@4.6.0:
@ -1899,6 +1913,10 @@ packages:
engines: {node: '>=10'} engines: {node: '>=10'}
dev: false dev: false
/@stablelib/base64@1.0.1:
resolution: {integrity: sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==}
dev: false
/@szmarczak/http-timer@4.0.6: /@szmarczak/http-timer@4.0.6:
resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==}
engines: {node: '>=10'} engines: {node: '>=10'}
@ -1935,7 +1953,7 @@ packages:
dependencies: dependencies:
'@types/http-cache-semantics': 4.0.4 '@types/http-cache-semantics': 4.0.4
'@types/keyv': 3.1.4 '@types/keyv': 3.1.4
'@types/node': 20.9.3 '@types/node': 20.9.4
'@types/responselike': 1.0.3 '@types/responselike': 1.0.3
dev: false dev: false
@ -1979,7 +1997,7 @@ packages:
/@types/keyv@3.1.4: /@types/keyv@3.1.4:
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
dependencies: dependencies:
'@types/node': 20.9.3 '@types/node': 20.9.4
dev: false dev: false
/@types/mdast@3.0.15: /@types/mdast@3.0.15:
@ -1999,22 +2017,22 @@ packages:
/@types/node-fetch@2.6.9: /@types/node-fetch@2.6.9:
resolution: {integrity: sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==} resolution: {integrity: sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==}
dependencies: dependencies:
'@types/node': 20.9.3 '@types/node': 20.9.4
form-data: 4.0.0 form-data: 4.0.0
dev: false dev: false
/@types/node-forge@1.3.10: /@types/node-forge@1.3.10:
resolution: {integrity: sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw==} resolution: {integrity: sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw==}
dependencies: dependencies:
'@types/node': 20.9.3 '@types/node': 20.9.4
dev: true dev: true
/@types/node@16.18.6: /@types/node@16.18.6:
resolution: {integrity: sha512-vmYJF0REqDyyU0gviezF/KHq/fYaUbFhkcNbQCuPGFQj6VTbXuHZoxs/Y7mutWe73C8AC6l9fFu8mSYiBAqkGA==} resolution: {integrity: sha512-vmYJF0REqDyyU0gviezF/KHq/fYaUbFhkcNbQCuPGFQj6VTbXuHZoxs/Y7mutWe73C8AC6l9fFu8mSYiBAqkGA==}
dev: false dev: false
/@types/node@20.9.3: /@types/node@20.9.4:
resolution: {integrity: sha512-nk5wXLAXGBKfrhLB0cyHGbSqopS+nz0BUgZkUQqSHSSgdee0kssp1IAqlQOu333bW+gMNs2QREx7iynm19Abxw==} resolution: {integrity: sha512-wmyg8HUhcn6ACjsn8oKYjkN/zUzQeNtMy44weTJSM6p4MMzEOuKbA3OjJ267uPCOW7Xex9dyrNTful8XTQYoDA==}
dependencies: dependencies:
undici-types: 5.26.5 undici-types: 5.26.5
@ -2022,8 +2040,8 @@ packages:
resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==}
dev: true dev: true
/@types/react-dom@18.2.16: /@types/react-dom@18.2.17:
resolution: {integrity: sha512-766c37araZ9vxtYs25gvY2wNdFWsT2ZiUvOd0zMhTaoGj6B911N8CKQWgXXJoPMLF3J82thpRqQA7Rf3rBwyJw==} resolution: {integrity: sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==}
dependencies: dependencies:
'@types/react': 18.2.38 '@types/react': 18.2.38
dev: true dev: true
@ -2032,18 +2050,18 @@ packages:
resolution: {integrity: sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw==} resolution: {integrity: sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw==}
dependencies: dependencies:
'@types/prop-types': 15.7.11 '@types/prop-types': 15.7.11
'@types/scheduler': 0.16.7 '@types/scheduler': 0.16.8
csstype: 3.1.2 csstype: 3.1.2
dev: true dev: true
/@types/responselike@1.0.3: /@types/responselike@1.0.3:
resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==}
dependencies: dependencies:
'@types/node': 20.9.3 '@types/node': 20.9.4
dev: false dev: false
/@types/scheduler@0.16.7: /@types/scheduler@0.16.8:
resolution: {integrity: sha512-8g25Nl3AuB1KulTlSUsUhUo/oBgBU6XIXQ+XURpeioEbEJvkO7qI4vDfREv3vJYHHzqXjcAHvoJy4pTtSQNZtA==} resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==}
dev: true dev: true
/@types/semver@7.5.6: /@types/semver@7.5.6:
@ -2057,7 +2075,7 @@ packages:
/@types/ws@8.5.10: /@types/ws@8.5.10:
resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==}
dependencies: dependencies:
'@types/node': 20.9.3 '@types/node': 20.9.4
dev: false dev: false
/@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.54.0)(typescript@5.3.2): /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.54.0)(typescript@5.3.2):
@ -2257,8 +2275,8 @@ packages:
requiresBuild: true requiresBuild: true
optional: true optional: true
/ably@1.2.47(react-dom@18.2.0)(react@18.2.0): /ably@1.2.48(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-YaBr4qwRNBfb9Zb6Oolbng7oK0oDadZG0cWCOv+Wh4XOWi91JKWbcy82bzN1RKkFTT/rCFG7nZrXT5pkMroMLg==} resolution: {integrity: sha512-/4HaZR4lu5D60twKN6dQIunxtKJCfcz0a+fuiFWxgqgXMMTiyoChg+IARx1xBK1ZZL3UZ/xdrpml0WBAsu/ZJQ==}
engines: {node: '>=5.10.x'} engines: {node: '>=5.10.x'}
peerDependencies: peerDependencies:
react: '>=16.8.0' react: '>=16.8.0'
@ -2497,6 +2515,10 @@ packages:
hasBin: true hasBin: true
dev: true dev: true
/async@3.2.5:
resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==}
dev: true
/asynciterator.prototype@1.0.0: /asynciterator.prototype@1.0.0:
resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==}
dependencies: dependencies:
@ -2627,8 +2649,8 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true hasBin: true
dependencies: dependencies:
caniuse-lite: 1.0.30001563 caniuse-lite: 1.0.30001564
electron-to-chromium: 1.4.590 electron-to-chromium: 1.4.591
node-releases: 2.0.13 node-releases: 2.0.13
update-browserslist-db: 1.0.13(browserslist@4.22.1) update-browserslist-db: 1.0.13(browserslist@4.22.1)
dev: true dev: true
@ -2719,8 +2741,8 @@ packages:
engines: {node: '>=14.16'} engines: {node: '>=14.16'}
dev: true dev: true
/caniuse-lite@1.0.30001563: /caniuse-lite@1.0.30001564:
resolution: {integrity: sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==} resolution: {integrity: sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg==}
dev: true dev: true
/capnp-ts@0.7.0: /capnp-ts@0.7.0:
@ -2824,6 +2846,15 @@ packages:
engines: {node: '>=6'} engines: {node: '>=6'}
dev: true dev: true
/cliui@8.0.1:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
dependencies:
string-width: 4.2.3
strip-ansi: 6.0.1
wrap-ansi: 7.0.0
dev: true
/clone-response@1.0.3: /clone-response@1.0.3:
resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==}
dependencies: dependencies:
@ -2986,7 +3017,7 @@ packages:
type: 1.2.0 type: 1.2.0
dev: true dev: true
/daisyui@4.4.2: /daisyui@4.4.2(postcss@8.4.31):
resolution: {integrity: sha512-Ecg5loskj9dkaAnTSK5Xn5jb24TqDlQIg/NJ025jCkw2S/zw12btjvLgY2Sv5Ws1DFVoVBRs3XYXyojZG7zVnw==} resolution: {integrity: sha512-Ecg5loskj9dkaAnTSK5Xn5jb24TqDlQIg/NJ025jCkw2S/zw12btjvLgY2Sv5Ws1DFVoVBRs3XYXyojZG7zVnw==}
engines: {node: '>=16.9.0'} engines: {node: '>=16.9.0'}
dependencies: dependencies:
@ -3238,7 +3269,7 @@ packages:
hanji: 0.0.5 hanji: 0.0.5
json-diff: 0.9.0 json-diff: 0.9.0
minimatch: 7.4.6 minimatch: 7.4.6
wrangler: 3.17.0 wrangler: 3.17.1
zod: 3.22.4 zod: 3.22.4
transitivePeerDependencies: transitivePeerDependencies:
- bufferutil - bufferutil
@ -3328,8 +3359,16 @@ packages:
/ee-first@1.1.1: /ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
/electron-to-chromium@1.4.590: /ejs@3.1.9:
resolution: {integrity: sha512-hohItzsQcG7/FBsviCYMtQwUSWvVF7NVqPOnJCErWsAshsP/CR2LAXdmq276RbESNdhxiAq5/vRo1g2pxGXVww==} resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==}
engines: {node: '>=0.10.0'}
hasBin: true
dependencies:
jake: 10.8.7
dev: true
/electron-to-chromium@1.4.591:
resolution: {integrity: sha512-vLv/P7wwAPKQoY+CVMyyI6rsTp+A14KGtPXx92oz1FY41AAqa9l6Wkizcixg0LDuJgyeo8xgNN9+9hsnGp66UA==}
dev: true dev: true
/emoji-regex@8.0.0: /emoji-regex@8.0.0:
@ -3485,6 +3524,10 @@ packages:
es6-symbol: 3.1.3 es6-symbol: 3.1.3
dev: true dev: true
/es6-promise@4.2.8:
resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==}
dev: false
/es6-symbol@3.1.3: /es6-symbol@3.1.3:
resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==}
dependencies: dependencies:
@ -4086,7 +4129,7 @@ packages:
resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==}
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
dependencies: dependencies:
'@types/node': 20.9.3 '@types/node': 20.9.4
require-like: 0.1.2 require-like: 0.1.2
dev: true dev: true
@ -4196,6 +4239,10 @@ packages:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
dev: true dev: true
/fast-sha256@1.3.0:
resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==}
dev: false
/fastparse@1.1.2: /fastparse@1.1.2:
resolution: {integrity: sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==} resolution: {integrity: sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==}
dev: true dev: true
@ -4230,6 +4277,12 @@ packages:
/file-uri-to-path@1.0.0: /file-uri-to-path@1.0.0:
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
/filelist@1.0.4:
resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
dependencies:
minimatch: 5.1.6
dev: true
/fill-range@7.0.1: /fill-range@7.0.1:
resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
engines: {node: '>=8'} engines: {node: '>=8'}
@ -4378,6 +4431,11 @@ packages:
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dev: true dev: true
/get-caller-file@2.0.5:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
dev: true
/get-intrinsic@1.2.2: /get-intrinsic@1.2.2:
resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==}
dependencies: dependencies:
@ -5028,6 +5086,17 @@ packages:
'@pkgjs/parseargs': 0.11.0 '@pkgjs/parseargs': 0.11.0
dev: true dev: true
/jake@10.8.7:
resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==}
engines: {node: '>=10'}
hasBin: true
dependencies:
async: 3.2.5
chalk: 4.1.2
filelist: 1.0.4
minimatch: 3.1.2
dev: true
/javascript-stringify@2.1.0: /javascript-stringify@2.1.0:
resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==}
dev: true dev: true
@ -5262,8 +5331,8 @@ packages:
engines: {node: '>=8'} engines: {node: '>=8'}
dev: false dev: false
/lru-cache@10.0.3: /lru-cache@10.1.0:
resolution: {integrity: sha512-B7gr+F6MkqB3uzINHXNctGieGsRTMwIBgxkp0yq/5BwcuDzD4A8wQpHQW6vDAm1uKSLQghmRdD9sKqf2vJ1cEg==} resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==}
engines: {node: 14 || >=16.14} engines: {node: 14 || >=16.14}
dev: true dev: true
@ -6323,7 +6392,7 @@ packages:
resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==}
engines: {node: '>=16 || 14 >=14.17'} engines: {node: '>=16 || 14 >=14.17'}
dependencies: dependencies:
lru-cache: 10.0.3 lru-cache: 10.1.0
minipass: 7.0.4 minipass: 7.0.4
dev: true dev: true
@ -6664,6 +6733,10 @@ packages:
dependencies: dependencies:
side-channel: 1.0.4 side-channel: 1.0.4
/querystringify@2.2.0:
resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
dev: false
/queue-microtask@1.2.3: /queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
dev: true dev: true
@ -6718,26 +6791,26 @@ packages:
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dev: true dev: true
/react-router-dom@6.19.0(react-dom@18.2.0)(react@18.2.0): /react-router-dom@6.20.0(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-N6dWlcgL2w0U5HZUUqU2wlmOrSb3ighJmtQ438SWbhB1yuLTXQ8yyTBMK3BSvVjp7gBtKurT554nCtMOgxCZmQ==} resolution: {integrity: sha512-CbcKjEyiSVpA6UtCHOIYLUYn/UJfwzp55va4yEfpk7JBN3GPqWfHrdLkAvNCcpXr8QoihcDMuk0dzWZxtlB/mQ==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
peerDependencies: peerDependencies:
react: '>=16.8' react: '>=16.8'
react-dom: '>=16.8' react-dom: '>=16.8'
dependencies: dependencies:
'@remix-run/router': 1.12.0 '@remix-run/router': 1.13.0
react: 18.2.0 react: 18.2.0
react-dom: 18.2.0(react@18.2.0) react-dom: 18.2.0(react@18.2.0)
react-router: 6.19.0(react@18.2.0) react-router: 6.20.0(react@18.2.0)
dev: false dev: false
/react-router@6.19.0(react@18.2.0): /react-router@6.20.0(react@18.2.0):
resolution: {integrity: sha512-0W63PKCZ7+OuQd7Tm+RbkI8kCLmn4GPjDbX61tWljPxWgqTKlEpeQUwPkT1DRjYhF8KSihK0hQpmhU4uxVMcdw==} resolution: {integrity: sha512-pVvzsSsgUxxtuNfTHC4IxjATs10UaAtvLGVSA1tbUE4GDaOSU1Esu2xF5nWLz7KPiMuW8BJWuPFdlGYJ7/rW0w==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
peerDependencies: peerDependencies:
react: '>=16.8' react: '>=16.8'
dependencies: dependencies:
'@remix-run/router': 1.12.0 '@remix-run/router': 1.13.0
react: 18.2.0 react: 18.2.0
dev: false dev: false
@ -6868,7 +6941,7 @@ packages:
unified: 10.1.2 unified: 10.1.2
dev: true dev: true
/remix-utils@7.1.0(@remix-run/node@2.3.0)(@remix-run/react@2.3.0)(react@18.2.0): /remix-utils@7.1.0(@remix-run/node@2.3.1)(@remix-run/react@2.3.1)(react@18.2.0):
resolution: {integrity: sha512-cceintceWvmNvgLLFeAUkWRcdWuOHGDLaWh0aeL0bLGWnMPBilIyT74Rira1az/ImS9owfh8tjLL4w/22AXJiA==} resolution: {integrity: sha512-cceintceWvmNvgLLFeAUkWRcdWuOHGDLaWh0aeL0bLGWnMPBilIyT74Rira1az/ImS9owfh8tjLL4w/22AXJiA==}
engines: {node: '>=18.0.0'} engines: {node: '>=18.0.0'}
peerDependencies: peerDependencies:
@ -6904,12 +6977,17 @@ packages:
zod: zod:
optional: true optional: true
dependencies: dependencies:
'@remix-run/node': 2.3.0(typescript@5.3.2) '@remix-run/node': 2.3.1(typescript@5.3.2)
'@remix-run/react': 2.3.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) '@remix-run/react': 2.3.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2)
react: 18.2.0 react: 18.2.0
type-fest: 4.8.2 type-fest: 4.8.2
dev: false dev: false
/require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
dev: true
/require-like@0.1.2: /require-like@0.1.2:
resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==}
dev: true dev: true
@ -6919,6 +6997,10 @@ packages:
engines: {node: '>=0.10.5'} engines: {node: '>=0.10.5'}
dev: true dev: true
/requires-port@1.0.0:
resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
dev: false
/resolve-alpn@1.2.1: /resolve-alpn@1.2.1:
resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
dev: false dev: false
@ -7148,6 +7230,10 @@ packages:
engines: {node: '>=8'} engines: {node: '>=8'}
dev: true dev: true
/shell-quote@1.8.1:
resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
dev: true
/side-channel@1.0.4: /side-channel@1.0.4:
resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
dependencies: dependencies:
@ -7441,6 +7527,27 @@ packages:
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
dev: true dev: true
/svix-fetch@3.0.0:
resolution: {integrity: sha512-rcADxEFhSqHbraZIsjyZNh4TF6V+koloX1OzZ+AQuObX9mZ2LIMhm1buZeuc5BIZPftZpJCMBsSiBaeszo9tRw==}
dependencies:
node-fetch: 2.7.0
whatwg-fetch: 3.6.19
transitivePeerDependencies:
- encoding
dev: false
/svix@1.14.0:
resolution: {integrity: sha512-FuavzkxHTDDVnFzvWmY/35P+1K5pLjJiuGiAH3YncmUnk6FAraZONzWqoBb+ucWsXCJisWvemAl4yMqu4WVNGg==}
dependencies:
'@stablelib/base64': 1.0.1
es6-promise: 4.2.8
fast-sha256: 1.3.0
svix-fetch: 3.0.0
url-parse: 1.5.10
transitivePeerDependencies:
- encoding
dev: false
/swr@2.2.0(react@18.2.0): /swr@2.2.0(react@18.2.0):
resolution: {integrity: sha512-AjqHOv2lAhkuUdIiBu9xbuettzAzWXmCEcLONNKJRba87WAefz8Ca9d6ds/SzrPc235n1IxWYdhJ2zF3MNUaoQ==} resolution: {integrity: sha512-AjqHOv2lAhkuUdIiBu9xbuettzAzWXmCEcLONNKJRba87WAefz8Ca9d6ds/SzrPc235n1IxWYdhJ2zF3MNUaoQ==}
peerDependencies: peerDependencies:
@ -7834,6 +7941,13 @@ packages:
punycode: 2.3.1 punycode: 2.3.1
dev: true dev: true
/url-parse@1.5.10:
resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
dependencies:
querystringify: 2.2.0
requires-port: 1.0.0
dev: false
/use-sync-external-store@1.2.0(react@18.2.0): /use-sync-external-store@1.2.0(react@18.2.0):
resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==}
peerDependencies: peerDependencies:
@ -7992,6 +8106,10 @@ packages:
/webidl-conversions@3.0.1: /webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
/whatwg-fetch@3.6.19:
resolution: {integrity: sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==}
dev: false
/whatwg-url@5.0.0: /whatwg-url@5.0.0:
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
dependencies: dependencies:
@ -8078,8 +8196,8 @@ packages:
'@cloudflare/workerd-windows-64': 1.20231030.0 '@cloudflare/workerd-windows-64': 1.20231030.0
dev: true dev: true
/wrangler@3.17.0: /wrangler@3.17.1:
resolution: {integrity: sha512-xMPB7mmGzAzeel5bFAKOIO7O+rIG1TT7+iRiu4RAjxPkCAWRAL79++zi7KJVFnyHzGh+PBF91ramBWH2m8VDUw==} resolution: {integrity: sha512-Pr9+/tjFkthzG63uoVm1NtVvgokT6p92fy1UsOgrntHyTu0pZMC1VJzG0NC8Vhs+z/+yTT8AqVV6AiJb3w8ZOQ==}
engines: {node: '>=16.17.0'} engines: {node: '>=16.17.0'}
hasBin: true hasBin: true
dependencies: dependencies:
@ -8160,6 +8278,11 @@ packages:
resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==} resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==}
dev: true dev: true
/y18n@5.0.8:
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
engines: {node: '>=10'}
dev: true
/yallist@3.1.1: /yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
dev: true dev: true
@ -8172,6 +8295,24 @@ packages:
engines: {node: '>= 14'} engines: {node: '>= 14'}
dev: true dev: true
/yargs-parser@21.1.1:
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
engines: {node: '>=12'}
dev: true
/yargs@17.7.2:
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
engines: {node: '>=12'}
dependencies:
cliui: 8.0.1
escalade: 3.1.1
get-caller-file: 2.0.5
require-directory: 2.1.1
string-width: 4.2.3
y18n: 5.0.8
yargs-parser: 21.1.1
dev: true
/yocto-queue@0.1.0: /yocto-queue@0.1.0:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'} engines: {node: '>=10'}