From 1a6ac7f48319f96432d546eea97a10f5d11a3291 Mon Sep 17 00:00:00 2001 From: Jake Jarvis Date: Wed, 7 Feb 2024 14:55:16 -0500 Subject: [PATCH] migrated to supabase postgres --- .env.example | 4 +- .gitignore | 1 - README.md | 2 +- lib/helpers/prisma.ts | 26 +-- package.json | 38 ++-- pages/privacy.tsx | 5 +- pnpm-lock.yaml | 410 +++++++++++++++--------------------------- prisma/schema.prisma | 6 +- public/humans.txt | 2 +- 9 files changed, 183 insertions(+), 311 deletions(-) diff --git a/.env.example b/.env.example index 0feb0012..addb4902 100644 --- a/.env.example +++ b/.env.example @@ -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= diff --git a/.gitignore b/.gitignore index da9ac8ec..852c823a 100644 --- a/.gitignore +++ b/.gitignore @@ -29,4 +29,3 @@ yarn.lock # vercel .vercel -.neon diff --git a/README.md b/README.md index ef933ff4..45771057 100644 --- a/README.md +++ b/README.md @@ -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! diff --git a/lib/helpers/prisma.ts b/lib/helpers/prisma.ts index 4a7c5d14..0c176fde 100644 --- a/lib/helpers/prisma.ts +++ b/lib/helpers/prisma.ts @@ -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; +declare global { + // eslint-disable-next-line no-var + var prisma: undefined | ReturnType; +} -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; diff --git a/package.json b/package.json index 4aabaa4a..a7f29d6d 100644 --- a/package.json +++ b/package.json @@ -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" } } diff --git a/pages/privacy.tsx b/pages/privacy.tsx index 65e9eb06..d73d08b4 100644 --- a/pages/privacy.tsx +++ b/pages/privacy.tsx @@ -48,8 +48,9 @@ const Privacy = () => {

A very simple hit counter on each blog post tallies an aggregate number of pageviews (i.e.{" "} - hits = hits + 1) in a Neon Postgres database. - Individual views and identifying (or non-identifying) details are never stored or logged. + hits = hits + 1) in a Supabase Postgres{" "} + database. Individual views and identifying (or non-identifying) details are{" "} + never stored or logged.

diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c24244ab..81b2c48c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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 diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 2a1daf27..37903832 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -4,9 +4,9 @@ generator client { } datasource db { - provider = "postgresql" - url = env("DATABASE_URL") - directUrl = env("DIRECT_URL") + provider = "postgresql" + url = env("POSTGRES_URL") + directUrl = env("POSTGRES_URL_NON_POOLING") } model hits { diff --git a/public/humans.txt b/public/humans.txt index 69121089..a3a5c9df 100644 --- a/public/humans.txt +++ b/public/humans.txt @@ -32,7 +32,7 @@ - Vercel - Stitches - Prisma - - Neon Postgres + - Supabase - Giscus - Fathom Analytics - ...and more: https://jarv.is/uses/