Use official blob copy() when converting uploads

This commit is contained in:
Sam Becker 2023-10-18 13:39:55 -05:00
parent 3ed6552b38
commit 1f9bc74abf
3 changed files with 203 additions and 204 deletions

View File

@ -9,29 +9,29 @@
"analyze": "ANALYZE=true next build"
},
"dependencies": {
"@next/bundle-analyzer": "^13.5.4",
"@next/bundle-analyzer": "^13.5.5",
"@tailwindcss/forms": "^0.5.6",
"@testing-library/jest-dom": "^6.1.3",
"@testing-library/jest-dom": "^6.1.4",
"@testing-library/react": "^14.0.0",
"@types/jest": "^29.5.5",
"@types/node": "^20.8.4",
"@types/react": "18.2.28",
"@types/jest": "^29.5.6",
"@types/node": "^20.8.7",
"@types/react": "18.2.29",
"@types/react-dom": "18.2.8",
"@typescript-eslint/eslint-plugin": "^6.7.5",
"@typescript-eslint/parser": "^6.7.5",
"@vercel/analytics": "^1.1.0",
"@vercel/blob": "^0.13.0",
"@typescript-eslint/eslint-plugin": "^6.8.0",
"@typescript-eslint/parser": "^6.8.0",
"@vercel/analytics": "^1.1.1",
"@vercel/blob": "^0.14.0",
"@vercel/postgres": "0.5.0",
"autoprefixer": "10.4.16",
"camelcase-keys": "^9.1.0",
"camelcase-keys": "^9.1.2",
"date-fns": "^2.30.0",
"eslint": "8.51.0",
"eslint-config-next": "13.5.4",
"eslint-config-next": "13.5.5",
"framer-motion": "^10.16.4",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"nanoid": "^5.0.1",
"next": "^13.5.4",
"nanoid": "^5.0.2",
"next": "^13.5.5",
"next-auth": "0.0.0-manual.c885ac1d",
"next-themes": "^0.2.1",
"postcss": "8.4.31",

347
pnpm-lock.yaml generated
View File

@ -6,41 +6,41 @@ settings:
dependencies:
'@next/bundle-analyzer':
specifier: ^13.5.4
version: 13.5.4
specifier: ^13.5.5
version: 13.5.5
'@tailwindcss/forms':
specifier: ^0.5.6
version: 0.5.6(tailwindcss@3.3.3)
'@testing-library/jest-dom':
specifier: ^6.1.3
version: 6.1.3(@types/jest@29.5.5)(jest@29.7.0)
specifier: ^6.1.4
version: 6.1.4(@types/jest@29.5.6)(jest@29.7.0)
'@testing-library/react':
specifier: ^14.0.0
version: 14.0.0(react-dom@18.2.0)(react@18.2.0)
'@types/jest':
specifier: ^29.5.5
version: 29.5.5
specifier: ^29.5.6
version: 29.5.6
'@types/node':
specifier: ^20.8.4
version: 20.8.4
specifier: ^20.8.7
version: 20.8.7
'@types/react':
specifier: 18.2.28
version: 18.2.28
specifier: 18.2.29
version: 18.2.29
'@types/react-dom':
specifier: 18.2.8
version: 18.2.8
'@typescript-eslint/eslint-plugin':
specifier: ^6.7.5
version: 6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2)
specifier: ^6.8.0
version: 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/parser':
specifier: ^6.7.5
version: 6.7.5(eslint@8.51.0)(typescript@5.2.2)
specifier: ^6.8.0
version: 6.8.0(eslint@8.51.0)(typescript@5.2.2)
'@vercel/analytics':
specifier: ^1.1.0
version: 1.1.0
specifier: ^1.1.1
version: 1.1.1
'@vercel/blob':
specifier: ^0.13.0
version: 0.13.0
specifier: ^0.14.0
version: 0.14.0
'@vercel/postgres':
specifier: 0.5.0
version: 0.5.0
@ -48,8 +48,8 @@ dependencies:
specifier: 10.4.16
version: 10.4.16(postcss@8.4.31)
camelcase-keys:
specifier: ^9.1.0
version: 9.1.0
specifier: ^9.1.2
version: 9.1.2
date-fns:
specifier: ^2.30.0
version: 2.30.0
@ -57,29 +57,29 @@ dependencies:
specifier: 8.51.0
version: 8.51.0
eslint-config-next:
specifier: 13.5.4
version: 13.5.4(eslint@8.51.0)(typescript@5.2.2)
specifier: 13.5.5
version: 13.5.5(eslint@8.51.0)(typescript@5.2.2)
framer-motion:
specifier: ^10.16.4
version: 10.16.4(react-dom@18.2.0)(react@18.2.0)
jest:
specifier: ^29.7.0
version: 29.7.0(@types/node@20.8.4)
version: 29.7.0(@types/node@20.8.7)
jest-environment-jsdom:
specifier: ^29.7.0
version: 29.7.0
nanoid:
specifier: ^5.0.1
version: 5.0.1
specifier: ^5.0.2
version: 5.0.2
next:
specifier: ^13.5.4
version: 13.5.4(@babel/core@7.23.0)(react-dom@18.2.0)(react@18.2.0)
specifier: ^13.5.5
version: 13.5.5(@babel/core@7.23.0)(react-dom@18.2.0)(react@18.2.0)
next-auth:
specifier: 0.0.0-manual.c885ac1d
version: 0.0.0-manual.c885ac1d(next@13.5.4)(react@18.2.0)
version: 0.0.0-manual.c885ac1d(next@13.5.5)(react@18.2.0)
next-themes:
specifier: ^0.2.1
version: 0.2.1(next@13.5.4)(react-dom@18.2.0)(react@18.2.0)
version: 0.2.1(next@13.5.5)(react-dom@18.2.0)(react@18.2.0)
postcss:
specifier: 8.4.31
version: 8.4.31
@ -532,6 +532,11 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: false
/@fastify/busboy@2.0.0:
resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==}
engines: {node: '>=14'}
dev: false
/@humanwhocodes/config-array@0.11.11:
resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==}
engines: {node: '>=10.10.0'}
@ -573,7 +578,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
'@types/node': 20.8.4
'@types/node': 20.8.7
chalk: 4.1.2
jest-message-util: 29.7.0
jest-util: 29.7.0
@ -594,14 +599,14 @@ packages:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@types/node': 20.8.4
'@types/node': 20.8.7
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 3.8.0
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
jest-config: 29.7.0(@types/node@20.8.4)
jest-config: 29.7.0(@types/node@20.8.7)
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@ -629,7 +634,7 @@ packages:
dependencies:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
'@types/node': 20.8.4
'@types/node': 20.8.7
jest-mock: 29.7.0
dev: false
@ -656,7 +661,7 @@ packages:
dependencies:
'@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0
'@types/node': 20.8.4
'@types/node': 20.8.7
jest-message-util: 29.7.0
jest-mock: 29.7.0
jest-util: 29.7.0
@ -689,7 +694,7 @@ packages:
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.19
'@types/node': 20.8.4
'@types/node': 20.8.7
chalk: 4.1.2
collect-v8-coverage: 1.0.2
exit: 0.1.2
@ -777,7 +782,7 @@ packages:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.4
'@types/istanbul-reports': 3.0.1
'@types/node': 20.8.4
'@types/node': 20.8.7
'@types/yargs': 17.0.24
chalk: 4.1.2
dev: false
@ -818,8 +823,8 @@ packages:
'@types/pg': 8.6.6
dev: false
/@next/bundle-analyzer@13.5.4:
resolution: {integrity: sha512-2vgmkuSKyTiyI7NorL+zYerxQRvzmSGbCDr2/kVrbKX28a4UNhbYn8/cQW8z6pvx0EncEFpd0GCUA5r9aRLhJg==}
/@next/bundle-analyzer@13.5.5:
resolution: {integrity: sha512-v69BJm8ONM/e6l39Ao0ar8TwZyFnhI5s6id8LGayNq/3JaqkbzW97bIcBkTI0H9RiX3zZNIiaIyMgdKcbJqvsw==}
dependencies:
webpack-bundle-analyzer: 4.7.0
transitivePeerDependencies:
@ -827,18 +832,18 @@ packages:
- utf-8-validate
dev: false
/@next/env@13.5.4:
resolution: {integrity: sha512-LGegJkMvRNw90WWphGJ3RMHMVplYcOfRWf2Be3td3sUa+1AaxmsYyANsA+znrGCBjXJNi4XAQlSoEfUxs/4kIQ==}
/@next/env@13.5.5:
resolution: {integrity: sha512-agvIhYWp+ilbScg81s/sLueZo8CNEYLjNOqhISxheLmD/AQI4/VxV7bV76i/KzxH4iHy/va0YS9z0AOwGnw4Fg==}
dev: false
/@next/eslint-plugin-next@13.5.4:
resolution: {integrity: sha512-vI94U+D7RNgX6XypSyjeFrOzxGlZyxOplU0dVE5norIfZGn/LDjJYPHdvdsR5vN1eRtl6PDAsOHmycFEOljK5A==}
/@next/eslint-plugin-next@13.5.5:
resolution: {integrity: sha512-S/32s4S+SCOpW58lHKdmILAAPRdnsSei7Y3L1oZSoe5Eh0QSlzbG1nYyIpnpwWgz3T7qe3imdq7cJ6Hf29epRA==}
dependencies:
glob: 7.1.7
dev: false
/@next/swc-darwin-arm64@13.5.4:
resolution: {integrity: sha512-Df8SHuXgF1p+aonBMcDPEsaahNo2TCwuie7VXED4FVyECvdXfRT9unapm54NssV9tF3OQFKBFOdlje4T43VO0w==}
/@next/swc-darwin-arm64@13.5.5:
resolution: {integrity: sha512-FvTdcJdTA7H1FGY8dKPPbf/O0oDC041/znHZwXA7liiGUhgw5hOQ+9z8tWvuz0M5a/SDjY/IRPBAb5FIFogYww==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
@ -846,8 +851,8 @@ packages:
dev: false
optional: true
/@next/swc-darwin-x64@13.5.4:
resolution: {integrity: sha512-siPuUwO45PnNRMeZnSa8n/Lye5ZX93IJom9wQRB5DEOdFrw0JjOMu1GINB8jAEdwa7Vdyn1oJ2xGNaQpdQQ9Pw==}
/@next/swc-darwin-x64@13.5.5:
resolution: {integrity: sha512-mTqNIecaojmyia7appVO2QggBe1Z2fdzxgn6jb3x9qlAk8yY2sy4MAcsj71kC9RlenCqDmr9vtC/ESFf110TPA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
@ -855,8 +860,8 @@ packages:
dev: false
optional: true
/@next/swc-linux-arm64-gnu@13.5.4:
resolution: {integrity: sha512-l/k/fvRP/zmB2jkFMfefmFkyZbDkYW0mRM/LB+tH5u9pB98WsHXC0WvDHlGCYp3CH/jlkJPL7gN8nkTQVrQ/2w==}
/@next/swc-linux-arm64-gnu@13.5.5:
resolution: {integrity: sha512-U9e+kNkfvwh/T8yo+xcslvNXgyMzPPX1IbwCwnHHFmX5ckb1Uc3XZSInNjFQEQR5xhJpB5sFdal+IiBIiLYkZA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
@ -864,8 +869,8 @@ packages:
dev: false
optional: true
/@next/swc-linux-arm64-musl@13.5.4:
resolution: {integrity: sha512-YYGb7SlLkI+XqfQa8VPErljb7k9nUnhhRrVaOdfJNCaQnHBcvbT7cx/UjDQLdleJcfyg1Hkn5YSSIeVfjgmkTg==}
/@next/swc-linux-arm64-musl@13.5.5:
resolution: {integrity: sha512-h7b58eIoNCSmKVC5fr167U0HWZ/yGLbkKD9wIller0nGdyl5zfTji0SsPKJvrG8jvKPFt2xOkVBmXlFOtuKynw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
@ -873,8 +878,8 @@ packages:
dev: false
optional: true
/@next/swc-linux-x64-gnu@13.5.4:
resolution: {integrity: sha512-uE61vyUSClnCH18YHjA8tE1prr/PBFlBFhxBZis4XBRJoR+txAky5d7gGNUIbQ8sZZ7LVkSVgm/5Fc7mwXmRAg==}
/@next/swc-linux-x64-gnu@13.5.5:
resolution: {integrity: sha512-6U4y21T1J6FfcpM9uqzBJicxycpB5gJKLyQ3g6KOfBzT8H1sMwfHTRrvHKB09GIn1BCRy5YJHrA1G26DzqR46w==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
@ -882,8 +887,8 @@ packages:
dev: false
optional: true
/@next/swc-linux-x64-musl@13.5.4:
resolution: {integrity: sha512-qVEKFYML/GvJSy9CfYqAdUexA6M5AklYcQCW+8JECmkQHGoPxCf04iMh7CPR7wkHyWWK+XLt4Ja7hhsPJtSnhg==}
/@next/swc-linux-x64-musl@13.5.5:
resolution: {integrity: sha512-OuqWSAQHJQM2EsapPFTSU/FLQ0wKm7UeRNatiR/jLeCe1V02aB9xmzuWYo2Neaxxag4rss3S8fj+lvMLzwDaFA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
@ -891,8 +896,8 @@ packages:
dev: false
optional: true
/@next/swc-win32-arm64-msvc@13.5.4:
resolution: {integrity: sha512-mDSQfqxAlfpeZOLPxLymZkX0hYF3juN57W6vFHTvwKlnHfmh12Pt7hPIRLYIShk8uYRsKPtMTth/EzpwRI+u8w==}
/@next/swc-win32-arm64-msvc@13.5.5:
resolution: {integrity: sha512-+yLrOZIIZDY4uGn9bLOc0wTgs+M8RuOUFSUK3BhmcLav9e+tcAj0jyBHD4aXv2qWhppUeuYMsyBo1I58/eE6Dg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
@ -900,8 +905,8 @@ packages:
dev: false
optional: true
/@next/swc-win32-ia32-msvc@13.5.4:
resolution: {integrity: sha512-aoqAT2XIekIWoriwzOmGFAvTtVY5O7JjV21giozBTP5c6uZhpvTWRbmHXbmsjZqY4HnEZQRXWkSAppsIBweKqw==}
/@next/swc-win32-ia32-msvc@13.5.5:
resolution: {integrity: sha512-SyMxXyJtf9ScMH0Dh87THJMXNFvfkRAk841xyW9SeOX3KxM1buXX3hN7vof4kMGk0Yg996OGsX+7C9ueS8ugsw==}
engines: {node: '>= 10'}
cpu: [ia32]
os: [win32]
@ -909,8 +914,8 @@ packages:
dev: false
optional: true
/@next/swc-win32-x64-msvc@13.5.4:
resolution: {integrity: sha512-cyRvlAxwlddlqeB9xtPSfNSCRy8BOa4wtMo0IuI9P7Y0XT2qpDrpFKRyZ7kUngZis59mPVla5k8X1oOJ8RxDYg==}
/@next/swc-win32-x64-msvc@13.5.5:
resolution: {integrity: sha512-n5KVf2Ok0BbLwofAaHiiKf+BQCj1M8WmTujiER4/qzYAVngnsNSjqEWvJ03raeN9eURqxDO+yL5VRoDrR33H9A==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@ -996,8 +1001,8 @@ packages:
pretty-format: 27.5.1
dev: false
/@testing-library/jest-dom@6.1.3(@types/jest@29.5.5)(jest@29.7.0):
resolution: {integrity: sha512-YzpjRHoCBWPzpPNtg6gnhasqtE/5O4qz8WCwDEaxtfnPO6gkaLrnuXusrGSPyhIGPezr1HM7ZH0CFaUTY9PJEQ==}
/@testing-library/jest-dom@6.1.4(@types/jest@29.5.6)(jest@29.7.0):
resolution: {integrity: sha512-wpoYrCYwSZ5/AxcrjLxJmCU6I5QAJXslEeSiMQqaWmP2Kzpd1LvF/qxmAIW2qposULGWq2gw30GgVNFLSc2Jnw==}
engines: {node: '>=14', npm: '>=6', yarn: '>=1'}
peerDependencies:
'@jest/globals': '>= 28'
@ -1016,12 +1021,12 @@ packages:
dependencies:
'@adobe/css-tools': 4.3.1
'@babel/runtime': 7.22.15
'@types/jest': 29.5.5
'@types/jest': 29.5.6
aria-query: 5.3.0
chalk: 3.0.0
css.escape: 1.5.1
dom-accessibility-api: 0.5.16
jest: 29.7.0(@types/node@20.8.4)
jest: 29.7.0(@types/node@20.8.7)
lodash: 4.17.21
redent: 3.0.0
dev: false
@ -1081,7 +1086,7 @@ packages:
/@types/graceful-fs@4.1.7:
resolution: {integrity: sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==}
dependencies:
'@types/node': 20.8.4
'@types/node': 20.8.7
dev: false
/@types/istanbul-lib-coverage@2.0.4:
@ -1100,8 +1105,8 @@ packages:
'@types/istanbul-lib-report': 3.0.0
dev: false
/@types/jest@29.5.5:
resolution: {integrity: sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==}
/@types/jest@29.5.6:
resolution: {integrity: sha512-/t9NnzkOpXb4Nfvg17ieHE6EeSjDS2SGSpNYfoLbUAeL/EOueU/RSdOWFpfQTXBEM7BguYW1XQ0EbM+6RlIh6w==}
dependencies:
expect: 29.7.0
pretty-format: 29.7.0
@ -1110,7 +1115,7 @@ packages:
/@types/jsdom@20.0.1:
resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==}
dependencies:
'@types/node': 20.8.4
'@types/node': 20.8.7
'@types/tough-cookie': 4.0.3
parse5: 7.1.2
dev: false
@ -1123,8 +1128,8 @@ packages:
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
dev: false
/@types/node@20.8.4:
resolution: {integrity: sha512-ZVPnqU58giiCjSxjVUESDtdPk4QR5WQhhINbc9UBrKLU68MX5BF6kbQzTrkwbolyr0X8ChBpXfavr5mZFKZQ5A==}
/@types/node@20.8.7:
resolution: {integrity: sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==}
dependencies:
undici-types: 5.25.3
dev: false
@ -1132,7 +1137,7 @@ packages:
/@types/pg@8.6.6:
resolution: {integrity: sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==}
dependencies:
'@types/node': 20.8.4
'@types/node': 20.8.7
pg-protocol: 1.6.0
pg-types: 2.2.0
dev: false
@ -1144,11 +1149,11 @@ packages:
/@types/react-dom@18.2.8:
resolution: {integrity: sha512-bAIvO5lN/U8sPGvs1Xm61rlRHHaq5rp5N3kp9C+NJ/Q41P8iqjkXSu0+/qu8POsjH9pNWb0OYabFez7taP7omw==}
dependencies:
'@types/react': 18.2.28
'@types/react': 18.2.29
dev: false
/@types/react@18.2.28:
resolution: {integrity: sha512-ad4aa/RaaJS3hyGz0BGegdnSRXQBkd1CCYDCdNjBPg90UUpLgo+WlJqb9fMYUxtehmzF3PJaTWqRZjko6BRzBg==}
/@types/react@18.2.29:
resolution: {integrity: sha512-Z+ZrIRocWtdD70j45izShRwDuiB4JZqDegqMFW/I8aG5DxxLKOzVNoq62UIO82v9bdgi+DO1jvsb9sTEZUSm+Q==}
dependencies:
'@types/prop-types': 15.7.6
'@types/scheduler': 0.16.3
@ -1181,8 +1186,8 @@ packages:
'@types/yargs-parser': 21.0.0
dev: false
/@typescript-eslint/eslint-plugin@6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==}
/@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
'@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
@ -1193,11 +1198,11 @@ packages:
optional: true
dependencies:
'@eslint-community/regexpp': 4.8.1
'@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/scope-manager': 6.7.5
'@typescript-eslint/type-utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/visitor-keys': 6.7.5
'@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/scope-manager': 6.8.0
'@typescript-eslint/type-utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/visitor-keys': 6.8.0
debug: 4.3.4
eslint: 8.51.0
graphemer: 1.4.0
@ -1210,8 +1215,8 @@ packages:
- supports-color
dev: false
/@typescript-eslint/parser@6.7.5(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==}
/@typescript-eslint/parser@6.8.0(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@ -1220,10 +1225,10 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/scope-manager': 6.7.5
'@typescript-eslint/types': 6.7.5
'@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2)
'@typescript-eslint/visitor-keys': 6.7.5
'@typescript-eslint/scope-manager': 6.8.0
'@typescript-eslint/types': 6.8.0
'@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2)
'@typescript-eslint/visitor-keys': 6.8.0
debug: 4.3.4
eslint: 8.51.0
typescript: 5.2.2
@ -1231,16 +1236,16 @@ packages:
- supports-color
dev: false
/@typescript-eslint/scope-manager@6.7.5:
resolution: {integrity: sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==}
/@typescript-eslint/scope-manager@6.8.0:
resolution: {integrity: sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
'@typescript-eslint/types': 6.7.5
'@typescript-eslint/visitor-keys': 6.7.5
'@typescript-eslint/types': 6.8.0
'@typescript-eslint/visitor-keys': 6.8.0
dev: false
/@typescript-eslint/type-utils@6.7.5(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==}
/@typescript-eslint/type-utils@6.8.0(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@ -1249,8 +1254,8 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2)
'@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2)
'@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2)
debug: 4.3.4
eslint: 8.51.0
ts-api-utils: 1.0.3(typescript@5.2.2)
@ -1259,13 +1264,13 @@ packages:
- supports-color
dev: false
/@typescript-eslint/types@6.7.5:
resolution: {integrity: sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==}
/@typescript-eslint/types@6.8.0:
resolution: {integrity: sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==}
engines: {node: ^16.0.0 || >=18.0.0}
dev: false
/@typescript-eslint/typescript-estree@6.7.5(typescript@5.2.2):
resolution: {integrity: sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==}
/@typescript-eslint/typescript-estree@6.8.0(typescript@5.2.2):
resolution: {integrity: sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
typescript: '*'
@ -1273,8 +1278,8 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/types': 6.7.5
'@typescript-eslint/visitor-keys': 6.7.5
'@typescript-eslint/types': 6.8.0
'@typescript-eslint/visitor-keys': 6.8.0
debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
@ -1285,8 +1290,8 @@ packages:
- supports-color
dev: false
/@typescript-eslint/utils@6.7.5(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==}
/@typescript-eslint/utils@6.8.0(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@ -1294,9 +1299,9 @@ packages:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0)
'@types/json-schema': 7.0.13
'@types/semver': 7.5.2
'@typescript-eslint/scope-manager': 6.7.5
'@typescript-eslint/types': 6.7.5
'@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2)
'@typescript-eslint/scope-manager': 6.8.0
'@typescript-eslint/types': 6.8.0
'@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2)
eslint: 8.51.0
semver: 7.5.4
transitivePeerDependencies:
@ -1304,26 +1309,26 @@ packages:
- typescript
dev: false
/@typescript-eslint/visitor-keys@6.7.5:
resolution: {integrity: sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==}
/@typescript-eslint/visitor-keys@6.8.0:
resolution: {integrity: sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
'@typescript-eslint/types': 6.7.5
'@typescript-eslint/types': 6.8.0
eslint-visitor-keys: 3.4.3
dev: false
/@vercel/analytics@1.1.0:
resolution: {integrity: sha512-k5ePYZPxitxxD1eJenPUUuH3qK+EtaA9OVD3oO0BRbyT/LarmZF0qdkptRSidip1arQxsTEIWvHbTuj1oksl+Q==}
/@vercel/analytics@1.1.1:
resolution: {integrity: sha512-+NqgNmSabg3IFfxYhrWCfB/H+RCUOCR5ExRudNG2+pcRehq628DJB5e1u1xqwpLtn4pAYii4D98w7kofORAGQA==}
dependencies:
server-only: 0.0.1
dev: false
/@vercel/blob@0.13.0:
resolution: {integrity: sha512-yFdhikaXaiyS9aJzu2XdgHHkion/mK0vcRzgVxDncojx9Qla5J5IIHnp7bS6BeGuz7ru2VGkwVOHFfjEFW9rAw==}
/@vercel/blob@0.14.0:
resolution: {integrity: sha512-+yzFCdejyf9KZObUwBlR/k6aFJoRTL9YZ53Nj+IfXYfPhR1gVyKdGsp/kNd9QHuamrBKtILzMJUuOuwudG5ncQ==}
engines: {node: '>=16.14'}
dependencies:
jest-environment-jsdom: 29.7.0
undici: 5.25.1
undici: 5.26.2
transitivePeerDependencies:
- bufferutil
- canvas
@ -1729,8 +1734,8 @@ packages:
engines: {node: '>= 6'}
dev: false
/camelcase-keys@9.1.0:
resolution: {integrity: sha512-RcLmR20cA5J6ZSqOQcPLcJ8fpiczDLVM5V5aOR0w7UgMcev35tPU8z8Q380wWekRRQDON9cLhWOuGm03VDQ7Hg==}
/camelcase-keys@9.1.2:
resolution: {integrity: sha512-nFhquwz7p3nWSHeVYoIkefNPdR2Rt4EuKs9/gaqx3DhJL6HkNHIEcsH+D6N4NvW/MHxc4TT+rp0rc4K7E7x9hw==}
engines: {node: '>=16'}
dependencies:
camelcase: 8.0.0
@ -1889,7 +1894,7 @@ packages:
engines: {node: '>= 0.6'}
dev: false
/create-jest@29.7.0(@types/node@20.8.4):
/create-jest@29.7.0(@types/node@20.8.7):
resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
hasBin: true
@ -1898,7 +1903,7 @@ packages:
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
jest-config: 29.7.0(@types/node@20.8.4)
jest-config: 29.7.0(@types/node@20.8.7)
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@ -2286,8 +2291,8 @@ packages:
source-map: 0.6.1
dev: false
/eslint-config-next@13.5.4(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-FzQGIj4UEszRX7fcRSJK6L1LrDiVZvDFW320VVntVKh3BSU8Fb9kpaoxQx0cdFgf3MQXdeSbrCXJ/5Z/NndDkQ==}
/eslint-config-next@13.5.5(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-kQr/eevFyzeVt0yCKTchQp3MTIx8ZmBsAKLW+7bzmAXHcf2vvxIqAt2N/afb9SZpuXXhSb/8yrKQGVUVpYmafQ==}
peerDependencies:
eslint: ^7.23.0 || ^8.0.0
typescript: '>=3.3.1'
@ -2295,13 +2300,13 @@ packages:
typescript:
optional: true
dependencies:
'@next/eslint-plugin-next': 13.5.4
'@next/eslint-plugin-next': 13.5.5
'@rushstack/eslint-patch': 1.4.0
'@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@5.2.2)
eslint: 8.51.0
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.7.5)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.51.0)
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.5)(eslint-import-resolver-typescript@3.6.0)(eslint@8.51.0)
eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.51.0)
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.51.0)
eslint-plugin-jsx-a11y: 6.7.1(eslint@8.51.0)
eslint-plugin-react: 7.33.2(eslint@8.51.0)
eslint-plugin-react-hooks: 4.6.0(eslint@8.51.0)
@ -2321,7 +2326,7 @@ packages:
- supports-color
dev: false
/eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@6.7.5)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.51.0):
/eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.51.0):
resolution: {integrity: sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
@ -2331,8 +2336,8 @@ packages:
debug: 4.3.4
enhanced-resolve: 5.15.0
eslint: 8.51.0
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.5)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.51.0)
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.5)(eslint-import-resolver-typescript@3.6.0)(eslint@8.51.0)
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.51.0)
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.51.0)
fast-glob: 3.3.1
get-tsconfig: 4.7.0
is-core-module: 2.13.0
@ -2344,7 +2349,7 @@ packages:
- supports-color
dev: false
/eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.5)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.51.0):
/eslint-module-utils@2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.51.0):
resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
engines: {node: '>=4'}
peerDependencies:
@ -2365,16 +2370,16 @@ packages:
eslint-import-resolver-webpack:
optional: true
dependencies:
'@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@5.2.2)
debug: 3.2.7
eslint: 8.51.0
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.7.5)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.51.0)
eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.51.0)
transitivePeerDependencies:
- supports-color
dev: false
/eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.7.5)(eslint-import-resolver-typescript@3.6.0)(eslint@8.51.0):
/eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.51.0):
resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==}
engines: {node: '>=4'}
peerDependencies:
@ -2384,7 +2389,7 @@ packages:
'@typescript-eslint/parser':
optional: true
dependencies:
'@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@5.2.2)
array-includes: 3.1.7
array.prototype.findlastindex: 1.2.3
array.prototype.flat: 1.3.2
@ -2393,7 +2398,7 @@ packages:
doctrine: 2.1.0
eslint: 8.51.0
eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.5)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.51.0)
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.51.0)
has: 1.0.3
is-core-module: 2.13.0
is-glob: 4.0.3
@ -3314,7 +3319,7 @@ packages:
'@jest/expect': 29.7.0
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
'@types/node': 20.8.4
'@types/node': 20.8.7
chalk: 4.1.2
co: 4.6.0
dedent: 1.5.1
@ -3335,7 +3340,7 @@ packages:
- supports-color
dev: false
/jest-cli@29.7.0(@types/node@20.8.4):
/jest-cli@29.7.0(@types/node@20.8.7):
resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
hasBin: true
@ -3349,10 +3354,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.8.4)
create-jest: 29.7.0(@types/node@20.8.7)
exit: 0.1.2
import-local: 3.1.0
jest-config: 29.7.0(@types/node@20.8.4)
jest-config: 29.7.0(@types/node@20.8.7)
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@ -3363,7 +3368,7 @@ packages:
- ts-node
dev: false
/jest-config@29.7.0(@types/node@20.8.4):
/jest-config@29.7.0(@types/node@20.8.7):
resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies:
@ -3378,7 +3383,7 @@ packages:
'@babel/core': 7.23.0
'@jest/test-sequencer': 29.7.0
'@jest/types': 29.6.3
'@types/node': 20.8.4
'@types/node': 20.8.7
babel-jest: 29.7.0(@babel/core@7.23.0)
chalk: 4.1.2
ci-info: 3.8.0
@ -3444,7 +3449,7 @@ packages:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
'@types/jsdom': 20.0.1
'@types/node': 20.8.4
'@types/node': 20.8.7
jest-mock: 29.7.0
jest-util: 29.7.0
jsdom: 20.0.3
@ -3461,7 +3466,7 @@ packages:
'@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
'@types/node': 20.8.4
'@types/node': 20.8.7
jest-mock: 29.7.0
jest-util: 29.7.0
dev: false
@ -3477,7 +3482,7 @@ packages:
dependencies:
'@jest/types': 29.6.3
'@types/graceful-fs': 4.1.7
'@types/node': 20.8.4
'@types/node': 20.8.7
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@ -3528,7 +3533,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
'@types/node': 20.8.4
'@types/node': 20.8.7
jest-util: 29.7.0
dev: false
@ -3583,7 +3588,7 @@ packages:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@types/node': 20.8.4
'@types/node': 20.8.7
chalk: 4.1.2
emittery: 0.13.1
graceful-fs: 4.2.11
@ -3614,7 +3619,7 @@ packages:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@types/node': 20.8.4
'@types/node': 20.8.7
chalk: 4.1.2
cjs-module-lexer: 1.2.3
collect-v8-coverage: 1.0.2
@ -3666,7 +3671,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
'@types/node': 20.8.4
'@types/node': 20.8.7
chalk: 4.1.2
ci-info: 3.8.0
graceful-fs: 4.2.11
@ -3691,7 +3696,7 @@ packages:
dependencies:
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
'@types/node': 20.8.4
'@types/node': 20.8.7
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.13.1
@ -3703,13 +3708,13 @@ packages:
resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@types/node': 20.8.4
'@types/node': 20.8.7
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
dev: false
/jest@29.7.0(@types/node@20.8.4):
/jest@29.7.0(@types/node@20.8.7):
resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
hasBin: true
@ -3722,7 +3727,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.8.4)
jest-cli: 29.7.0(@types/node@20.8.7)
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@ -4033,8 +4038,8 @@ packages:
hasBin: true
dev: false
/nanoid@5.0.1:
resolution: {integrity: sha512-vWeVtV5Cw68aML/QaZvqN/3QQXc6fBfIieAlu05m7FZW2Dgb+3f0xc0TTxuJW+7u30t7iSDTV/j3kVI0oJqIfQ==}
/nanoid@5.0.2:
resolution: {integrity: sha512-2ustYUX1R2rL/Br5B/FMhi8d5/QzvkJ912rBYxskcpu0myTHzSZfTr1LAS2Sm7jxRUObRrSBFoyzwAhL49aVSg==}
engines: {node: ^18 || >=20}
hasBin: true
dev: false
@ -4043,7 +4048,7 @@ packages:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
dev: false
/next-auth@0.0.0-manual.c885ac1d(next@13.5.4)(react@18.2.0):
/next-auth@0.0.0-manual.c885ac1d(next@13.5.5)(react@18.2.0):
resolution: {integrity: sha512-kL5Ead+uIQNjfSWjo/MVxzte+jJSD+N/XIGkYmqyjQmNxE5wDvJ6zuwo+h+QPBnTVf+jmOsOlzr65tPN7OY5fA==}
peerDependencies:
next: ^13.5.3
@ -4054,24 +4059,24 @@ packages:
optional: true
dependencies:
'@auth/core': 0.0.0-manual.e9863699
next: 13.5.4(@babel/core@7.23.0)(react-dom@18.2.0)(react@18.2.0)
next: 13.5.5(@babel/core@7.23.0)(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
dev: false
/next-themes@0.2.1(next@13.5.4)(react-dom@18.2.0)(react@18.2.0):
/next-themes@0.2.1(next@13.5.5)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==}
peerDependencies:
next: '*'
react: '*'
react-dom: '*'
dependencies:
next: 13.5.4(@babel/core@7.23.0)(react-dom@18.2.0)(react@18.2.0)
next: 13.5.5(@babel/core@7.23.0)(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
/next@13.5.4(@babel/core@7.23.0)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-+93un5S779gho8y9ASQhb/bTkQF17FNQOtXLKAj3lsNgltEcF0C5PMLLncDmH+8X1EnJH1kbqAERa29nRXqhjA==}
/next@13.5.5(@babel/core@7.23.0)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-LddFJjpfrtrMMw8Q9VLhIURuSidiCNcMQjRqcPtrKd+Fx07MsG7hYndJb/f2d3I+mTbTotsTJfCnn0eZ/YPk8w==}
engines: {node: '>=16.14.0'}
hasBin: true
peerDependencies:
@ -4085,7 +4090,7 @@ packages:
sass:
optional: true
dependencies:
'@next/env': 13.5.4
'@next/env': 13.5.5
'@swc/helpers': 0.5.2
busboy: 1.6.0
caniuse-lite: 1.0.30001538
@ -4095,15 +4100,15 @@ packages:
styled-jsx: 5.1.1(@babel/core@7.23.0)(react@18.2.0)
watchpack: 2.4.0
optionalDependencies:
'@next/swc-darwin-arm64': 13.5.4
'@next/swc-darwin-x64': 13.5.4
'@next/swc-linux-arm64-gnu': 13.5.4
'@next/swc-linux-arm64-musl': 13.5.4
'@next/swc-linux-x64-gnu': 13.5.4
'@next/swc-linux-x64-musl': 13.5.4
'@next/swc-win32-arm64-msvc': 13.5.4
'@next/swc-win32-ia32-msvc': 13.5.4
'@next/swc-win32-x64-msvc': 13.5.4
'@next/swc-darwin-arm64': 13.5.5
'@next/swc-darwin-x64': 13.5.5
'@next/swc-linux-arm64-gnu': 13.5.5
'@next/swc-linux-arm64-musl': 13.5.5
'@next/swc-linux-x64-gnu': 13.5.5
'@next/swc-linux-x64-musl': 13.5.5
'@next/swc-win32-arm64-msvc': 13.5.5
'@next/swc-win32-ia32-msvc': 13.5.5
'@next/swc-win32-x64-msvc': 13.5.5
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
@ -5237,11 +5242,11 @@ packages:
resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==}
dev: false
/undici@5.25.1:
resolution: {integrity: sha512-nTw6b2G2OqP6btYPyghCgV4hSwjJlL/78FMJatVLCa3otj6PCOQSt6dVtYt82OtNqFz8XsnJ+vsXLADPXjPhqw==}
/undici@5.26.2:
resolution: {integrity: sha512-a4PDLQgLTPHVzOK+x3F79/M4GtyYPl+aX9AAK7aQxpwxDwCqkeZCScy7Gk5kWT3JtdFq1uhO3uZJdLtHI4dK9A==}
engines: {node: '>=14.0'}
dependencies:
busboy: 1.6.0
'@fastify/busboy': 2.0.0
dev: false
/universalify@0.2.0:

View File

@ -1,5 +1,5 @@
import { PATH_ADMIN_UPLOAD_BLOB } from '@/site/paths';
import { del, list, put } from '@vercel/blob';
import { copy, del, list } from '@vercel/blob';
import { upload } from '@vercel/blob/client';
const STORE_ID = process.env.BLOB_READ_WRITE_TOKEN?.match(
@ -50,31 +50,25 @@ export const uploadPhotoFromClient = async (
export const convertUploadToPhoto = async (
uploadUrl: string,
photoId?: string,
resizeUrl?: string,
resizeExtension?: string
) => {
const file = await fetch(resizeUrl ?? uploadUrl)
.then((response) => response.blob());
const fileName = photoId ? `${PREFIX_PHOTO}-${photoId}` : `${PREFIX_PHOTO}`;
const fileExtension = resizeExtension ?? getExtensionFromBlobUrl(uploadUrl);
const fileExtension = getExtensionFromBlobUrl(uploadUrl) ?? 'jpg';
const photoUrl = `${fileName}.${fileExtension ?? 'jpg'}`;
if (file) {
const { url } = await put(
`${fileName}.${fileExtension ?? 'jpg'}`,
file,
{
access: 'public',
...photoId && { addRandomSuffix: false },
}
);
if (url) {
await del(uploadUrl);
const { url } = await copy(
uploadUrl,
photoUrl,
{
access: 'public',
...photoId && { addRandomSuffix: false },
}
);
return url;
if (url) {
await del(uploadUrl);
}
return url;
};
export const deleteBlobPhoto = (url: string) => del(url);