1
mirror of https://github.com/jakejarvis/jarv.is.git synced 2025-04-26 09:05:22 -04:00

migrated to supabase postgres

This commit is contained in:
Jake Jarvis 2024-02-07 14:55:16 -05:00
parent 5b0c126ffc
commit 1a6ac7f483
Signed by: jake
SSH Key Fingerprint: SHA256:nCkvAjYA6XaSPUqc4TfbBQTpzr8Xj7ritg/sGInCdkc
9 changed files with 183 additions and 311 deletions

View File

@ -1,10 +1,10 @@
AIRTABLE_API_KEY=
AIRTABLE_BASE=
DATABASE_URL=
DIRECT_URL=
GH_PUBLIC_TOKEN=
HCAPTCHA_SECRET_KEY=
NEXT_PUBLIC_HCAPTCHA_SITE_KEY=
POSTGRES_URL=
POSTGRES_URL_NON_POOLING=
SPOTIFY_CLIENT_ID=
SPOTIFY_CLIENT_SECRET=
SPOTIFY_REFRESH_TOKEN=

1
.gitignore vendored
View File

@ -29,4 +29,3 @@ yarn.lock
# vercel
.vercel
.neon

View File

@ -5,7 +5,7 @@
[![Licensed under CC-BY-4.0](https://img.shields.io/badge/license-CC--BY--4.0-fb7828?logo=creative-commons&logoColor=white)](LICENSE)
[![GitHub repo size](https://img.shields.io/github/repo-size/jakejarvis/jarv.is?color=009cdf&label=repo%20size&logo=git&logoColor=white)](https://github.com/jakejarvis/jarv.is)
My humble abode on the World Wide Web, created and deployed using [Next.js](https://nextjs.org/), [Stitches](https://stitches.dev/), [Prisma](https://www.prisma.io/), [Vercel](https://vercel.com/), [Neon](https://neon.tech/), [and more](https://jarv.is/humans.txt).
My humble abode on the World Wide Web, created and deployed using [Next.js](https://nextjs.org/), [Stitches](https://stitches.dev/), [Prisma](https://www.prisma.io/), [Vercel](https://vercel.com/), [Supabase](https://supabase.com/), [and more](https://jarv.is/humans.txt).
I keep an ongoing list of [post ideas](https://github.com/jakejarvis/jarv.is/issues/1) and [coding to-dos](https://github.com/jakejarvis/jarv.is/issues/714) as issues in this repo. Outside contributions, improvements, and/or corrections are welcome too!

View File

@ -1,30 +1,18 @@
import { PrismaClient } from "@prisma/client";
import { PrismaNeon } from "@prisma/adapter-neon";
import { Pool, neonConfig } from "@neondatabase/serverless";
import ws from "ws";
// https://www.prisma.io/blog/serverless-database-drivers-KML1ehXORxZV#use-neon-with-neondatabaseserverless
neonConfig.webSocketConstructor = ws;
// creating PrismaClient here prevents next.js from starting too many concurrent prisma instances and exhausting the
// number of connection pools available (especially when hot reloading from `next dev`).
// https://www.prisma.io/docs/guides/other/troubleshooting-orm/help-articles/nextjs-prisma-client-dev-practices
const prismaClientSingleton = () => {
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
ssl: true,
});
const adapter = new PrismaNeon(pool);
return new PrismaClient({ adapter });
return new PrismaClient();
};
type PrismaClientSingleton = ReturnType<typeof prismaClientSingleton>;
declare global {
// eslint-disable-next-line no-var
var prisma: undefined | ReturnType<typeof prismaClientSingleton>;
}
const globalForPrisma = globalThis as unknown as {
prisma: PrismaClientSingleton | undefined;
};
export const prisma = globalThis.prisma ?? prismaClientSingleton();
export const prisma = globalForPrisma.prisma ?? prismaClientSingleton();
if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma;
if (process.env.NODE_ENV !== "production") globalThis.prisma = prisma;

View File

@ -20,12 +20,10 @@
"dependencies": {
"@giscus/react": "^2.4.0",
"@hcaptcha/react-hcaptcha": "^1.9.3",
"@neondatabase/serverless": "^0.6.1",
"@novnc/novnc": "1.4.0",
"@octokit/graphql": "^7.0.2",
"@octokit/graphql-schema": "^14.47.1",
"@prisma/adapter-neon": "^5.8.1",
"@prisma/client": "^5.8.1",
"@octokit/graphql-schema": "^14.54.0",
"@prisma/client": "^5.9.1",
"@react-spring/web": "^9.7.3",
"@stitches/react": "1.3.1-1",
"@vercel/edge": "^1.1.1",
@ -36,7 +34,7 @@
"fathom-client": "^3.6.0",
"feed": "^4.2.2",
"formik": "^2.4.5",
"geist": "^1.2.1",
"geist": "^1.2.2",
"gray-matter": "^4.0.3",
"next": "14.1.0",
"next-mdx-remote": "^4.4.1",
@ -44,16 +42,16 @@
"obj-str": "^1.1.0",
"p-map": "^7.0.1",
"p-memoize": "^7.1.1",
"polished": "^4.2.2",
"polished": "^4.3.1",
"prop-types": "^15.8.1",
"query-string": "^8.1.0",
"query-string": "^8.2.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-error-boundary": "^4.0.12",
"react-frame-component": "^5.2.6",
"react-icons": "^5.0.1",
"react-innertext": "^1.1.5",
"react-intersection-observer": "^9.5.3",
"react-intersection-observer": "^9.7.0",
"react-is": "18.2.0",
"react-player": "^2.14.1",
"react-textarea-autosize": "^8.5.3",
@ -70,31 +68,29 @@
"sitemap": "^7.1.1",
"stitches-normalize": "^3.0.1",
"swr": "^2.2.4",
"unified": "^11.0.4",
"ws": "^8.16.0"
"unified": "^11.0.4"
},
"devDependencies": {
"@jakejarvis/eslint-config": "^3.1.0",
"@types/comma-number": "^2.1.2",
"@types/node": "^20.11.5",
"@types/node": "^20.11.16",
"@types/novnc__novnc": "^1.3.4",
"@types/prop-types": "^15.7.11",
"@types/react": "^18.2.48",
"@types/react-dom": "^18.2.18",
"@types/react": "^18.2.55",
"@types/react-dom": "^18.2.19",
"@types/react-is": "^18.2.4",
"@types/uglify-js": "^3.17.4",
"@types/ws": "^8.5.10",
"@typescript-eslint/eslint-plugin": "^6.19.0",
"@typescript-eslint/parser": "^6.19.0",
"@typescript-eslint/eslint-plugin": "^6.21.0",
"@typescript-eslint/parser": "^6.21.0",
"cross-env": "^7.0.3",
"eslint": "~8.56.0",
"eslint-config-next": "14.1.0",
"eslint-config-prettier": "~9.1.0",
"eslint-plugin-mdx": "~3.1.5",
"eslint-plugin-prettier": "~5.1.3",
"lint-staged": "^15.2.0",
"prettier": "^3.2.4",
"prisma": "^5.8.1",
"lint-staged": "^15.2.2",
"prettier": "^3.2.5",
"prisma": "^5.9.1",
"simple-git-hooks": "^2.9.0",
"typescript": "^5.3.3",
"uglify-js": "^3.17.4"
@ -117,9 +113,9 @@
"eslint"
]
},
"packageManager": "pnpm@8.14.1",
"packageManager": "pnpm@8.15.1",
"volta": {
"node": "20.11.0",
"pnpm": "8.14.1"
"pnpm": "8.15.1"
}
}

View File

@ -48,8 +48,9 @@ const Privacy = () => {
<p>
A very simple hit counter on each blog post tallies an aggregate number of pageviews (i.e.{" "}
<CodeInline>hits = hits + 1</CodeInline>) in a <Link href="https://neon.tech/">Neon Postgres</Link> database.
Individual views and identifying (or non-identifying) details are <strong>never stored or logged</strong>.
<CodeInline>hits = hits + 1</CodeInline>) in a <Link href="https://supabase.com/">Supabase Postgres</Link>{" "}
database. Individual views and identifying (or non-identifying) details are{" "}
<strong>never stored or logged</strong>.
</p>
<p>

410
pnpm-lock.yaml generated
View File

@ -11,9 +11,6 @@ dependencies:
'@hcaptcha/react-hcaptcha':
specifier: ^1.9.3
version: 1.9.3(react-dom@18.2.0)(react@18.2.0)
'@neondatabase/serverless':
specifier: ^0.6.1
version: 0.6.1
'@novnc/novnc':
specifier: 1.4.0
version: 1.4.0
@ -21,14 +18,11 @@ dependencies:
specifier: ^7.0.2
version: 7.0.2
'@octokit/graphql-schema':
specifier: ^14.47.1
version: 14.47.1
'@prisma/adapter-neon':
specifier: ^5.8.1
version: 5.8.1(@neondatabase/serverless@0.6.1)
specifier: ^14.54.0
version: 14.54.0
'@prisma/client':
specifier: ^5.8.1
version: 5.8.1(prisma@5.8.1)
specifier: ^5.9.1
version: 5.9.1(prisma@5.9.1)
'@react-spring/web':
specifier: ^9.7.3
version: 9.7.3(react-dom@18.2.0)(react@18.2.0)
@ -60,8 +54,8 @@ dependencies:
specifier: ^2.4.5
version: 2.4.5(react@18.2.0)
geist:
specifier: ^1.2.1
version: 1.2.1(next@14.1.0)
specifier: ^1.2.2
version: 1.2.2(next@14.1.0)
gray-matter:
specifier: ^4.0.3
version: 4.0.3
@ -84,14 +78,14 @@ dependencies:
specifier: ^7.1.1
version: 7.1.1
polished:
specifier: ^4.2.2
version: 4.2.2
specifier: ^4.3.1
version: 4.3.1
prop-types:
specifier: ^15.8.1
version: 15.8.1
query-string:
specifier: ^8.1.0
version: 8.1.0
specifier: ^8.2.0
version: 8.2.0
react:
specifier: 18.2.0
version: 18.2.0
@ -109,10 +103,10 @@ dependencies:
version: 5.0.1(react@18.2.0)
react-innertext:
specifier: ^1.1.5
version: 1.1.5(@types/react@18.2.48)(react@18.2.0)
version: 1.1.5(@types/react@18.2.55)(react@18.2.0)
react-intersection-observer:
specifier: ^9.5.3
version: 9.5.3(react@18.2.0)
specifier: ^9.7.0
version: 9.7.0(react-dom@18.2.0)(react@18.2.0)
react-is:
specifier: 18.2.0
version: 18.2.0
@ -121,7 +115,7 @@ dependencies:
version: 2.14.1(react@18.2.0)
react-textarea-autosize:
specifier: ^8.5.3
version: 8.5.3(@types/react@18.2.48)(react@18.2.0)
version: 8.5.3(@types/react@18.2.55)(react@18.2.0)
react-tweet:
specifier: ^3.2.0
version: 3.2.0(react-dom@18.2.0)(react@18.2.0)
@ -164,9 +158,6 @@ dependencies:
unified:
specifier: ^11.0.4
version: 11.0.4
ws:
specifier: ^8.16.0
version: 8.16.0
optionalDependencies:
sharp:
@ -181,8 +172,8 @@ devDependencies:
specifier: ^2.1.2
version: 2.1.2
'@types/node':
specifier: ^20.11.5
version: 20.11.5
specifier: ^20.11.16
version: 20.11.16
'@types/novnc__novnc':
specifier: ^1.3.4
version: 1.3.4
@ -190,26 +181,23 @@ devDependencies:
specifier: ^15.7.11
version: 15.7.11
'@types/react':
specifier: ^18.2.48
version: 18.2.48
specifier: ^18.2.55
version: 18.2.55
'@types/react-dom':
specifier: ^18.2.18
version: 18.2.18
specifier: ^18.2.19
version: 18.2.19
'@types/react-is':
specifier: ^18.2.4
version: 18.2.4
'@types/uglify-js':
specifier: ^3.17.4
version: 3.17.4
'@types/ws':
specifier: ^8.5.10
version: 8.5.10
'@typescript-eslint/eslint-plugin':
specifier: ^6.19.0
version: 6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3)
specifier: ^6.21.0
version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser':
specifier: ^6.19.0
version: 6.19.0(eslint@8.56.0)(typescript@5.3.3)
specifier: ^6.21.0
version: 6.21.0(eslint@8.56.0)(typescript@5.3.3)
cross-env:
specifier: ^7.0.3
version: 7.0.3
@ -227,16 +215,16 @@ devDependencies:
version: 3.1.5(eslint@8.56.0)
eslint-plugin-prettier:
specifier: ~5.1.3
version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.4)
version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.5)
lint-staged:
specifier: ^15.2.0
version: 15.2.0
specifier: ^15.2.2
version: 15.2.2
prettier:
specifier: ^3.2.4
version: 3.2.4
specifier: ^3.2.5
version: 3.2.5
prisma:
specifier: ^5.8.1
version: 5.8.1
specifier: ^5.9.1
version: 5.9.1
simple-git-hooks:
specifier: ^2.9.0
version: 2.9.0
@ -627,16 +615,10 @@ packages:
react: '>=16'
dependencies:
'@types/mdx': 2.0.8
'@types/react': 18.2.48
'@types/react': 18.2.55
react: 18.2.0
dev: false
/@neondatabase/serverless@0.6.1:
resolution: {integrity: sha512-rZIyWf27WxH4eW0ZRDQT2PxUJH3AphNVEnO4x1AGjBW6XrguH3ChLokup0gNGrX8cxDbP0UyduI7qdy4OLos+A==}
dependencies:
'@types/pg': 8.6.6
dev: false
/@next/env@14.1.0:
resolution: {integrity: sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw==}
dev: false
@ -788,8 +770,8 @@ packages:
universal-user-agent: 6.0.0
dev: false
/@octokit/graphql-schema@14.47.1:
resolution: {integrity: sha512-U/HA28j31K6NHUgxWcwqsm1j0cbvNSRx6kPSUVNTxO1CDvN75TjlEl8CV+I3FooYPbGtaETd7cDR4PTdwUShig==}
/@octokit/graphql-schema@14.54.0:
resolution: {integrity: sha512-hpRysmqbvsNl4DL9YGqc9+cJQCKocEYIZ1WWcXMAq9gyCbHrFW3LaK/us88cVHxK7dDvYyDKweu9NdgLQPub6g==}
dependencies:
graphql: 16.8.1
graphql-tag: 2.12.6(graphql@16.8.1)
@ -846,20 +828,8 @@ packages:
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
dev: true
/@prisma/adapter-neon@5.8.1(@neondatabase/serverless@0.6.1):
resolution: {integrity: sha512-IbHXx7OnWRpRi/uTTHbB++a01J1kUHfMma71u72hoZElGxhaFAi7qDUPd/C4SOwuFhqG1UPZpfYxAmjwhuoinQ==}
peerDependencies:
'@neondatabase/serverless': ^0.6.0
dependencies:
'@neondatabase/serverless': 0.6.1
'@prisma/driver-adapter-utils': 5.8.1
postgres-array: 3.0.2
transitivePeerDependencies:
- supports-color
dev: false
/@prisma/client@5.8.1(prisma@5.8.1):
resolution: {integrity: sha512-xQtMPfbIwLlbm0VVIVQY2yqQVOxPwRQhvIp7Z3m2900g1bu/zRHKhYZJQWELqmjl6d8YwBy0K2NvMqh47v1ubw==}
/@prisma/client@5.9.1(prisma@5.9.1):
resolution: {integrity: sha512-caSOnG4kxcSkhqC/2ShV7rEoWwd3XrftokxJqOCMVvia4NYV/TPtJlS9C2os3Igxw/Qyxumj9GBQzcStzECvtQ==}
engines: {node: '>=16.13'}
requiresBuild: true
peerDependencies:
@ -868,43 +838,35 @@ packages:
prisma:
optional: true
dependencies:
prisma: 5.8.1
prisma: 5.9.1
dev: false
/@prisma/debug@5.8.1:
resolution: {integrity: sha512-tjuw7eA0Us3T42jx9AmAgL58rzwzpFGYc3R7Y4Ip75EBYrKMBA1YihuWMcBC92ILmjlQ/u3p8VxcIE0hr+fZfg==}
/@prisma/debug@5.9.1:
resolution: {integrity: sha512-yAHFSFCg8KVoL0oRUno3m60GAjsUKYUDkQ+9BA2X2JfVR3kRVSJFc/GpQ2fSORi4pSHZR9orfM4UC9OVXIFFTA==}
/@prisma/driver-adapter-utils@5.8.1:
resolution: {integrity: sha512-svZPPpNtmVkuQxIMFbMMs1IeihvVZoHfJs/WAxSIPoH8xun5gwoMPxBqCwYzFPM150vU19K/FYvvkDrAfpwelQ==}
dependencies:
debug: 4.3.4
transitivePeerDependencies:
- supports-color
dev: false
/@prisma/engines-version@5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64:
resolution: {integrity: sha512-HFl7275yF0FWbdcNvcSRbbu9JCBSLMcurYwvWc8WGDnpu7APxQo2ONtZrUggU3WxLxUJ2uBX+0GOFIcJeVeOOQ==}
/@prisma/engines-version@5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2:
resolution: {integrity: sha512-f5C3JM3l9yhGr3cr4FMqWloFaSCpNpMi58Om22rjD2DOz3owci2mFdFXMgnAGazFPKrCbbEhcxdsRfspEYRoFQ==}
/@prisma/engines@5.8.1:
resolution: {integrity: sha512-TJgYLRrZr56uhqcXO4GmP5be+zjCIHtLDK20Cnfg+o9d905hsN065QOL+3Z0zQAy6YD31Ol4u2kzSfRmbJv/uA==}
/@prisma/engines@5.9.1:
resolution: {integrity: sha512-gkdXmjxQ5jktxWNdDA5aZZ6R8rH74JkoKq6LD5mACSvxd2vbqWeWIOV0Py5wFC8vofOYShbt6XUeCIUmrOzOnQ==}
requiresBuild: true
dependencies:
'@prisma/debug': 5.8.1
'@prisma/engines-version': 5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2
'@prisma/fetch-engine': 5.8.1
'@prisma/get-platform': 5.8.1
'@prisma/debug': 5.9.1
'@prisma/engines-version': 5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64
'@prisma/fetch-engine': 5.9.1
'@prisma/get-platform': 5.9.1
/@prisma/fetch-engine@5.8.1:
resolution: {integrity: sha512-+bgjjoSFa6uYEbAPlklfoVSStOEfcpheOjoBoNsNNSQdSzcwE2nM4Q0prun0+P8/0sCHo18JZ9xqa8gObvgOUw==}
/@prisma/fetch-engine@5.9.1:
resolution: {integrity: sha512-l0goQOMcNVOJs1kAcwqpKq3ylvkD9F04Ioe1oJoCqmz05mw22bNAKKGWuDd3zTUoUZr97va0c/UfLNru+PDmNA==}
dependencies:
'@prisma/debug': 5.8.1
'@prisma/engines-version': 5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2
'@prisma/get-platform': 5.8.1
'@prisma/debug': 5.9.1
'@prisma/engines-version': 5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64
'@prisma/get-platform': 5.9.1
/@prisma/get-platform@5.8.1:
resolution: {integrity: sha512-wnA+6HTFcY+tkykMokix9GiAkaauPC5W/gg0O5JB0J8tCTNWrqpnQ7AsaGRfkYUbeOIioh6woDjQrGTTRf1Zag==}
/@prisma/get-platform@5.9.1:
resolution: {integrity: sha512-6OQsNxTyhvG+T2Ksr8FPFpuPeL4r9u0JF0OZHUBI/Uy9SS43sPyAIutt4ZEAyqWQt104ERh70EZedkHZKsnNbg==}
dependencies:
'@prisma/debug': 5.8.1
'@prisma/debug': 5.9.1
/@react-spring/animated@9.7.3(react@18.2.0):
resolution: {integrity: sha512-5CWeNJt9pNgyvuSzQH+uy2pvTg8Y4/OisoscZIR8/ZNLIOI+CatFBhGZpDGTF/OzdNFsAoGk3wiUYTwoJ0YIvw==}
@ -990,7 +952,7 @@ packages:
/@types/concat-stream@2.0.0:
resolution: {integrity: sha512-t3YCerNM7NTVjLuICZo5gYAXYoDvpuuTceCcFQWcDQz26kxUR5uIWolxbIR5jRNIXpMqhOpW/b8imCR1LEmuJw==}
dependencies:
'@types/node': 20.11.5
'@types/node': 20.11.16
dev: true
/@types/debug@4.1.12:
@ -1020,7 +982,7 @@ packages:
/@types/hoist-non-react-statics@3.3.2:
resolution: {integrity: sha512-YIQtIg4PKr7ZyqNPZObpxfHsHEmuB8dXCxd6qVcGuQVDK2bpsF7bYNnBJ4Nn7giuACZg+WewExgrtAJ3XnA4Xw==}
dependencies:
'@types/react': 18.2.48
'@types/react': 18.2.55
hoist-non-react-statics: 3.3.2
dev: false
@ -1067,8 +1029,8 @@ packages:
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
dev: false
/@types/node@20.11.5:
resolution: {integrity: sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==}
/@types/node@20.11.16:
resolution: {integrity: sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==}
dependencies:
undici-types: 5.26.5
@ -1076,14 +1038,6 @@ packages:
resolution: {integrity: sha512-JseVFIc9bm6IV2TkHi/oL4tr3anYeOw2BXX44HgqdRnRCaimz/nfZDWCyylK/OsJIfLzcchLLf2pxevYMNXFbQ==}
dev: true
/@types/pg@8.6.6:
resolution: {integrity: sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==}
dependencies:
'@types/node': 20.11.5
pg-protocol: 1.6.0
pg-types: 2.2.0
dev: false
/@types/prismjs@1.26.3:
resolution: {integrity: sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw==}
dev: false
@ -1091,20 +1045,20 @@ packages:
/@types/prop-types@15.7.11:
resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==}
/@types/react-dom@18.2.18:
resolution: {integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==}
/@types/react-dom@18.2.19:
resolution: {integrity: sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==}
dependencies:
'@types/react': 18.2.48
'@types/react': 18.2.55
dev: true
/@types/react-is@18.2.4:
resolution: {integrity: sha512-wBc7HgmbCcrvw0fZjxbgz/xrrlZKzEqmABBMeSvpTvdm25u6KI6xdIi9pRE2G0C1Lw5ETFdcn4UbYZ4/rpqUYw==}
dependencies:
'@types/react': 18.2.48
'@types/react': 18.2.55
dev: true
/@types/react@18.2.48:
resolution: {integrity: sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==}
/@types/react@18.2.55:
resolution: {integrity: sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==}
dependencies:
'@types/prop-types': 15.7.11
'@types/scheduler': 0.16.4
@ -1113,7 +1067,7 @@ packages:
/@types/sax@1.2.5:
resolution: {integrity: sha512-9jWta97bBVC027/MShr3gLab8gPhKy4l6qpb+UJLF5pDm3501NvA7uvqVCW+REFtx00oTi6Cq9JzLwgq6evVgw==}
dependencies:
'@types/node': 20.11.5
'@types/node': 20.11.16
dev: false
/@types/scheduler@0.16.4:
@ -1143,14 +1097,8 @@ packages:
/@types/unist@3.0.2:
resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==}
/@types/ws@8.5.10:
resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==}
dependencies:
'@types/node': 20.11.5
dev: true
/@typescript-eslint/eslint-plugin@6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-DUCUkQNklCQYnrBSSikjVChdc84/vMPDQSgJTHBZ64G9bA9w0Crc0rd2diujKbTdp6w2J47qkeHQLoi0rpLCdg==}
/@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
'@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
@ -1161,11 +1109,11 @@ packages:
optional: true
dependencies:
'@eslint-community/regexpp': 4.10.0
'@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/scope-manager': 6.19.0
'@typescript-eslint/type-utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/visitor-keys': 6.19.0
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/scope-manager': 6.21.0
'@typescript-eslint/type-utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/visitor-keys': 6.21.0
debug: 4.3.4
eslint: 8.56.0
graphemer: 1.4.0
@ -1178,8 +1126,8 @@ packages:
- supports-color
dev: true
/@typescript-eslint/parser@6.19.0(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-1DyBLG5SH7PYCd00QlroiW60YJ4rWMuUGa/JBV0iZuqi4l4IK3twKPq5ZkEebmGqRjXWVgsUzfd3+nZveewgow==}
/@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@ -1188,10 +1136,10 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/scope-manager': 6.19.0
'@typescript-eslint/types': 6.19.0
'@typescript-eslint/typescript-estree': 6.19.0(typescript@5.3.3)
'@typescript-eslint/visitor-keys': 6.19.0
'@typescript-eslint/scope-manager': 6.21.0
'@typescript-eslint/types': 6.21.0
'@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3)
'@typescript-eslint/visitor-keys': 6.21.0
debug: 4.3.4
eslint: 8.56.0
typescript: 5.3.3
@ -1199,16 +1147,16 @@ packages:
- supports-color
dev: true
/@typescript-eslint/scope-manager@6.19.0:
resolution: {integrity: sha512-dO1XMhV2ehBI6QN8Ufi7I10wmUovmLU0Oru3n5LVlM2JuzB4M+dVphCPLkVpKvGij2j/pHBWuJ9piuXx+BhzxQ==}
/@typescript-eslint/scope-manager@6.21.0:
resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
'@typescript-eslint/types': 6.19.0
'@typescript-eslint/visitor-keys': 6.19.0
'@typescript-eslint/types': 6.21.0
'@typescript-eslint/visitor-keys': 6.21.0
dev: true
/@typescript-eslint/type-utils@6.19.0(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-mcvS6WSWbjiSxKCwBcXtOM5pRkPQ6kcDds/juxcy/727IQr3xMEcwr/YLHW2A2+Fp5ql6khjbKBzOyjuPqGi/w==}
/@typescript-eslint/type-utils@6.21.0(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@ -1217,8 +1165,8 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/typescript-estree': 6.19.0(typescript@5.3.3)
'@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3)
'@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
debug: 4.3.4
eslint: 8.56.0
ts-api-utils: 1.0.3(typescript@5.3.3)
@ -1227,13 +1175,13 @@ packages:
- supports-color
dev: true
/@typescript-eslint/types@6.19.0:
resolution: {integrity: sha512-lFviGV/vYhOy3m8BJ/nAKoAyNhInTdXpftonhWle66XHAtT1ouBlkjL496b5H5hb8dWXHwtypTqgtb/DEa+j5A==}
/@typescript-eslint/types@6.21.0:
resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==}
engines: {node: ^16.0.0 || >=18.0.0}
dev: true
/@typescript-eslint/typescript-estree@6.19.0(typescript@5.3.3):
resolution: {integrity: sha512-o/zefXIbbLBZ8YJ51NlkSAt2BamrK6XOmuxSR3hynMIzzyMY33KuJ9vuMdFSXW+H0tVvdF9qBPTHA91HDb4BIQ==}
/@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3):
resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
typescript: '*'
@ -1241,8 +1189,8 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/types': 6.19.0
'@typescript-eslint/visitor-keys': 6.19.0
'@typescript-eslint/types': 6.21.0
'@typescript-eslint/visitor-keys': 6.21.0
debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
@ -1254,8 +1202,8 @@ packages:
- supports-color
dev: true
/@typescript-eslint/utils@6.19.0(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-QR41YXySiuN++/dC9UArYOg4X86OAYP83OWTewpVx5ct1IZhjjgTLocj7QNxGhWoTqknsgpl7L+hGygCO+sdYw==}
/@typescript-eslint/utils@6.21.0(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@ -1263,9 +1211,9 @@ packages:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
'@types/json-schema': 7.0.15
'@types/semver': 7.5.6
'@typescript-eslint/scope-manager': 6.19.0
'@typescript-eslint/types': 6.19.0
'@typescript-eslint/typescript-estree': 6.19.0(typescript@5.3.3)
'@typescript-eslint/scope-manager': 6.21.0
'@typescript-eslint/types': 6.21.0
'@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3)
eslint: 8.56.0
semver: 7.5.4
transitivePeerDependencies:
@ -1273,11 +1221,11 @@ packages:
- typescript
dev: true
/@typescript-eslint/visitor-keys@6.19.0:
resolution: {integrity: sha512-hZaUCORLgubBvtGpp1JEFEazcuEdfxta9j4iUwdSAr7mEsYYAp3EAUyCZk3VEEqGj6W+AV4uWyrDGtrlawAsgQ==}
/@typescript-eslint/visitor-keys@6.21.0:
resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
'@typescript-eslint/types': 6.19.0
'@typescript-eslint/types': 6.21.0
eslint-visitor-keys: 3.4.3
dev: true
@ -1981,11 +1929,11 @@ packages:
dependencies:
'@next/eslint-plugin-next': 14.1.0
'@rushstack/eslint-patch': 1.5.1
'@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
eslint: 8.56.0
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.56.0)
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.56.0)
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
eslint-plugin-jsx-a11y: 6.7.1(eslint@8.56.0)
eslint-plugin-react: 7.33.2(eslint@8.56.0)
eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0)
@ -2014,7 +1962,7 @@ packages:
- supports-color
dev: true
/eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.56.0):
/eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.56.0):
resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
@ -2024,8 +1972,8 @@ packages:
debug: 4.3.4
enhanced-resolve: 5.15.0
eslint: 8.56.0
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
fast-glob: 3.3.2
get-tsconfig: 4.7.2
is-core-module: 2.13.0
@ -2062,7 +2010,7 @@ packages:
- supports-color
dev: true
/eslint-module-utils@2.8.0(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0):
/eslint-module-utils@2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0):
resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
engines: {node: '>=4'}
peerDependencies:
@ -2083,16 +2031,16 @@ packages:
eslint-import-resolver-webpack:
optional: true
dependencies:
'@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
debug: 3.2.7
eslint: 8.56.0
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.56.0)
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.56.0)
transitivePeerDependencies:
- supports-color
dev: true
/eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0):
/eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0):
resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==}
engines: {node: '>=4'}
peerDependencies:
@ -2102,7 +2050,7 @@ packages:
'@typescript-eslint/parser':
optional: true
dependencies:
'@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
array-includes: 3.1.7
array.prototype.findlastindex: 1.2.3
array.prototype.flat: 1.3.2
@ -2111,7 +2059,7 @@ packages:
doctrine: 2.1.0
eslint: 8.56.0
eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
has: 1.0.4
is-core-module: 2.13.0
is-glob: 4.0.3
@ -2183,7 +2131,7 @@ packages:
- supports-color
dev: true
/eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.4):
/eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.5):
resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
@ -2199,7 +2147,7 @@ packages:
dependencies:
eslint: 8.56.0
eslint-config-prettier: 9.1.0(eslint@8.56.0)
prettier: 3.2.4
prettier: 3.2.5
prettier-linter-helpers: 1.0.0
synckit: 0.8.8
dev: true
@ -2549,10 +2497,10 @@ packages:
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
dev: true
/geist@1.2.1(next@14.1.0):
resolution: {integrity: sha512-xCl7zWfnWqc+TbCG5qqyeT5tnVlOO4pSJsT3Ei59DN1SR4N2VlauF8Fv0D1pPFXGUJgu6RMoeZX+wsR4T9bMhg==}
/geist@1.2.2(next@14.1.0):
resolution: {integrity: sha512-uRDrxhvdnPwWJmh+K5+/5LXSKwvJzaYCl9tDXgiBi4hj7hB4K7+n/WLcvJMFs5btvyn0r9OSwCd1s6CmqAsxEw==}
peerDependencies:
next: ^13.2 || ^14
next: '>=13.2.0 <15'
dependencies:
next: 14.1.0(react-dom@18.2.0)(react@18.2.0)
dev: false
@ -3335,8 +3283,8 @@ packages:
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: true
/lint-staged@15.2.0:
resolution: {integrity: sha512-TFZzUEV00f+2YLaVPWBWGAMq7So6yQx+GG8YRMDeOEIf95Zn5RyiLMsEiX4KTNl9vq/w+NqRJkLA1kPIo15ufQ==}
/lint-staged@15.2.2:
resolution: {integrity: sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw==}
engines: {node: '>=18.12.0'}
hasBin: true
dependencies:
@ -3345,7 +3293,7 @@ packages:
debug: 4.3.4
execa: 8.0.1
lilconfig: 3.0.0
listr2: 8.0.0
listr2: 8.0.1
micromatch: 4.0.5
pidtree: 0.6.0
string-argv: 0.3.2
@ -3354,8 +3302,8 @@ packages:
- supports-color
dev: true
/listr2@8.0.0:
resolution: {integrity: sha512-u8cusxAcyqAiQ2RhYvV7kRKNLgUvtObIbhOX2NCXqvp1UU32xIg5CT22ykS2TPKJXZWJwtK3IKLiqAGlGNE+Zg==}
/listr2@8.0.1:
resolution: {integrity: sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA==}
engines: {node: '>=18.0.0'}
dependencies:
cli-truncate: 4.0.0
@ -4757,26 +4705,6 @@ packages:
is-reference: 3.0.2
dev: false
/pg-int8@1.0.1:
resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==}
engines: {node: '>=4.0.0'}
dev: false
/pg-protocol@1.6.0:
resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==}
dev: false
/pg-types@2.2.0:
resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==}
engines: {node: '>=4'}
dependencies:
pg-int8: 1.0.1
postgres-array: 2.0.0
postgres-bytea: 1.0.0
postgres-date: 1.0.7
postgres-interval: 1.2.0
dev: false
/picocolors@1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
dev: false
@ -4791,8 +4719,8 @@ packages:
hasBin: true
dev: true
/polished@4.2.2:
resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==}
/polished@4.3.1:
resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==}
engines: {node: '>=10'}
dependencies:
'@babel/runtime': 7.23.1
@ -4807,33 +4735,6 @@ packages:
source-map-js: 1.0.2
dev: false
/postgres-array@2.0.0:
resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==}
engines: {node: '>=4'}
dev: false
/postgres-array@3.0.2:
resolution: {integrity: sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==}
engines: {node: '>=12'}
dev: false
/postgres-bytea@1.0.0:
resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==}
engines: {node: '>=0.10.0'}
dev: false
/postgres-date@1.0.7:
resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==}
engines: {node: '>=0.10.0'}
dev: false
/postgres-interval@1.2.0:
resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==}
engines: {node: '>=0.10.0'}
dependencies:
xtend: 4.0.2
dev: false
/prelude-ls@1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
@ -4846,19 +4747,19 @@ packages:
fast-diff: 1.3.0
dev: true
/prettier@3.2.4:
resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==}
/prettier@3.2.5:
resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==}
engines: {node: '>=14'}
hasBin: true
dev: true
/prisma@5.8.1:
resolution: {integrity: sha512-N6CpjzECnUHZ5beeYpDzkt2rYpEdAeqXX2dweu6BoQaeYkNZrC/WJHM+5MO/uidFHTak8QhkPKBWck1o/4MD4A==}
/prisma@5.9.1:
resolution: {integrity: sha512-Hy/8KJZz0ELtkw4FnG9MS9rNWlXcJhf98Z2QMqi0QiVMoS8PzsBkpla0/Y5hTlob8F3HeECYphBjqmBxrluUrQ==}
engines: {node: '>=16.13'}
hasBin: true
requiresBuild: true
dependencies:
'@prisma/engines': 5.8.1
'@prisma/engines': 5.9.1
/proc-log@3.0.0:
resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==}
@ -4881,8 +4782,8 @@ packages:
engines: {node: '>=6'}
dev: true
/query-string@8.1.0:
resolution: {integrity: sha512-BFQeWxJOZxZGix7y+SByG3F36dA0AbTy9o6pSmKFcFz7DAj0re9Frkty3saBn3nHo3D0oZJ/+rx3r8H8r8Jbpw==}
/query-string@8.2.0:
resolution: {integrity: sha512-tUZIw8J0CawM5wyGBiDOAp7ObdRQh4uBor/fUR9ZjmbZVvw95OD9If4w3MQxr99rg0DJZ/9CIORcpEqU5hQG7g==}
engines: {node: '>=14.16'}
dependencies:
decode-uri-component: 0.4.1
@ -4940,22 +4841,27 @@ packages:
react: 18.2.0
dev: false
/react-innertext@1.1.5(@types/react@18.2.48)(react@18.2.0):
/react-innertext@1.1.5(@types/react@18.2.55)(react@18.2.0):
resolution: {integrity: sha512-PWAqdqhxhHIv80dT9znP2KvS+hfkbRovFp4zFYHFFlOoQLRiawIic81gKb3U1wEyJZgMwgs3JoLtwryASRWP3Q==}
peerDependencies:
'@types/react': '>=0.0.0 <=99'
react: '>=0.0.0 <=99'
dependencies:
'@types/react': 18.2.48
'@types/react': 18.2.55
react: 18.2.0
dev: false
/react-intersection-observer@9.5.3(react@18.2.0):
resolution: {integrity: sha512-NJzagSdUPS5rPhaLsHXYeJbsvdpbJwL6yCHtMk91hc0ufQ2BnXis+0QQ9NBh6n9n+Q3OyjR6OQLShYbaNBkThQ==}
/react-intersection-observer@9.7.0(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-euleEjBVaMRwSOMNVcMX5WGn74GfZ9I78nx9SUb5a0eXd0IhegjJcUliSO9Jd+xiaZ5rgFvbGoVln66lpMyUUg==}
peerDependencies:
react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0
react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0
peerDependenciesMeta:
react-dom:
optional: true
dependencies:
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
/react-is@16.13.1:
@ -4978,7 +4884,7 @@ packages:
react-fast-compare: 3.2.2
dev: false
/react-textarea-autosize@8.5.3(@types/react@18.2.48)(react@18.2.0):
/react-textarea-autosize@8.5.3(@types/react@18.2.55)(react@18.2.0):
resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==}
engines: {node: '>=10'}
peerDependencies:
@ -4987,7 +4893,7 @@ packages:
'@babel/runtime': 7.23.1
react: 18.2.0
use-composed-ref: 1.3.0(react@18.2.0)
use-latest: 1.2.1(@types/react@18.2.48)(react@18.2.0)
use-latest: 1.2.1(@types/react@18.2.55)(react@18.2.0)
transitivePeerDependencies:
- '@types/react'
dev: false
@ -5850,7 +5756,7 @@ packages:
'@types/concat-stream': 2.0.0
'@types/debug': 4.1.12
'@types/is-empty': 1.2.1
'@types/node': 20.11.5
'@types/node': 20.11.16
'@types/unist': 3.0.2
'@ungap/structured-clone': 1.2.0
concat-stream: 2.0.0
@ -6038,7 +5944,7 @@ packages:
react: 18.2.0
dev: false
/use-isomorphic-layout-effect@1.1.2(@types/react@18.2.48)(react@18.2.0):
/use-isomorphic-layout-effect@1.1.2(@types/react@18.2.55)(react@18.2.0):
resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==}
peerDependencies:
'@types/react': '*'
@ -6047,11 +5953,11 @@ packages:
'@types/react':
optional: true
dependencies:
'@types/react': 18.2.48
'@types/react': 18.2.55
react: 18.2.0
dev: false
/use-latest@1.2.1(@types/react@18.2.48)(react@18.2.0):
/use-latest@1.2.1(@types/react@18.2.55)(react@18.2.0):
resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==}
peerDependencies:
'@types/react': '*'
@ -6060,9 +5966,9 @@ packages:
'@types/react':
optional: true
dependencies:
'@types/react': 18.2.48
'@types/react': 18.2.55
react: 18.2.0
use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.48)(react@18.2.0)
use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.55)(react@18.2.0)
dev: false
/use-sync-external-store@1.2.0(react@18.2.0):
@ -6252,19 +6158,6 @@ packages:
/wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
/ws@8.16.0:
resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: '>=5.0.2'
peerDependenciesMeta:
bufferutil:
optional: true
utf-8-validate:
optional: true
dev: false
/xml-js@1.6.11:
resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==}
hasBin: true
@ -6272,11 +6165,6 @@ packages:
sax: 1.3.0
dev: false
/xtend@4.0.2:
resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
engines: {node: '>=0.4'}
dev: false
/yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
requiresBuild: true

View File

@ -5,8 +5,8 @@ generator client {
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
directUrl = env("DIRECT_URL")
url = env("POSTGRES_URL")
directUrl = env("POSTGRES_URL_NON_POOLING")
}
model hits {

View File

@ -32,7 +32,7 @@
- Vercel
- Stitches
- Prisma
- Neon Postgres
- Supabase
- Giscus
- Fathom Analytics
- ...and more: https://jarv.is/uses/