Merge branch 'main' into static

This commit is contained in:
Sam Becker 2024-01-24 19:51:04 -06:00
commit b8d2d6f058
4 changed files with 97 additions and 90 deletions

View File

@ -102,10 +102,10 @@ Only one storage adapter—Vercel Blob, Cloudflare R2, or AWS S3—can be used a
- Store public configuration: - Store public configuration:
- `NEXT_PUBLIC_CLOUDFLARE_R2_BUCKET`: bucket name - `NEXT_PUBLIC_CLOUDFLARE_R2_BUCKET`: bucket name
- `NEXT_PUBLIC_CLOUDFLARE_R2_ACCOUNT_ID`: account id (found on R2 overview page) - `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 2. Setup private credentials
- Create API token by selecting "Manage R2 API Tokens," and clicking "Create API Token" - 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`_): - Store credentials (⚠️ _Ensure access keys are not prefixed with `NEXT_PUBLIC`_):
- `CLOUDFLARE_R2_ACCESS_KEY` - `CLOUDFLARE_R2_ACCESS_KEY`
- `CLOUDFLARE_R2_SECRET_ACCESS_KEY` - `CLOUDFLARE_R2_SECRET_ACCESS_KEY`

View File

@ -9,22 +9,22 @@
"analyze": "ANALYZE=true next build" "analyze": "ANALYZE=true next build"
}, },
"dependencies": { "dependencies": {
"@aws-sdk/client-s3": "3.496.0", "@aws-sdk/client-s3": "3.499.0",
"@aws-sdk/s3-request-presigner": "3.496.0", "@aws-sdk/s3-request-presigner": "3.499.0",
"@headlessui/react": "2.0.0-alpha.4", "@headlessui/react": "2.0.0-alpha.4",
"@next/bundle-analyzer": "14.1.0", "@next/bundle-analyzer": "14.1.0",
"@tailwindcss/forms": "^0.5.7", "@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", "@testing-library/react": "^14.1.2",
"@types/jest": "^29.5.11", "@types/jest": "^29.5.11",
"@types/node": "^20.11.5", "@types/node": "^20.11.6",
"@types/react": "18.2.48", "@types/react": "18.2.48",
"@types/react-dom": "18.2.18", "@types/react-dom": "18.2.18",
"@typescript-eslint/eslint-plugin": "^6.19.1", "@typescript-eslint/eslint-plugin": "^6.19.1",
"@typescript-eslint/parser": "^6.19.1", "@typescript-eslint/parser": "^6.19.1",
"@vercel/analytics": "^1.1.2", "@vercel/analytics": "^1.1.2",
"@vercel/blob": "^0.19.0", "@vercel/blob": "^0.19.0",
"@vercel/postgres": "0.5.1", "@vercel/postgres": "0.7.2",
"@vercel/speed-insights": "^1.0.7", "@vercel/speed-insights": "^1.0.7",
"autoprefixer": "10.4.17", "autoprefixer": "10.4.17",
"camelcase-keys": "^9.1.3", "camelcase-keys": "^9.1.3",
@ -33,7 +33,7 @@
"eslint": "8.56.0", "eslint": "8.56.0",
"eslint-config-next": "14.1.0", "eslint-config-next": "14.1.0",
"exifr": "^7.1.3", "exifr": "^7.1.3",
"framer-motion": "^10.18.0", "framer-motion": "^11.0.3",
"jest": "^29.7.0", "jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0", "jest-environment-jsdom": "^29.7.0",
"nanoid": "^5.0.4", "nanoid": "^5.0.4",

152
pnpm-lock.yaml generated
View File

@ -6,11 +6,11 @@ settings:
dependencies: dependencies:
'@aws-sdk/client-s3': '@aws-sdk/client-s3':
specifier: 3.496.0 specifier: 3.499.0
version: 3.496.0 version: 3.499.0
'@aws-sdk/s3-request-presigner': '@aws-sdk/s3-request-presigner':
specifier: 3.496.0 specifier: 3.499.0
version: 3.496.0 version: 3.499.0
'@headlessui/react': '@headlessui/react':
specifier: 2.0.0-alpha.4 specifier: 2.0.0-alpha.4
version: 2.0.0-alpha.4(react-dom@18.2.0)(react@18.2.0) version: 2.0.0-alpha.4(react-dom@18.2.0)(react@18.2.0)
@ -21,8 +21,8 @@ dependencies:
specifier: ^0.5.7 specifier: ^0.5.7
version: 0.5.7(tailwindcss@3.4.1) version: 0.5.7(tailwindcss@3.4.1)
'@testing-library/jest-dom': '@testing-library/jest-dom':
specifier: ^6.2.1 specifier: ^6.3.0
version: 6.2.1(@types/jest@29.5.11)(jest@29.7.0) version: 6.3.0(@types/jest@29.5.11)(jest@29.7.0)
'@testing-library/react': '@testing-library/react':
specifier: ^14.1.2 specifier: ^14.1.2
version: 14.1.2(react-dom@18.2.0)(react@18.2.0) version: 14.1.2(react-dom@18.2.0)(react@18.2.0)
@ -30,8 +30,8 @@ dependencies:
specifier: ^29.5.11 specifier: ^29.5.11
version: 29.5.11 version: 29.5.11
'@types/node': '@types/node':
specifier: ^20.11.5 specifier: ^20.11.6
version: 20.11.5 version: 20.11.6
'@types/react': '@types/react':
specifier: 18.2.48 specifier: 18.2.48
version: 18.2.48 version: 18.2.48
@ -51,8 +51,8 @@ dependencies:
specifier: ^0.19.0 specifier: ^0.19.0
version: 0.19.0 version: 0.19.0
'@vercel/postgres': '@vercel/postgres':
specifier: 0.5.1 specifier: 0.7.2
version: 0.5.1 version: 0.7.2
'@vercel/speed-insights': '@vercel/speed-insights':
specifier: ^1.0.7 specifier: ^1.0.7
version: 1.0.7(next@14.1.1-canary.6)(react@18.2.0) version: 1.0.7(next@14.1.1-canary.6)(react@18.2.0)
@ -78,11 +78,11 @@ dependencies:
specifier: ^7.1.3 specifier: ^7.1.3
version: 7.1.3 version: 7.1.3
framer-motion: framer-motion:
specifier: ^10.18.0 specifier: ^11.0.3
version: 10.18.0(react-dom@18.2.0)(react@18.2.0) version: 11.0.3(react-dom@18.2.0)(react@18.2.0)
jest: jest:
specifier: ^29.7.0 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: jest-environment-jsdom:
specifier: ^29.7.0 specifier: ^29.7.0
version: 29.7.0 version: 29.7.0
@ -233,16 +233,16 @@ packages:
tslib: 1.14.1 tslib: 1.14.1
dev: false dev: false
/@aws-sdk/client-s3@3.496.0: /@aws-sdk/client-s3@3.499.0:
resolution: {integrity: sha512-Q16iIP8SmM/7uWHbTCRnvXgM+RxgEDHQmkKL1bvdPLhfu4q1+RwWwJ/WS+1amwQtwvWc8Z51W4XEsokJmqOYUA==} resolution: {integrity: sha512-4ssQqde/iY5fTJbWuFPzPuECtihdCAA9tfluv6fXYCJS3wMLf9x21qp6b7fIbUf6vjOJ2edmYd+DXk+0CMnTFg==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-crypto/sha1-browser': 3.0.0 '@aws-crypto/sha1-browser': 3.0.0
'@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-browser': 3.0.0
'@aws-crypto/sha256-js': 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/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-bucket-endpoint': 3.496.0
'@aws-sdk/middleware-expect-continue': 3.496.0 '@aws-sdk/middleware-expect-continue': 3.496.0
'@aws-sdk/middleware-flexible-checksums': 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-location-constraint': 3.496.0
'@aws-sdk/middleware-logger': 3.496.0 '@aws-sdk/middleware-logger': 3.496.0
'@aws-sdk/middleware-recursion-detection': 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-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/middleware-user-agent': 3.496.0
'@aws-sdk/region-config-resolver': 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/types': 3.496.0
'@aws-sdk/util-endpoints': 3.496.0 '@aws-sdk/util-endpoints': 3.496.0
'@aws-sdk/util-user-agent-browser': 3.496.0 '@aws-sdk/util-user-agent-browser': 3.496.0
@ -344,14 +344,14 @@ packages:
- aws-crt - aws-crt
dev: false dev: false
/@aws-sdk/client-sts@3.496.0: /@aws-sdk/client-sts@3.499.0:
resolution: {integrity: sha512-3pSdqgegdwbK3CT1WvGHhA+Bf91R9cr8G1Ynp+iU2wZvy8ueJfMUk0NYfjo3EEv0YhSbMLKuduzZfvQHFHXYhw==} resolution: {integrity: sha512-Eyj9STw2DXMtXL5V/v0HYHO6+JjGPi257M5IYyxwqlvRchq6jbOsedobfxclB/gBUyBRtZdnyAIS8uCKjb4kpA==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-browser': 3.0.0
'@aws-crypto/sha256-js': 3.0.0 '@aws-crypto/sha256-js': 3.0.0
'@aws-sdk/core': 3.496.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-host-header': 3.496.0
'@aws-sdk/middleware-logger': 3.496.0 '@aws-sdk/middleware-logger': 3.496.0
'@aws-sdk/middleware-recursion-detection': 3.496.0 '@aws-sdk/middleware-recursion-detection': 3.496.0
@ -432,8 +432,8 @@ packages:
- aws-crt - aws-crt
dev: false dev: false
/@aws-sdk/credential-provider-node@3.496.0: /@aws-sdk/credential-provider-node@3.499.0:
resolution: {integrity: sha512-IVF9RvLePfRa5S5/eBIRChJCWOzQkGwM8P/L79Gl84u/cH2oSG4NtUI/YTDlrtmnYn7YsGhINSV0WnzfF2twfQ==} resolution: {integrity: sha512-EsiSevVmcVSMIq7D9siSH/XVc5I0vMntg1rx6KQdng1Fq8X/RBL5t9wSWEwOl7KFo5HlEsWrLWIpo1WHuzIL/w==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-sdk/credential-provider-env': 3.496.0 '@aws-sdk/credential-provider-env': 3.496.0
@ -562,8 +562,8 @@ packages:
tslib: 2.6.2 tslib: 2.6.2
dev: false dev: false
/@aws-sdk/middleware-sdk-s3@3.496.0: /@aws-sdk/middleware-sdk-s3@3.499.0:
resolution: {integrity: sha512-OKrTPzubisQCQzPuF4G7jmbYt71o6W7oefmW9zm1MpGokRSJeC9zv4aT1gkMglpXEHgvL0S5fUVGi0AtF/F8Kw==} resolution: {integrity: sha512-thTb47U1hYHk5ei+yO0D0aehbgQXeAcgvyyxOID9/HDuRfWuTvKdclWh/goIeDfvSS87VBukEAjnCa5JYBwzug==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-sdk/types': 3.496.0 '@aws-sdk/types': 3.496.0
@ -590,8 +590,8 @@ packages:
tslib: 2.6.2 tslib: 2.6.2
dev: false dev: false
/@aws-sdk/middleware-ssec@3.496.0: /@aws-sdk/middleware-ssec@3.498.0:
resolution: {integrity: sha512-6RUFEgGqKGq8N8W9tsctS8KRlYnmD/yiExb/LvblCJqV1DWoD0psRFWNz8TQZtujHklG5dHjuq+aN/qicjBNdw==} resolution: {integrity: sha512-sWujXgzeTqMZzj/pRYEnnEbSzhBosqw9DXHOY1Mg2igI9NEfGlB7lPARp6aKmCaYlP3Bcj2X86vKCqF53mbyig==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-sdk/types': 3.496.0 '@aws-sdk/types': 3.496.0
@ -622,11 +622,11 @@ packages:
tslib: 2.6.2 tslib: 2.6.2
dev: false dev: false
/@aws-sdk/s3-request-presigner@3.496.0: /@aws-sdk/s3-request-presigner@3.499.0:
resolution: {integrity: sha512-l4FMNKYjEDRwjry5zG0TAmfKY/COh/ZoGiUGfTUXaL92NzNqv8NpREHVvL7Rp6YeGzF1/j6/1LeVzDct94lc/Q==} resolution: {integrity: sha512-4Hi9FUnASXA/7zHGGD4Wtmb6ynoK4r2VFYTPnFmoM12PL4BD4DLGcHGZkM0APBgiPEKnxQfWPXK6xgl3MigXDA==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: 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/types': 3.496.0
'@aws-sdk/util-format-url': 3.496.0 '@aws-sdk/util-format-url': 3.496.0
'@smithy/middleware-endpoint': 2.4.1 '@smithy/middleware-endpoint': 2.4.1
@ -636,11 +636,11 @@ packages:
tslib: 2.6.2 tslib: 2.6.2
dev: false dev: false
/@aws-sdk/signature-v4-multi-region@3.496.0: /@aws-sdk/signature-v4-multi-region@3.499.0:
resolution: {integrity: sha512-zi3cL8+dRVSvC0PA6votwEHF4l9uxOyQTiRfgpFgzJ9iiPbsrtWCalGCwN0UyzmeDv7eViU6FK1YTHH/OgDJ4A==} resolution: {integrity: sha512-8HSFnZErRm7lAfk+Epxrf4QNdQEamg1CnbLybtKQQEjmvxLuXYvj16KlpYEZIwEENOMEvnCqMc7syTPkmjVhJA==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-sdk/middleware-sdk-s3': 3.496.0 '@aws-sdk/middleware-sdk-s3': 3.499.0
'@aws-sdk/types': 3.496.0 '@aws-sdk/types': 3.496.0
'@smithy/protocol-http': 3.1.1 '@smithy/protocol-http': 3.1.1
'@smithy/signature-v4': 2.1.1 '@smithy/signature-v4': 2.1.1
@ -1279,7 +1279,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.11.5 '@types/node': 20.11.6
chalk: 4.1.2 chalk: 4.1.2
jest-message-util: 29.7.0 jest-message-util: 29.7.0
jest-util: 29.7.0 jest-util: 29.7.0
@ -1300,14 +1300,14 @@ packages:
'@jest/test-result': 29.7.0 '@jest/test-result': 29.7.0
'@jest/transform': 29.7.0 '@jest/transform': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.11.5 '@types/node': 20.11.6
ansi-escapes: 4.3.2 ansi-escapes: 4.3.2
chalk: 4.1.2 chalk: 4.1.2
ci-info: 3.9.0 ci-info: 3.9.0
exit: 0.1.2 exit: 0.1.2
graceful-fs: 4.2.11 graceful-fs: 4.2.11
jest-changed-files: 29.7.0 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-haste-map: 29.7.0
jest-message-util: 29.7.0 jest-message-util: 29.7.0
jest-regex-util: 29.6.3 jest-regex-util: 29.6.3
@ -1335,7 +1335,7 @@ packages:
dependencies: dependencies:
'@jest/fake-timers': 29.7.0 '@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.11.5 '@types/node': 20.11.6
jest-mock: 29.7.0 jest-mock: 29.7.0
dev: false dev: false
@ -1362,7 +1362,7 @@ packages:
dependencies: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0 '@sinonjs/fake-timers': 10.3.0
'@types/node': 20.11.5 '@types/node': 20.11.6
jest-message-util: 29.7.0 jest-message-util: 29.7.0
jest-mock: 29.7.0 jest-mock: 29.7.0
jest-util: 29.7.0 jest-util: 29.7.0
@ -1395,7 +1395,7 @@ packages:
'@jest/transform': 29.7.0 '@jest/transform': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.20 '@jridgewell/trace-mapping': 0.3.20
'@types/node': 20.11.5 '@types/node': 20.11.6
chalk: 4.1.2 chalk: 4.1.2
collect-v8-coverage: 1.0.2 collect-v8-coverage: 1.0.2
exit: 0.1.2 exit: 0.1.2
@ -1483,7 +1483,7 @@ packages:
'@jest/schemas': 29.6.3 '@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4 '@types/istanbul-reports': 3.0.4
'@types/node': 20.11.5 '@types/node': 20.11.6
'@types/yargs': 17.0.32 '@types/yargs': 17.0.32
chalk: 4.1.2 chalk: 4.1.2
dev: false dev: false
@ -1518,8 +1518,8 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/sourcemap-codec': 1.4.15
dev: false dev: false
/@neondatabase/serverless@0.6.0: /@neondatabase/serverless@0.7.2:
resolution: {integrity: sha512-qXxBRYN0m2v8kVQBfMxbzNGn2xFAhTXFibzQlE++NfJ56Shz3m7+MyBBtXDlEH+3Wfa6lToDXf1MElocY4sJ3w==} resolution: {integrity: sha512-wU3WA2uTyNO7wjPs3Mg0G01jztAxUxzd9/mskMmtPwPTjf7JKWi9AW5/puOGXLxmZ9PVgRFeBVRVYq5nBPhsCg==}
dependencies: dependencies:
'@types/pg': 8.6.6 '@types/pg': 8.6.6
dev: false dev: false
@ -2294,8 +2294,8 @@ packages:
pretty-format: 27.5.1 pretty-format: 27.5.1
dev: false dev: false
/@testing-library/jest-dom@6.2.1(@types/jest@29.5.11)(jest@29.7.0): /@testing-library/jest-dom@6.3.0(@types/jest@29.5.11)(jest@29.7.0):
resolution: {integrity: sha512-Nuy/uFFDe9h/2jwoUuMKgoxvgkUv4S9jI9bARj6dGUKJ3euRhg8JFi5sciYbrayoxkadEOZednRT9+vo6LvvxQ==} resolution: {integrity: sha512-hJVIrkFizEQxoWsGBlycTcQhrpoCH4DhXfrnHFFXgkx3Xdm15zycsq5Ep+vpw4W8S0NJa8cxDHcuJib+1tEbhg==}
engines: {node: '>=14', npm: '>=6', yarn: '>=1'} engines: {node: '>=14', npm: '>=6', yarn: '>=1'}
peerDependencies: peerDependencies:
'@jest/globals': '>= 28' '@jest/globals': '>= 28'
@ -2322,7 +2322,7 @@ packages:
chalk: 3.0.0 chalk: 3.0.0
css.escape: 1.5.1 css.escape: 1.5.1
dom-accessibility-api: 0.6.3 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 lodash: 4.17.21
redent: 3.0.0 redent: 3.0.0
dev: false dev: false
@ -2386,7 +2386,7 @@ packages:
/@types/graceful-fs@4.1.9: /@types/graceful-fs@4.1.9:
resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==}
dependencies: dependencies:
'@types/node': 20.11.5 '@types/node': 20.11.6
dev: false dev: false
/@types/istanbul-lib-coverage@2.0.6: /@types/istanbul-lib-coverage@2.0.6:
@ -2415,7 +2415,7 @@ packages:
/@types/jsdom@20.0.1: /@types/jsdom@20.0.1:
resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==}
dependencies: dependencies:
'@types/node': 20.11.5 '@types/node': 20.11.6
'@types/tough-cookie': 4.0.5 '@types/tough-cookie': 4.0.5
parse5: 7.1.2 parse5: 7.1.2
dev: false dev: false
@ -2428,8 +2428,8 @@ packages:
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
dev: false dev: false
/@types/node@20.11.5: /@types/node@20.11.6:
resolution: {integrity: sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==} resolution: {integrity: sha512-+EOokTnksGVgip2PbYbr3xnR7kZigh4LbybAfBAw5BpnQ+FqBYUsvCEjYd70IXKlbohQ64mzEYmMtlWUY8q//Q==}
dependencies: dependencies:
undici-types: 5.26.5 undici-types: 5.26.5
dev: false dev: false
@ -2437,7 +2437,7 @@ packages:
/@types/pg@8.6.6: /@types/pg@8.6.6:
resolution: {integrity: sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==} resolution: {integrity: sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==}
dependencies: dependencies:
'@types/node': 20.11.5 '@types/node': 20.11.6
pg-protocol: 1.6.0 pg-protocol: 1.6.0
pg-types: 2.2.0 pg-types: 2.2.0
dev: false dev: false
@ -2637,11 +2637,11 @@ packages:
undici: 5.28.2 undici: 5.28.2
dev: false dev: false
/@vercel/postgres@0.5.1: /@vercel/postgres@0.7.2:
resolution: {integrity: sha512-JKl8QOBIDnifhkxAhIKtY0A5Tb8oWBf2nzZhm0OH7Ffjsl0hGVnDL2w1/FCfpX8xna3JAWM034NGuhZfTFdmiw==} resolution: {integrity: sha512-IqR/ZAvoPGcPaXl9eWWB5KaA+w/81RzZa/18P4izQRHpNBkTGt9HwGfYi9+wut5UgxNq4QSX9A7HIQR6QDvX2Q==}
engines: {node: '>=14.6'} engines: {node: '>=14.6'}
dependencies: dependencies:
'@neondatabase/serverless': 0.6.0 '@neondatabase/serverless': 0.7.2
bufferutil: 4.0.8 bufferutil: 4.0.8
utf-8-validate: 6.0.3 utf-8-validate: 6.0.3
ws: 8.14.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'} engines: {node: '>= 0.6'}
dev: false 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==} resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
hasBin: true hasBin: true
@ -3271,7 +3271,7 @@ packages:
chalk: 4.1.2 chalk: 4.1.2
exit: 0.1.2 exit: 0.1.2
graceful-fs: 4.2.11 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 jest-util: 29.7.0
prompts: 2.4.2 prompts: 2.4.2
transitivePeerDependencies: transitivePeerDependencies:
@ -4098,8 +4098,8 @@ packages:
resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
dev: false dev: false
/framer-motion@10.18.0(react-dom@18.2.0)(react@18.2.0): /framer-motion@11.0.3(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-oGlDh1Q1XqYPksuTD/usb0I70hq95OUzmL9+6Zd+Hs4XV0oaISBa/UUMSjYiq6m8EUF32132mOJ8xVZS+I0S6w==} resolution: {integrity: sha512-6x2poQpIWBdbZwLd73w6cKZ1I9IEPIU94C6/Swp1Zt3LJ+sB5bPe1E2wC6EH5hSISXNkMJ4afH7AdwS7MrtkWw==}
peerDependencies: peerDependencies:
react: ^18.0.0 react: ^18.0.0
react-dom: ^18.0.0 react-dom: ^18.0.0
@ -4718,7 +4718,7 @@ packages:
'@jest/expect': 29.7.0 '@jest/expect': 29.7.0
'@jest/test-result': 29.7.0 '@jest/test-result': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.11.5 '@types/node': 20.11.6
chalk: 4.1.2 chalk: 4.1.2
co: 4.6.0 co: 4.6.0
dedent: 1.5.1 dedent: 1.5.1
@ -4739,7 +4739,7 @@ packages:
- supports-color - supports-color
dev: false 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==} resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
hasBin: true hasBin: true
@ -4753,10 +4753,10 @@ packages:
'@jest/test-result': 29.7.0 '@jest/test-result': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
chalk: 4.1.2 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 exit: 0.1.2
import-local: 3.1.0 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-util: 29.7.0
jest-validate: 29.7.0 jest-validate: 29.7.0
yargs: 17.7.2 yargs: 17.7.2
@ -4767,7 +4767,7 @@ packages:
- ts-node - ts-node
dev: false 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==} resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies: peerDependencies:
@ -4782,7 +4782,7 @@ packages:
'@babel/core': 7.23.7 '@babel/core': 7.23.7
'@jest/test-sequencer': 29.7.0 '@jest/test-sequencer': 29.7.0
'@jest/types': 29.6.3 '@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) babel-jest: 29.7.0(@babel/core@7.23.7)
chalk: 4.1.2 chalk: 4.1.2
ci-info: 3.9.0 ci-info: 3.9.0
@ -4848,7 +4848,7 @@ packages:
'@jest/fake-timers': 29.7.0 '@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/jsdom': 20.0.1 '@types/jsdom': 20.0.1
'@types/node': 20.11.5 '@types/node': 20.11.6
jest-mock: 29.7.0 jest-mock: 29.7.0
jest-util: 29.7.0 jest-util: 29.7.0
jsdom: 20.0.3 jsdom: 20.0.3
@ -4865,7 +4865,7 @@ packages:
'@jest/environment': 29.7.0 '@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0 '@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.11.5 '@types/node': 20.11.6
jest-mock: 29.7.0 jest-mock: 29.7.0
jest-util: 29.7.0 jest-util: 29.7.0
dev: false dev: false
@ -4881,7 +4881,7 @@ packages:
dependencies: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/graceful-fs': 4.1.9 '@types/graceful-fs': 4.1.9
'@types/node': 20.11.5 '@types/node': 20.11.6
anymatch: 3.1.3 anymatch: 3.1.3
fb-watchman: 2.0.2 fb-watchman: 2.0.2
graceful-fs: 4.2.11 graceful-fs: 4.2.11
@ -4932,7 +4932,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.11.5 '@types/node': 20.11.6
jest-util: 29.7.0 jest-util: 29.7.0
dev: false dev: false
@ -4987,7 +4987,7 @@ packages:
'@jest/test-result': 29.7.0 '@jest/test-result': 29.7.0
'@jest/transform': 29.7.0 '@jest/transform': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.11.5 '@types/node': 20.11.6
chalk: 4.1.2 chalk: 4.1.2
emittery: 0.13.1 emittery: 0.13.1
graceful-fs: 4.2.11 graceful-fs: 4.2.11
@ -5018,7 +5018,7 @@ packages:
'@jest/test-result': 29.7.0 '@jest/test-result': 29.7.0
'@jest/transform': 29.7.0 '@jest/transform': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.11.5 '@types/node': 20.11.6
chalk: 4.1.2 chalk: 4.1.2
cjs-module-lexer: 1.2.3 cjs-module-lexer: 1.2.3
collect-v8-coverage: 1.0.2 collect-v8-coverage: 1.0.2
@ -5070,7 +5070,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.11.5 '@types/node': 20.11.6
chalk: 4.1.2 chalk: 4.1.2
ci-info: 3.9.0 ci-info: 3.9.0
graceful-fs: 4.2.11 graceful-fs: 4.2.11
@ -5095,7 +5095,7 @@ packages:
dependencies: dependencies:
'@jest/test-result': 29.7.0 '@jest/test-result': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.11.5 '@types/node': 20.11.6
ansi-escapes: 4.3.2 ansi-escapes: 4.3.2
chalk: 4.1.2 chalk: 4.1.2
emittery: 0.13.1 emittery: 0.13.1
@ -5107,13 +5107,13 @@ packages:
resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies: dependencies:
'@types/node': 20.11.5 '@types/node': 20.11.6
jest-util: 29.7.0 jest-util: 29.7.0
merge-stream: 2.0.0 merge-stream: 2.0.0
supports-color: 8.1.1 supports-color: 8.1.1
dev: false 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==} resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
hasBin: true hasBin: true
@ -5126,7 +5126,7 @@ packages:
'@jest/core': 29.7.0 '@jest/core': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
import-local: 3.1.0 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: transitivePeerDependencies:
- '@types/node' - '@types/node'
- babel-plugin-macros - babel-plugin-macros

View File

@ -7,15 +7,26 @@ export const SITE_TITLE =
process.env.NEXT_PUBLIC_SITE_TITLE || process.env.NEXT_PUBLIC_SITE_TITLE ||
'Photo Blog'; '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_URL = process.env.NEXT_PUBLIC_VERCEL_BRANCH_URL;
const VERCEL_BRANCH = process.env.NEXT_PUBLIC_VERCEL_GIT_COMMIT_REF; 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` ? `${VERCEL_BRANCH_URL.split(`-git-${VERCEL_BRANCH}-`)[0]}.vercel.app`
: undefined; : undefined;
// const VERCEL_URL = VERCEL_PROJECT_URL || VERCEL_DEPLOYMENT_URL;
// User-facing domain and potential site title
const SITE_DOMAIN = const SITE_DOMAIN =
process.env.NEXT_PUBLIC_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_BRANCH_URL || VERCEL_DEPLOYMENT_URL
: 'http://localhost:3000')?.toLocaleLowerCase();
const SITE_DOMAIN_SHORT = shortenUrl(SITE_DOMAIN); const SITE_DOMAIN_SHORT = shortenUrl(SITE_DOMAIN);
@ -27,10 +38,6 @@ export const SITE_DESCRIPTION =
process.env.NEXT_PUBLIC_SITE_DESCRIPTION || process.env.NEXT_PUBLIC_SITE_DESCRIPTION ||
SITE_DOMAIN; SITE_DOMAIN;
export const BASE_URL = process.env.NODE_ENV === 'production'
? makeUrlAbsolute(SITE_DOMAIN)?.toLowerCase()
: 'http://localhost:3000';
// STORAGE: VERCEL BLOB // STORAGE: VERCEL BLOB
export const HAS_VERCEL_BLOB_STORAGE = export const HAS_VERCEL_BLOB_STORAGE =
(process.env.BLOB_READ_WRITE_TOKEN ?? '').length > 0; (process.env.BLOB_READ_WRITE_TOKEN ?? '').length > 0;