From 4de42dc8505d136e1bf777470c1e238769cebd8c Mon Sep 17 00:00:00 2001 From: Ricardo Tribaldos <579671+tribal2@users.noreply.github.com> Date: Tue, 26 Mar 2024 12:06:02 -0500 Subject: [PATCH 1/6] Generate dynamic manifest file and icons This update also moves the main icon images from the public folder to the src folder and remove the ones that are going to be generated and optimized by Astro. --- README.md | 5 -- public/icon-192.png | Bin 4590 -> 0 bytes public/manifest.webmanifest | 35 ---------- public/maskable_icon_x512.png | Bin 13897 -> 0 bytes src/components/Meta.astro | 2 +- .../images/icon-maskable.png | Bin public/icon-512.png => src/images/icon.png | Bin src/pages/manifest.json.ts | 64 ++++++++++++++++++ 8 files changed, 65 insertions(+), 41 deletions(-) delete mode 100644 public/icon-192.png delete mode 100644 public/manifest.webmanifest delete mode 100644 public/maskable_icon_x512.png rename public/maskable_icon.png => src/images/icon-maskable.png (100%) rename public/icon-512.png => src/images/icon.png (100%) create mode 100644 src/pages/manifest.json.ts diff --git a/README.md b/README.md index e804335..c3508f8 100644 --- a/README.md +++ b/README.md @@ -193,12 +193,7 @@ Static files served directly to the browser are within the `public` directory at public/ ├── apple-touch-icon.png ├── favicon.ico -├── icon-192.png -├── icon-512.png ├── icon.svg -├── manifest.webmanifest -├── maskable_icon.png -├── maskable_icon_x512.png ├── scripts/ │ └── vendor/ │ ├── gsap/ # Animations powered by GSAP (GreenSock Animation Platform) diff --git a/public/icon-192.png b/public/icon-192.png deleted file mode 100644 index 7a83b88c0d34b8ffdabf3872fb2b230f18ae5e35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4590 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 diff --git a/public/manifest.webmanifest b/public/manifest.webmanifest deleted file mode 100644 index ac95964..0000000 --- a/public/manifest.webmanifest +++ /dev/null @@ -1,35 +0,0 @@ -{ - "short_name": "ScrewFast", - "name": "ScrewFast", - "icons": [ - { - "src": "/icon-192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "any" - }, - { - "src": "/icon-512.png", - "sizes": "512x512", - "type": "image/png", - "purpose": "any" - }, - { - "src": "/maskable_icon_x512.png", - "sizes": "512x512", - "type": "image/png", - "purpose": "maskable" - }, - { - "src": "/maskable_icon.png", - "sizes": "1000x1000", - "type": "image/png", - "purpose": "maskable" - } - ], - "display": "minimal-ui", - "id": "/", - "start_url": "/", - "theme_color": "#FFEDD5", - "background_color": "#262626" - } \ No newline at end of file diff --git a/public/maskable_icon_x512.png b/public/maskable_icon_x512.png deleted file mode 100644 index 0c37558c3ecead2d193cfb67ba926e9c76c104be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13897 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 diff --git a/src/components/Meta.astro b/src/components/Meta.astro index d642a37..0a905ef 100644 --- a/src/components/Meta.astro +++ b/src/components/Meta.astro @@ -73,7 +73,7 @@ const socialImage: string = `${Astro.site}/social.png`; // Set the path for the - + diff --git a/public/maskable_icon.png b/src/images/icon-maskable.png similarity index 100% rename from public/maskable_icon.png rename to src/images/icon-maskable.png diff --git a/public/icon-512.png b/src/images/icon.png similarity index 100% rename from public/icon-512.png rename to src/images/icon.png diff --git a/src/pages/manifest.json.ts b/src/pages/manifest.json.ts new file mode 100644 index 0000000..26fd13c --- /dev/null +++ b/src/pages/manifest.json.ts @@ -0,0 +1,64 @@ +import type { APIRoute, ImageMetadata } from "astro"; +import { getImage } from "astro:assets"; +import icon from "@/images/icon.png"; +import maskableIcon from "@/images/icon-maskable.png"; + +interface Favicon { + purpose: 'any' | 'maskable' | 'monochrome'; + src: ImageMetadata; + sizes: number[]; +} + +const sizes = [192, 512]; +const favicons: Favicon[] = [ + { + purpose: 'any', + src: icon, + sizes, + }, + { + purpose: 'maskable', + src: maskableIcon, + sizes, + }, +]; + +console.log(favicons); + +export const GET: APIRoute = async () => { + const icons = await Promise.all( + favicons.flatMap((favicon) => + favicon.sizes.map(async (size) => { + const image = await getImage({ + src: favicon.src, + width: size, + height: size, + format: "png", + }); + return { + src: image.src, + sizes: `${image.options.width}x${image.options.height}`, + type: `image/${image.options.format}`, + purpose: favicon.purpose, + }; + }), + ), + ); + + const manifest = { + short_name: "ScrewFast", + name: "ScrewFast", + icons, + display: "minimal-ui", + id: "some-unique-id", + start_url: "/", + theme_color: "#FFEDD5", + background_color: "#262626", + }; + + console.log( + JSON.stringify(manifest, null, 2), + ); + + return new Response(JSON.stringify(manifest)); +}; From c1bccf25d5340d0d438c3c155406cd2bf158f377 Mon Sep 17 00:00:00 2001 From: Ricardo Tribaldos <579671+tribal2@users.noreply.github.com> Date: Tue, 26 Mar 2024 12:19:13 -0500 Subject: [PATCH 2/6] Generate dynamic favicons --- README.md | 2 -- public/apple-touch-icon.png | Bin 4253 -> 0 bytes src/components/Meta.astro | 24 +++++++++++++++++++++--- {public => src/images}/icon.svg | 0 4 files changed, 21 insertions(+), 5 deletions(-) delete mode 100644 public/apple-touch-icon.png rename {public => src/images}/icon.svg (100%) diff --git a/README.md b/README.md index c3508f8..7c5810a 100644 --- a/README.md +++ b/README.md @@ -191,9 +191,7 @@ Static files served directly to the browser are within the `public` directory at ```md public/ -├── apple-touch-icon.png ├── favicon.ico -├── icon.svg ├── scripts/ │ └── vendor/ │ ├── gsap/ # Animations powered by GSAP (GreenSock Animation Platform) diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png deleted file mode 100644 index 709d9456f22a005d8cfb878fea9c82140a53b953..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4253 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 Lk#-frHsb#PR - + - - + + diff --git a/public/icon.svg b/src/images/icon.svg similarity index 100% rename from public/icon.svg rename to src/images/icon.svg From 3a4662a5b0ac059fb3b0792f6ba145e6f73ef17e Mon Sep 17 00:00:00 2001 From: Ricardo Tribaldos <579671+tribal2@users.noreply.github.com> Date: Tue, 26 Mar 2024 12:22:13 -0500 Subject: [PATCH 3/6] Remove console.log statements left in manifest.json.ts --- src/pages/manifest.json.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/pages/manifest.json.ts b/src/pages/manifest.json.ts index 26fd13c..bab70e0 100644 --- a/src/pages/manifest.json.ts +++ b/src/pages/manifest.json.ts @@ -23,8 +23,6 @@ const favicons: Favicon[] = [ }, ]; -console.log(favicons); - export const GET: APIRoute = async () => { const icons = await Promise.all( favicons.flatMap((favicon) => @@ -56,9 +54,5 @@ export const GET: APIRoute = async () => { background_color: "#262626", }; - console.log( - JSON.stringify(manifest, null, 2), - ); - return new Response(JSON.stringify(manifest)); }; From 59c53bf14f59275b4896c6cd59ef9b648d1d7bdb Mon Sep 17 00:00:00 2001 From: Ricardo Tribaldos <579671+tribal2@users.noreply.github.com> Date: Tue, 26 Mar 2024 12:36:57 -0500 Subject: [PATCH 4/6] Add new dependencies to generate ICO files --- package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package.json b/package.json index fce6831..06a0fd6 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,8 @@ "gsap": "^3.12.5", "html-minifier": "^4.0.0", "preline": "^2.0.3", + "sharp": "^0.33.3", + "sharp-ico": "^0.1.5", "tailwindcss": "^3.4.1" }, "devDependencies": { From 34768af68531d6e70db3ec9abd28cf8a5988fd8f Mon Sep 17 00:00:00 2001 From: Ricardo Tribaldos <579671+tribal2@users.noreply.github.com> Date: Tue, 26 Mar 2024 12:39:49 -0500 Subject: [PATCH 5/6] Generate dynamic favicon ico file --- README.md | 1 - public/favicon.ico | Bin 1879 -> 0 bytes src/pages/favicon.ico.ts | 28 ++++++++++++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) delete mode 100644 public/favicon.ico create mode 100644 src/pages/favicon.ico.ts diff --git a/README.md b/README.md index 7c5810a..d7ce089 100644 --- a/README.md +++ b/README.md @@ -191,7 +191,6 @@ Static files served directly to the browser are within the `public` directory at ```md public/ -├── favicon.ico ├── scripts/ │ └── vendor/ │ ├── gsap/ # Animations powered by GSAP (GreenSock Animation Platform) diff --git a/public/favicon.ico b/public/favicon.ico deleted file mode 100644 index 456b3a7ef2835240723d6e2451fc8de55195bcf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1879 zcmV-d2dMY}0096301yxW0000W07C)*044wc03aX$0000W0PX|;0BHgM0EtjeM-2)Z z3IG5A4M|8uQUCw|5C8xG5C{eU001BJ|6u?C0t!h)K~#90b(1@96HyR_zqz~X7n?W_ z8>0#VG`Uhm#J z6l;?N+f$D2oO{lhGXezG+D#F;qpDMYVR9*;BJx{RcUrC1V_CL#D=Y;MymP1mQap2h zGKz>GA~@&PWnt0wlAeh`WiXBi)MLfSL<|pzswUy-ldimaBVqV9ij*I}3{T!vNwcD> zIs#w@OyV#MU~bxD1UfwdfiQ%2N9d+Pt)fKXSP%e}#U-nqp5PUh7aWawkIRL6tOTLb z`W*0W*ANEdLBetgY89oM!lSz#E??}Eb_D036f0Y=Ydn8fWv;F`H^xwFtqye#!ScK? z(wIVubH!H7pm&79!D^tN!OuOzr87A%H`-_}M3GW1!I$rbTMwt$PvnT4@GzPP#8u_% zuHnV|DuKY>AHjPF4D>S@@#3F^!ys7>Nmoew!tHB4mQFaHy{(cvK?EwLgAqd!&x5@v zL;)P1QD&z-=WWi_3mH>2&vRQr1kG&F1|e2zFEzoe;NSrJ0bXFh8R} zK-zcP0${D(5Rr9Nou&A2>=_NR;d3YZ>h;yiN^9dU;>X;sB{|;~00000NkvXXu0mjf ziBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^Z)<^wMj%lRCt`VmrrP1RTRd5 z=id9?Op?i@mP!%p%J_n)h{aNiEkz3cK_Uo7+G2&0LItIQh+3%Gv|u-iE(LWVF4T=! zUARyX8x*OCf2yrBRMSPPP}`=NWF|B3y?b1|nMu;7X`Du*lXUY*=L0iKtu%Z{Q)N;cX(B)&59^Xs7@ga6=%Cb!g}uk zwm4Pts&Myh387QG$^sHf7SLE_;;dz|B7{L#NFXA8Zn`SG{B)IlyK2NUf>}g2a0`)^eUleas4acVBOl3d`_917Ot(BEGtA|vjO~?ky561(J{_MzyooT{B(;1p+v=*jj zgxB}g7=EG#m(10D(JE97TlNlc=A7xMJKW_LR3UIM{!74p>tiI&vI0$yX#VyJK>#QI zv`oziwnI@$6h(`2t~Z1mZ}5b{Tz%Uu+PcHQ`HO})%}CGJ&~k-&MFv{P=adUmf;MX| z0=2q;g0XWXoC6Uhsm}>ENuW2c?aXyVpj8UUL|UuE)_Y=}+g>AR#%~=YT08d&K?ui= zJKp@T=i1SiBG4j{F@Wl| zF0bTUHr!0Hkt~8&!3D}sCmj=iTXNyj!C?szUa?SMwjm@53+9CgG~(vGaG851NoGzf z(!k|Vg`Q9$$6OZ()EjW?&7OQ7&Rr0uYeJz1k~CXlO{R^j`NOgaK=zj^3Pdeo`14t+IEt%Es?P zzB(2xnt^4Da4`tk45`!v^_d9!dzD5EFFjS`ne8tT zB^zF=i^`f+%0NL$QWz*G+cq@7K!2a&J?t5tC2(BPmPS=)RzyM}O*1{DDL4z$RblwW z0iJ)Yz_AknMq$II2E&`{RH}lV+xDyh#!aS&gTMC!AQ4D=~Ic_mKps3y(@L7JwYm&@h%&B(}zEtktN}-U>D}ga`40w`BNP&M R|A7Di002ovPDHLkV1ibgTMhsK diff --git a/src/pages/favicon.ico.ts b/src/pages/favicon.ico.ts new file mode 100644 index 0000000..891b87c --- /dev/null +++ b/src/pages/favicon.ico.ts @@ -0,0 +1,28 @@ +import type { APIRoute } from "astro"; +import sharp from "sharp"; +import ico from "sharp-ico"; +import path from "node:path"; + +const faviconSrc = path.resolve("src/images/icon.png"); + +export const GET: APIRoute = async () => { + + // Resize the image to multiple sizes + const sizes = [16, 32, 48, 64, 128, 256]; + + const buffers = await Promise.all( + sizes.map(async (size) => { + return await sharp(faviconSrc) + .resize(size) + .toFormat("png") + .toBuffer(); + }) + ); + + // Convert the image to an ICO file + const icoBuffer = ico.encode(buffers); + + return new Response(icoBuffer, { + headers: { "Content-Type": "image/x-icon" }, + }); +}; From 74c986e405db65b15ec7291cd070510e1762f55f Mon Sep 17 00:00:00 2001 From: Emil Gulamov <125820963+mearashadowfax@users.noreply.github.com> Date: Thu, 28 Mar 2024 18:08:43 +0400 Subject: [PATCH 6/6] Update manifest ID and reduce favicon sizes The favicon size options have been reduced to only 16px and 32px, abandoning larger, less commonly used sizes. --- package-lock.json | 613 ++++++++++++++++++++++++++++++++++--- src/pages/favicon.ico.ts | 2 +- src/pages/manifest.json.ts | 2 +- 3 files changed, 574 insertions(+), 43 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6ef02d5..40c5a87 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,8 @@ "gsap": "^3.12.5", "html-minifier": "^4.0.0", "preline": "^2.0.3", + "sharp": "^0.33.3", + "sharp-ico": "^0.1.5", "tailwindcss": "^3.4.1" }, "devDependencies": { @@ -637,6 +639,11 @@ "node": ">=6.9.0" } }, + "node_modules/@canvas/image-data": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@canvas/image-data/-/image-data-1.0.0.tgz", + "integrity": "sha512-BxOqI5LgsIQP1odU5KMwV9yoijleOPzHL18/YvNqF9KFSGF2K/DLlYAbDQsWqd/1nbaFuSkYD/191dpMtNh4vw==" + }, "node_modules/@ctrl/tinycolor": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", @@ -666,6 +673,15 @@ "resolved": "https://registry.npmjs.org/@emmetio/scanner/-/scanner-1.0.4.tgz", "integrity": "sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==" }, + "node_modules/@emnapi/runtime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.1.0.tgz", + "integrity": "sha512-gCGlE0fJGWalfy+wbFApjhKn6uoSVvopru77IPyxNKkjkaiSx2HxDS7eOYSmo9dcMIhmmIvoxiC3N9TM1c3EaA==", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", @@ -1405,6 +1421,437 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.3.tgz", + "integrity": "sha512-FaNiGX1MrOuJ3hxuNzWgsT/mg5OHG/Izh59WW2mk1UwYHUwtfbhk5QNKYZgxf0pLOhx9ctGiGa2OykD71vOnSw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "glibc": ">=2.26", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.2" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.3.tgz", + "integrity": "sha512-2QeSl7QDK9ru//YBT4sQkoq7L0EAJZA3rtV+v9p8xTKl4U1bUqTIaCnoC7Ctx2kCjQgwFXDasOtPTCT8eCTXvw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "glibc": ">=2.26", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.2" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.2.tgz", + "integrity": "sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "macos": ">=11", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.2.tgz", + "integrity": "sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "macos": ">=10.13", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.2.tgz", + "integrity": "sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.28", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.2.tgz", + "integrity": "sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.26", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.2.tgz", + "integrity": "sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.28", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.2.tgz", + "integrity": "sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.26", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.2.tgz", + "integrity": "sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "musl": ">=1.2.2", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.2.tgz", + "integrity": "sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "musl": ">=1.2.2", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.3.tgz", + "integrity": "sha512-Q7Ee3fFSC9P7vUSqVEF0zccJsZ8GiiCJYGWDdhEjdlOeS9/jdkyJ6sUSPj+bL8VuOYFSbofrW0t/86ceVhx32w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.28", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.2" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.3.tgz", + "integrity": "sha512-Zf+sF1jHZJKA6Gor9hoYG2ljr4wo9cY4twaxgFDvlG0Xz9V7sinsPp8pFd1XtlhTzYo0IhDbl3rK7P6MzHpnYA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.26", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.2" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.3.tgz", + "integrity": "sha512-vFk441DKRFepjhTEH20oBlFrHcLjPfI8B0pMIxGm3+yilKyYeHEVvrZhYFdqIseSclIqbQ3SnZMwEMWonY5XFA==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.28", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.2" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.3.tgz", + "integrity": "sha512-Q4I++herIJxJi+qmbySd072oDPRkCg/SClLEIDh5IL9h1zjhqjv82H0Seupd+q2m0yOfD+/fJnjSoDFtKiHu2g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.26", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.2" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.3.tgz", + "integrity": "sha512-qnDccehRDXadhM9PM5hLvcPRYqyFCBN31kq+ErBSZtZlsAc1U4Z85xf/RXv1qolkdu+ibw64fUDaRdktxTNP9A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "musl": ">=1.2.2", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.2" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.3.tgz", + "integrity": "sha512-Jhchim8kHWIU/GZ+9poHMWRcefeaxFIs9EBqf9KtcC14Ojk6qua7ghKiPs0sbeLbLj/2IGBtDcxHyjCdYWkk2w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "musl": ">=1.2.2", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.2" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.3.tgz", + "integrity": "sha512-68zivsdJ0koE96stdUfM+gmyaK/NcoSZK5dV5CAjES0FUXS9lchYt8LAB5rTbM7nlWtxaU/2GON0HVN6/ZYJAQ==", + "cpu": [ + "wasm32" + ], + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.1.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.3.tgz", + "integrity": "sha512-CyimAduT2whQD8ER4Ux7exKrtfoaUiVr7HG0zZvO0XTFn2idUWljjxv58GxNTkFb8/J9Ub9AqITGkJD6ZginxQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.3.tgz", + "integrity": "sha512-viT4fUIDKnli3IfOephGnolMzhz5VaTvDRkYqtZxOMIoMQ4MrAziO7pT1nVnOt2FAm7qW5aa+CCc13aEY6Le0g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -2727,6 +3174,29 @@ "vfile": "^6.0.1" } }, + "node_modules/astro/node_modules/sharp": { + "version": "0.32.6", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", + "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.2", + "node-addon-api": "^6.1.0", + "prebuild-install": "^7.1.1", + "semver": "^7.5.4", + "simple-get": "^4.0.1", + "tar-fs": "^3.0.4", + "tunnel-agent": "^0.6.0" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, "node_modules/async-sema": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz", @@ -2797,15 +3267,15 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/bare-events": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.0.tgz", - "integrity": "sha512-Yyyqff4PIFfSuthCZqLlPISTWHmnQxoPuAvkmgzsJEmG3CesdIv6Xweayl0JkCZJSB2yYIdJyEz97tpxNhgjbg==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz", + "integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==", "optional": true }, "node_modules/bare-fs": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.1.3.tgz", - "integrity": "sha512-Oa7F0QJV7We0mtKq7Tk246uiBrl7vun64cPEsJOEwv2vHjnVL9yO7aH3643aSrd4rXfVe7yhJ9LHZywQQAXKFQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.2.2.tgz", + "integrity": "sha512-X9IqgvyB0/VA5OZJyb5ZstoN62AzD7YxVGog13kkfYWYqJYcK0kcqLZ6TrmH5qr4/8//ejVcX4x/a0UvaogXmA==", "optional": true, "dependencies": { "bare-events": "^2.0.0", @@ -2815,9 +3285,9 @@ } }, "node_modules/bare-os": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.1.2.tgz", - "integrity": "sha512-slQjOn78Q8itnzomNAamiKo5MDpEpV3JnoNZ93lyynaFh6paWcU+5c0GVcZ7EYIJC2unN2JGdF1qupdscYl0Yg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.2.1.tgz", + "integrity": "sha512-OwPyHgBBMkhC29Hl3O4/YfxW9n7mdTr2+SsO29XBWKKJsbgj3mnorDB80r5TiCQgQstgE5ga1qNYrpes6NvX2w==", "optional": true }, "node_modules/bare-path": { @@ -3345,7 +3815,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "optional": true, "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" @@ -3371,7 +3840,6 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "optional": true, "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -3389,7 +3857,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "optional": true, "dependencies": { "color-name": "~1.1.4" }, @@ -3400,8 +3867,7 @@ "node_modules/color/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "optional": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/comma-separated-tokens": { "version": "2.0.3", @@ -3503,6 +3969,31 @@ } } }, + "node_modules/decode-bmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/decode-bmp/-/decode-bmp-0.2.1.tgz", + "integrity": "sha512-NiOaGe+GN0KJqi2STf24hfMkFitDUaIoUU3eKvP/wAbLe8o6FuW5n/x7MHPR0HKvBokp6MQY/j7w8lewEeVCIA==", + "dependencies": { + "@canvas/image-data": "^1.0.0", + "to-data-view": "^1.1.0" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/decode-ico": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/decode-ico/-/decode-ico-0.4.1.tgz", + "integrity": "sha512-69NZfbKIzux1vBOd31al3XnMnH+2mqDhEgLdpygErm4d60N+UwA5Sq5WFjmEDQzumgB9fElojGwWG0vybVfFmA==", + "dependencies": { + "@canvas/image-data": "^1.0.0", + "decode-bmp": "^0.2.0", + "to-data-view": "^1.1.0" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/decode-named-character-reference": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", @@ -3553,9 +4044,9 @@ } }, "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "engines": { "node": ">=8" } @@ -4639,6 +5130,11 @@ "node": ">=16.17.0" } }, + "node_modules/ico-endec": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ico-endec/-/ico-endec-0.1.6.tgz", + "integrity": "sha512-ZdLU38ZoED3g1j3iEyzcQj+wAkY2xfWNkymszfJPoxucIUhK7NayQ+/C4Kv0nDFMIsbtbEHldv3V8PU494/ueQ==" + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -4725,8 +5221,7 @@ "node_modules/is-arrayish": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "optional": true + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "node_modules/is-binary-path": { "version": "2.1.0", @@ -6403,9 +6898,9 @@ } }, "node_modules/node-abi": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz", - "integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==", + "version": "3.56.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.56.0.tgz", + "integrity": "sha512-fZjdhDOeRcaS+rcpve7XuwHBmktS1nS1gzgghwKUQQ8nTy2FdSDr6ZT8k6YhvlJeHmmQMYiT/IH9hfco5zeW2Q==", "optional": true, "dependencies": { "semver": "^7.3.5" @@ -7087,9 +7582,9 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", + "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", "optional": true, "dependencies": { "detect-libc": "^2.0.0", @@ -8510,26 +9005,52 @@ "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" }, "node_modules/sharp": { - "version": "0.32.6", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", - "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.3.tgz", + "integrity": "sha512-vHUeXJU1UvlO/BNwTpT0x/r53WkLUVxrmb5JTgW92fdFCFk0ispLMAeu/jPO2vjkXM1fYUi3K7/qcLF47pwM1A==", "hasInstallScript": true, - "optional": true, "dependencies": { "color": "^4.2.3", - "detect-libc": "^2.0.2", - "node-addon-api": "^6.1.0", - "prebuild-install": "^7.1.1", - "semver": "^7.5.4", - "simple-get": "^4.0.1", - "tar-fs": "^3.0.4", - "tunnel-agent": "^0.6.0" + "detect-libc": "^2.0.3", + "semver": "^7.6.0" }, "engines": { - "node": ">=14.15.0" + "libvips": ">=8.15.2", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.3", + "@img/sharp-darwin-x64": "0.33.3", + "@img/sharp-libvips-darwin-arm64": "1.0.2", + "@img/sharp-libvips-darwin-x64": "1.0.2", + "@img/sharp-libvips-linux-arm": "1.0.2", + "@img/sharp-libvips-linux-arm64": "1.0.2", + "@img/sharp-libvips-linux-s390x": "1.0.2", + "@img/sharp-libvips-linux-x64": "1.0.2", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.2", + "@img/sharp-libvips-linuxmusl-x64": "1.0.2", + "@img/sharp-linux-arm": "0.33.3", + "@img/sharp-linux-arm64": "0.33.3", + "@img/sharp-linux-s390x": "0.33.3", + "@img/sharp-linux-x64": "0.33.3", + "@img/sharp-linuxmusl-arm64": "0.33.3", + "@img/sharp-linuxmusl-x64": "0.33.3", + "@img/sharp-wasm32": "0.33.3", + "@img/sharp-win32-ia32": "0.33.3", + "@img/sharp-win32-x64": "0.33.3" + } + }, + "node_modules/sharp-ico": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/sharp-ico/-/sharp-ico-0.1.5.tgz", + "integrity": "sha512-a3jODQl82NPp1d5OYb0wY+oFaPk7AvyxipIowCHk7pBsZCWgbe0yAkU2OOXdoH0ENyANhyOQbs9xkAiRHcF02Q==", + "dependencies": { + "decode-ico": "*", + "ico-endec": "*", + "sharp": "*" } }, "node_modules/shebang-command": { @@ -8619,7 +9140,6 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "optional": true, "dependencies": { "is-arrayish": "^0.3.1" } @@ -8708,9 +9228,9 @@ } }, "node_modules/streamx": { - "version": "2.15.8", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.8.tgz", - "integrity": "sha512-6pwMeMY/SuISiRsuS8TeIrAzyFbG5gGPHFQsYjUr/pbBadaL1PCWmzKw+CHZSwainfvcF6Si6cVLq4XTEwswFQ==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", + "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", "optional": true, "dependencies": { "fast-fifo": "^1.1.0", @@ -9061,6 +9581,11 @@ "node": ">=0.8" } }, + "node_modules/to-data-view": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/to-data-view/-/to-data-view-1.1.0.tgz", + "integrity": "sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ==" + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -9127,6 +9652,12 @@ } } }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", diff --git a/src/pages/favicon.ico.ts b/src/pages/favicon.ico.ts index 891b87c..6347f84 100644 --- a/src/pages/favicon.ico.ts +++ b/src/pages/favicon.ico.ts @@ -8,7 +8,7 @@ const faviconSrc = path.resolve("src/images/icon.png"); export const GET: APIRoute = async () => { // Resize the image to multiple sizes - const sizes = [16, 32, 48, 64, 128, 256]; + const sizes = [16, 32]; const buffers = await Promise.all( sizes.map(async (size) => { diff --git a/src/pages/manifest.json.ts b/src/pages/manifest.json.ts index bab70e0..977aa09 100644 --- a/src/pages/manifest.json.ts +++ b/src/pages/manifest.json.ts @@ -48,7 +48,7 @@ export const GET: APIRoute = async () => { name: "ScrewFast", icons, display: "minimal-ui", - id: "some-unique-id", + id: "/", start_url: "/", theme_color: "#FFEDD5", background_color: "#262626",