diff --git a/package.json b/package.json
index 33ae4344..64937fd4 100644
--- a/package.json
+++ b/package.json
@@ -15,7 +15,6 @@
"@typescript-eslint/parser": "^6.7.2",
"@vercel/analytics": "^1.0.2",
"@vercel/blob": "^0.12.4",
- "@vercel/og": "^0.5.14",
"@vercel/postgres": "^0.4.2",
"autoprefixer": "10.4.15",
"camelcase-keys": "^9.0.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ced5ca8c..68c52e09 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -9,7 +9,6 @@ specifiers:
'@typescript-eslint/parser': ^6.7.2
'@vercel/analytics': ^1.0.2
'@vercel/blob': ^0.12.4
- '@vercel/og': ^0.5.14
'@vercel/postgres': ^0.4.2
autoprefixer: 10.4.15
camelcase-keys: ^9.0.0
@@ -39,7 +38,6 @@ dependencies:
'@typescript-eslint/parser': 6.7.2_rngtr6f3b25lvetpihwplgecf4
'@vercel/analytics': 1.0.2
'@vercel/blob': 0.12.4
- '@vercel/og': 0.5.14
'@vercel/postgres': 0.4.2
autoprefixer: 10.4.15_postcss@8.4.30
camelcase-keys: 9.0.0
@@ -380,24 +378,10 @@ packages:
resolution: {integrity: sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==}
dev: false
- /@resvg/resvg-wasm/2.4.1:
- resolution: {integrity: sha512-yi6R0HyHtsoWTRA06Col4WoDs7SvlXU3DLMNP2bdAgs7HK18dTEVl1weXgxRzi8gwLteGUbIg29zulxIB3GSdg==}
- engines: {node: '>= 10'}
- dev: false
-
/@rushstack/eslint-patch/1.3.3:
resolution: {integrity: sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==}
dev: false
- /@shuding/opentype.js/1.4.0-beta.0:
- resolution: {integrity: sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==}
- engines: {node: '>= 8.0.0'}
- hasBin: true
- dependencies:
- fflate: 0.7.4
- string.prototype.codepointat: 0.2.1
- dev: false
-
/@sinclair/typebox/0.27.8:
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
dev: false
@@ -670,15 +654,6 @@ packages:
- utf-8-validate
dev: false
- /@vercel/og/0.5.14:
- resolution: {integrity: sha512-2UOkXYgzorv4g2EZdRdy3b343DQC7WJyBq0T0MMf63UH8YUmbOCir7ULB0kgonrUoiL9qIq+E8eeSmHDLYHAdQ==}
- engines: {node: '>=16'}
- dependencies:
- '@resvg/resvg-wasm': 2.4.1
- satori: 0.10.6
- yoga-wasm-web: 0.3.3
- dev: false
-
/@vercel/postgres/0.4.2:
resolution: {integrity: sha512-jwGBhozSPQBuFVgiXLunpW8iys3qMGyXhTSp7xKVrZjD3hJHunO+i1J6Yq2VP2FNSw36lSg1J2vDzkdOE3303g==}
engines: {node: '>=14.6'}
@@ -914,11 +889,6 @@ packages:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: false
- /base64-js/0.0.8:
- resolution: {integrity: sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==}
- engines: {node: '>= 0.4'}
- dev: false
-
/binary-extensions/2.2.0:
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
engines: {node: '>=8'}
@@ -996,10 +966,6 @@ packages:
engines: {node: '>=16'}
dev: false
- /camelize/1.0.1:
- resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==}
- dev: false
-
/caniuse-lite/1.0.30001534:
resolution: {integrity: sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q==}
dev: false
@@ -1096,27 +1062,6 @@ packages:
which: 2.0.2
dev: false
- /css-background-parser/0.1.0:
- resolution: {integrity: sha512-2EZLisiZQ+7m4wwur/qiYJRniHX4K5Tc9w93MT3AS0WS1u5kaZ4FKXlOTBhOjc+CgEgPiGY+fX1yWD8UwpEqUA==}
- dev: false
-
- /css-box-shadow/1.0.0-3:
- resolution: {integrity: sha512-9jaqR6e7Ohds+aWwmhe6wILJ99xYQbfmK9QQB9CcMjDbTxPZjwEmUQpU91OG05Xgm8BahT5fW+svbsQGjS/zPg==}
- dev: false
-
- /css-color-keywords/1.0.0:
- resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==}
- engines: {node: '>=4'}
- dev: false
-
- /css-to-react-native/3.2.0:
- resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==}
- dependencies:
- camelize: 1.0.1
- css-color-keywords: 1.0.0
- postcss-value-parser: 4.2.0
- dev: false
-
/cssesc/3.0.0:
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
engines: {node: '>=4'}
@@ -1261,10 +1206,6 @@ packages:
resolution: {integrity: sha512-Frfus2VpYADsrh1lB3v/ft/WVFlVzOIm+Q0p7U7VqHI6qr7NWHYKe+Wif3W50n7JAFoBsWVsoU0+qDks6WQ60g==}
dev: false
- /emoji-regex/10.2.1:
- resolution: {integrity: sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==}
- dev: false
-
/emoji-regex/9.2.2:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
dev: false
@@ -1375,10 +1316,6 @@ packages:
engines: {node: '>=6'}
dev: false
- /escape-html/1.0.3:
- resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
- dev: false
-
/escape-string-regexp/1.0.5:
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
engines: {node: '>=0.8.0'}
@@ -1715,10 +1652,6 @@ packages:
reusify: 1.0.4
dev: false
- /fflate/0.7.4:
- resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==}
- dev: false
-
/file-entry-cache/6.0.1:
resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
engines: {node: ^10.12.0 || >=12.0.0}
@@ -1979,11 +1912,6 @@ packages:
function-bind: 1.1.1
dev: false
- /hex-rgb/4.3.0:
- resolution: {integrity: sha512-Ox1pJVrDCyGHMG9CFg1tmrRUMRPRsAWYc/PinY0XzJU4K7y7vjNoLKIQ7BR5UJMCxNN8EM1MNDmHWA/B3aZUuw==}
- engines: {node: '>=6'}
- dev: false
-
/html-encoding-sniffer/3.0.0:
resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==}
engines: {node: '>=12'}
@@ -2417,13 +2345,6 @@ packages:
engines: {node: '>=10'}
dev: false
- /linebreak/1.1.0:
- resolution: {integrity: sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==}
- dependencies:
- base64-js: 0.0.8
- unicode-trie: 2.0.0
- dev: false
-
/lines-and-columns/1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
dev: false
@@ -2728,10 +2649,6 @@ packages:
p-limit: 3.1.0
dev: false
- /pako/0.2.9:
- resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==}
- dev: false
-
/parent-module/1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
@@ -2739,13 +2656,6 @@ packages:
callsites: 3.1.0
dev: false
- /parse-css-color/0.2.1:
- resolution: {integrity: sha512-bwS/GGIFV3b6KS4uwpzCFj4w297Yl3uqnSgIPsoQkx7GMLROXfMnWvxfNkL0oh8HVhZA4hvJoEoEIqonfJ3BWg==}
- dependencies:
- color-name: 1.1.4
- hex-rgb: 4.3.0
- dev: false
-
/parse5/7.1.2:
resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
dependencies:
@@ -3119,22 +3029,6 @@ packages:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
dev: false
- /satori/0.10.6:
- resolution: {integrity: sha512-bhAAnh+ZZgulFpxoDi5AB1VA3MsN6AnhB0Elfdj5bQitn4N9GHAB3MC5eFauOnXHF7a9TT1jIPHhUY4JQsP6Xg==}
- engines: {node: '>=16'}
- dependencies:
- '@shuding/opentype.js': 1.4.0-beta.0
- css-background-parser: 0.1.0
- css-box-shadow: 1.0.0-3
- css-to-react-native: 3.2.0
- emoji-regex: 10.2.1
- escape-html: 1.0.3
- linebreak: 1.1.0
- parse-css-color: 0.2.1
- postcss-value-parser: 4.2.0
- yoga-wasm-web: 0.3.3
- dev: false
-
/sax/1.2.4:
resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
dev: false
@@ -3233,10 +3127,6 @@ packages:
engines: {node: '>=10.0.0'}
dev: false
- /string.prototype.codepointat/0.2.1:
- resolution: {integrity: sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==}
- dev: false
-
/string.prototype.matchall/4.0.10:
resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==}
dependencies:
@@ -3400,10 +3290,6 @@ packages:
any-promise: 1.3.0
dev: false
- /tiny-inflate/1.0.3:
- resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==}
- dev: false
-
/to-regex-range/5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
@@ -3542,13 +3428,6 @@ packages:
busboy: 1.6.0
dev: false
- /unicode-trie/2.0.0:
- resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==}
- dependencies:
- pako: 0.2.9
- tiny-inflate: 1.0.3
- dev: false
-
/universalify/0.2.0:
resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
engines: {node: '>= 4.0.0'}
@@ -3747,10 +3626,6 @@ packages:
engines: {node: '>=10'}
dev: false
- /yoga-wasm-web/0.3.3:
- resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==}
- dev: false
-
/zod/3.21.4:
resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==}
dev: false
diff --git a/src/app/(static)/home-image/route.tsx b/src/app/(static)/home-image/route.tsx
index ce84e246..cc160399 100644
--- a/src/app/(static)/home-image/route.tsx
+++ b/src/app/(static)/home-image/route.tsx
@@ -6,7 +6,7 @@ import {
} from '@/photo/image-response';
import HomeImageResponse from '@/photo/image-response/HomeImageResponse';
import { getPhotos } from '@/services/postgres';
-import { ImageResponse } from '@vercel/og';
+import { ImageResponse } from 'next/server';
export const runtime = 'edge';
@@ -23,5 +23,5 @@ export async function GET(request: Request) {
return new ImageResponse(
,
{ width, height, headers },
- ) as Response;
+ );
}
diff --git a/src/app/(static)/p/[photoId]/image/route.tsx b/src/app/(static)/p/[photoId]/image/route.tsx
index 2e5b5487..088fcd37 100644
--- a/src/app/(static)/p/[photoId]/image/route.tsx
+++ b/src/app/(static)/p/[photoId]/image/route.tsx
@@ -4,7 +4,7 @@ import { IMAGE_OG_SIZE } from '@/photo/image-response';
import PhotoImageResponse from '@/photo/image-response/PhotoImageResponse';
import { getPhoto } from '@/services/postgres';
import { getIBMPlexMonoMedium } from '@/site/font';
-import { ImageResponse } from '@vercel/og';
+import { ImageResponse } from 'next/server';
export const runtime = 'edge';
@@ -25,5 +25,5 @@ export async function GET(request: Request, context: any){
return new ImageResponse(
,
{ width, height, fonts, headers },
- ) as Response;
+ );
}
diff --git a/src/app/(static)/t/[tag]/image/route.tsx b/src/app/(static)/t/[tag]/image/route.tsx
index 249d1d93..8429efb9 100644
--- a/src/app/(static)/t/[tag]/image/route.tsx
+++ b/src/app/(static)/t/[tag]/image/route.tsx
@@ -7,7 +7,7 @@ import {
import TagImageResponse from '@/photo/image-response/TagImageResponse';
import { getPhotos } from '@/services/postgres';
import { getIBMPlexMonoMedium } from '@/site/font';
-import { ImageResponse } from '@vercel/og';
+import { ImageResponse } from 'next/server';
export const runtime = 'edge';
@@ -31,5 +31,5 @@ export async function GET(request: Request, context: any) {
return new ImageResponse(
,
{ width, height, fonts, headers },
- ) as Response;
+ );
}
diff --git a/src/app/(static)/template-image-tight/route.tsx b/src/app/(static)/template-image-tight/route.tsx
index 0c3792dc..ee02cf6c 100644
--- a/src/app/(static)/template-image-tight/route.tsx
+++ b/src/app/(static)/template-image-tight/route.tsx
@@ -8,7 +8,7 @@ import TemplateImageResponse from
'@/photo/image-response/TemplateImageResponse';
import { getPhotos } from '@/services/postgres';
import { getIBMPlexMonoMedium } from '@/site/font';
-import { ImageResponse } from '@vercel/og';
+import { ImageResponse } from 'next/server';
export const runtime = 'edge';
@@ -42,5 +42,5 @@ export async function GET(request: Request) {
fonts,
headers,
},
- ) as Response;
+ );
}
diff --git a/src/app/(static)/template-image/route.tsx b/src/app/(static)/template-image/route.tsx
index 5a089de1..0c788940 100644
--- a/src/app/(static)/template-image/route.tsx
+++ b/src/app/(static)/template-image/route.tsx
@@ -8,7 +8,7 @@ import TemplateImageResponse from
'@/photo/image-response/TemplateImageResponse';
import { getPhotos } from '@/services/postgres';
import { getIBMPlexMonoMedium } from '@/site/font';
-import { ImageResponse } from '@vercel/og';
+import { ImageResponse } from 'next/server';
export const runtime = 'edge';
@@ -33,5 +33,5 @@ export async function GET(request: Request) {
}}/>
),
{ width, height, fonts, headers },
- ) as Response;
+ );
}