From 22b1a7e3aac01e702d3035d2bbc092ced8f6157a Mon Sep 17 00:00:00 2001 From: Sam Becker Date: Mon, 22 Jan 2024 18:23:53 -0600 Subject: [PATCH 1/7] Refine Cloudflare README docs --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 939fcc06..ddba49f2 100644 --- a/README.md +++ b/README.md @@ -102,10 +102,10 @@ Only one storage adapter—Vercel Blob, Cloudflare R2, or AWS S3—can be used a - Store public configuration: - `NEXT_PUBLIC_CLOUDFLARE_R2_BUCKET`: bucket name - `NEXT_PUBLIC_CLOUDFLARE_R2_ACCOUNT_ID`: account id (found on R2 overview page) - - `NEXT_PUBLIC_CLOUDFLARE_R2_PUBLIC_DOMAIN`: e.g., either "pub-jf90908...r2.dev" or "custom-domain.com" + - `NEXT_PUBLIC_CLOUDFLARE_R2_PUBLIC_DOMAIN`: either "your-custom-domain.com" or "pub-jf90908...s0d9f8s0s9df.r2.dev" (do not include "https://" in your domain) 2. Setup private credentials - Create API token by selecting "Manage R2 API Tokens," and clicking "Create API Token" - - Select "Object Read & Write," choose "Apply to specific buckets only," and select the bucket created in Step 1. + - Select "Object Read & Write," choose "Apply to specific buckets only," and select the bucket created in Step 1 - Store credentials (⚠️ _Ensure access keys are not prefixed with `NEXT_PUBLIC`_): - `CLOUDFLARE_R2_ACCESS_KEY` - `CLOUDFLARE_R2_SECRET_ACCESS_KEY` From fa025dbf6b9f3e9999a4a4d0f51eff06260142c4 Mon Sep 17 00:00:00 2001 From: Sam Becker Date: Mon, 22 Jan 2024 18:27:37 -0600 Subject: [PATCH 2/7] Update Cloudflare README style --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ddba49f2..15eea1a7 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,7 @@ Only one storage adapter—Vercel Blob, Cloudflare R2, or AWS S3—can be used a - Store public configuration: - `NEXT_PUBLIC_CLOUDFLARE_R2_BUCKET`: bucket name - `NEXT_PUBLIC_CLOUDFLARE_R2_ACCOUNT_ID`: account id (found on R2 overview page) - - `NEXT_PUBLIC_CLOUDFLARE_R2_PUBLIC_DOMAIN`: either "your-custom-domain.com" or "pub-jf90908...s0d9f8s0s9df.r2.dev" (do not include "https://" in your domain) + - `NEXT_PUBLIC_CLOUDFLARE_R2_PUBLIC_DOMAIN`: either "your-custom-domain.com" or "pub-jf90908...s0d9f8s0s9df.r2.dev" (_do not include "https://" in your domain_) 2. Setup private credentials - Create API token by selecting "Manage R2 API Tokens," and clicking "Create API Token" - Select "Object Read & Write," choose "Apply to specific buckets only," and select the bucket created in Step 1 From 81be076f6e650ee193ac03e86a9afeef9e780b55 Mon Sep 17 00:00:00 2001 From: Sam Becker Date: Wed, 24 Jan 2024 18:02:13 -0600 Subject: [PATCH 3/7] Temporarily log domain environment variables --- src/app/admin/photos/page.tsx | 4 +++- src/site/config.ts | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/app/admin/photos/page.tsx b/src/app/admin/photos/page.tsx index 27f53955..199f75ff 100644 --- a/src/app/admin/photos/page.tsx +++ b/src/app/admin/photos/page.tsx @@ -27,7 +27,7 @@ import AdminGrid from '@/admin/AdminGrid'; import DeleteButton from '@/admin/DeleteButton'; import EditButton from '@/admin/EditButton'; import StorageUrls from '@/admin/StorageUrls'; -import { PRO_MODE_ENABLED } from '@/site/config'; +import { DOMAIN_META_TO_LOG, PRO_MODE_ENABLED } from '@/site/config'; import SubmitButtonWithStatus from '@/components/SubmitButtonWithStatus'; import IconGrSync from '@/site/IconGrSync'; @@ -50,6 +50,8 @@ export default async function AdminPhotosPage({ const showMorePhotos = count > photos.length; + console.log(DOMAIN_META_TO_LOG); + return ( Date: Wed, 24 Jan 2024 18:34:42 -0600 Subject: [PATCH 4/7] Remove domain logging --- src/app/admin/photos/page.tsx | 4 +--- src/site/config.ts | 17 ----------------- 2 files changed, 1 insertion(+), 20 deletions(-) diff --git a/src/app/admin/photos/page.tsx b/src/app/admin/photos/page.tsx index 199f75ff..27f53955 100644 --- a/src/app/admin/photos/page.tsx +++ b/src/app/admin/photos/page.tsx @@ -27,7 +27,7 @@ import AdminGrid from '@/admin/AdminGrid'; import DeleteButton from '@/admin/DeleteButton'; import EditButton from '@/admin/EditButton'; import StorageUrls from '@/admin/StorageUrls'; -import { DOMAIN_META_TO_LOG, PRO_MODE_ENABLED } from '@/site/config'; +import { PRO_MODE_ENABLED } from '@/site/config'; import SubmitButtonWithStatus from '@/components/SubmitButtonWithStatus'; import IconGrSync from '@/site/IconGrSync'; @@ -50,8 +50,6 @@ export default async function AdminPhotosPage({ const showMorePhotos = count > photos.length; - console.log(DOMAIN_META_TO_LOG); - return ( Date: Wed, 24 Jan 2024 18:57:38 -0600 Subject: [PATCH 5/7] Refine domain config environment variables --- src/site/config.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/site/config.ts b/src/site/config.ts index ced3bf09..9f8f31d8 100644 --- a/src/site/config.ts +++ b/src/site/config.ts @@ -7,16 +7,27 @@ export const SITE_TITLE = process.env.NEXT_PUBLIC_SITE_TITLE || 'Photo Blog'; +const VERCEL_ENV = process.env.NEXT_PUBLIC_VERCEL_ENV; +const VERCEL_DEPLOYMENT_URL = process.env.NEXT_PUBLIC_VERCEL_URL; const VERCEL_BRANCH_URL = process.env.NEXT_PUBLIC_VERCEL_BRANCH_URL; const VERCEL_BRANCH = process.env.NEXT_PUBLIC_VERCEL_GIT_COMMIT_REF; -const VERCEL_URL = VERCEL_BRANCH_URL && VERCEL_BRANCH +const VERCEL_PROJECT_URL = VERCEL_BRANCH_URL && VERCEL_BRANCH ? `${VERCEL_BRANCH_URL.split(`-git-${VERCEL_BRANCH}-`)[0]}.vercel.app` : undefined; +const VERCEL_URL = VERCEL_PROJECT_URL || VERCEL_DEPLOYMENT_URL; +// User-facing domain and potential site title const SITE_DOMAIN = process.env.NEXT_PUBLIC_SITE_DOMAIN || VERCEL_URL; +// Used for absolute references like OG images +export const BASE_URL = makeUrlAbsolute(VERCEL_ENV === 'production' + ? SITE_DOMAIN + : VERCEL_ENV === 'preview' + ? VERCEL_URL + : 'http://localhost:3000')?.toLocaleLowerCase(); + const SITE_DOMAIN_SHORT = shortenUrl(SITE_DOMAIN); export const SITE_DOMAIN_OR_TITLE = @@ -27,10 +38,6 @@ export const SITE_DESCRIPTION = process.env.NEXT_PUBLIC_SITE_DESCRIPTION || SITE_DOMAIN; -export const BASE_URL = process.env.NODE_ENV === 'production' - ? makeUrlAbsolute(SITE_DOMAIN)?.toLowerCase() - : 'http://localhost:3000'; - // STORAGE: VERCEL BLOB export const HAS_VERCEL_BLOB_STORAGE = (process.env.BLOB_READ_WRITE_TOKEN ?? '').length > 0; From 2cca9270ae697e14aae7479a7f534a5596d5f91b Mon Sep 17 00:00:00 2001 From: Sam Becker Date: Wed, 24 Jan 2024 19:22:17 -0600 Subject: [PATCH 6/7] Refine Vercel URL harvesting --- src/site/config.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/site/config.ts b/src/site/config.ts index 9f8f31d8..6c7fad2e 100644 --- a/src/site/config.ts +++ b/src/site/config.ts @@ -14,18 +14,18 @@ const VERCEL_BRANCH = process.env.NEXT_PUBLIC_VERCEL_GIT_COMMIT_REF; const VERCEL_PROJECT_URL = VERCEL_BRANCH_URL && VERCEL_BRANCH ? `${VERCEL_BRANCH_URL.split(`-git-${VERCEL_BRANCH}-`)[0]}.vercel.app` : undefined; -const VERCEL_URL = VERCEL_PROJECT_URL || VERCEL_DEPLOYMENT_URL; +// const VERCEL_URL = VERCEL_PROJECT_URL || VERCEL_DEPLOYMENT_URL; // User-facing domain and potential site title const SITE_DOMAIN = process.env.NEXT_PUBLIC_SITE_DOMAIN || - VERCEL_URL; + VERCEL_PROJECT_URL; // Used for absolute references like OG images export const BASE_URL = makeUrlAbsolute(VERCEL_ENV === 'production' ? SITE_DOMAIN : VERCEL_ENV === 'preview' - ? VERCEL_URL + ? VERCEL_BRANCH_URL || VERCEL_DEPLOYMENT_URL : 'http://localhost:3000')?.toLocaleLowerCase(); const SITE_DOMAIN_SHORT = shortenUrl(SITE_DOMAIN); From d64af39d7f4547e938b5d677d51d358daa3ed070 Mon Sep 17 00:00:00 2001 From: Sam Becker Date: Wed, 24 Jan 2024 19:50:38 -0600 Subject: [PATCH 7/7] Bump dependencies --- package.json | 12 ++-- pnpm-lock.yaml | 152 ++++++++++++++++++++++++------------------------- 2 files changed, 82 insertions(+), 82 deletions(-) diff --git a/package.json b/package.json index eba76c32..b27b662d 100644 --- a/package.json +++ b/package.json @@ -9,22 +9,22 @@ "analyze": "ANALYZE=true next build" }, "dependencies": { - "@aws-sdk/client-s3": "3.496.0", - "@aws-sdk/s3-request-presigner": "3.496.0", + "@aws-sdk/client-s3": "3.499.0", + "@aws-sdk/s3-request-presigner": "3.499.0", "@headlessui/react": "2.0.0-alpha.4", "@next/bundle-analyzer": "14.1.0", "@tailwindcss/forms": "^0.5.7", - "@testing-library/jest-dom": "^6.2.1", + "@testing-library/jest-dom": "^6.3.0", "@testing-library/react": "^14.1.2", "@types/jest": "^29.5.11", - "@types/node": "^20.11.5", + "@types/node": "^20.11.6", "@types/react": "18.2.48", "@types/react-dom": "18.2.18", "@typescript-eslint/eslint-plugin": "^6.19.1", "@typescript-eslint/parser": "^6.19.1", "@vercel/analytics": "^1.1.2", "@vercel/blob": "^0.19.0", - "@vercel/postgres": "0.5.1", + "@vercel/postgres": "0.7.2", "@vercel/speed-insights": "^1.0.7", "autoprefixer": "10.4.17", "camelcase-keys": "^9.1.3", @@ -33,7 +33,7 @@ "eslint": "8.56.0", "eslint-config-next": "14.1.0", "exifr": "^7.1.3", - "framer-motion": "^10.18.0", + "framer-motion": "^11.0.3", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "nanoid": "^5.0.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c2f70dbe..ea7800e1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,11 +6,11 @@ settings: dependencies: '@aws-sdk/client-s3': - specifier: 3.496.0 - version: 3.496.0 + specifier: 3.499.0 + version: 3.499.0 '@aws-sdk/s3-request-presigner': - specifier: 3.496.0 - version: 3.496.0 + specifier: 3.499.0 + version: 3.499.0 '@headlessui/react': specifier: 2.0.0-alpha.4 version: 2.0.0-alpha.4(react-dom@18.2.0)(react@18.2.0) @@ -21,8 +21,8 @@ dependencies: specifier: ^0.5.7 version: 0.5.7(tailwindcss@3.4.1) '@testing-library/jest-dom': - specifier: ^6.2.1 - version: 6.2.1(@types/jest@29.5.11)(jest@29.7.0) + specifier: ^6.3.0 + version: 6.3.0(@types/jest@29.5.11)(jest@29.7.0) '@testing-library/react': specifier: ^14.1.2 version: 14.1.2(react-dom@18.2.0)(react@18.2.0) @@ -30,8 +30,8 @@ dependencies: specifier: ^29.5.11 version: 29.5.11 '@types/node': - specifier: ^20.11.5 - version: 20.11.5 + specifier: ^20.11.6 + version: 20.11.6 '@types/react': specifier: 18.2.48 version: 18.2.48 @@ -51,8 +51,8 @@ dependencies: specifier: ^0.19.0 version: 0.19.0 '@vercel/postgres': - specifier: 0.5.1 - version: 0.5.1 + specifier: 0.7.2 + version: 0.7.2 '@vercel/speed-insights': specifier: ^1.0.7 version: 1.0.7(next@14.1.0)(react@18.2.0) @@ -78,11 +78,11 @@ dependencies: specifier: ^7.1.3 version: 7.1.3 framer-motion: - specifier: ^10.18.0 - version: 10.18.0(react-dom@18.2.0)(react@18.2.0) + specifier: ^11.0.3 + version: 11.0.3(react-dom@18.2.0)(react@18.2.0) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.11.5) + version: 29.7.0(@types/node@20.11.6) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 @@ -233,16 +233,16 @@ packages: tslib: 1.14.1 dev: false - /@aws-sdk/client-s3@3.496.0: - resolution: {integrity: sha512-Q16iIP8SmM/7uWHbTCRnvXgM+RxgEDHQmkKL1bvdPLhfu4q1+RwWwJ/WS+1amwQtwvWc8Z51W4XEsokJmqOYUA==} + /@aws-sdk/client-s3@3.499.0: + resolution: {integrity: sha512-4ssQqde/iY5fTJbWuFPzPuECtihdCAA9tfluv6fXYCJS3wMLf9x21qp6b7fIbUf6vjOJ2edmYd+DXk+0CMnTFg==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha1-browser': 3.0.0 '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.496.0 + '@aws-sdk/client-sts': 3.499.0 '@aws-sdk/core': 3.496.0 - '@aws-sdk/credential-provider-node': 3.496.0 + '@aws-sdk/credential-provider-node': 3.499.0 '@aws-sdk/middleware-bucket-endpoint': 3.496.0 '@aws-sdk/middleware-expect-continue': 3.496.0 '@aws-sdk/middleware-flexible-checksums': 3.496.0 @@ -250,12 +250,12 @@ packages: '@aws-sdk/middleware-location-constraint': 3.496.0 '@aws-sdk/middleware-logger': 3.496.0 '@aws-sdk/middleware-recursion-detection': 3.496.0 - '@aws-sdk/middleware-sdk-s3': 3.496.0 + '@aws-sdk/middleware-sdk-s3': 3.499.0 '@aws-sdk/middleware-signing': 3.496.0 - '@aws-sdk/middleware-ssec': 3.496.0 + '@aws-sdk/middleware-ssec': 3.498.0 '@aws-sdk/middleware-user-agent': 3.496.0 '@aws-sdk/region-config-resolver': 3.496.0 - '@aws-sdk/signature-v4-multi-region': 3.496.0 + '@aws-sdk/signature-v4-multi-region': 3.499.0 '@aws-sdk/types': 3.496.0 '@aws-sdk/util-endpoints': 3.496.0 '@aws-sdk/util-user-agent-browser': 3.496.0 @@ -344,14 +344,14 @@ packages: - aws-crt dev: false - /@aws-sdk/client-sts@3.496.0: - resolution: {integrity: sha512-3pSdqgegdwbK3CT1WvGHhA+Bf91R9cr8G1Ynp+iU2wZvy8ueJfMUk0NYfjo3EEv0YhSbMLKuduzZfvQHFHXYhw==} + /@aws-sdk/client-sts@3.499.0: + resolution: {integrity: sha512-Eyj9STw2DXMtXL5V/v0HYHO6+JjGPi257M5IYyxwqlvRchq6jbOsedobfxclB/gBUyBRtZdnyAIS8uCKjb4kpA==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 '@aws-sdk/core': 3.496.0 - '@aws-sdk/credential-provider-node': 3.496.0 + '@aws-sdk/credential-provider-node': 3.499.0 '@aws-sdk/middleware-host-header': 3.496.0 '@aws-sdk/middleware-logger': 3.496.0 '@aws-sdk/middleware-recursion-detection': 3.496.0 @@ -432,8 +432,8 @@ packages: - aws-crt dev: false - /@aws-sdk/credential-provider-node@3.496.0: - resolution: {integrity: sha512-IVF9RvLePfRa5S5/eBIRChJCWOzQkGwM8P/L79Gl84u/cH2oSG4NtUI/YTDlrtmnYn7YsGhINSV0WnzfF2twfQ==} + /@aws-sdk/credential-provider-node@3.499.0: + resolution: {integrity: sha512-EsiSevVmcVSMIq7D9siSH/XVc5I0vMntg1rx6KQdng1Fq8X/RBL5t9wSWEwOl7KFo5HlEsWrLWIpo1WHuzIL/w==} engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/credential-provider-env': 3.496.0 @@ -562,8 +562,8 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/middleware-sdk-s3@3.496.0: - resolution: {integrity: sha512-OKrTPzubisQCQzPuF4G7jmbYt71o6W7oefmW9zm1MpGokRSJeC9zv4aT1gkMglpXEHgvL0S5fUVGi0AtF/F8Kw==} + /@aws-sdk/middleware-sdk-s3@3.499.0: + resolution: {integrity: sha512-thTb47U1hYHk5ei+yO0D0aehbgQXeAcgvyyxOID9/HDuRfWuTvKdclWh/goIeDfvSS87VBukEAjnCa5JYBwzug==} engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.496.0 @@ -590,8 +590,8 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/middleware-ssec@3.496.0: - resolution: {integrity: sha512-6RUFEgGqKGq8N8W9tsctS8KRlYnmD/yiExb/LvblCJqV1DWoD0psRFWNz8TQZtujHklG5dHjuq+aN/qicjBNdw==} + /@aws-sdk/middleware-ssec@3.498.0: + resolution: {integrity: sha512-sWujXgzeTqMZzj/pRYEnnEbSzhBosqw9DXHOY1Mg2igI9NEfGlB7lPARp6aKmCaYlP3Bcj2X86vKCqF53mbyig==} engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.496.0 @@ -622,11 +622,11 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/s3-request-presigner@3.496.0: - resolution: {integrity: sha512-l4FMNKYjEDRwjry5zG0TAmfKY/COh/ZoGiUGfTUXaL92NzNqv8NpREHVvL7Rp6YeGzF1/j6/1LeVzDct94lc/Q==} + /@aws-sdk/s3-request-presigner@3.499.0: + resolution: {integrity: sha512-4Hi9FUnASXA/7zHGGD4Wtmb6ynoK4r2VFYTPnFmoM12PL4BD4DLGcHGZkM0APBgiPEKnxQfWPXK6xgl3MigXDA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/signature-v4-multi-region': 3.496.0 + '@aws-sdk/signature-v4-multi-region': 3.499.0 '@aws-sdk/types': 3.496.0 '@aws-sdk/util-format-url': 3.496.0 '@smithy/middleware-endpoint': 2.4.1 @@ -636,11 +636,11 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/signature-v4-multi-region@3.496.0: - resolution: {integrity: sha512-zi3cL8+dRVSvC0PA6votwEHF4l9uxOyQTiRfgpFgzJ9iiPbsrtWCalGCwN0UyzmeDv7eViU6FK1YTHH/OgDJ4A==} + /@aws-sdk/signature-v4-multi-region@3.499.0: + resolution: {integrity: sha512-8HSFnZErRm7lAfk+Epxrf4QNdQEamg1CnbLybtKQQEjmvxLuXYvj16KlpYEZIwEENOMEvnCqMc7syTPkmjVhJA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/middleware-sdk-s3': 3.496.0 + '@aws-sdk/middleware-sdk-s3': 3.499.0 '@aws-sdk/types': 3.496.0 '@smithy/protocol-http': 3.1.1 '@smithy/signature-v4': 2.1.1 @@ -1279,7 +1279,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.5 + '@types/node': 20.11.6 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -1300,14 +1300,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.5 + '@types/node': 20.11.6 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.11.5) + jest-config: 29.7.0(@types/node@20.11.6) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -1335,7 +1335,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.5 + '@types/node': 20.11.6 jest-mock: 29.7.0 dev: false @@ -1362,7 +1362,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.11.5 + '@types/node': 20.11.6 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -1395,7 +1395,7 @@ packages: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.20 - '@types/node': 20.11.5 + '@types/node': 20.11.6 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -1483,7 +1483,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.11.5 + '@types/node': 20.11.6 '@types/yargs': 17.0.32 chalk: 4.1.2 dev: false @@ -1518,8 +1518,8 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: false - /@neondatabase/serverless@0.6.0: - resolution: {integrity: sha512-qXxBRYN0m2v8kVQBfMxbzNGn2xFAhTXFibzQlE++NfJ56Shz3m7+MyBBtXDlEH+3Wfa6lToDXf1MElocY4sJ3w==} + /@neondatabase/serverless@0.7.2: + resolution: {integrity: sha512-wU3WA2uTyNO7wjPs3Mg0G01jztAxUxzd9/mskMmtPwPTjf7JKWi9AW5/puOGXLxmZ9PVgRFeBVRVYq5nBPhsCg==} dependencies: '@types/pg': 8.6.6 dev: false @@ -2294,8 +2294,8 @@ packages: pretty-format: 27.5.1 dev: false - /@testing-library/jest-dom@6.2.1(@types/jest@29.5.11)(jest@29.7.0): - resolution: {integrity: sha512-Nuy/uFFDe9h/2jwoUuMKgoxvgkUv4S9jI9bARj6dGUKJ3euRhg8JFi5sciYbrayoxkadEOZednRT9+vo6LvvxQ==} + /@testing-library/jest-dom@6.3.0(@types/jest@29.5.11)(jest@29.7.0): + resolution: {integrity: sha512-hJVIrkFizEQxoWsGBlycTcQhrpoCH4DhXfrnHFFXgkx3Xdm15zycsq5Ep+vpw4W8S0NJa8cxDHcuJib+1tEbhg==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} peerDependencies: '@jest/globals': '>= 28' @@ -2322,7 +2322,7 @@ packages: chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 - jest: 29.7.0(@types/node@20.11.5) + jest: 29.7.0(@types/node@20.11.6) lodash: 4.17.21 redent: 3.0.0 dev: false @@ -2386,7 +2386,7 @@ packages: /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 20.11.5 + '@types/node': 20.11.6 dev: false /@types/istanbul-lib-coverage@2.0.6: @@ -2415,7 +2415,7 @@ packages: /@types/jsdom@20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 20.11.5 + '@types/node': 20.11.6 '@types/tough-cookie': 4.0.5 parse5: 7.1.2 dev: false @@ -2428,8 +2428,8 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: false - /@types/node@20.11.5: - resolution: {integrity: sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==} + /@types/node@20.11.6: + resolution: {integrity: sha512-+EOokTnksGVgip2PbYbr3xnR7kZigh4LbybAfBAw5BpnQ+FqBYUsvCEjYd70IXKlbohQ64mzEYmMtlWUY8q//Q==} dependencies: undici-types: 5.26.5 dev: false @@ -2437,7 +2437,7 @@ packages: /@types/pg@8.6.6: resolution: {integrity: sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==} dependencies: - '@types/node': 20.11.5 + '@types/node': 20.11.6 pg-protocol: 1.6.0 pg-types: 2.2.0 dev: false @@ -2637,11 +2637,11 @@ packages: undici: 5.28.2 dev: false - /@vercel/postgres@0.5.1: - resolution: {integrity: sha512-JKl8QOBIDnifhkxAhIKtY0A5Tb8oWBf2nzZhm0OH7Ffjsl0hGVnDL2w1/FCfpX8xna3JAWM034NGuhZfTFdmiw==} + /@vercel/postgres@0.7.2: + resolution: {integrity: sha512-IqR/ZAvoPGcPaXl9eWWB5KaA+w/81RzZa/18P4izQRHpNBkTGt9HwGfYi9+wut5UgxNq4QSX9A7HIQR6QDvX2Q==} engines: {node: '>=14.6'} dependencies: - '@neondatabase/serverless': 0.6.0 + '@neondatabase/serverless': 0.7.2 bufferutil: 4.0.8 utf-8-validate: 6.0.3 ws: 8.14.2(bufferutil@4.0.8)(utf-8-validate@6.0.3) @@ -3262,7 +3262,7 @@ packages: engines: {node: '>= 0.6'} dev: false - /create-jest@29.7.0(@types/node@20.11.5): + /create-jest@29.7.0(@types/node@20.11.6): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -3271,7 +3271,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.11.5) + jest-config: 29.7.0(@types/node@20.11.6) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -4098,8 +4098,8 @@ packages: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: false - /framer-motion@10.18.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-oGlDh1Q1XqYPksuTD/usb0I70hq95OUzmL9+6Zd+Hs4XV0oaISBa/UUMSjYiq6m8EUF32132mOJ8xVZS+I0S6w==} + /framer-motion@11.0.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-6x2poQpIWBdbZwLd73w6cKZ1I9IEPIU94C6/Swp1Zt3LJ+sB5bPe1E2wC6EH5hSISXNkMJ4afH7AdwS7MrtkWw==} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 @@ -4718,7 +4718,7 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.5 + '@types/node': 20.11.6 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 @@ -4739,7 +4739,7 @@ packages: - supports-color dev: false - /jest-cli@29.7.0(@types/node@20.11.5): + /jest-cli@29.7.0(@types/node@20.11.6): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -4753,10 +4753,10 @@ packages: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.11.5) + create-jest: 29.7.0(@types/node@20.11.6) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.11.5) + jest-config: 29.7.0(@types/node@20.11.6) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -4767,7 +4767,7 @@ packages: - ts-node dev: false - /jest-config@29.7.0(@types/node@20.11.5): + /jest-config@29.7.0(@types/node@20.11.6): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -4782,7 +4782,7 @@ packages: '@babel/core': 7.23.7 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.5 + '@types/node': 20.11.6 babel-jest: 29.7.0(@babel/core@7.23.7) chalk: 4.1.2 ci-info: 3.9.0 @@ -4848,7 +4848,7 @@ packages: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 20.11.5 + '@types/node': 20.11.6 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -4865,7 +4865,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.5 + '@types/node': 20.11.6 jest-mock: 29.7.0 jest-util: 29.7.0 dev: false @@ -4881,7 +4881,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.11.5 + '@types/node': 20.11.6 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -4932,7 +4932,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.5 + '@types/node': 20.11.6 jest-util: 29.7.0 dev: false @@ -4987,7 +4987,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.5 + '@types/node': 20.11.6 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -5018,7 +5018,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.5 + '@types/node': 20.11.6 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 @@ -5070,7 +5070,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.5 + '@types/node': 20.11.6 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -5095,7 +5095,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.5 + '@types/node': 20.11.6 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -5107,13 +5107,13 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.11.5 + '@types/node': 20.11.6 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: false - /jest@29.7.0(@types/node@20.11.5): + /jest@29.7.0(@types/node@20.11.6): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -5126,7 +5126,7 @@ packages: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.11.5) + jest-cli: 29.7.0(@types/node@20.11.6) transitivePeerDependencies: - '@types/node' - babel-plugin-macros