Merge pull request #31 from BradNut/development

Fixing OG image
This commit is contained in:
Bradley Shellnut 2024-12-23 12:05:26 -08:00 committed by GitHub
commit 9a6c305bd2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 344 additions and 178 deletions

View file

@ -20,15 +20,21 @@
"devDependencies": {
"@biomejs/biome": "^1.9.4",
"@playwright/test": "^1.49.1",
"@sveltejs/enhanced-img": "^0.4.4",
"@sveltejs/kit": "^2.15.0",
"@sveltejs/vite-plugin-svelte": "^5.0.3",
"@types/nprogress": "^0.2.3",
"@unpic/svelte": "^0.0.57",
"@zerodevx/svelte-img": "^2.1.2",
"autoprefixer": "^10.4.20",
"just-intersect": "^4.3.0",
"postcss": "^8.4.49",
"postcss-import": "^16.1.0",
"postcss-load-config": "^5.1.0",
"postcss-preset-env": "^9.6.0",
"satori": "^0.10.14",
"satori": "^0.12.0",
"satori-html": "^0.3.2",
"svelte": "^5.14.5",
"svelte": "^5.15.0",
"svelte-check": "^4.1.0",
"svelte-meta-tags": "^4.0.4",
"svelte-preprocess": "^6.0.3",
@ -36,27 +42,21 @@
"tslib": "^2.8.1",
"typescript": "^5.7.2",
"vanilla-lazyload": "^19.1.3",
"vite": "^6.0.5",
"vite-imagetools": "^7.0.5",
"vitest": "^2.1.8"
},
"dependencies": {
"@resvg/resvg-js": "^2.6.2",
"@sveltejs/adapter-node": "^5.2.11",
"@sveltejs/enhanced-img": "^0.4.4",
"@sveltejs/kit": "^2.13.0",
"@sveltejs/vite-plugin-svelte": "^5.0.3",
"@types/nprogress": "^0.2.3",
"@unpic/svelte": "^0.0.57",
"@vercel/og": "^0.6.4",
"@zerodevx/svelte-img": "^2.1.2",
"bits-ui": "1.0.0-next.66",
"flexsearch": "^0.7.43",
"ioredis": "^5.4.1",
"lucide-svelte": "^0.468.0",
"ioredis": "^5.4.2",
"lucide-svelte": "^0.469.0",
"nprogress": "^0.2.0",
"scrape-it": "^6.1.3",
"sharp": "^0.33.5",
"svelte-local-storage-store": "^0.6.4",
"vite-imagetools": "^7.0.5",
"vite": "^6.0.4"
"svelte-local-storage-store": "^0.6.4"
}
}

View file

@ -13,40 +13,22 @@ importers:
version: 2.6.2
'@sveltejs/adapter-node':
specifier: ^5.2.11
version: 5.2.11(@sveltejs/kit@2.13.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1)))(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1)))
'@sveltejs/enhanced-img':
specifier: ^0.4.4
version: 0.4.4(rollup@4.28.1)(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1))
'@sveltejs/kit':
specifier: ^2.13.0
version: 2.13.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1)))(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1))
'@sveltejs/vite-plugin-svelte':
specifier: ^5.0.3
version: 5.0.3(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1))
'@types/nprogress':
specifier: ^0.2.3
version: 0.2.3
'@unpic/svelte':
specifier: ^0.0.57
version: 0.0.57(svelte@5.14.5)
version: 5.2.11(@sveltejs/kit@2.15.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1)))
'@vercel/og':
specifier: ^0.6.4
version: 0.6.4
'@zerodevx/svelte-img':
specifier: ^2.1.2
version: 2.1.2(rollup@4.28.1)(svelte@5.14.5)
bits-ui:
specifier: 1.0.0-next.66
version: 1.0.0-next.66(svelte@5.14.5)
version: 1.0.0-next.66(svelte@5.15.0)
flexsearch:
specifier: ^0.7.43
version: 0.7.43
ioredis:
specifier: ^5.4.1
version: 5.4.1
specifier: ^5.4.2
version: 5.4.2
lucide-svelte:
specifier: ^0.468.0
version: 0.468.0(svelte@5.14.5)
specifier: ^0.469.0
version: 0.469.0(svelte@5.15.0)
nprogress:
specifier: ^0.2.0
version: 0.2.0
@ -58,13 +40,7 @@ importers:
version: 0.33.5
svelte-local-storage-store:
specifier: ^0.6.4
version: 0.6.4(svelte@5.14.5)
vite:
specifier: ^6.0.4
version: 6.0.4(yaml@2.6.1)
vite-imagetools:
specifier: ^7.0.5
version: 7.0.5(rollup@4.28.1)
version: 0.6.4(svelte@5.15.0)
devDependencies:
'@biomejs/biome':
specifier: ^1.9.4
@ -72,6 +48,24 @@ importers:
'@playwright/test':
specifier: ^1.49.1
version: 1.49.1
'@sveltejs/enhanced-img':
specifier: ^0.4.4
version: 0.4.4(rollup@4.28.1)(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1))
'@sveltejs/kit':
specifier: ^2.15.0
version: 2.15.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1))
'@sveltejs/vite-plugin-svelte':
specifier: ^5.0.3
version: 5.0.3(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1))
'@types/nprogress':
specifier: ^0.2.3
version: 0.2.3
'@unpic/svelte':
specifier: ^0.0.57
version: 0.0.57(svelte@5.15.0)
'@zerodevx/svelte-img':
specifier: ^2.1.2
version: 2.1.2(rollup@4.28.1)(svelte@5.15.0)
autoprefixer:
specifier: ^10.4.20
version: 10.4.20(postcss@8.4.49)
@ -91,23 +85,23 @@ importers:
specifier: ^9.6.0
version: 9.6.0(postcss@8.4.49)
satori:
specifier: ^0.10.14
version: 0.10.14
specifier: ^0.12.0
version: 0.12.0
satori-html:
specifier: ^0.3.2
version: 0.3.2
svelte:
specifier: ^5.14.5
version: 5.14.5
specifier: ^5.15.0
version: 5.15.0
svelte-check:
specifier: ^4.1.0
version: 4.1.1(picomatch@4.0.2)(svelte@5.14.5)(typescript@5.7.2)
version: 4.1.1(picomatch@4.0.2)(svelte@5.15.0)(typescript@5.7.2)
svelte-meta-tags:
specifier: ^4.0.4
version: 4.0.4(svelte@5.14.5)(typescript@5.7.2)
version: 4.0.4(svelte@5.15.0)(typescript@5.7.2)
svelte-preprocess:
specifier: ^6.0.3
version: 6.0.3(postcss-load-config@5.1.0(postcss@8.4.49))(postcss@8.4.49)(svelte@5.14.5)(typescript@5.7.2)
version: 6.0.3(postcss-load-config@5.1.0(postcss@8.4.49))(postcss@8.4.49)(svelte@5.15.0)(typescript@5.7.2)
svelte-sequential-preprocessor:
specifier: ^2.0.2
version: 2.0.2
@ -120,6 +114,12 @@ importers:
vanilla-lazyload:
specifier: ^19.1.3
version: 19.1.3
vite:
specifier: ^6.0.5
version: 6.0.5(yaml@2.6.1)
vite-imagetools:
specifier: ^7.0.5
version: 7.0.5(rollup@4.28.1)
vitest:
specifier: ^2.1.8
version: 2.1.8
@ -975,96 +975,191 @@ packages:
cpu: [arm]
os: [android]
'@rollup/rollup-android-arm-eabi@4.29.0':
resolution: {integrity: sha512-TnF0md3qWSRDlU96y9+0dd5RNrlXiQUp1K2pK1UpNmjeND+o9ts9Jxv3G6ntagkt8jVh0KAT1VYgU0nCz5gt2w==}
cpu: [arm]
os: [android]
'@rollup/rollup-android-arm64@4.28.1':
resolution: {integrity: sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==}
cpu: [arm64]
os: [android]
'@rollup/rollup-android-arm64@4.29.0':
resolution: {integrity: sha512-L/7oX07eY6ACt2NXDrku1JIPdf9VGV/DI92EjAd8FRDzMMub5hXFpT1OegBqimJh9xy9Vv+nToaVtZp4Ku9SEA==}
cpu: [arm64]
os: [android]
'@rollup/rollup-darwin-arm64@4.28.1':
resolution: {integrity: sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==}
cpu: [arm64]
os: [darwin]
'@rollup/rollup-darwin-arm64@4.29.0':
resolution: {integrity: sha512-I1ZucWPVS96hjAsMSJiGosHTqMulMynrmTN+Xde5OsLcU5SjE0xylBmQ/DbB2psJ+HasINrJYz8HQpojtAw2eA==}
cpu: [arm64]
os: [darwin]
'@rollup/rollup-darwin-x64@4.28.1':
resolution: {integrity: sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==}
cpu: [x64]
os: [darwin]
'@rollup/rollup-darwin-x64@4.29.0':
resolution: {integrity: sha512-CTZ+lHMsTbH1q/XLKzmnJWxl2r/1xdv7cnjwbi5v+95nVA1syikxWLvqur4nDoGDHjC8oNMBGurnQptpuFJHXA==}
cpu: [x64]
os: [darwin]
'@rollup/rollup-freebsd-arm64@4.28.1':
resolution: {integrity: sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==}
cpu: [arm64]
os: [freebsd]
'@rollup/rollup-freebsd-arm64@4.29.0':
resolution: {integrity: sha512-BB8+4OMzk2JiKL5+aK8A0pi9DPB5pkIBZWXr19+grdez9b0VKihvV432uSwuZLO0sI6zCyxak8NO3mZ1yjM1jA==}
cpu: [arm64]
os: [freebsd]
'@rollup/rollup-freebsd-x64@4.28.1':
resolution: {integrity: sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==}
cpu: [x64]
os: [freebsd]
'@rollup/rollup-freebsd-x64@4.29.0':
resolution: {integrity: sha512-Udz9Uh26uEE6phGMG2++TfpsLK/z4cYJqrIOyVhig/PMoWiZLghpjZUQvsAylsoztbpg0/QmplkDAyyVq0x6Jg==}
cpu: [x64]
os: [freebsd]
'@rollup/rollup-linux-arm-gnueabihf@4.28.1':
resolution: {integrity: sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm-gnueabihf@4.29.0':
resolution: {integrity: sha512-IPSCTzP8GRYzY+siSnggIKrckC2U+kVXoen6eSHRDgU9a4EZCHHWWOiKio1EkieOOk2j6EvZaaHfQUCmt8UJBg==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm-musleabihf@4.28.1':
resolution: {integrity: sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm-musleabihf@4.29.0':
resolution: {integrity: sha512-GvHPu0UIDx+ohyS8vTYnwoSVMM5BH3NO+JwQs6GWNCuQVlC5rKxnH2WClTGu3NxiIfhKLai08IKUwn3QbzX1UQ==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm64-gnu@4.28.1':
resolution: {integrity: sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-arm64-gnu@4.29.0':
resolution: {integrity: sha512-Pnnn/2CAZWcH9GQoj1nnr85Ejh7aNDe5MsEV0xhuFNUPF0SdnutJ7b2muOI5Kx12T0/i2ol5B/tlhMviZQDL3g==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-arm64-musl@4.28.1':
resolution: {integrity: sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-arm64-musl@4.29.0':
resolution: {integrity: sha512-AP+DLj4q9FT22ZL43ssA3gizEn7/MfJcZ1BOuyEPqoriuH3a8VRuDddN0MtpUwEtiZL6jc1GY5/eL99hkloQ1Q==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-loongarch64-gnu@4.28.1':
resolution: {integrity: sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==}
cpu: [loong64]
os: [linux]
'@rollup/rollup-linux-loongarch64-gnu@4.29.0':
resolution: {integrity: sha512-1+jPFClHmDATqbk0Cwi74KEOymVcs09Vbqe/CTKqLwCP0TeP2CACfnMnjYBs5CJgO20e/4bxFtmbR/9fKE1gug==}
cpu: [loong64]
os: [linux]
'@rollup/rollup-linux-powerpc64le-gnu@4.28.1':
resolution: {integrity: sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==}
cpu: [ppc64]
os: [linux]
'@rollup/rollup-linux-powerpc64le-gnu@4.29.0':
resolution: {integrity: sha512-Nmt5Us5w2dL8eh7QVyAIDVVwBv4wk8ljrBQe7lWkLaOcwABDaFQ3K4sAAC6IsOdJwaXXW+d85zVaMN+Xl8Co2w==}
cpu: [ppc64]
os: [linux]
'@rollup/rollup-linux-riscv64-gnu@4.28.1':
resolution: {integrity: sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==}
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-riscv64-gnu@4.29.0':
resolution: {integrity: sha512-KGuQ8WGhnq09LR7eOru7P9jfBSYXTMhq6TyavWfmEo+TxvkvuRwOCee5lPIa6HYjblOuFr4GeOxSE0c8iyw2Fg==}
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-s390x-gnu@4.28.1':
resolution: {integrity: sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==}
cpu: [s390x]
os: [linux]
'@rollup/rollup-linux-s390x-gnu@4.29.0':
resolution: {integrity: sha512-lSQtvrYIONme7a4gbf4O9d3zbZat3/5covIeoqk27ZIkTgBeL/67x+wq2bZfpLjkqQQp5SjBPQ/n0sg8iArzTg==}
cpu: [s390x]
os: [linux]
'@rollup/rollup-linux-x64-gnu@4.28.1':
resolution: {integrity: sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==}
cpu: [x64]
os: [linux]
'@rollup/rollup-linux-x64-gnu@4.29.0':
resolution: {integrity: sha512-qh0ussrXBwnF4L07M9t1+jpHRhiGSae+wpNQDbmlXHXciT7pqpZ5zpk4dyGZPtDGB2l2clDiufE16BufXPGRWQ==}
cpu: [x64]
os: [linux]
'@rollup/rollup-linux-x64-musl@4.28.1':
resolution: {integrity: sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==}
cpu: [x64]
os: [linux]
'@rollup/rollup-linux-x64-musl@4.29.0':
resolution: {integrity: sha512-YEABzSaRS7+v14yw6MVBZoMqLoUyTX1/sJoGeC0euvgMrzvw0i+jHo4keDZgYeOblfwdseVAf6ylxWSvcBAKTA==}
cpu: [x64]
os: [linux]
'@rollup/rollup-win32-arm64-msvc@4.28.1':
resolution: {integrity: sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==}
cpu: [arm64]
os: [win32]
'@rollup/rollup-win32-arm64-msvc@4.29.0':
resolution: {integrity: sha512-jA4+oxG7QTTtSQxwSHzFVwShcppHO2DpkbAM59pfD5WMG/da79yQaeBtXAfGTI+ciUx8hqK3RF3H2KWByITXtQ==}
cpu: [arm64]
os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.28.1':
resolution: {integrity: sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==}
cpu: [ia32]
os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.29.0':
resolution: {integrity: sha512-4TQbLoAQVu9uE+cvh47JnjRZylXVdRCoOkRSVF2Rr2T0U1YwphGRjR0sHyRPEt95y3ETT4YFTTzQPq1O4bcjmw==}
cpu: [ia32]
os: [win32]
'@rollup/rollup-win32-x64-msvc@4.28.1':
resolution: {integrity: sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==}
cpu: [x64]
os: [win32]
'@rollup/rollup-win32-x64-msvc@4.29.0':
resolution: {integrity: sha512-GsFvcTZ7Yj9k94Qm0qgav7pxmQ7lQDR9NjoelRaxeV1UF6JSDfanR/2tHZ8hS7Ps4KPIVf5AElYPRPmN/Q0ZkQ==}
cpu: [x64]
os: [win32]
'@shuding/opentype.js@1.4.0-beta.0':
resolution: {integrity: sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==}
engines: {node: '>= 8.0.0'}
@ -1081,8 +1176,8 @@ packages:
svelte: ^5.0.0
vite: '>= 5.0.0'
'@sveltejs/kit@2.13.0':
resolution: {integrity: sha512-6t6ne00vZx/TjD6s0Jvwt8wRLKBwbSAN1nhlOzcLUSTYX1hTp4eCBaTPB5Yz/lu+tYcvz4YPEEuPv3yfsNp2gw==}
'@sveltejs/kit@2.15.0':
resolution: {integrity: sha512-FI1bhfhFNGI2sKg+BhiRyM4eaOvX+KZqRYSQqL5PK3ZZREX2xufZ6MzZAw79N846OnIxYNqcz/3VOUq+FPDd3w==}
engines: {node: '>=18.13'}
hasBin: true
peerDependencies:
@ -1528,8 +1623,8 @@ packages:
inline-style-parser@0.2.4:
resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==}
ioredis@5.4.1:
resolution: {integrity: sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==}
ioredis@5.4.2:
resolution: {integrity: sha512-0SZXGNGZ+WzISQ67QDyZ2x0+wVxjjUndtD8oSeik/4ajifeiRufed8fCb8QW8VMyi4MXcS+UO1k/0NGhvq1PAg==}
engines: {node: '>=12.22.0'}
is-arrayish@0.3.2:
@ -1580,8 +1675,8 @@ packages:
loupe@3.1.2:
resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==}
lucide-svelte@0.468.0:
resolution: {integrity: sha512-n0ecAFtCY5LEeL+PJ1Xj4n3c2gzj8tMpak0KMGnvoSJEjCsCnRB0mekBtJZAo7beyynW9Qj5Um1KfMBAeTNplw==}
lucide-svelte@0.469.0:
resolution: {integrity: sha512-PMIJ8jrFqVUsXJz4d1yfAQplaGhNOahwwkzbunha8DhpiD73xqX24n8dE1dPpUk3vcrdWVsHc1y/liHHotOnGQ==}
peerDependencies:
svelte: ^3 || ^4 || ^5.0.0-next.42
@ -1899,6 +1994,11 @@ packages:
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
rollup@4.29.0:
resolution: {integrity: sha512-pdftUn12oB9Qlka+Vpyc39R28D4NsP9Sz6neepSrekofJmWzPD1sxcSO9hEOxFF8+7Kz3sHvwSkkRREI28M1/w==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
runed@0.15.4:
resolution: {integrity: sha512-kmbpstUd7v2FdlBM+MT78IyuOVd38tq/e7MHvVb0fnVCsPSPMD/m2Xh+wUhzg9qCJgxRjBbIKu68DlH/x5VXJA==}
peerDependencies:
@ -1914,10 +2014,6 @@ packages:
satori-html@0.3.2:
resolution: {integrity: sha512-wjTh14iqADFKDK80e51/98MplTGfxz2RmIzh0GqShlf4a67+BooLywF17TvJPD6phO0Hxm7Mf1N5LtRYvdkYRA==}
satori@0.10.14:
resolution: {integrity: sha512-abovcqmwl97WKioxpkfuMeZmndB1TuDFY/R+FymrZyiGP+pMYomvgSzVPnbNMWHHESOPosVHGL352oFbdAnJcA==}
engines: {node: '>=16'}
satori@0.12.0:
resolution: {integrity: sha512-e0e+qQyeFwEszujN7SpWpRtZgww7Nh8lSO3bUn2spHZ5JpqEl3zJ3P14/JlWruxEwdgREs35ZnavrPrWaRVFDg==}
engines: {node: '>=16'}
@ -2059,8 +2155,8 @@ packages:
resolution: {integrity: sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==}
engines: {node: '>=16'}
svelte@5.14.5:
resolution: {integrity: sha512-Qk4LbKHo8K6RtdSuiwI7w66Q+Ypab0V8E7WSZHEKKym4em8n+a0rl3VyRBpGV+/MnNmoi7xlGEjS2omwe0RzhA==}
svelte@5.15.0:
resolution: {integrity: sha512-YWl8rAd4hSjERLtLvP6h2pflGtmrJwv+L12BgrOtHYJCpvLS9WKp/YNAdyolw3FymXtcYZqhSWvWlu5O1X7tgQ==}
engines: {node: '>=18'}
tiny-glob@0.2.9:
@ -2174,8 +2270,8 @@ packages:
terser:
optional: true
vite@6.0.4:
resolution: {integrity: sha512-zwlH6ar+6o6b4Wp+ydhtIKLrGM/LoqZzcdVmkGAFun0KHTzIzjh+h0kungEx7KJg/PYnC80I4TII9WkjciSR6Q==}
vite@6.0.5:
resolution: {integrity: sha512-akD5IAH/ID5imgue2DYhzsEwCi0/4VKY31uhMLEYJwPP4TiUp8pL5PIK+Wo7H8qT8JY9i+pVfPydcFPYD1EL7g==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
peerDependencies:
@ -2904,88 +3000,145 @@ snapshots:
'@rollup/rollup-android-arm-eabi@4.28.1':
optional: true
'@rollup/rollup-android-arm-eabi@4.29.0':
optional: true
'@rollup/rollup-android-arm64@4.28.1':
optional: true
'@rollup/rollup-android-arm64@4.29.0':
optional: true
'@rollup/rollup-darwin-arm64@4.28.1':
optional: true
'@rollup/rollup-darwin-arm64@4.29.0':
optional: true
'@rollup/rollup-darwin-x64@4.28.1':
optional: true
'@rollup/rollup-darwin-x64@4.29.0':
optional: true
'@rollup/rollup-freebsd-arm64@4.28.1':
optional: true
'@rollup/rollup-freebsd-arm64@4.29.0':
optional: true
'@rollup/rollup-freebsd-x64@4.28.1':
optional: true
'@rollup/rollup-freebsd-x64@4.29.0':
optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.28.1':
optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.29.0':
optional: true
'@rollup/rollup-linux-arm-musleabihf@4.28.1':
optional: true
'@rollup/rollup-linux-arm-musleabihf@4.29.0':
optional: true
'@rollup/rollup-linux-arm64-gnu@4.28.1':
optional: true
'@rollup/rollup-linux-arm64-gnu@4.29.0':
optional: true
'@rollup/rollup-linux-arm64-musl@4.28.1':
optional: true
'@rollup/rollup-linux-arm64-musl@4.29.0':
optional: true
'@rollup/rollup-linux-loongarch64-gnu@4.28.1':
optional: true
'@rollup/rollup-linux-loongarch64-gnu@4.29.0':
optional: true
'@rollup/rollup-linux-powerpc64le-gnu@4.28.1':
optional: true
'@rollup/rollup-linux-powerpc64le-gnu@4.29.0':
optional: true
'@rollup/rollup-linux-riscv64-gnu@4.28.1':
optional: true
'@rollup/rollup-linux-riscv64-gnu@4.29.0':
optional: true
'@rollup/rollup-linux-s390x-gnu@4.28.1':
optional: true
'@rollup/rollup-linux-s390x-gnu@4.29.0':
optional: true
'@rollup/rollup-linux-x64-gnu@4.28.1':
optional: true
'@rollup/rollup-linux-x64-gnu@4.29.0':
optional: true
'@rollup/rollup-linux-x64-musl@4.28.1':
optional: true
'@rollup/rollup-linux-x64-musl@4.29.0':
optional: true
'@rollup/rollup-win32-arm64-msvc@4.28.1':
optional: true
'@rollup/rollup-win32-arm64-msvc@4.29.0':
optional: true
'@rollup/rollup-win32-ia32-msvc@4.28.1':
optional: true
'@rollup/rollup-win32-ia32-msvc@4.29.0':
optional: true
'@rollup/rollup-win32-x64-msvc@4.28.1':
optional: true
'@rollup/rollup-win32-x64-msvc@4.29.0':
optional: true
'@shuding/opentype.js@1.4.0-beta.0':
dependencies:
fflate: 0.7.4
string.prototype.codepointat: 0.2.1
'@sveltejs/adapter-node@5.2.11(@sveltejs/kit@2.13.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1)))(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1)))':
'@sveltejs/adapter-node@5.2.11(@sveltejs/kit@2.15.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1)))':
dependencies:
'@rollup/plugin-commonjs': 28.0.2(rollup@4.28.1)
'@rollup/plugin-json': 6.1.0(rollup@4.28.1)
'@rollup/plugin-node-resolve': 16.0.0(rollup@4.28.1)
'@sveltejs/kit': 2.13.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1)))(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1))
'@sveltejs/kit': 2.15.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1))
rollup: 4.28.1
'@sveltejs/enhanced-img@0.4.4(rollup@4.28.1)(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1))':
'@sveltejs/enhanced-img@0.4.4(rollup@4.28.1)(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1))':
dependencies:
magic-string: 0.30.17
sharp: 0.33.5
svelte: 5.14.5
svelte-parse-markup: 0.1.5(svelte@5.14.5)
vite: 6.0.4(yaml@2.6.1)
svelte: 5.15.0
svelte-parse-markup: 0.1.5(svelte@5.15.0)
vite: 6.0.5(yaml@2.6.1)
vite-imagetools: 7.0.5(rollup@4.28.1)
zimmerframe: 1.1.2
transitivePeerDependencies:
- rollup
'@sveltejs/kit@2.13.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1)))(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1))':
'@sveltejs/kit@2.15.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1))':
dependencies:
'@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1))
'@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1))
'@types/cookie': 0.6.0
cookie: 0.6.0
devalue: 5.1.1
@ -2997,29 +3150,29 @@ snapshots:
sade: 1.8.1
set-cookie-parser: 2.7.1
sirv: 3.0.0
svelte: 5.14.5
svelte: 5.15.0
tiny-glob: 0.2.9
vite: 6.0.4(yaml@2.6.1)
vite: 6.0.5(yaml@2.6.1)
'@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1)))(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1))':
'@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1))':
dependencies:
'@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1))
'@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1))
debug: 4.4.0
svelte: 5.14.5
vite: 6.0.4(yaml@2.6.1)
svelte: 5.15.0
vite: 6.0.5(yaml@2.6.1)
transitivePeerDependencies:
- supports-color
'@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1))':
'@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1))':
dependencies:
'@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1)))(svelte@5.14.5)(vite@6.0.4(yaml@2.6.1))
'@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(yaml@2.6.1))
debug: 4.4.0
deepmerge: 4.3.1
kleur: 4.1.5
magic-string: 0.30.17
svelte: 5.14.5
vite: 6.0.4(yaml@2.6.1)
vitefu: 1.0.4(vite@6.0.4(yaml@2.6.1))
svelte: 5.15.0
vite: 6.0.5(yaml@2.6.1)
vitefu: 1.0.4(vite@6.0.5(yaml@2.6.1))
transitivePeerDependencies:
- supports-color
@ -3039,11 +3192,11 @@ snapshots:
dependencies:
unpic: 3.22.0
'@unpic/svelte@0.0.57(svelte@5.14.5)':
'@unpic/svelte@0.0.57(svelte@5.15.0)':
dependencies:
'@unpic/core': 0.1.0
style-object-to-css-string: 1.1.3
svelte: 5.14.5
svelte: 5.15.0
unpic: 3.22.0
'@vercel/og@0.6.4':
@ -3092,9 +3245,9 @@ snapshots:
loupe: 3.1.2
tinyrainbow: 1.2.0
'@zerodevx/svelte-img@2.1.2(rollup@4.28.1)(svelte@5.14.5)':
'@zerodevx/svelte-img@2.1.2(rollup@4.28.1)(svelte@5.15.0)':
dependencies:
svelte: 5.14.5
svelte: 5.15.0
vite-imagetools: 6.2.9(rollup@4.28.1)
transitivePeerDependencies:
- rollup
@ -3144,15 +3297,15 @@ snapshots:
base64-js@0.0.8: {}
bits-ui@1.0.0-next.66(svelte@5.14.5):
bits-ui@1.0.0-next.66(svelte@5.15.0):
dependencies:
'@floating-ui/core': 1.6.8
'@floating-ui/dom': 1.6.12
'@internationalized/date': 3.6.0
esm-env: 1.2.1
runed: 0.15.4(svelte@5.14.5)
svelte: 5.14.5
svelte-toolbelt: 0.4.6(svelte@5.14.5)
runed: 0.15.4(svelte@5.15.0)
svelte: 5.15.0
svelte-toolbelt: 0.4.6(svelte@5.15.0)
boolbase@1.0.0: {}
@ -3487,7 +3640,7 @@ snapshots:
inline-style-parser@0.2.4: {}
ioredis@5.4.1:
ioredis@5.4.2:
dependencies:
'@ioredis/commands': 1.2.0
cluster-key-slot: 1.1.2
@ -3540,9 +3693,9 @@ snapshots:
loupe@3.1.2: {}
lucide-svelte@0.468.0(svelte@5.14.5):
lucide-svelte@0.469.0(svelte@5.15.0):
dependencies:
svelte: 5.14.5
svelte: 5.15.0
magic-string@0.30.17:
dependencies:
@ -3910,10 +4063,35 @@ snapshots:
'@rollup/rollup-win32-x64-msvc': 4.28.1
fsevents: 2.3.3
runed@0.15.4(svelte@5.14.5):
rollup@4.29.0:
dependencies:
'@types/estree': 1.0.6
optionalDependencies:
'@rollup/rollup-android-arm-eabi': 4.29.0
'@rollup/rollup-android-arm64': 4.29.0
'@rollup/rollup-darwin-arm64': 4.29.0
'@rollup/rollup-darwin-x64': 4.29.0
'@rollup/rollup-freebsd-arm64': 4.29.0
'@rollup/rollup-freebsd-x64': 4.29.0
'@rollup/rollup-linux-arm-gnueabihf': 4.29.0
'@rollup/rollup-linux-arm-musleabihf': 4.29.0
'@rollup/rollup-linux-arm64-gnu': 4.29.0
'@rollup/rollup-linux-arm64-musl': 4.29.0
'@rollup/rollup-linux-loongarch64-gnu': 4.29.0
'@rollup/rollup-linux-powerpc64le-gnu': 4.29.0
'@rollup/rollup-linux-riscv64-gnu': 4.29.0
'@rollup/rollup-linux-s390x-gnu': 4.29.0
'@rollup/rollup-linux-x64-gnu': 4.29.0
'@rollup/rollup-linux-x64-musl': 4.29.0
'@rollup/rollup-win32-arm64-msvc': 4.29.0
'@rollup/rollup-win32-ia32-msvc': 4.29.0
'@rollup/rollup-win32-x64-msvc': 4.29.0
fsevents: 2.3.3
runed@0.15.4(svelte@5.15.0):
dependencies:
esm-env: 1.2.1
svelte: 5.14.5
svelte: 5.15.0
sade@1.8.1:
dependencies:
@ -3925,19 +4103,6 @@ snapshots:
dependencies:
ultrahtml: 1.5.3
satori@0.10.14:
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.4.0
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
satori@0.12.0:
dependencies:
'@shuding/opentype.js': 1.4.0-beta.0
@ -4037,36 +4202,36 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
svelte-check@4.1.1(picomatch@4.0.2)(svelte@5.14.5)(typescript@5.7.2):
svelte-check@4.1.1(picomatch@4.0.2)(svelte@5.15.0)(typescript@5.7.2):
dependencies:
'@jridgewell/trace-mapping': 0.3.25
chokidar: 4.0.3
fdir: 6.4.2(picomatch@4.0.2)
picocolors: 1.1.1
sade: 1.8.1
svelte: 5.14.5
svelte: 5.15.0
typescript: 5.7.2
transitivePeerDependencies:
- picomatch
svelte-local-storage-store@0.6.4(svelte@5.14.5):
svelte-local-storage-store@0.6.4(svelte@5.15.0):
dependencies:
svelte: 5.14.5
svelte: 5.15.0
svelte-meta-tags@4.0.4(svelte@5.14.5)(typescript@5.7.2):
svelte-meta-tags@4.0.4(svelte@5.15.0)(typescript@5.7.2):
dependencies:
schema-dts: 1.1.2(typescript@5.7.2)
svelte: 5.14.5
svelte: 5.15.0
transitivePeerDependencies:
- typescript
svelte-parse-markup@0.1.5(svelte@5.14.5):
svelte-parse-markup@0.1.5(svelte@5.15.0):
dependencies:
svelte: 5.14.5
svelte: 5.15.0
svelte-preprocess@6.0.3(postcss-load-config@5.1.0(postcss@8.4.49))(postcss@8.4.49)(svelte@5.14.5)(typescript@5.7.2):
svelte-preprocess@6.0.3(postcss-load-config@5.1.0(postcss@8.4.49))(postcss@8.4.49)(svelte@5.15.0)(typescript@5.7.2):
dependencies:
svelte: 5.14.5
svelte: 5.15.0
optionalDependencies:
postcss: 8.4.49
postcss-load-config: 5.1.0(postcss@8.4.49)
@ -4077,11 +4242,11 @@ snapshots:
svelte: 4.2.19
tslib: 2.7.0
svelte-toolbelt@0.4.6(svelte@5.14.5):
svelte-toolbelt@0.4.6(svelte@5.15.0):
dependencies:
clsx: 2.1.1
style-to-object: 1.0.8
svelte: 5.14.5
svelte: 5.15.0
svelte@4.2.19:
dependencies:
@ -4100,7 +4265,7 @@ snapshots:
magic-string: 0.30.17
periscopic: 3.1.0
svelte@5.14.5:
svelte@5.15.0:
dependencies:
'@ampproject/remapping': 2.3.0
'@jridgewell/sourcemap-codec': 1.5.0
@ -4207,18 +4372,18 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
vite@6.0.4(yaml@2.6.1):
vite@6.0.5(yaml@2.6.1):
dependencies:
esbuild: 0.24.0
postcss: 8.4.49
rollup: 4.28.1
rollup: 4.29.0
optionalDependencies:
fsevents: 2.3.3
yaml: 2.6.1
vitefu@1.0.4(vite@6.0.4(yaml@2.6.1)):
vitefu@1.0.4(vite@6.0.5(yaml@2.6.1)):
optionalDependencies:
vite: 6.0.4(yaml@2.6.1)
vite: 6.0.5(yaml@2.6.1)
vitest@2.1.8:
dependencies:

View file

@ -1,5 +1,4 @@
<script lang="ts">
import { onMount } from 'svelte';
import Img from '@zerodevx/svelte-img';
import type { ExternalImageSource } from '../types/album';
@ -19,18 +18,15 @@
loading = "lazy"
}: Props = $props();
let ref: any = $state();
let loaded: boolean = $state();
onMount(() => {
if (ref.complete) {
loaded = true;
}
})
let ref: HTMLImageElement | null | undefined = $state();
let loaded: boolean = $derived.by(() => {
if (ref?.complete) return true;
return false;
});
</script>
<div class="wrap">
<Img class={clazz} {style} {src} {alt} {loading} bind:ref on:load={() => (loaded = true)} />
<Img class={clazz} {style} {src} {alt} {loading} bind:ref />
<div class:blur={loaded} class:loaded></div>
</div>

View file

@ -1,4 +1,6 @@
import satori from 'satori';
import type { Component } from 'svelte';
import { render } from 'svelte/server';
import { Resvg } from '@resvg/resvg-js';
import { html as toReactNode } from 'satori-html';
import { dev } from '$app/environment';
@ -6,34 +8,31 @@ import { read } from '$app/server';
// we use a Vite plugin to turn this import into the result of fs.readFileSync during build
import firaSansSemiBold from '$lib/fonts/FiraSans-SemiBold.ttf';
import type { SvelteComponent } from 'svelte';
const fontData = read(firaSansSemiBold).arrayBuffer();
export async function componentToPng(component: SvelteComponent,
props: Record<string, string | undefined>,
height: number, width: number) {
const result = component.render(props);
const markup = toReactNode(`${result.html}<style lang="css">${result.css.code}</style>`);
export async function componentToPng(component: Component, props: Record<string, string | undefined>, height: number, width: number) {
const result = render(component, { props });
console.log('result', result);
const markup = toReactNode(`${result.body}${result.head}`);
const svg = await satori(markup, {
fonts: [
{
name: 'Fira Sans',
data: await fontData,
style: 'normal'
}
style: 'normal',
},
],
height: +height,
width: +width
width: +width,
});
const resvg = new Resvg(svg, {
fitTo: {
mode: 'width',
value: +width
}
value: +width,
},
});
const image = resvg.render();
@ -41,7 +40,7 @@ export async function componentToPng(component: SvelteComponent,
return new Response(image.asPng(), {
headers: {
'content-type': 'image/png',
'cache-control': dev ? 'no-cache, no-store' : 'public, immutable, no-transform, max-age=86400'
}
'cache-control': dev ? 'no-cache, no-store' : 'public, immutable, no-transform, max-age=86400',
},
});
}

View file

@ -1,12 +1,11 @@
import { PUBLIC_SITE_URL } from '$env/static/public';
import type { Album } from '$lib/types/album';
import type { ArticlePageLoad } from '$lib/types/article';
import { fetchBandcampAlbums } from '$lib/util/fetchBandcampAlbums';
import type { MetaTagsProps } from 'svelte-meta-tags';
import type { PageServerLoad } from './$types';
export const load: PageServerLoad = async ({ fetch, setHeaders, url }) => {
let baseUrl;
let baseUrl: string;
if (url.origin.includes('prerender')) {
baseUrl = PUBLIC_SITE_URL || 'https://bradleyshellnut.com';
} else {

View file

@ -1,5 +1,5 @@
import SocialImageCard from "$lib/components/socialImageCard.svelte";
import { componentToPng } from "$root/lib/renderImage";
import { componentToPng } from "$lib/renderImage";
const height = 630;
const width = 1200;

View file

@ -1,9 +1,9 @@
<script lang="ts">
import ExternalLink from "$lib/components/ExternalLink.svelte";
import desktop from "$lib/assets/images/Desktop_so_clean.jpg?enhanced";
import Development from "./development.svelte";
import desktop from '$lib/assets/images/Desktop_so_clean.jpg?enhanced';
import ExternalLink from '$lib/components/ExternalLink.svelte';
import Development from './development.svelte';
import HardwareAccessories from './hardware-accessories.svelte';
import PrivacyHardwareSoftware from './privacy-hardware-software.svelte';
import HardwareAccessories from "./hardware-accessories.svelte";
</script>
<div class="uses">

View file

@ -19,6 +19,7 @@ const config = {
},
compilerOptions: {
enableSourcemap: process.env.NODE_ENV === 'development',
css: 'injected'
}
};

View file

@ -9,7 +9,13 @@
"resolveJsonModule": true,
"skipLibCheck": true,
"sourceMap": true,
"strict": true
"strict": true,
"moduleResolution": "bundler",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"paths": {
"@/*": ["./src/*"]
}
}
// Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias
//