From 7257457f78cf6d0aab8146fbe52be2c91a3ca84e Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Sat, 5 Oct 2024 19:20:43 +0200 Subject: [PATCH 01/39] fix(docs): remove outdated Sqoosh reference from README Removed the Sqoosh reference as it is no longer relevant. Updated the README to reflect the current state of imagemin packages. This ensures the documentation stays up-to-date and less confusing. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9536efa..7a9d891 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,7 @@ The point is: Micro-optimization still needs to be taken care of through other m Following [Merlin](https://github.com/sumcumo/imagemin-merlin), which Imagemin Guard is based on, new features may include the option to configure the underlying imagemin plugins (somewhat prepared but not completed yet), or supporting projects in which the project’s .git folder is not at the same level as its package.json (at the moment, automatic mode doesn’t work in these cases). -Also, as some imagemin packages are not maintained at the moment, it may be useful or necessary to change to a different compression solution, like [Sqoosh](https://github.com/GoogleChromeLabs/squoosh). The situation is being monitored. Ideally, any change here will only happen under the hood. +Also, as some imagemin packages are not maintained at the moment, it may be useful or necessary to change to a different compression solution. The situation is being monitored. Ideally, any change here will only happen under the hood. Thoughts or suggestions? Please [file an issue](https://github.com/j9t/imagemin-guard/issues/new) or send a pull request (some code still needs care). Thank you! From 896e8b0ca0a9497e179809b75ae58f7329357a6c Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Sat, 5 Oct 2024 19:21:40 +0200 Subject: [PATCH 02/39] fix: bump version to 4.0.1 in package files Updated the version number from 4.0.0 to 4.0.1 in both `package.json` and `package-lock.json`. This is a patch update for maintenance purposes. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- package-lock.json | 4 ++-- package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7977a65..648ea3b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@j9t/imagemin-guard", - "version": "4.0.0", + "version": "4.0.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@j9t/imagemin-guard", - "version": "4.0.0", + "version": "4.0.1", "license": "Apache-2.0", "dependencies": { "chalk": "^5.3.0", diff --git a/package.json b/package.json index 409fa9b..1eb0708 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@j9t/imagemin-guard", "description": "Ensure losslessly compressed JPG, PNG, GIF, WebP, and AVIF images (suitable for manual and automatic compression)", "author": "Jens Oliver Meiert", - "version": "4.0.0", + "version": "4.0.1", "type": "module", "license": "Apache-2.0", "repository": { @@ -46,4 +46,4 @@ "devDependencies": { "jest": "^29.7.0" } -} +} \ No newline at end of file From 5b2ebf482a689db3510a208e5017e728ce5193f9 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Sun, 6 Oct 2024 17:05:08 +0200 Subject: [PATCH 03/39] fix: update test AVIF file in imagemin-guard Updated the test AVIF file to reflect the latest image compression results. This change helps ensure that tests reflect current behaviors and outputs. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- media/test/test.avif | Bin 1940 -> 11002 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/media/test/test.avif b/media/test/test.avif index 9497298f569730c8b8a86a9b35110502502942df..fc9f52776dfbdc2ac689f23f28ba454c70e97e3a 100644 GIT binary patch delta 10209 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 bFgJlKR&qKrmt4T?S(_a&UtCXNT%UzNP00HY delta 1075 zcmV-31kC&TRg@2qcLD?Lk$G4P=Ku@<8~_ghCjbet+=T)c01N;C000zeb8uw<00000 z00F`P00AtMcmpYa1NCiWVRRAz3JMq^I5M^fFfcSAGTaAD3!yT)}1bILQcq?K70BHbKWKFWsEXip2dL zGk5C(Y5ivVDxn$5s!r=bgI*p4hpZsJvio&*9}R_8_fC>kVT)<2 z%L*ZEKx66pi(r_R4`8?77S(E}f48Gx(@wgid{hz6- zT-|HYoI#%$aE@>uqsuYE&578@|NMT!hKIy|9=rA!@bcDqZVsq9(v3i&_*Z7F9q%4K zjS9^m#qMDL?Dm}jaWh2=3_x#Ggsi&U)sJExPGC9&{e8v(2c=MI2J_kr}5 zI=;o3Vf&#tXgRj|1RR!aMFx*Wl*xGFGo;;07pQ#q{e!mWaXS9t5Te>PNfZbM_OJJU z+{^$?#|bJe+Zw_JDeb#>Z&S|+VwKgcIu2*v{X8EQ%NX^WcEs77zjl3`&EK9YZY>ev z?yaglC!t$^j?tby1zioEpFsk)3x;}>e7YJgsq!+r0e%H^O@C{!@W-@At;YGhvYPZO z{UxzC)2p#<{<-mO$S&j8({G__1HNB+k=W*Ot*C*X(i670DLN~4Fg;Wio+akeY%#L? zMbGK`H|aOg^=Tk7pQcNZhpsJPM_EXa`Xl$`PD4BgF0=CE)G|#y#^#0Jc(keB4YIk@ tB9hXId$n_ebqU*sK54MB)cCrHfMIK}P9J@g_m%=QMC=97$mb%Slz?#N6Kwzh From 8645a27dbd4c4d3ca0e6207764848da55f146345 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Sun, 6 Oct 2024 17:16:10 +0200 Subject: [PATCH 04/39] chore: update test images with optimized versions Replaced existing test images with new optimized versions to improve performance. This change affects GIF, JPG, and WEBP files in the media/test directory. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- media/test/test.gif | Bin 2078 -> 8237 bytes media/test/test.jpg | Bin 124866 -> 174958 bytes media/test/test.webp | Bin 16606 -> 30974 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/media/test/test.gif b/media/test/test.gif index b01afa20de6e1ccecbfade56fc8e4a16742a92fd..f6f12d5c01e5111b1a5d3e6ff8cae21ecbe3b50c 100644 GIT binary patch literal 8237 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 fKJ`7%{qTE#{NN8g=<_~$^^2bU=y3jhE+`S{$+ literal 2078 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 literal 124866 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 Date: Sun, 6 Oct 2024 17:38:50 +0200 Subject: [PATCH 05/39] feat: update test image The test image in the imagemin-guard media directory has been updated. This may affect test results or validations that rely on this image. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- media/test/test.jpg | Bin 174958 -> 161985 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/media/test/test.jpg b/media/test/test.jpg index 209b5323db4218062266fb3955259a333be87ee5..48e4d6985bb8ad251da24832475df2c4f5c0f564 100644 GIT binary patch literal 161985 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 literal 174958 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 From e80a8730d2b7eca3258f57e83b5aa12d5aaa61b2 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Sun, 6 Oct 2024 17:39:25 +0200 Subject: [PATCH 06/39] feat: switch to sharp for image compression Replaced imagemin with sharp for more flexible and efficient image compression, including support for multiple formats and better error handling. Updated package dependencies accordingly to reflect these changes. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- package-lock.json | 5947 ++++++++++----------------------------------- package.json | 8 +- src/utils.js | 134 +- 3 files changed, 1407 insertions(+), 4682 deletions(-) diff --git a/package-lock.json b/package-lock.json index 648ea3b..62a590f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,22 +1,20 @@ { "name": "@j9t/imagemin-guard", - "version": "4.0.1", + "version": "4.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@j9t/imagemin-guard", - "version": "4.0.1", + "version": "4.0.0", "license": "Apache-2.0", "dependencies": { "chalk": "^5.3.0", "filesize": "^10.1.6", + "gifsicle": "^7.0.1", "globby": "^14.0.2", - "imagemin-avif": "^0.1.6", - "imagemin-cli": "^8.0.0", - "imagemin-mozjpeg": "^10.0.0", - "imagemin-webp": "^8.0.0", "rimraf": "^6.0.1", + "sharp": "^0.33.5", "simple-git": "^3.27.0", "yargs": "^17.7.2" }, @@ -616,440 +614,371 @@ "license": "MIT" }, "node_modules/@emnapi/runtime": { - "version": "0.45.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-0.45.0.tgz", - "integrity": "sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.0.tgz", + "integrity": "sha512-XMBySMuNZs3DM96xcJmLW4EfGnf+uGmFNjzpehMjuX5PLB5j87ar2Zc4e3PVeZ3I5g3tYtAqskB28manlF69Zw==", + "license": "MIT", "optional": true, "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.2.tgz", - "integrity": "sha512-itHBs1rPmsmGF9p4qRe++CzCgd+kFYktnsoR1sbIAfsRMrJZau0Tt1AH9KVnufc2/tU02Gf6Ibujx+15qRE03w==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", "cpu": [ "arm64" ], + "license": "Apache-2.0", "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" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.1" + "@img/sharp-libvips-darwin-arm64": "1.0.4" } }, "node_modules/@img/sharp-darwin-x64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.2.tgz", - "integrity": "sha512-/rK/69Rrp9x5kaWBjVN07KixZanRr+W1OiyKdXcbjQD6KbW+obaTeBBtLUAtbBsnlTTmWthw99xqoOS7SsySDg==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", "cpu": [ "x64" ], + "license": "Apache-2.0", "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" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.1" + "@img/sharp-libvips-darwin-x64": "1.0.4" } }, "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.1.tgz", - "integrity": "sha512-kQyrSNd6lmBV7O0BUiyu/OEw9yeNGFbQhbxswS1i6rMDwBBSX+e+rPzu3S+MwAiGU3HdLze3PanQ4Xkfemgzcw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", "cpu": [ "arm64" ], + "license": "LGPL-3.0-or-later", "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.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.1.tgz", - "integrity": "sha512-eVU/JYLPVjhhrd8Tk6gosl5pVlvsqiFlt50wotCvdkFGf+mDNBJxMh+bvav+Wt3EBnNZWq8Sp2I7XfSjm8siog==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", "cpu": [ "x64" ], + "license": "LGPL-3.0-or-later", "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.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.1.tgz", - "integrity": "sha512-FtdMvR4R99FTsD53IA3LxYGghQ82t3yt0ZQ93WMZ2xV3dqrb0E8zq4VHaTOuLEAuA83oDawHV3fd+BsAPadHIQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", "cpu": [ "arm" ], + "license": "LGPL-3.0-or-later", "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.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.1.tgz", - "integrity": "sha512-bnGG+MJjdX70mAQcSLxgeJco11G+MxTz+ebxlz8Y3dxyeb3Nkl7LgLI0mXupoO+u1wRNx/iRj5yHtzA4sde1yA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", "cpu": [ "arm64" ], + "license": "LGPL-3.0-or-later", "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.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.1.tgz", - "integrity": "sha512-3+rzfAR1YpMOeA2zZNp+aYEzGNWK4zF3+sdMxuCS3ey9HhDbJ66w6hDSHDMoap32DueFwhhs3vwooAB2MaK4XQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", "cpu": [ "s390x" ], + "license": "LGPL-3.0-or-later", "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.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.1.tgz", - "integrity": "sha512-3NR1mxFsaSgMMzz1bAnnKbSAI+lHXVTqAHgc1bgzjHuXjo4hlscpUxc0vFSAPKI3yuzdzcZOkq7nDPrP2F8Jgw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", "cpu": [ "x64" ], + "license": "LGPL-3.0-or-later", "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.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.1.tgz", - "integrity": "sha512-5aBRcjHDG/T6jwC3Edl3lP8nl9U2Yo8+oTl5drd1dh9Z1EBfzUKAJFUDTDisDjUwc7N4AjnPGfCA3jl3hY8uDg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", "cpu": [ "arm64" ], + "license": "LGPL-3.0-or-later", "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.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.1.tgz", - "integrity": "sha512-dcT7inI9DBFK6ovfeWRe3hG30h51cBAP5JXlZfx6pzc/Mnf9HFCQDLtYf4MCBjxaaTfjCCjkBxcy3XzOAo5txw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", "cpu": [ "x64" ], + "license": "LGPL-3.0-or-later", "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.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.2.tgz", - "integrity": "sha512-Fndk/4Zq3vAc4G/qyfXASbS3HBZbKrlnKZLEJzPLrXoJuipFNNwTes71+Ki1hwYW5lch26niRYoZFAtZVf3EGA==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", "cpu": [ "arm" ], + "license": "Apache-2.0", "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" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.1" + "@img/sharp-libvips-linux-arm": "1.0.5" } }, "node_modules/@img/sharp-linux-arm64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.2.tgz", - "integrity": "sha512-pz0NNo882vVfqJ0yNInuG9YH71smP4gRSdeL09ukC2YLE6ZyZePAlWKEHgAzJGTiOh8Qkaov6mMIMlEhmLdKew==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", "cpu": [ "arm64" ], + "license": "Apache-2.0", "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" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.1" + "@img/sharp-libvips-linux-arm64": "1.0.4" } }, "node_modules/@img/sharp-linux-s390x": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.2.tgz", - "integrity": "sha512-MBoInDXDppMfhSzbMmOQtGfloVAflS2rP1qPcUIiITMi36Mm5YR7r0ASND99razjQUpHTzjrU1flO76hKvP5RA==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", "cpu": [ "s390x" ], + "license": "Apache-2.0", "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" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.0.1" + "@img/sharp-libvips-linux-s390x": "1.0.4" } }, "node_modules/@img/sharp-linux-x64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.2.tgz", - "integrity": "sha512-xUT82H5IbXewKkeF5aiooajoO1tQV4PnKfS/OZtb5DDdxS/FCI/uXTVZ35GQ97RZXsycojz/AJ0asoz6p2/H/A==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", "cpu": [ "x64" ], + "license": "Apache-2.0", "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" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.1" + "@img/sharp-libvips-linux-x64": "1.0.4" } }, "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.2.tgz", - "integrity": "sha512-F+0z8JCu/UnMzg8IYW1TMeiViIWBVg7IWP6nE0p5S5EPQxlLd76c8jYemG21X99UzFwgkRo5yz2DS+zbrnxZeA==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", "cpu": [ "arm64" ], + "license": "Apache-2.0", "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" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.1" + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" } }, "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.2.tgz", - "integrity": "sha512-+ZLE3SQmSL+Fn1gmSaM8uFusW5Y3J9VOf+wMGNnTtJUMUxFhv+P4UPaYEYT8tqnyYVaOVGgMN/zsOxn9pSsO2A==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", "cpu": [ "x64" ], + "license": "Apache-2.0", "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" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.1" + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" } }, "node_modules/@img/sharp-wasm32": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.2.tgz", - "integrity": "sha512-fLbTaESVKuQcpm8ffgBD7jLb/CQLcATju/jxtTXR1XCLwbOQt+OL5zPHSDMmp2JZIeq82e18yE0Vv7zh6+6BfQ==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", "cpu": [ "wasm32" ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "optional": true, "dependencies": { - "@emnapi/runtime": "^0.45.0" + "@emnapi/runtime": "^1.2.0" }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-win32-ia32": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.2.tgz", - "integrity": "sha512-okBpql96hIGuZ4lN3+nsAjGeggxKm7hIRu9zyec0lnfB8E7Z6p95BuRZzDDXZOl2e8UmR4RhYt631i7mfmKU8g==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", "cpu": [ "ia32" ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", "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" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-win32-x64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.2.tgz", - "integrity": "sha512-E4magOks77DK47FwHUIGH0RYWSgRBfGdK56kIHSVeB9uIS4pPFr4N2kIVsXdQQo4LzOsENKV5KAhRlRL7eMAdg==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", "cpu": [ "x64" ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", "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" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" @@ -1808,6 +1737,7 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "license": "MIT", "engines": { "node": ">=4" } @@ -1843,20 +1773,6 @@ "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "optional": true, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -1978,17 +1894,6 @@ "dev": true, "license": "MIT" }, - "node_modules/ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dependencies": { - "ansi-wrap": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -2018,15 +1923,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -2042,14 +1938,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -2081,12 +1969,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/archive-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", "integrity": "sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==", + "license": "MIT", "dependencies": { "file-type": "^4.2.0" }, @@ -2098,6 +1988,7 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", "integrity": "sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==", + "license": "MIT", "engines": { "node": ">=4" } @@ -2112,50 +2003,6 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arrify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", - "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -2328,12 +2175,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/bin-build": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-3.0.0.tgz", "integrity": "sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA==", + "license": "MIT", "dependencies": { "decompress": "^4.0.0", "download": "^6.2.2", @@ -2349,6 +2198,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "license": "MIT", "dependencies": { "lru-cache": "^4.0.1", "shebang-command": "^1.2.0", @@ -2359,6 +2209,7 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", + "license": "MIT", "dependencies": { "cross-spawn": "^5.0.1", "get-stream": "^3.0.0", @@ -2376,14 +2227,70 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-build/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "license": "MIT", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-build/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "license": "MIT", "engines": { "node": ">=4" } }, + "node_modules/bin-build/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-build/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-build/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/bin-check": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==", + "license": "MIT", "dependencies": { "execa": "^0.7.0", "executable": "^4.1.0" @@ -2396,6 +2303,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "license": "MIT", "dependencies": { "lru-cache": "^4.0.1", "shebang-command": "^1.2.0", @@ -2406,6 +2314,7 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", + "license": "MIT", "dependencies": { "cross-spawn": "^5.0.1", "get-stream": "^3.0.0", @@ -2423,14 +2332,70 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-check/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "license": "MIT", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-check/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "license": "MIT", "engines": { "node": ">=4" } }, + "node_modules/bin-check/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-check/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-check/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/bin-version": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-3.1.0.tgz", "integrity": "sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ==", + "license": "MIT", "dependencies": { "execa": "^1.0.0", "find-versions": "^3.0.0" @@ -2443,6 +2408,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-4.0.0.tgz", "integrity": "sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ==", + "license": "MIT", "dependencies": { "bin-version": "^3.0.0", "semver": "^5.6.0", @@ -2452,28 +2418,130 @@ "node": ">=6" } }, - "node_modules/bin-wrapper": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-4.1.0.tgz", - "integrity": "sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q==", + "node_modules/bin-version/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "license": "MIT", "dependencies": { - "bin-check": "^4.1.0", - "bin-version-check": "^4.0.0", - "download": "^7.1.0", - "import-lazy": "^3.1.0", - "os-filter-obj": "^2.0.0", - "pify": "^4.0.1" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" }, "engines": { - "node": ">=6" + "node": ">=4.8" } }, - "node_modules/bin-wrapper/node_modules/download": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz", - "integrity": "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==", + "node_modules/bin-version/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "license": "MIT", "dependencies": { - "archive-type": "^4.0.0", + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bin-version/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bin-version/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "license": "MIT", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-version/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-version/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-version/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-version/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/bin-wrapper": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-4.1.0.tgz", + "integrity": "sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q==", + "license": "MIT", + "dependencies": { + "bin-check": "^4.1.0", + "bin-version-check": "^4.0.0", + "download": "^7.1.0", + "import-lazy": "^3.1.0", + "os-filter-obj": "^2.0.0", + "pify": "^4.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bin-wrapper/node_modules/download": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz", + "integrity": "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==", + "license": "MIT", + "dependencies": { + "archive-type": "^4.0.0", "caw": "^2.0.1", "content-disposition": "^0.5.2", "decompress": "^4.2.0", @@ -2494,6 +2562,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "license": "MIT", "engines": { "node": ">=4" } @@ -2502,6 +2571,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==", + "license": "MIT", "engines": { "node": ">=6" } @@ -2510,6 +2580,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "license": "MIT", "engines": { "node": ">=4" } @@ -2518,6 +2589,7 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "license": "MIT", "dependencies": { "@sindresorhus/is": "^0.7.0", "cacheable-request": "^2.1.1", @@ -2545,6 +2617,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "license": "MIT", "engines": { "node": ">=4" } @@ -2553,6 +2626,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", + "license": "MIT", "engines": { "node": ">=4" } @@ -2561,6 +2635,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", + "license": "MIT", "dependencies": { "p-timeout": "^2.0.1" }, @@ -2572,6 +2647,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "license": "MIT", "dependencies": { "p-finally": "^1.0.0" }, @@ -2579,18 +2655,11 @@ "node": ">=4" } }, - "node_modules/bin-wrapper/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "engines": { - "node": ">=6" - } - }, "node_modules/bin-wrapper/node_modules/prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "license": "MIT", "engines": { "node": ">=4" } @@ -2599,6 +2668,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "license": "MIT", "dependencies": { "prepend-http": "^2.0.0" }, @@ -2610,53 +2680,17 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "license": "MIT", "dependencies": { "readable-stream": "^2.3.5", "safe-buffer": "^5.1.1" } }, - "node_modules/bl/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/bl/node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/bl/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/bl/node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "optional": true - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2734,6 +2768,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -2743,6 +2778,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "license": "MIT", "dependencies": { "buffer-alloc-unsafe": "^1.1.0", "buffer-fill": "^1.0.0" @@ -2751,12 +2787,14 @@ "node_modules/buffer-alloc-unsafe": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "license": "MIT" }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", "engines": { "node": "*" } @@ -2764,7 +2802,8 @@ "node_modules/buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "license": "MIT" }, "node_modules/buffer-from": { "version": "1.1.2", @@ -2777,6 +2816,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==", + "license": "MIT", "dependencies": { "clone-response": "1.0.2", "get-stream": "3.0.0", @@ -2791,6 +2831,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "license": "MIT", "engines": { "node": ">=4" } @@ -2799,39 +2840,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", "integrity": "sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/callsites": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-4.1.0.tgz", - "integrity": "sha512-aBMbD1Xxay75ViYezwT40aQONfr+pSXTHwNKvIXhXD6+LY3F1dLIcceoC5OZKBVHbXcysz1hL9D2w0JJIMXpUw==", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==", - "optional": true, - "dependencies": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - }, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2861,6 +2870,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", + "license": "MIT", "dependencies": { "get-proxy": "^2.0.0", "isurl": "^1.0.0-alpha5", @@ -2882,17 +2892,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/change-file-extension": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/change-file-extension/-/change-file-extension-0.1.1.tgz", - "integrity": "sha512-lB0j9teu8JtDPDHRfU8pNH33w4wMu5bOaKoT4PxH+AKugBrIfpiJMTTKIm0TErNeJPkeQEgvH31YpccTwOKPRg==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", @@ -2926,31 +2925,6 @@ "dev": true, "license": "MIT" }, - "node_modules/cli-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", - "dependencies": { - "restore-cursor": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -2987,6 +2961,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", + "license": "MIT", "dependencies": { "mimic-response": "^1.0.0" } @@ -3049,32 +3024,30 @@ "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "node_modules/config-chain": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "license": "MIT", "dependencies": { "ini": "^1.3.4", "proto-list": "~1.2.1" } }, - "node_modules/console-stream": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz", - "integrity": "sha512-QC/8l9e6ofi6nqZ5PawlDgzmMw3OxIXtvolBzap/F4UDBJlDaZRSNbL/lb41C29FcbSJncBFlJFj2WJoNyZRfQ==", - "optional": true - }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -3082,17 +3055,6 @@ "node": ">= 0.6" } }, - "node_modules/convert-hrtime": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", - "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -3103,7 +3065,8 @@ "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" }, "node_modules/create-jest": { "version": "29.7.0", @@ -3145,134 +3108,41 @@ } }, "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "license": "MIT", "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=4.8" - } - }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "optional": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "node": ">= 8" } }, - "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "optional": true, + "node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "license": "MIT", "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" + "ms": "2.1.2" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "optional": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "optional": true, - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", - "optional": true, - "dependencies": { - "array-find-index": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cwebp-bin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/cwebp-bin/-/cwebp-bin-8.0.0.tgz", - "integrity": "sha512-j2s6jA84aG20lB0i/FBwqZGc8nHx4VASUK8OTDxy3xoUHoX/+pP6T15/TnWwhMcD0pZ05y5GgRPkurufOC8tnQ==", - "hasInstallScript": true, - "dependencies": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.1" - }, - "bin": { - "cwebp": "cli.js" - }, - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/imagemin/cwebp-bin?sponsor=1" - } - }, - "node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "optional": true, - "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/decode-uri-component": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "license": "MIT", "engines": { "node": ">=0.10" } @@ -3281,6 +3151,7 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", + "license": "MIT", "dependencies": { "decompress-tar": "^4.0.0", "decompress-tarbz2": "^4.0.0", @@ -3299,6 +3170,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "license": "MIT", "dependencies": { "mimic-response": "^1.0.0" }, @@ -3310,6 +3182,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "license": "MIT", "dependencies": { "file-type": "^5.2.0", "is-stream": "^1.1.0", @@ -3319,18 +3192,11 @@ "node": ">=4" } }, - "node_modules/decompress-tar/node_modules/file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", - "engines": { - "node": ">=4" - } - }, "node_modules/decompress-tarbz2": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "license": "MIT", "dependencies": { "decompress-tar": "^4.1.0", "file-type": "^6.1.0", @@ -3346,6 +3212,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "license": "MIT", "engines": { "node": ">=4" } @@ -3354,6 +3221,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "license": "MIT", "dependencies": { "decompress-tar": "^4.1.1", "file-type": "^5.2.0", @@ -3363,18 +3231,11 @@ "node": ">=4" } }, - "node_modules/decompress-targz/node_modules/file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", - "engines": { - "node": ">=4" - } - }, "node_modules/decompress-unzip": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", + "license": "MIT", "dependencies": { "file-type": "^3.8.0", "get-stream": "^2.2.0", @@ -3389,18 +3250,25 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/decompress-unzip/node_modules/get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", - "dependencies": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" - }, + "node_modules/decompress-unzip/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3431,9 +3299,10 @@ } }, "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==", + "license": "Apache-2.0", "engines": { "node": ">=8" } @@ -3458,79 +3327,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "optional": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "optional": true - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "optional": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "optional": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-prop": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-8.0.2.tgz", - "integrity": "sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==", - "dependencies": { - "type-fest": "^3.8.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/download": { "version": "6.2.5", "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz", "integrity": "sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==", + "license": "MIT", "dependencies": { "caw": "^2.0.0", "content-disposition": "^0.5.2", @@ -3548,18 +3349,11 @@ "node": ">=4" } }, - "node_modules/download/node_modules/file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", - "engines": { - "node": ">=4" - } - }, "node_modules/download/node_modules/get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "license": "MIT", "engines": { "node": ">=4" } @@ -3568,14 +3362,16 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==" + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "license": "BSD-3-Clause" }, "node_modules/eastasianwidth": { "version": "0.2.0", @@ -3611,35 +3407,16 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", "dependencies": { "once": "^1.4.0" } }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "optional": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/environment": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.0.0.tgz", - "integrity": "sha512-u6cXAuofxkVkkXHsBFBsYhRYjwGe5K16gv5j55kB872jJnw0dPm7WzMZ4pTeEIaXD2+G8PsQukvJ2rzqEluT/A==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "devOptional": true, + "dev": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -3675,96 +3452,106 @@ "node": ">=4" } }, - "node_modules/exec-buffer": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz", - "integrity": "sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==", + "node_modules/execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "license": "MIT", "dependencies": { - "execa": "^0.7.0", - "p-finally": "^1.0.0", - "pify": "^3.0.0", - "rimraf": "^2.5.4", - "tempfile": "^2.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/exec-buffer/node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/exec-buffer/node_modules/execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", - "dependencies": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, + "node_modules/execa/node_modules/human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "license": "Apache-2.0", "engines": { - "node": ">=4" + "node": ">=12.20.0" } }, - "node_modules/exec-buffer/node_modules/get-stream": { + "node_modules/execa/node_modules/is-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "license": "MIT", "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/exec-buffer/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "node_modules/execa/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/exec-buffer/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "node_modules/execa/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "license": "MIT", "dependencies": { - "glob": "^7.1.3" + "mimic-fn": "^4.0.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, + "node_modules/execa/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/executable": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "license": "MIT", "dependencies": { "pify": "^2.2.0" }, @@ -3772,6 +3559,15 @@ "node": ">=4" } }, + "node_modules/executable/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -3802,6 +3598,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "license": "MIT", "dependencies": { "mime-db": "^1.28.0" }, @@ -3813,6 +3610,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "license": "MIT", "dependencies": { "ext-list": "^2.0.0", "sort-keys-length": "^1.0.0" @@ -3821,26 +3619,6 @@ "node": ">=4" } }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-equals": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", - "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -3863,28 +3641,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fast-xml-parser": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", - "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - ], - "optional": true, - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, "node_modules/fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -3907,43 +3663,25 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "license": "MIT", "dependencies": { "pend": "~1.2.0" } }, - "node_modules/figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", - "optional": true, - "dependencies": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/file-type": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-19.0.0.tgz", - "integrity": "sha512-s7cxa7/leUWLiXO78DVVfBVse+milos9FitauDLG1pI7lNaJ2+5lzPnr2N24ym+84HVwJL6hVuGfgVE+ALvU8Q==", - "dependencies": { - "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0", - "token-types": "^5.0.1" - }, + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" + "node": ">=4" } }, "node_modules/filename-reserved-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "license": "MIT", "engines": { "node": ">=4" } @@ -3952,6 +3690,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", + "license": "MIT", "dependencies": { "filename-reserved-regex": "^2.0.0", "strip-outer": "^1.0.0", @@ -3980,23 +3719,11 @@ "node": ">=8" } }, - "node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", - "optional": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/find-versions": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", + "license": "MIT", "dependencies": { "semver-regex": "^2.0.0" }, @@ -4019,46 +3746,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/foreground-child/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/foreground-child/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/foreground-child/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/foreground-child/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, "node_modules/foreground-child/node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -4070,65 +3757,27 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/foreground-child/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" } }, - "node_modules/from2/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/from2/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/from2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "node_modules/fsevents": { "version": "2.3.3", @@ -4149,18 +3798,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "devOptional": true - }, - "node_modules/function-timeout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.1.tgz", - "integrity": "sha512-6yPMImFFuaMPNaTMTBuolA8EanHJWF5Vju0NHpObRURT105J6x1Mf2a7J4P7Sqk2xDxv24N5L0RatEhTBhNmdA==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "dev": true }, "node_modules/gensync": { "version": "1.0.0-beta.2", @@ -4180,17 +3818,6 @@ "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/get-east-asian-width": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", - "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -4205,6 +3832,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", + "license": "MIT", "dependencies": { "npm-conf": "^1.1.0" }, @@ -4212,195 +3840,69 @@ "node": ">=4" } }, - "node_modules/get-stdin": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", - "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", + "license": "MIT", "dependencies": { - "pump": "^3.0.0" + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, "node_modules/gifsicle": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-5.3.0.tgz", - "integrity": "sha512-FJTpgdj1Ow/FITB7SVza5HlzXa+/lqEY0tHQazAJbuAdvyJtkH4wIdsR2K414oaTwRXHFLLF+tYbipj+OpYg+Q==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-7.0.1.tgz", + "integrity": "sha512-Mwg4tDc7dUUWYNan/NAf4pKcrCwDSUAXRqBNtqXjtwzMyGJ6LVFz5pwMC/SEj2rsw1VILrhr+kk/2wG3+GMXfg==", "hasInstallScript": true, - "optional": true, + "license": "MIT", "dependencies": { "bin-build": "^3.0.0", "bin-wrapper": "^4.0.0", - "execa": "^5.0.0" + "execa": "^6.1.0" }, "bin": { "gifsicle": "cli.js" }, "engines": { - "node": ">=10" + "node": "^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/imagemin/gisicle-bin?sponsor=1" } }, - "node_modules/gifsicle/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "optional": true, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">= 8" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/gifsicle/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "optional": true, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/gifsicle/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gifsicle/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "optional": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gifsicle/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "optional": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gifsicle/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/gifsicle/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "optional": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gifsicle/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/gifsicle/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "optional": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" + "node": ">= 6" } }, "node_modules/globals": { @@ -4447,6 +3949,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "license": "MIT", "dependencies": { "decompress-response": "^3.2.0", "duplexer3": "^0.1.4", @@ -4471,6 +3974,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "license": "MIT", "engines": { "node": ">=4" } @@ -4484,7 +3988,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "devOptional": true, + "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -4492,18 +3996,6 @@ "node": ">= 0.4.0" } }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "optional": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4518,6 +4010,7 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "license": "MIT", "engines": { "node": "*" } @@ -4526,6 +4019,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "license": "MIT", "dependencies": { "has-symbol-support-x": "^1.4.1" }, @@ -4533,12 +4027,6 @@ "node": "*" } }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "optional": true - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -4549,31 +4037,18 @@ "node_modules/http-cache-semantics": { "version": "3.8.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "license": "BSD-2-Clause" }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "devOptional": true, + "dev": true, "engines": { "node": ">=10.17.0" } }, - "node_modules/identifier-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/identifier-regex/-/identifier-regex-1.0.0.tgz", - "integrity": "sha512-Rcy5cjBOM9iTR+Vwy0Llyip9u0cA99T1yiWOhDW/+PDaTQhyski0tMovsipQ/FRNDkudjLWusJ/IMVIlG5WZnQ==", - "dependencies": { - "reserved-identifiers": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -4591,7 +4066,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/ignore": { "version": "5.2.4", @@ -4601,468 +4077,95 @@ "node": ">= 4" } }, - "node_modules/imagemin": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-9.0.0.tgz", - "integrity": "sha512-oFlmioXTIrDCNYiKUVPjzUzm8M/7X74WEO6v8NFjn3ZtxjArdVJiRRdbPpq/OG4BdwaHMUz8ej9Fp4AcaDzMnA==", - "dependencies": { - "change-file-extension": "^0.1.1", - "environment": "^1.0.0", - "file-type": "^19.0.0", - "globby": "^14.0.1", - "junk": "^4.0.1", - "ow": "^2.0.0", - "p-pipe": "^4.0.0", - "slash": "^5.1.0", - "uint8array-extras": "^1.1.0" - }, + "node_modules/import-lazy": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz", + "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==", + "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/imagemin-avif": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/imagemin-avif/-/imagemin-avif-0.1.6.tgz", - "integrity": "sha512-ItteHJ1xhC3QzlabVKmwSLmp2D9OlSaRmeEwmtK3+MPAo0fFsJX0ZzFBgTFAKuZNEqq7TSmgsg8MxxQ1745cuw==", + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", "dependencies": { - "plugin-error": "1.0.1", - "sharp": "^0.33.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/imagemin-cli": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/imagemin-cli/-/imagemin-cli-8.0.0.tgz", - "integrity": "sha512-kTlQ2QFH6acEhJWVC1gKm18t0hXO6uxCzYkCiqEGzuYaCS5v8Ilg+HQxvUdmmigK7dvFTR3VTiT09dx6sHWHmg==", - "dependencies": { - "arrify": "^3.0.0", - "get-stdin": "^9.0.0", - "imagemin": "^9.0.0", - "lodash.pairs": "^3.0.1", - "meow": "^13.2.0", - "ora": "^8.0.1", - "plur": "^5.1.0", - "strip-indent": "^4.0.0", - "uint8array-extras": "^1.1.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" }, "bin": { - "imagemin": "cli.js" + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" - }, - "optionalDependencies": { - "imagemin-gifsicle": "^7.0.0", - "imagemin-jpegtran": "^7.0.0", - "imagemin-optipng": "^8.0.0", - "imagemin-svgo": "^10.0.1" } }, - "node_modules/imagemin-gifsicle": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/imagemin-gifsicle/-/imagemin-gifsicle-7.0.0.tgz", - "integrity": "sha512-LaP38xhxAwS3W8PFh4y5iQ6feoTSF+dTAXFRUEYQWYst6Xd+9L/iPk34QGgK/VO/objmIlmq9TStGfVY2IcHIA==", - "optional": true, - "dependencies": { - "execa": "^1.0.0", - "gifsicle": "^5.0.0", - "is-gif": "^3.0.0" - }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/imagemin/imagemin-gifsicle?sponsor=1" + "node": ">=0.8.19" } }, - "node_modules/imagemin-jpegtran": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/imagemin-jpegtran/-/imagemin-jpegtran-7.0.0.tgz", - "integrity": "sha512-MJoyTCW8YjMJf56NorFE41SR/WkaGA3IYk4JgvMlRwguJEEd3PnP9UxA8Y2UWjquz8d+On3Ds/03ZfiiLS8xTQ==", - "optional": true, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "dependencies": { - "exec-buffer": "^3.0.0", - "is-jpg": "^2.0.0", - "jpegtran-bin": "^5.0.0" - }, - "engines": { - "node": ">=10" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/imagemin-mozjpeg": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/imagemin-mozjpeg/-/imagemin-mozjpeg-10.0.0.tgz", - "integrity": "sha512-DK85QNOjS3/GzWYfNB3CACMZD10sIQgFDv1+WTOnZljgltQTEyATjdyUVyjKu5q4sCESQdwvwq7WEZzJ5fFjlg==", - "dependencies": { - "execa": "^6.0.0", - "is-jpg": "^3.0.0", - "mozjpeg": "^8.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "node_modules/imagemin-mozjpeg/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==", + "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" }, "engines": { - "node": ">= 8" + "node": ">=4" } }, - "node_modules/imagemin-mozjpeg/node_modules/execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "has": "^1.0.3" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/imagemin-mozjpeg/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imagemin-mozjpeg/node_modules/human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/imagemin-mozjpeg/node_modules/is-jpg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-3.0.0.tgz", - "integrity": "sha512-Vcd67KWHZblEKEBrtP25qLZ8wN9ICoAhl1pKUqD7SM7hf2qtuRl7loDgP5Zigh2oN/+7uj+KVyC0eRJvgOEFeQ==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imagemin-mozjpeg/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imagemin-mozjpeg/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imagemin-mozjpeg/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imagemin-mozjpeg/node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imagemin-mozjpeg/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imagemin-mozjpeg/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/imagemin-mozjpeg/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/imagemin-mozjpeg/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/imagemin-mozjpeg/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imagemin-mozjpeg/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/imagemin-optipng": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/imagemin-optipng/-/imagemin-optipng-8.0.0.tgz", - "integrity": "sha512-CUGfhfwqlPjAC0rm8Fy+R2DJDBGjzy2SkfyT09L8rasnF9jSoHFqJ1xxSZWK6HVPZBMhGPMxCTL70OgTHlLF5A==", - "optional": true, - "dependencies": { - "exec-buffer": "^3.0.0", - "is-png": "^2.0.0", - "optipng-bin": "^7.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/imagemin-svgo": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-10.0.1.tgz", - "integrity": "sha512-v27/UTGkb3vrm5jvjsMGQ2oxaDfSOTBfJOgmFO2fYepx05bY1IqWCK13aDytVR+l9w9eOlq0NMCLbxJlghYb2g==", - "optional": true, - "dependencies": { - "is-svg": "^4.3.1", - "svgo": "^2.5.0" - }, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sindresorhus/imagemin-svgo?sponsor=1" - } - }, - "node_modules/imagemin-webp": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/imagemin-webp/-/imagemin-webp-8.0.0.tgz", - "integrity": "sha512-yN6kNKir6T/U3AtP3uLHrLn9XYafk2m49EbUqLCQ3GPRRLRs+4pUQxxaHz+lnTDM+LQpkSjGQaFVcSgYqvW3dQ==", - "dependencies": { - "cwebp-bin": "^8.0.0", - "exec-buffer": "^3.2.0", - "is-cwebp-readable": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/import-lazy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz", - "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==", - "optional": true, - "dependencies": { - "repeating": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/into-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", - "integrity": "sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==", - "dependencies": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/irregular-plurals": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", - "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "devOptional": true - }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "devOptional": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-cwebp-readable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-cwebp-readable/-/is-cwebp-readable-3.0.0.tgz", - "integrity": "sha512-bpELc7/Q1/U5MWHn4NdHI44R3jxk0h9ew9ljzabiRl70/UIjL/ZAqRMb52F5+eke/VC8yTiv4Ewryo1fPWidvA==", - "dependencies": { - "file-type": "^10.5.0" - } - }, - "node_modules/is-cwebp-readable/node_modules/file-type": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz", - "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-extglob": { @@ -5073,18 +4176,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "optional": true, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -5103,27 +4194,6 @@ "node": ">=6" } }, - "node_modules/is-gif": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-3.0.0.tgz", - "integrity": "sha512-IqJ/jlbw5WJSNfwQ/lHEDXF8rxhRgF6ythk2oiEvhpG29F704eX9NO6TvPfMiq9DrbwgcEDnETYNcZDPewQoVw==", - "optional": true, - "dependencies": { - "file-type": "^10.4.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-gif/node_modules/file-type": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz", - "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==", - "optional": true, - "engines": { - "node": ">=6" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -5135,45 +4205,11 @@ "node": ">=0.10.0" } }, - "node_modules/is-identifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-identifier/-/is-identifier-1.0.0.tgz", - "integrity": "sha512-DKRLe7IyxafGKlI6VdPnarF/nZNfvlNJmYAzRVsN2TBJk93qnw6XXvslQ8Nv7MngoMByoyI6tMzSI3M1y/pBKw==", - "dependencies": { - "identifier-regex": "^1.0.0", - "super-regex": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-interactive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", - "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-jpg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-2.0.0.tgz", - "integrity": "sha512-ODlO0ruzhkzD3sdynIainVP5eoOFNN85rxA1+cwwnPe4dKyX0r5+hxNO5XpCrxlHcmb9vkOit9mhRD2JVuimHg==", - "optional": true, - "engines": { - "node": ">=6" - } - }, "node_modules/is-natural-number": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", - "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==" + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==", + "license": "MIT" }, "node_modules/is-number": { "version": "7.0.0", @@ -5187,6 +4223,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5195,95 +4232,40 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-png": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-png/-/is-png-2.0.0.tgz", - "integrity": "sha512-4KPGizaVGj2LK7xwJIz8o5B2ubu1D/vcQsgOGFEDlpcvgZHto4gBnyd0ig7Ws+67ixmwKoNmu0hYnpo6AaKb5g==", - "optional": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-retry-allowed": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-svg": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-4.4.0.tgz", - "integrity": "sha512-v+AgVwiK5DsGtT9ng+m4mClp6zDAmwrW8nZi6Gg15qzvBnRWWdfWA1TGaXyCDnWq5g5asofIgMVl3PjKxvk1ug==", - "optional": true, - "dependencies": { - "fast-xml-parser": "^4.1.3" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-unicode-supported": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", - "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", - "optional": true + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", @@ -5402,6 +4384,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "license": "MIT", "dependencies": { "has-to-string-tag-x": "^1.2.0", "is-object": "^1.0.1" @@ -5469,21 +4452,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-changed-files/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/jest-changed-files/node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -5547,55 +4515,6 @@ "node": ">=8" } }, - "node_modules/jest-changed-files/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/jest-circus": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", @@ -6467,24 +5386,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jpegtran-bin": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/jpegtran-bin/-/jpegtran-bin-5.0.2.tgz", - "integrity": "sha512-4FSmgIcr8d5+V6T1+dHbPZjaFH0ogVyP4UVsE+zri7S9YLO4qAT2our4IN3sW3STVgNTbqPermdIgt2XuAJ4EA==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.0", - "logalot": "^2.0.0" - }, - "bin": { - "jpegtran": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -6522,7 +5423,8 @@ "node_modules/json-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", @@ -6544,21 +5446,11 @@ "node": ">=6" } }, - "node_modules/junk": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz", - "integrity": "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/keyv": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "license": "MIT", "dependencies": { "json-buffer": "3.0.0" } @@ -6590,22 +5482,6 @@ "dev": true, "license": "MIT" }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", - "optional": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -6619,152 +5495,11 @@ "node": ">=8" } }, - "node_modules/lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==" - }, - "node_modules/lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" - }, - "node_modules/lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ==" - }, - "node_modules/lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ==", - "dependencies": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, - "node_modules/lodash.pairs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash.pairs/-/lodash.pairs-3.0.1.tgz", - "integrity": "sha512-lgXvpU43ZNQrZ/pK2cR97YzKeAno3e3HhcyvLKsofljeHKrQcZhT1vW7fg4X61c92tM+mjD/DypoLZYuAKNIkQ==", - "dependencies": { - "lodash.keys": "^3.0.0" - } - }, - "node_modules/log-symbols": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", - "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", - "dependencies": { - "chalk": "^5.3.0", - "is-unicode-supported": "^1.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/logalot": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz", - "integrity": "sha512-Ah4CgdSRfeCJagxQhcVNMi9BfGYyEKLa6d7OA6xSbld/Hg3Cf2QiOa1mDpmG7Ve8LOH6DN3mdttzjQAvWTyVkw==", - "optional": true, - "dependencies": { - "figures": "^1.3.5", - "squeak": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==", - "optional": true, - "dependencies": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lpad-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz", - "integrity": "sha512-MMIcFmmR9zlGZtBcFOows6c2COMekHCIFJz3ew/rRpKZ1wR4mXDPzvcVqLarux8M33X4TPSq2Jdw8WJj0q0KbQ==", - "optional": true, - "dependencies": { - "get-stdin": "^4.0.1", - "indent-string": "^2.1.0", - "longest": "^1.0.0", - "meow": "^3.3.0" - }, - "bin": { - "lpad-align": "cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lpad-align/node_modules/get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lpad-align/node_modules/meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==", - "optional": true, - "dependencies": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6773,6 +5508,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "license": "ISC", "dependencies": { "pseudomap": "^1.0.2", "yallist": "^2.1.2" @@ -6782,6 +5518,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "license": "MIT", "dependencies": { "pify": "^3.0.0" }, @@ -6793,6 +5530,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "license": "MIT", "engines": { "node": ">=4" } @@ -6807,32 +5545,6 @@ "tmpl": "1.0.5" } }, - "node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "optional": true - }, - "node_modules/meow": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -6859,9 +5571,10 @@ } }, "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz", + "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6870,6 +5583,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "engines": { "node": ">=6" } @@ -6878,14 +5592,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "license": "MIT", "engines": { "node": ">=4" } @@ -6894,6 +5601,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -6901,12 +5609,6 @@ "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "optional": true - }, "node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", @@ -6915,22 +5617,6 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/mozjpeg": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/mozjpeg/-/mozjpeg-8.0.0.tgz", - "integrity": "sha512-Ca2Yhah9hG0Iutgsn8MOrAl37P9ThnKsJatjXoWdUO+8X8GeG/6ahvHZrTyqvbs6leMww1SauWUCao/L9qBuFQ==", - "hasInstallScript": true, - "dependencies": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.0" - }, - "bin": { - "mozjpeg": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -6947,7 +5633,8 @@ "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "license": "MIT" }, "node_modules/node-int64": { "version": "0.4.0", @@ -6963,18 +5650,6 @@ "dev": true, "license": "MIT" }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "optional": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -6989,6 +5664,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "license": "MIT", "dependencies": { "prepend-http": "^2.0.0", "query-string": "^5.0.1", @@ -7002,6 +5678,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "license": "MIT", "engines": { "node": ">=4" } @@ -7010,6 +5687,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", + "license": "MIT", "dependencies": { "is-plain-obj": "^1.0.0" }, @@ -7021,6 +5699,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "license": "MIT", "dependencies": { "config-chain": "^1.1.11", "pify": "^3.0.0" @@ -7033,37 +5712,43 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "license": "MIT", "dependencies": { - "path-key": "^2.0.0" + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", "engines": { - "node": ">=4" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "optional": true, - "dependencies": { - "boolbase": "^1.0.0" + "node": ">=12" }, "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7080,6 +5765,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "dependencies": { "mimic-fn": "^2.1.0" }, @@ -7090,95 +5776,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/optipng-bin": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-7.0.1.tgz", - "integrity": "sha512-W99mpdW7Nt2PpFiaO+74pkht7KEqkXkeRomdWXfEz3SALZ6hns81y/pm1dsGZ6ItUIfchiNIP6ORDr1zETU1jA==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.0" - }, - "bin": { - "optipng": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ora": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-8.0.1.tgz", - "integrity": "sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==", - "dependencies": { - "chalk": "^5.3.0", - "cli-cursor": "^4.0.0", - "cli-spinners": "^2.9.2", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^2.0.0", - "log-symbols": "^6.0.0", - "stdin-discarder": "^0.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ora/node_modules/emoji-regex": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", - "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" - }, - "node_modules/ora/node_modules/string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/os-filter-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==", + "license": "MIT", "dependencies": { "arch": "^2.1.0" }, @@ -7186,40 +5788,11 @@ "node": ">=4" } }, - "node_modules/ow": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ow/-/ow-2.0.0.tgz", - "integrity": "sha512-ESUigmGrdhUZ2nQSFNkeKSl6ZRPupXzprMs3yF9DYlNVpJ8XAjM/fI9RUZxA7PI1K9HQDCCvBo1jr/GEIo9joQ==", - "dependencies": { - "@sindresorhus/is": "^6.3.0", - "callsites": "^4.1.0", - "dot-prop": "^8.0.2", - "environment": "^1.0.0", - "fast-equals": "^5.0.1", - "is-identifier": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ow/node_modules/@sindresorhus/is": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-6.3.0.tgz", - "integrity": "sha512-bOSPck7aIJjASXIg1qvXSIjXhVBpIEKdl2Wxg4pVqoTRPL8wWExKBrnGIh6CEnhkFQHfc36k7APhO3uXV4g5xg==", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, "node_modules/p-cancelable": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "license": "MIT", "engines": { "node": ">=4" } @@ -7228,6 +5801,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", "integrity": "sha512-hV1zbA7gwqPVFcapfeATaNjQ3J0NuzorHPyG8GPL9g/Y/TplWVBVoCKCXL6Ej2zscrCEv195QNWJXuBH6XZuzA==", + "license": "MIT", "dependencies": { "p-timeout": "^1.1.1" }, @@ -7239,6 +5813,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "license": "MIT", "engines": { "node": ">=4" } @@ -7247,6 +5822,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", "integrity": "sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==", + "license": "MIT", "engines": { "node": ">=4" } @@ -7300,6 +5876,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz", "integrity": "sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg==", + "license": "MIT", "dependencies": { "p-reduce": "^1.0.0" }, @@ -7307,21 +5884,11 @@ "node": ">=4" } }, - "node_modules/p-pipe": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-4.0.0.tgz", - "integrity": "sha512-HkPfFklpZQPUKBFXzKFB6ihLriIHxnmuQdK9WmLDwe4hf2PdhhfWT/FJa+pc3bA1ywvKXtedxIRmd4Y7BTXE4w==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-reduce": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", "integrity": "sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==", + "license": "MIT", "engines": { "node": ">=4" } @@ -7330,6 +5897,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", "integrity": "sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA==", + "license": "MIT", "dependencies": { "p-finally": "^1.0.0" }, @@ -7352,51 +5920,29 @@ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" }, - "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "optional": true, - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", - "optional": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "devOptional": true + "dev": true }, "node_modules/path-scurry": { "version": "2.0.0", @@ -7421,28 +5967,17 @@ "node": "20 || >=22" } }, - "node_modules/peek-readable": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", - "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "license": "MIT" }, "node_modules/picocolors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/picomatch": { @@ -7457,17 +5992,19 @@ } }, "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7476,6 +6013,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "license": "MIT", "dependencies": { "pinkie": "^2.0.0" }, @@ -7530,38 +6068,11 @@ "node": ">=8" } }, - "node_modules/plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", - "dependencies": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/plur": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-5.1.0.tgz", - "integrity": "sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==", - "dependencies": { - "irregular-plurals": "^3.3.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7597,7 +6108,8 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" }, "node_modules/prompts": { "version": "2.4.2", @@ -7616,17 +6128,20 @@ "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "license": "ISC" }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "license": "ISC" }, "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -7653,159 +6168,63 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "license": "MIT", "dependencies": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", - "optional": true, - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", - "optional": true, - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", - "optional": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "dependencies": { - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==", - "optional": true, - "dependencies": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/redent/node_modules/get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/redent/node_modules/strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==", - "optional": true, - "dependencies": { - "get-stdin": "^4.0.1" - }, - "bin": { - "strip-indent": "cli.js" - }, - "engines": { - "node": ">=0.10.0" - } + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" }, - "node_modules/repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", - "optional": true, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", "dependencies": { - "is-finite": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -7814,22 +6233,11 @@ "node": ">=0.10.0" } }, - "node_modules/reserved-identifiers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/reserved-identifiers/-/reserved-identifiers-1.0.0.tgz", - "integrity": "sha512-h0bP2Katmvf3hv4Z3WtDl4+6xt/OglQ2Xa6TnhZ/Rm9/7IH1crXQqMwD4J2ngKBonVv+fB55zfGgNDAmsevLVQ==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "devOptional": true, + "dev": true, "dependencies": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", @@ -7879,25 +6287,11 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "license": "MIT", "dependencies": { "lowercase-keys": "^1.0.0" } }, - "node_modules/restore-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -8008,12 +6402,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/seek-bzip": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "license": "MIT", "dependencies": { "commander": "^2.8.1" }, @@ -8026,6 +6422,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -8034,6 +6431,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", + "license": "MIT", "engines": { "node": ">=6" } @@ -8042,6 +6440,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", "integrity": "sha512-V1fGg9i4CL3qesB6U0L6XAm4xOJiHmt4QAacazumuasc03BvtFGIMCduv01JWQ69Nv+JST9TqhSCiJoxoY031w==", + "license": "MIT", "dependencies": { "semver": "^5.3.0" }, @@ -8050,62 +6449,49 @@ } }, "node_modules/sharp": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.2.tgz", - "integrity": "sha512-WlYOPyyPDiiM07j/UO+E720ju6gtNtHjEGg5vovUk1Lgxyjm2LFO+37Nt/UI3MMh2l6hxTWQWi7qk3cXJTutcQ==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "color": "^4.2.3", - "detect-libc": "^2.0.2", - "semver": "^7.5.4" + "detect-libc": "^2.0.3", + "semver": "^7.6.3" }, "engines": { - "libvips": ">=8.15.1", "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.33.2", - "@img/sharp-darwin-x64": "0.33.2", - "@img/sharp-libvips-darwin-arm64": "1.0.1", - "@img/sharp-libvips-darwin-x64": "1.0.1", - "@img/sharp-libvips-linux-arm": "1.0.1", - "@img/sharp-libvips-linux-arm64": "1.0.1", - "@img/sharp-libvips-linux-s390x": "1.0.1", - "@img/sharp-libvips-linux-x64": "1.0.1", - "@img/sharp-libvips-linuxmusl-arm64": "1.0.1", - "@img/sharp-libvips-linuxmusl-x64": "1.0.1", - "@img/sharp-linux-arm": "0.33.2", - "@img/sharp-linux-arm64": "0.33.2", - "@img/sharp-linux-s390x": "0.33.2", - "@img/sharp-linux-x64": "0.33.2", - "@img/sharp-linuxmusl-arm64": "0.33.2", - "@img/sharp-linuxmusl-x64": "0.33.2", - "@img/sharp-wasm32": "0.33.2", - "@img/sharp-win32-ia32": "0.33.2", - "@img/sharp-win32-x64": "0.33.2" - } - }, - "node_modules/sharp/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" } }, "node_modules/sharp/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -8113,28 +6499,25 @@ "node": ">=10" } }, - "node_modules/sharp/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", "dependencies": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/signal-exit": { @@ -8192,6 +6575,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "license": "MIT", "dependencies": { "is-plain-obj": "^1.0.0" }, @@ -8203,6 +6587,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", + "license": "MIT", "dependencies": { "sort-keys": "^1.0.0" }, @@ -8214,7 +6599,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "devOptional": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -8230,38 +6615,6 @@ "source-map": "^0.6.0" } }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "optional": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "optional": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "optional": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", - "optional": true - }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -8269,61 +6622,6 @@ "dev": true, "license": "BSD-3-Clause" }, - "node_modules/squeak": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz", - "integrity": "sha512-YQL1ulInM+ev8nXX7vfXsCsDh6IqXlrremc1hzi77776BtpWgYJUMto3UM05GSAaGzJgWekszjoKDrVNB5XG+A==", - "optional": true, - "dependencies": { - "chalk": "^1.0.0", - "console-stream": "^0.1.1", - "lpad-align": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/squeak/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/squeak/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "optional": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/squeak/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "optional": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", - "optional": true - }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -8347,33 +6645,30 @@ "node": ">=8" } }, - "node_modules/stdin-discarder": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", - "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", "dependencies": { - "safe-buffer": "~5.2.0" + "safe-buffer": "~5.1.0" } }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -8476,18 +6771,6 @@ "node": ">=8" } }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "optional": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", @@ -8508,22 +6791,11 @@ "node": ">=8" } }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", - "optional": true, - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/strip-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "license": "MIT", "dependencies": { "is-natural-number": "^4.0.1" } @@ -8532,6 +6804,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8540,25 +6813,11 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "devOptional": true, + "dev": true, "engines": { "node": ">=6" } }, - "node_modules/strip-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", - "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", - "dependencies": { - "min-indent": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -8576,6 +6835,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.2" }, @@ -8583,43 +6843,6 @@ "node": ">=0.10.0" } }, - "node_modules/strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "optional": true - }, - "node_modules/strtok3": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", - "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^5.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/super-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz", - "integrity": "sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==", - "dependencies": { - "function-timeout": "^1.0.1", - "time-span": "^5.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8637,7 +6860,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "devOptional": true, + "dev": true, "engines": { "node": ">= 0.4" }, @@ -8645,40 +6868,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "optional": true, - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "optional": true, - "engines": { - "node": ">= 10" - } - }, "node_modules/tar-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "license": "MIT", "dependencies": { "bl": "^1.0.0", "buffer-alloc": "^1.2.0", @@ -8692,37 +6886,11 @@ "node": ">= 0.8.0" } }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/tar-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/tar-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/temp-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", + "license": "MIT", "engines": { "node": ">=4" } @@ -8731,6 +6899,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", "integrity": "sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==", + "license": "MIT", "dependencies": { "temp-dir": "^1.0.0", "uuid": "^3.0.1" @@ -8757,26 +6926,14 @@ "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "node_modules/time-span": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", - "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", - "dependencies": { - "convert-hrtime": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" }, "node_modules/timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8791,7 +6948,8 @@ "node_modules/to-buffer": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "license": "MIT" }, "node_modules/to-fast-properties": { "version": "2.0.0", @@ -8814,35 +6972,11 @@ "node": ">=8.0" } }, - "node_modules/token-types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", - "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/trim-repeated": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.2" }, @@ -8851,15 +6985,17 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD", "optional": true }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -8877,32 +7013,11 @@ "node": ">=4" } }, - "node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/uint8array-extras": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.1.0.tgz", - "integrity": "sha512-CVaBSyOmGoFHu+zOVPbetXEXykOd8KHVBHLlqvmaMWpwcq3rewj18xVNbU5uzf48hclnNQhfNaNany2cMHFK/g==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/unbzip2-stream": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "license": "MIT", "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" @@ -8961,6 +7076,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", + "license": "MIT", "dependencies": { "prepend-http": "^1.0.1" }, @@ -8972,6 +7088,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==", + "license": "MIT", "engines": { "node": ">= 4" } @@ -8979,13 +7096,15 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, "node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "license": "MIT", "bin": { "uuid": "bin/uuid" } @@ -9005,16 +7124,6 @@ "node": ">=10.12.0" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "optional": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -9026,14 +7135,18 @@ } }, "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, "bin": { - "which": "bin/which" + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, "node_modules/wrap-ansi": { @@ -9130,6 +7243,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", "engines": { "node": ">=0.4" } @@ -9145,7 +7259,8 @@ "node_modules/yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "license": "ISC" }, "node_modules/yargs": { "version": "17.7.2", @@ -9176,6 +7291,7 @@ "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -9610,153 +7726,153 @@ "dev": true }, "@emnapi/runtime": { - "version": "0.45.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-0.45.0.tgz", - "integrity": "sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.0.tgz", + "integrity": "sha512-XMBySMuNZs3DM96xcJmLW4EfGnf+uGmFNjzpehMjuX5PLB5j87ar2Zc4e3PVeZ3I5g3tYtAqskB28manlF69Zw==", "optional": true, "requires": { "tslib": "^2.4.0" } }, "@img/sharp-darwin-arm64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.2.tgz", - "integrity": "sha512-itHBs1rPmsmGF9p4qRe++CzCgd+kFYktnsoR1sbIAfsRMrJZau0Tt1AH9KVnufc2/tU02Gf6Ibujx+15qRE03w==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", "optional": true, "requires": { - "@img/sharp-libvips-darwin-arm64": "1.0.1" + "@img/sharp-libvips-darwin-arm64": "1.0.4" } }, "@img/sharp-darwin-x64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.2.tgz", - "integrity": "sha512-/rK/69Rrp9x5kaWBjVN07KixZanRr+W1OiyKdXcbjQD6KbW+obaTeBBtLUAtbBsnlTTmWthw99xqoOS7SsySDg==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", "optional": true, "requires": { - "@img/sharp-libvips-darwin-x64": "1.0.1" + "@img/sharp-libvips-darwin-x64": "1.0.4" } }, "@img/sharp-libvips-darwin-arm64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.1.tgz", - "integrity": "sha512-kQyrSNd6lmBV7O0BUiyu/OEw9yeNGFbQhbxswS1i6rMDwBBSX+e+rPzu3S+MwAiGU3HdLze3PanQ4Xkfemgzcw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", "optional": true }, "@img/sharp-libvips-darwin-x64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.1.tgz", - "integrity": "sha512-eVU/JYLPVjhhrd8Tk6gosl5pVlvsqiFlt50wotCvdkFGf+mDNBJxMh+bvav+Wt3EBnNZWq8Sp2I7XfSjm8siog==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", "optional": true }, "@img/sharp-libvips-linux-arm": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.1.tgz", - "integrity": "sha512-FtdMvR4R99FTsD53IA3LxYGghQ82t3yt0ZQ93WMZ2xV3dqrb0E8zq4VHaTOuLEAuA83oDawHV3fd+BsAPadHIQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", "optional": true }, "@img/sharp-libvips-linux-arm64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.1.tgz", - "integrity": "sha512-bnGG+MJjdX70mAQcSLxgeJco11G+MxTz+ebxlz8Y3dxyeb3Nkl7LgLI0mXupoO+u1wRNx/iRj5yHtzA4sde1yA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", "optional": true }, "@img/sharp-libvips-linux-s390x": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.1.tgz", - "integrity": "sha512-3+rzfAR1YpMOeA2zZNp+aYEzGNWK4zF3+sdMxuCS3ey9HhDbJ66w6hDSHDMoap32DueFwhhs3vwooAB2MaK4XQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", "optional": true }, "@img/sharp-libvips-linux-x64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.1.tgz", - "integrity": "sha512-3NR1mxFsaSgMMzz1bAnnKbSAI+lHXVTqAHgc1bgzjHuXjo4hlscpUxc0vFSAPKI3yuzdzcZOkq7nDPrP2F8Jgw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", "optional": true }, "@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.1.tgz", - "integrity": "sha512-5aBRcjHDG/T6jwC3Edl3lP8nl9U2Yo8+oTl5drd1dh9Z1EBfzUKAJFUDTDisDjUwc7N4AjnPGfCA3jl3hY8uDg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", "optional": true }, "@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.1.tgz", - "integrity": "sha512-dcT7inI9DBFK6ovfeWRe3hG30h51cBAP5JXlZfx6pzc/Mnf9HFCQDLtYf4MCBjxaaTfjCCjkBxcy3XzOAo5txw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", "optional": true }, "@img/sharp-linux-arm": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.2.tgz", - "integrity": "sha512-Fndk/4Zq3vAc4G/qyfXASbS3HBZbKrlnKZLEJzPLrXoJuipFNNwTes71+Ki1hwYW5lch26niRYoZFAtZVf3EGA==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", "optional": true, "requires": { - "@img/sharp-libvips-linux-arm": "1.0.1" + "@img/sharp-libvips-linux-arm": "1.0.5" } }, "@img/sharp-linux-arm64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.2.tgz", - "integrity": "sha512-pz0NNo882vVfqJ0yNInuG9YH71smP4gRSdeL09ukC2YLE6ZyZePAlWKEHgAzJGTiOh8Qkaov6mMIMlEhmLdKew==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", "optional": true, "requires": { - "@img/sharp-libvips-linux-arm64": "1.0.1" + "@img/sharp-libvips-linux-arm64": "1.0.4" } }, "@img/sharp-linux-s390x": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.2.tgz", - "integrity": "sha512-MBoInDXDppMfhSzbMmOQtGfloVAflS2rP1qPcUIiITMi36Mm5YR7r0ASND99razjQUpHTzjrU1flO76hKvP5RA==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", "optional": true, "requires": { - "@img/sharp-libvips-linux-s390x": "1.0.1" + "@img/sharp-libvips-linux-s390x": "1.0.4" } }, "@img/sharp-linux-x64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.2.tgz", - "integrity": "sha512-xUT82H5IbXewKkeF5aiooajoO1tQV4PnKfS/OZtb5DDdxS/FCI/uXTVZ35GQ97RZXsycojz/AJ0asoz6p2/H/A==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", "optional": true, "requires": { - "@img/sharp-libvips-linux-x64": "1.0.1" + "@img/sharp-libvips-linux-x64": "1.0.4" } }, "@img/sharp-linuxmusl-arm64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.2.tgz", - "integrity": "sha512-F+0z8JCu/UnMzg8IYW1TMeiViIWBVg7IWP6nE0p5S5EPQxlLd76c8jYemG21X99UzFwgkRo5yz2DS+zbrnxZeA==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", "optional": true, "requires": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.1" + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" } }, "@img/sharp-linuxmusl-x64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.2.tgz", - "integrity": "sha512-+ZLE3SQmSL+Fn1gmSaM8uFusW5Y3J9VOf+wMGNnTtJUMUxFhv+P4UPaYEYT8tqnyYVaOVGgMN/zsOxn9pSsO2A==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", "optional": true, "requires": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.1" + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" } }, "@img/sharp-wasm32": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.2.tgz", - "integrity": "sha512-fLbTaESVKuQcpm8ffgBD7jLb/CQLcATju/jxtTXR1XCLwbOQt+OL5zPHSDMmp2JZIeq82e18yE0Vv7zh6+6BfQ==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", "optional": true, "requires": { - "@emnapi/runtime": "^0.45.0" + "@emnapi/runtime": "^1.2.0" } }, "@img/sharp-win32-ia32": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.2.tgz", - "integrity": "sha512-okBpql96hIGuZ4lN3+nsAjGeggxKm7hIRu9zyec0lnfB8E7Z6p95BuRZzDDXZOl2e8UmR4RhYt631i7mfmKU8g==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", "optional": true }, "@img/sharp-win32-x64": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.2.tgz", - "integrity": "sha512-E4magOks77DK47FwHUIGH0RYWSgRBfGdK56kIHSVeB9uIS4pPFr4N2kIVsXdQQo4LzOsENKV5KAhRlRL7eMAdg==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", "optional": true }, "@isaacs/cliui": { @@ -10325,17 +8441,6 @@ "@sinonjs/commons": "^3.0.0" } }, - "@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "optional": true - }, "@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -10445,14 +8550,6 @@ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true }, - "ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "requires": { - "ansi-wrap": "^0.1.0" - } - }, "ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -10470,12 +8567,6 @@ } } }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "optional": true - }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -10485,11 +8576,6 @@ "color-convert": "^2.0.1" } }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==" - }, "anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -10529,32 +8615,6 @@ "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==" - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==" - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", - "optional": true - }, - "arrify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", - "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==" - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" - }, "babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -10714,6 +8774,40 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -10754,6 +8848,40 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -10764,6 +8892,76 @@ "requires": { "execa": "^1.0.0", "find-versions": "^3.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } } }, "bin-version-check": { @@ -10877,11 +9075,6 @@ "p-finally": "^1.0.0" } }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - }, "prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", @@ -10904,56 +9097,13 @@ "requires": { "readable-stream": "^2.3.5", "safe-buffer": "^5.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - } } }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "optional": true - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -11049,29 +9199,8 @@ "lowercase-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==" - } - } - }, - "callsites": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-4.1.0.tgz", - "integrity": "sha512-aBMbD1Xxay75ViYezwT40aQONfr+pSXTHwNKvIXhXD6+LY3F1dLIcceoC5OZKBVHbXcysz1hL9D2w0JJIMXpUw==" - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", - "optional": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==", - "optional": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" + "integrity": "sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==" + } } }, "caniuse-lite": { @@ -11096,11 +9225,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==" }, - "change-file-extension": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/change-file-extension/-/change-file-extension-0.1.1.tgz", - "integrity": "sha512-lB0j9teu8JtDPDHRfU8pNH33w4wMu5bOaKoT4PxH+AKugBrIfpiJMTTKIm0TErNeJPkeQEgvH31YpccTwOKPRg==" - }, "char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", @@ -11119,19 +9243,6 @@ "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", "dev": true }, - "cli-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", - "requires": { - "restore-cursor": "^4.0.0" - } - }, - "cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==" - }, "cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -11216,7 +9327,8 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "config-chain": { "version": "1.1.13", @@ -11227,12 +9339,6 @@ "proto-list": "~1.2.1" } }, - "console-stream": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz", - "integrity": "sha512-QC/8l9e6ofi6nqZ5PawlDgzmMw3OxIXtvolBzap/F4UDBJlDaZRSNbL/lb41C29FcbSJncBFlJFj2WJoNyZRfQ==", - "optional": true - }, "content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -11241,11 +9347,6 @@ "safe-buffer": "5.2.1" } }, - "convert-hrtime": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", - "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==" - }, "convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -11285,71 +9386,13 @@ } }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "optional": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "optional": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "optional": true - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "optional": true, - "requires": { - "css-tree": "^1.1.2" - } - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", - "optional": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "cwebp-bin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/cwebp-bin/-/cwebp-bin-8.0.0.tgz", - "integrity": "sha512-j2s6jA84aG20lB0i/FBwqZGc8nHx4VASUK8OTDxy3xoUHoX/+pP6T15/TnWwhMcD0pZ05y5GgRPkurufOC8tnQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "requires": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "debug": { @@ -11360,12 +9403,6 @@ "ms": "2.1.2" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "optional": true - }, "decode-uri-component": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", @@ -11384,6 +9421,13 @@ "make-dir": "^1.0.0", "pify": "^2.3.0", "strip-dirs": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + } } }, "decompress-response": { @@ -11402,13 +9446,6 @@ "file-type": "^5.2.0", "is-stream": "^1.1.0", "tar-stream": "^1.5.2" - }, - "dependencies": { - "file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==" - } } }, "decompress-tarbz2": { @@ -11438,13 +9475,6 @@ "decompress-tar": "^4.1.1", "file-type": "^5.2.0", "is-stream": "^1.1.0" - }, - "dependencies": { - "file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==" - } } }, "decompress-unzip": { @@ -11463,14 +9493,10 @@ "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==" }, - "get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", - "requires": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" - } + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" } } }, @@ -11488,9 +9514,9 @@ "dev": true }, "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==" }, "detect-newline": { "version": "3.1.0", @@ -11504,51 +9530,6 @@ "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "optional": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "optional": true - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "optional": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "optional": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "dot-prop": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-8.0.2.tgz", - "integrity": "sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==", - "requires": { - "type-fest": "^3.8.0" - } - }, "download": { "version": "6.2.5", "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz", @@ -11567,11 +9548,6 @@ "pify": "^3.0.0" }, "dependencies": { - "file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==" - }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", @@ -11585,9 +9561,9 @@ } }, "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==" + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" }, "eastasianwidth": { "version": "0.2.0", @@ -11619,22 +9595,11 @@ "once": "^1.4.0" } }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "optional": true - }, - "environment": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.0.0.tgz", - "integrity": "sha512-u6cXAuofxkVkkXHsBFBsYhRYjwGe5K16gv5j55kB872jJnw0dPm7WzMZ4pTeEIaXD2+G8PsQukvJ2rzqEluT/A==" - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "devOptional": true, + "dev": true, "requires": { "is-arrayish": "^0.2.1" } @@ -11655,82 +9620,70 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, - "exec-buffer": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz", - "integrity": "sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==", + "execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", "requires": { - "execa": "^0.7.0", - "p-finally": "^1.0.0", - "pify": "^3.0.0", - "rimraf": "^2.5.4", - "tempfile": "^2.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" }, "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } + "human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==" }, - "get-stream": { + "is-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==" + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==" }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==" }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "requires": { - "glob": "^7.1.3" + "mimic-fn": "^4.0.0" } + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==" } } }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, "executable": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", "requires": { "pify": "^2.2.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + } } }, "exit": { @@ -11769,20 +9722,6 @@ "sort-keys-length": "^1.0.0" } }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "fast-equals": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", - "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==" - }, "fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -11801,15 +9740,6 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, - "fast-xml-parser": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", - "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", - "optional": true, - "requires": { - "strnum": "^1.0.5" - } - }, "fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -11835,25 +9765,10 @@ "pend": "~1.2.0" } }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", - "optional": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, "file-type": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-19.0.0.tgz", - "integrity": "sha512-s7cxa7/leUWLiXO78DVVfBVse+milos9FitauDLG1pI7lNaJ2+5lzPnr2N24ym+84HVwJL6hVuGfgVE+ALvU8Q==", - "requires": { - "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0", - "token-types": "^5.0.1" - } + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==" }, "filename-reserved-regex": { "version": "2.0.0", @@ -11883,73 +9798,27 @@ "to-regex-range": "^5.0.1" } }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", - "optional": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, "find-versions": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", - "requires": { - "semver-regex": "^2.0.0" - } - }, - "foreground-child": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", - "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, + "requires": { + "semver-regex": "^2.0.0" + } + }, + "foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "dependencies": { "signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -11960,35 +9829,6 @@ "requires": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "fs-constants": { @@ -11999,7 +9839,8 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "fsevents": { "version": "2.3.3", @@ -12012,12 +9853,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "devOptional": true - }, - "function-timeout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.1.tgz", - "integrity": "sha512-6yPMImFFuaMPNaTMTBuolA8EanHJWF5Vju0NHpObRURT105J6x1Mf2a7J4P7Sqk2xDxv24N5L0RatEhTBhNmdA==" + "dev": true }, "gensync": { "version": "1.0.0-beta.2", @@ -12030,11 +9866,6 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, - "get-east-asian-width": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", - "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==" - }, "get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -12049,115 +9880,30 @@ "npm-conf": "^1.1.0" } }, - "get-stdin": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", - "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==" - }, "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", "requires": { - "pump": "^3.0.0" + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" } }, "gifsicle": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-5.3.0.tgz", - "integrity": "sha512-FJTpgdj1Ow/FITB7SVza5HlzXa+/lqEY0tHQazAJbuAdvyJtkH4wIdsR2K414oaTwRXHFLLF+tYbipj+OpYg+Q==", - "optional": true, + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-7.0.1.tgz", + "integrity": "sha512-Mwg4tDc7dUUWYNan/NAf4pKcrCwDSUAXRqBNtqXjtwzMyGJ6LVFz5pwMC/SEj2rsw1VILrhr+kk/2wG3+GMXfg==", "requires": { "bin-build": "^3.0.0", "bin-wrapper": "^4.0.0", - "execa": "^5.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "optional": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "optional": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "optional": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "optional": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "optional": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "optional": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "optional": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "optional": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "optional": true, - "requires": { - "isexe": "^2.0.0" - } - } + "execa": "^6.1.0" } }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -12238,20 +9984,11 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "devOptional": true, + "dev": true, "requires": { "function-bind": "^1.1.1" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -12266,266 +10003,37 @@ "has-to-string-tag-x": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "optional": true - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "devOptional": true - }, - "identifier-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/identifier-regex/-/identifier-regex-1.0.0.tgz", - "integrity": "sha512-Rcy5cjBOM9iTR+Vwy0Llyip9u0cA99T1yiWOhDW/+PDaTQhyski0tMovsipQ/FRNDkudjLWusJ/IMVIlG5WZnQ==", - "requires": { - "reserved-identifiers": "^1.0.0" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" - }, - "imagemin": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-9.0.0.tgz", - "integrity": "sha512-oFlmioXTIrDCNYiKUVPjzUzm8M/7X74WEO6v8NFjn3ZtxjArdVJiRRdbPpq/OG4BdwaHMUz8ej9Fp4AcaDzMnA==", - "requires": { - "change-file-extension": "^0.1.1", - "environment": "^1.0.0", - "file-type": "^19.0.0", - "globby": "^14.0.1", - "junk": "^4.0.1", - "ow": "^2.0.0", - "p-pipe": "^4.0.0", - "slash": "^5.1.0", - "uint8array-extras": "^1.1.0" - } - }, - "imagemin-avif": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/imagemin-avif/-/imagemin-avif-0.1.6.tgz", - "integrity": "sha512-ItteHJ1xhC3QzlabVKmwSLmp2D9OlSaRmeEwmtK3+MPAo0fFsJX0ZzFBgTFAKuZNEqq7TSmgsg8MxxQ1745cuw==", - "requires": { - "plugin-error": "1.0.1", - "sharp": "^0.33.2" - } - }, - "imagemin-cli": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/imagemin-cli/-/imagemin-cli-8.0.0.tgz", - "integrity": "sha512-kTlQ2QFH6acEhJWVC1gKm18t0hXO6uxCzYkCiqEGzuYaCS5v8Ilg+HQxvUdmmigK7dvFTR3VTiT09dx6sHWHmg==", - "requires": { - "arrify": "^3.0.0", - "get-stdin": "^9.0.0", - "imagemin": "^9.0.0", - "imagemin-gifsicle": "^7.0.0", - "imagemin-jpegtran": "^7.0.0", - "imagemin-optipng": "^8.0.0", - "imagemin-svgo": "^10.0.1", - "lodash.pairs": "^3.0.1", - "meow": "^13.2.0", - "ora": "^8.0.1", - "plur": "^5.1.0", - "strip-indent": "^4.0.0", - "uint8array-extras": "^1.1.0" - } - }, - "imagemin-gifsicle": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/imagemin-gifsicle/-/imagemin-gifsicle-7.0.0.tgz", - "integrity": "sha512-LaP38xhxAwS3W8PFh4y5iQ6feoTSF+dTAXFRUEYQWYst6Xd+9L/iPk34QGgK/VO/objmIlmq9TStGfVY2IcHIA==", - "optional": true, - "requires": { - "execa": "^1.0.0", - "gifsicle": "^5.0.0", - "is-gif": "^3.0.0" - } - }, - "imagemin-jpegtran": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/imagemin-jpegtran/-/imagemin-jpegtran-7.0.0.tgz", - "integrity": "sha512-MJoyTCW8YjMJf56NorFE41SR/WkaGA3IYk4JgvMlRwguJEEd3PnP9UxA8Y2UWjquz8d+On3Ds/03ZfiiLS8xTQ==", - "optional": true, - "requires": { - "exec-buffer": "^3.0.0", - "is-jpg": "^2.0.0", - "jpegtran-bin": "^5.0.0" - } - }, - "imagemin-mozjpeg": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/imagemin-mozjpeg/-/imagemin-mozjpeg-10.0.0.tgz", - "integrity": "sha512-DK85QNOjS3/GzWYfNB3CACMZD10sIQgFDv1+WTOnZljgltQTEyATjdyUVyjKu5q4sCESQdwvwq7WEZzJ5fFjlg==", - "requires": { - "execa": "^6.0.0", - "is-jpg": "^3.0.0", - "mozjpeg": "^8.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - }, - "human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==" - }, - "is-jpg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-3.0.0.tgz", - "integrity": "sha512-Vcd67KWHZblEKEBrtP25qLZ8wN9ICoAhl1pKUqD7SM7hf2qtuRl7loDgP5Zigh2oN/+7uj+KVyC0eRJvgOEFeQ==" - }, - "is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==" - }, - "mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==" - }, - "npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "requires": { - "path-key": "^4.0.0" - }, - "dependencies": { - "path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==" - } - } - }, - "onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "requires": { - "mimic-fn": "^4.0.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==" - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "imagemin-optipng": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/imagemin-optipng/-/imagemin-optipng-8.0.0.tgz", - "integrity": "sha512-CUGfhfwqlPjAC0rm8Fy+R2DJDBGjzy2SkfyT09L8rasnF9jSoHFqJ1xxSZWK6HVPZBMhGPMxCTL70OgTHlLF5A==", - "optional": true, - "requires": { - "exec-buffer": "^3.0.0", - "is-png": "^2.0.0", - "optipng-bin": "^7.0.0" - } - }, - "imagemin-svgo": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-10.0.1.tgz", - "integrity": "sha512-v27/UTGkb3vrm5jvjsMGQ2oxaDfSOTBfJOgmFO2fYepx05bY1IqWCK13aDytVR+l9w9eOlq0NMCLbxJlghYb2g==", - "optional": true, + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", "requires": { - "is-svg": "^4.3.1", - "svgo": "^2.5.0" + "has-symbol-support-x": "^1.4.1" } }, - "imagemin-webp": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/imagemin-webp/-/imagemin-webp-8.0.0.tgz", - "integrity": "sha512-yN6kNKir6T/U3AtP3uLHrLn9XYafk2m49EbUqLCQ3GPRRLRs+4pUQxxaHz+lnTDM+LQpkSjGQaFVcSgYqvW3dQ==", - "requires": { - "cwebp-bin": "^8.0.0", - "exec-buffer": "^3.2.0", - "is-cwebp-readable": "^3.0.0" - } + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" }, "import-lazy": { "version": "3.1.0", @@ -12548,19 +10056,11 @@ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==", - "optional": true, - "requires": { - "repeating": "^2.0.0" - } - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -12585,60 +10085,26 @@ "p-is-promise": "^1.1.0" } }, - "irregular-plurals": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", - "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==" - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "devOptional": true + "dev": true }, "is-core-module": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "devOptional": true, + "dev": true, "requires": { "has": "^1.0.3" } }, - "is-cwebp-readable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-cwebp-readable/-/is-cwebp-readable-3.0.0.tgz", - "integrity": "sha512-bpELc7/Q1/U5MWHn4NdHI44R3jxk0h9ew9ljzabiRl70/UIjL/ZAqRMb52F5+eke/VC8yTiv4Ewryo1fPWidvA==", - "requires": { - "file-type": "^10.5.0" - }, - "dependencies": { - "file-type": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz", - "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==" - } - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, - "is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "optional": true - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -12650,23 +10116,6 @@ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true }, - "is-gif": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-3.0.0.tgz", - "integrity": "sha512-IqJ/jlbw5WJSNfwQ/lHEDXF8rxhRgF6ythk2oiEvhpG29F704eX9NO6TvPfMiq9DrbwgcEDnETYNcZDPewQoVw==", - "optional": true, - "requires": { - "file-type": "^10.4.0" - }, - "dependencies": { - "file-type": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz", - "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==", - "optional": true - } - } - }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -12675,26 +10124,6 @@ "is-extglob": "^2.1.1" } }, - "is-identifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-identifier/-/is-identifier-1.0.0.tgz", - "integrity": "sha512-DKRLe7IyxafGKlI6VdPnarF/nZNfvlNJmYAzRVsN2TBJk93qnw6XXvslQ8Nv7MngoMByoyI6tMzSI3M1y/pBKw==", - "requires": { - "identifier-regex": "^1.0.0", - "super-regex": "^1.0.0" - } - }, - "is-interactive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", - "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==" - }, - "is-jpg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-2.0.0.tgz", - "integrity": "sha512-ODlO0ruzhkzD3sdynIainVP5eoOFNN85rxA1+cwwnPe4dKyX0r5+hxNO5XpCrxlHcmb9vkOit9mhRD2JVuimHg==", - "optional": true - }, "is-natural-number": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", @@ -12715,20 +10144,6 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } - }, - "is-png": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-png/-/is-png-2.0.0.tgz", - "integrity": "sha512-4KPGizaVGj2LK7xwJIz8o5B2ubu1D/vcQsgOGFEDlpcvgZHto4gBnyd0ig7Ws+67ixmwKoNmu0hYnpo6AaKb5g==", - "optional": true - }, "is-retry-allowed": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", @@ -12739,26 +10154,6 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" }, - "is-svg": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-4.4.0.tgz", - "integrity": "sha512-v+AgVwiK5DsGtT9ng+m4mClp6zDAmwrW8nZi6Gg15qzvBnRWWdfWA1TGaXyCDnWq5g5asofIgMVl3PjKxvk1ug==", - "optional": true, - "requires": { - "fast-xml-parser": "^4.1.3" - } - }, - "is-unicode-supported": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", - "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==" - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", - "optional": true - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -12767,12 +10162,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "istanbul-lib-coverage": { "version": "3.2.2", @@ -12891,17 +10281,6 @@ "p-limit": "^3.1.0" }, "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -12939,36 +10318,6 @@ "requires": { "path-key": "^3.0.0" } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -13595,17 +10944,6 @@ } } }, - "jpegtran-bin": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/jpegtran-bin/-/jpegtran-bin-5.0.2.tgz", - "integrity": "sha512-4FSmgIcr8d5+V6T1+dHbPZjaFH0ogVyP4UVsE+zri7S9YLO4qAT2our4IN3sW3STVgNTbqPermdIgt2XuAJ4EA==", - "optional": true, - "requires": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.0", - "logalot": "^2.0.0" - } - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -13645,11 +10983,6 @@ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, - "junk": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz", - "integrity": "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==" - }, "keyv": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", @@ -13676,19 +11009,6 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", - "optional": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -13698,124 +11018,11 @@ "p-locate": "^4.1.0" } }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==" - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ==" - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ==", - "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, - "lodash.pairs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash.pairs/-/lodash.pairs-3.0.1.tgz", - "integrity": "sha512-lgXvpU43ZNQrZ/pK2cR97YzKeAno3e3HhcyvLKsofljeHKrQcZhT1vW7fg4X61c92tM+mjD/DypoLZYuAKNIkQ==", - "requires": { - "lodash.keys": "^3.0.0" - } - }, - "log-symbols": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", - "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", - "requires": { - "chalk": "^5.3.0", - "is-unicode-supported": "^1.3.0" - }, - "dependencies": { - "is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==" - } - } - }, - "logalot": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz", - "integrity": "sha512-Ah4CgdSRfeCJagxQhcVNMi9BfGYyEKLa6d7OA6xSbld/Hg3Cf2QiOa1mDpmG7Ve8LOH6DN3mdttzjQAvWTyVkw==", - "optional": true, - "requires": { - "figures": "^1.3.5", - "squeak": "^1.0.0" - } - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==", - "optional": true - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==", - "optional": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, "lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" }, - "lpad-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz", - "integrity": "sha512-MMIcFmmR9zlGZtBcFOows6c2COMekHCIFJz3ew/rRpKZ1wR4mXDPzvcVqLarux8M33X4TPSq2Jdw8WJj0q0KbQ==", - "optional": true, - "requires": { - "get-stdin": "^4.0.1", - "indent-string": "^2.1.0", - "longest": "^1.0.0", - "meow": "^3.3.0" - }, - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", - "optional": true - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==", - "optional": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - } - } - } - }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -13849,23 +11056,6 @@ "tmpl": "1.0.5" } }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "optional": true - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "optional": true - }, - "meow": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==" - }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -13886,53 +11076,35 @@ } }, "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz", + "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==" }, "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true }, "mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" - }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "optional": true - }, "minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" }, - "mozjpeg": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/mozjpeg/-/mozjpeg-8.0.0.tgz", - "integrity": "sha512-Ca2Yhah9hG0Iutgsn8MOrAl37P9ThnKsJatjXoWdUO+8X8GeG/6ahvHZrTyqvbs6leMww1SauWUCao/L9qBuFQ==", - "requires": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.0" - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -13961,18 +11133,6 @@ "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "optional": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -14021,20 +11181,18 @@ } }, "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "requires": { - "path-key": "^2.0.0" - } - }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "optional": true, + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "requires": { - "boolbase": "^1.0.0" + "path-key": "^4.0.0" + }, + "dependencies": { + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==" + } } }, "object-assign": { @@ -14049,69 +11207,14 @@ "requires": { "wrappy": "1" } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optipng-bin": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-7.0.1.tgz", - "integrity": "sha512-W99mpdW7Nt2PpFiaO+74pkht7KEqkXkeRomdWXfEz3SALZ6hns81y/pm1dsGZ6ItUIfchiNIP6ORDr1zETU1jA==", - "optional": true, - "requires": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.0" - } - }, - "ora": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-8.0.1.tgz", - "integrity": "sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==", - "requires": { - "chalk": "^5.3.0", - "cli-cursor": "^4.0.0", - "cli-spinners": "^2.9.2", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^2.0.0", - "log-symbols": "^6.0.0", - "stdin-discarder": "^0.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" - }, - "emoji-regex": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", - "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" - }, - "string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", - "requires": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - } - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "requires": { - "ansi-regex": "^6.0.1" - } - } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" } }, "os-filter-obj": { @@ -14122,26 +11225,6 @@ "arch": "^2.1.0" } }, - "ow": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ow/-/ow-2.0.0.tgz", - "integrity": "sha512-ESUigmGrdhUZ2nQSFNkeKSl6ZRPupXzprMs3yF9DYlNVpJ8XAjM/fI9RUZxA7PI1K9HQDCCvBo1jr/GEIo9joQ==", - "requires": { - "@sindresorhus/is": "^6.3.0", - "callsites": "^4.1.0", - "dot-prop": "^8.0.2", - "environment": "^1.0.0", - "fast-equals": "^5.0.1", - "is-identifier": "^1.0.0" - }, - "dependencies": { - "@sindresorhus/is": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-6.3.0.tgz", - "integrity": "sha512-bOSPck7aIJjASXIg1qvXSIjXhVBpIEKdl2Wxg4pVqoTRPL8wWExKBrnGIh6CEnhkFQHfc36k7APhO3uXV4g5xg==" - } - } - }, "p-cancelable": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", @@ -14202,11 +11285,6 @@ "p-reduce": "^1.0.0" } }, - "p-pipe": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-4.0.0.tgz", - "integrity": "sha512-HkPfFklpZQPUKBFXzKFB6ihLriIHxnmuQdK9WmLDwe4hf2PdhhfWT/FJa+pc3bA1ywvKXtedxIRmd4Y7BTXE4w==" - }, "p-reduce": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", @@ -14231,39 +11309,22 @@ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "optional": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", - "optional": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "devOptional": true + "dev": true }, "path-scurry": { "version": "2.0.0", @@ -14281,11 +11342,6 @@ } } }, - "peek-readable": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", - "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==" - }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -14295,7 +11351,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "devOptional": true + "dev": true }, "picomatch": { "version": "2.3.1", @@ -14303,9 +11359,9 @@ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" }, "pinkie": { "version": "2.0.4", @@ -14353,25 +11409,6 @@ } } }, - "plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", - "requires": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - } - }, - "plur": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-5.1.0.tgz", - "integrity": "sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==", - "requires": { - "irregular-plurals": "^3.3.0" - } - }, "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", @@ -14422,9 +11459,9 @@ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" }, "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -14457,109 +11494,37 @@ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", - "optional": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "dependencies": { - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", - "optional": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", - "optional": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "requires": { - "readable-stream": "^3.6.0" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==", - "optional": true, + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" }, "dependencies": { - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", - "optional": true - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==", - "optional": true, - "requires": { - "get-stdin": "^4.0.1" - } + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", - "optional": true, - "requires": { - "is-finite": "^1.0.0" - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" }, - "reserved-identifiers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/reserved-identifiers/-/reserved-identifiers-1.0.0.tgz", - "integrity": "sha512-h0bP2Katmvf3hv4Z3WtDl4+6xt/OglQ2Xa6TnhZ/Rm9/7IH1crXQqMwD4J2ngKBonVv+fB55zfGgNDAmsevLVQ==" - }, "resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "devOptional": true, + "dev": true, "requires": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", @@ -14595,15 +11560,6 @@ "lowercase-keys": "^1.0.0" } }, - "restore-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -14689,69 +11645,53 @@ } }, "sharp": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.2.tgz", - "integrity": "sha512-WlYOPyyPDiiM07j/UO+E720ju6gtNtHjEGg5vovUk1Lgxyjm2LFO+37Nt/UI3MMh2l6hxTWQWi7qk3cXJTutcQ==", - "requires": { - "@img/sharp-darwin-arm64": "0.33.2", - "@img/sharp-darwin-x64": "0.33.2", - "@img/sharp-libvips-darwin-arm64": "1.0.1", - "@img/sharp-libvips-darwin-x64": "1.0.1", - "@img/sharp-libvips-linux-arm": "1.0.1", - "@img/sharp-libvips-linux-arm64": "1.0.1", - "@img/sharp-libvips-linux-s390x": "1.0.1", - "@img/sharp-libvips-linux-x64": "1.0.1", - "@img/sharp-libvips-linuxmusl-arm64": "1.0.1", - "@img/sharp-libvips-linuxmusl-x64": "1.0.1", - "@img/sharp-linux-arm": "0.33.2", - "@img/sharp-linux-arm64": "0.33.2", - "@img/sharp-linux-s390x": "0.33.2", - "@img/sharp-linux-x64": "0.33.2", - "@img/sharp-linuxmusl-arm64": "0.33.2", - "@img/sharp-linuxmusl-x64": "0.33.2", - "@img/sharp-wasm32": "0.33.2", - "@img/sharp-win32-ia32": "0.33.2", - "@img/sharp-win32-x64": "0.33.2", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "requires": { + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5", "color": "^4.2.3", - "detect-libc": "^2.0.2", - "semver": "^7.5.4" + "detect-libc": "^2.0.3", + "semver": "^7.6.3" }, "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" } } }, "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "signal-exit": { "version": "3.0.7", @@ -14814,7 +11754,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "devOptional": true + "dev": true }, "source-map-support": { "version": "0.5.13", @@ -14826,88 +11766,12 @@ "source-map": "^0.6.0" } }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "optional": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "optional": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "optional": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", - "optional": true - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "squeak": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz", - "integrity": "sha512-YQL1ulInM+ev8nXX7vfXsCsDh6IqXlrremc1hzi77776BtpWgYJUMto3UM05GSAaGzJgWekszjoKDrVNB5XG+A==", - "optional": true, - "requires": { - "chalk": "^1.0.0", - "console-stream": "^0.1.1", - "lpad-align": "^1.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "optional": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "optional": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "optional": true - } - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "optional": true - }, "stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -14925,22 +11789,24 @@ } } }, - "stdin-discarder": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", - "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==" - }, "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==" }, "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.2.0" + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } } }, "string-length": { @@ -15020,15 +11886,6 @@ } } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, "strip-ansi-cjs": { "version": "npm:strip-ansi@6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -15044,15 +11901,6 @@ } } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", - "optional": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, "strip-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", @@ -15070,15 +11918,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "devOptional": true - }, - "strip-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", - "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", - "requires": { - "min-indent": "^1.0.1" - } + "dev": true }, "strip-json-comments": { "version": "3.1.1", @@ -15094,30 +11934,6 @@ "escape-string-regexp": "^1.0.2" } }, - "strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "optional": true - }, - "strtok3": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", - "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", - "requires": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^5.0.0" - } - }, - "super-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz", - "integrity": "sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==", - "requires": { - "function-timeout": "^1.0.1", - "time-span": "^5.1.0" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -15131,30 +11947,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "devOptional": true - }, - "svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "optional": true, - "requires": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "optional": true - } - } + "dev": true }, "tar-stream": { "version": "1.6.2", @@ -15168,35 +11961,6 @@ "readable-stream": "^2.3.0", "to-buffer": "^1.1.1", "xtend": "^4.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "temp-dir": { @@ -15229,14 +11993,6 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, - "time-span": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", - "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", - "requires": { - "convert-hrtime": "^5.0.0" - } - }, "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", @@ -15267,21 +12023,6 @@ "is-number": "^7.0.0" } }, - "token-types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", - "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", - "requires": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==", - "optional": true - }, "trim-repeated": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", @@ -15291,9 +12032,9 @@ } }, "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", "optional": true }, "tunnel-agent": { @@ -15310,16 +12051,6 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, - "type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==" - }, - "uint8array-extras": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.1.0.tgz", - "integrity": "sha512-CVaBSyOmGoFHu+zOVPbetXEXykOd8KHVBHLlqvmaMWpwcq3rewj18xVNbU5uzf48hclnNQhfNaNany2cMHFK/g==" - }, "unbzip2-stream": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", @@ -15384,16 +12115,6 @@ "convert-source-map": "^2.0.0" } }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "optional": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -15404,9 +12125,9 @@ } }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "requires": { "isexe": "^2.0.0" } diff --git a/package.json b/package.json index 1eb0708..315f1d5 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@j9t/imagemin-guard", "description": "Ensure losslessly compressed JPG, PNG, GIF, WebP, and AVIF images (suitable for manual and automatic compression)", "author": "Jens Oliver Meiert", - "version": "4.0.1", + "version": "4.0.0", "type": "module", "license": "Apache-2.0", "repository": { @@ -34,12 +34,10 @@ "dependencies": { "chalk": "^5.3.0", "filesize": "^10.1.6", + "gifsicle": "^7.0.1", "globby": "^14.0.2", - "imagemin-avif": "^0.1.6", - "imagemin-cli": "^8.0.0", - "imagemin-mozjpeg": "^10.0.0", - "imagemin-webp": "^8.0.0", "rimraf": "^6.0.1", + "sharp": "^0.33.5", "simple-git": "^3.27.0", "yargs": "^17.7.2" }, diff --git a/src/utils.js b/src/utils.js index 0a0add8..e9db21e 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,16 +1,13 @@ // This file, which had been forked from imagemin-merlin, was modified for imagemin-guard: https://github.com/sumcumo/imagemin-merlin/compare/master...j9t:master -import { filesize, partial } from 'filesize' +import sharp from 'sharp' import fs from 'fs' import path from 'path' -import imagemin from 'imagemin' -import imageminMozjpeg from 'imagemin-mozjpeg' -import imageminOptipng from 'imagemin-optipng' -import imageminGifsicle from 'imagemin-gifsicle' -import imageminWebp from 'imagemin-webp' -import imageminAvif from 'imagemin-avif' +import os from 'os' import chalk from 'chalk' import { options } from './plugins.js' +import gifsicle from 'gifsicle' +import { execFileSync } from 'child_process' const compression = async (filename, dry) => { const filenameBackup = `${filename}.bak` @@ -19,73 +16,82 @@ const compression = async (filename, dry) => { const fileSizeBefore = size(filename) if (fileSizeBefore === 0) { - console.info(chalk.blue(`Skipping ${filename}, it has ${filesize(fileSizeBefore)}`)) + console.info(chalk.blue(`Skipping ${filename}, it has ${sizeReadable(fileSizeBefore)}`)) return } - let output = path.parse(filename).dir || './' - if (dry) { - output = `/tmp/imagemin-guard/${path.parse(filename).base}` - } - - let option - if (filename.endsWith('avif')) { - option = imageminAvif(options.avif) - } else if (filename.endsWith('gif')) { - option = imageminGifsicle(options.gifsicle) - } else if (filename.endsWith('jpg') || filename.endsWith('jpeg')) { - option = imageminMozjpeg(options.mozjpeg) - } else if (filename.endsWith('png')) { - option = imageminOptipng(options.optipng) - } else if (filename.endsWith('webp')) { - option = imageminWebp(options.webp) - } else { - /* Hacky way of averting disaster */ - option = imageminGifsicle() - } - - await imagemin([filename], { - destination: output, - plugins: [option], - }) - const fileSizeAfter = size(`${output}/${path.parse(filename).base}`) - - let color = 'white' - let status = 'Skipped' - let details = 'already compressed' - - if (fileSizeAfter < fileSizeBefore) { - color = 'green' - status = 'Compressed' - details = `${sizeReadable(fileSizeBefore)} → ${sizeReadable(fileSizeAfter)}` - } else if (fileSizeAfter > fileSizeBefore) { - color = 'blue' - status = 'Skipped' - details = 'even more compressed' - - // Restore the backup’ed file + const tempFilePath = path.join(os.tmpdir(), path.basename(filename)) + + try { + const ext = path.extname(filename).slice(1) + const outputFormat = ext === 'jpg' ? 'jpeg' : ext // sharp uses “jpeg” instead of “jpg” + + if (outputFormat === 'png') { + await sharp(filename) + .png({ compressionLevel: 9, quality: 100 }) + .toFile(tempFilePath) + } else if (outputFormat === 'webp') { + await sharp(filename) + .webp({ lossless: true }) + .toFile(tempFilePath) + } else if (outputFormat === 'avif') { + await sharp(filename) + .avif({ lossless: true }) + .toFile(tempFilePath) + } else if (outputFormat === 'gif') { + execFileSync(gifsicle, ['-O3', filename, '-o', tempFilePath]) + } else { + await sharp(filename) + .toFormat(outputFormat, { quality: options[outputFormat]?.quality || 100 }) + .toFile(tempFilePath) + } + + fs.copyFileSync(tempFilePath, filename) + fs.unlinkSync(tempFilePath) + + const fileSizeAfter = size(filename) + + let color = 'white' + let status = 'Skipped' + let details = 'already compressed' + + if (fileSizeAfter < fileSizeBefore) { + color = 'green' + status = 'Compressed' + details = `${sizeReadable(fileSizeBefore)} → ${sizeReadable(fileSizeAfter)}` + } else if (fileSizeAfter > fileSizeBefore) { + color = 'blue' + status = 'Skipped' + details = 'even more compressed' + + // Restore the backup’ed file + fs.renameSync(filenameBackup, filename) + } + + if (fs.existsSync(filenameBackup)) { + fs.unlinkSync(filenameBackup) + } + + console.info( + chalk[color](`${status} ${filename} (${details})`) + ) + + if (fileSizeAfter === 0) { + console.error(chalk.bold.red(`Something went wrong, new file size is ${sizeReadable(fileSizeAfter)}`)) + } + + return fileSizeAfter < fileSizeBefore ? fileSizeBefore - fileSizeAfter : 0 + } catch (err) { + console.error(`Error compressing ${filename}:`, err) fs.renameSync(filenameBackup, filename) + return 0 } - - if (fs.existsSync(filenameBackup)) { - fs.unlinkSync(filenameBackup) - } - - console.info( - chalk[color](`${status} ${filename} (${details})`) - ) - - if (fileSizeAfter === 0) { - console.error(chalk.bold.red(`Something went wrong, new file size is ${filesize(fileSizeAfter)}`)) - } - - return fileSizeAfter < fileSizeBefore ? fileSizeBefore - fileSizeAfter : 0 } const size = (file) => { return fs.statSync(file)['size'] } -const sizeReadable = partial(size, { round: 5 }) +const sizeReadable = (size) => `${(size / 1024).toFixed(2)} KB` export const utils = { compression, sizeReadable } \ No newline at end of file From a39da99df3e3181aba232e0822050176f7e47ac6 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Sun, 6 Oct 2024 17:41:17 +0200 Subject: [PATCH 07/39] refactor: reorder imports for consistency Reorganize import statements in index.js and utils.js for better readability and maintainability. The adjustment places the imports in a more logical order, supporting cleaner code standards. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- src/index.js | 4 ++-- src/utils.js | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/index.js b/src/index.js index a8c1a39..abbac6c 100644 --- a/src/index.js +++ b/src/index.js @@ -1,9 +1,9 @@ // This file, which had been forked from imagemin-merlin, was modified for imagemin-guard: https://github.com/sumcumo/imagemin-merlin/compare/master...j9t:master -import { rimraf } from 'rimraf' +import { utils } from './utils.js' import { globbySync } from 'globby' +import { rimraf } from 'rimraf' import simpleGit from 'simple-git' -import { utils } from './utils.js' import _yargs from 'yargs' import { hideBin } from 'yargs/helpers' diff --git a/src/utils.js b/src/utils.js index e9db21e..3f967e5 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,13 +1,13 @@ // This file, which had been forked from imagemin-merlin, was modified for imagemin-guard: https://github.com/sumcumo/imagemin-merlin/compare/master...j9t:master -import sharp from 'sharp' -import fs from 'fs' -import path from 'path' -import os from 'os' -import chalk from 'chalk' import { options } from './plugins.js' -import gifsicle from 'gifsicle' +import chalk from 'chalk' import { execFileSync } from 'child_process' +import fs from 'fs' +import gifsicle from 'gifsicle' +import os from 'os' +import path from 'path' +import sharp from 'sharp' const compression = async (filename, dry) => { const filenameBackup = `${filename}.bak` From 424055ed9044d4b971134647c9d864a4b283d220 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Sun, 6 Oct 2024 17:43:11 +0200 Subject: [PATCH 08/39] feat: optimize output.png for better performance Reduced the file size of output.png to improve load times. This change is part of our ongoing effort to enhance performance metrics across the application. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- media/output.png | Bin 83614 -> 56052 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/media/output.png b/media/output.png index c6f819a5ea375de76bcfa508fe2805cd3a2265c5..e041560af71b8240417c7bf6b67db6d20bc3e0cf 100644 GIT binary patch literal 56052 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 KQOSytYG769_jb8$~4%@U! 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 From 3f0fc4c96eea415fca76116d173fa3c0268345d6 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Sun, 6 Oct 2024 20:18:16 +0200 Subject: [PATCH 09/39] feat: remove plugin options and enforce lossless output Removed the `plugins.js` file and eliminated individual plugin options. Modified the `utils.js` to enforce lossless output with default quality. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- src/plugins.js | 26 -------------------------- src/utils.js | 3 +-- 2 files changed, 1 insertion(+), 28 deletions(-) delete mode 100644 src/plugins.js diff --git a/src/plugins.js b/src/plugins.js deleted file mode 100644 index 3f1b53f..0000000 --- a/src/plugins.js +++ /dev/null @@ -1,26 +0,0 @@ -// This file, which had been forked from imagemin-merlin, was modified for imagemin-guard: https://github.com/sumcumo/imagemin-merlin/compare/master...j9t:master - -const mozjpeg = { - // https://www.npmjs.com/package/imagemin-mozjpeg - quality: 96 -} - -const optipng = { - // https://www.npmjs.com/package/imagemin-optipng -} - -const gifsicle = { - // https://www.npmjs.com/package/imagemin-gifsicle -} - -const webp = { - // https://www.npmjs.com/package/imagemin-webp - lossless: true -} - -const avif = { - // https://www.npmjs.com/package/imagemin-avif - lossless: true -} - -export const options = { mozjpeg, optipng, gifsicle, webp, avif } \ No newline at end of file diff --git a/src/utils.js b/src/utils.js index 3f967e5..99e9270 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,6 +1,5 @@ // This file, which had been forked from imagemin-merlin, was modified for imagemin-guard: https://github.com/sumcumo/imagemin-merlin/compare/master...j9t:master -import { options } from './plugins.js' import chalk from 'chalk' import { execFileSync } from 'child_process' import fs from 'fs' @@ -42,7 +41,7 @@ const compression = async (filename, dry) => { execFileSync(gifsicle, ['-O3', filename, '-o', tempFilePath]) } else { await sharp(filename) - .toFormat(outputFormat, { quality: options[outputFormat]?.quality || 100 }) + .toFormat(outputFormat, { lossless: true, quality: 100 }) .toFile(tempFilePath) } From ccf6eab79cd00153ae93f230dfe559b7bc064fb5 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Sun, 6 Oct 2024 20:27:34 +0200 Subject: [PATCH 10/39] fix(utils): handle temp file cleanup in all scenarios Ensure temporary files are properly cleaned up in both standard and dry run modes. Adjust file size calculations and error handling to improve the robustness of the compression process. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- src/utils.js | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/utils.js b/src/utils.js index 99e9270..f5cdb6a 100644 --- a/src/utils.js +++ b/src/utils.js @@ -16,7 +16,7 @@ const compression = async (filename, dry) => { if (fileSizeBefore === 0) { console.info(chalk.blue(`Skipping ${filename}, it has ${sizeReadable(fileSizeBefore)}`)) - return + return 0 } const tempFilePath = path.join(os.tmpdir(), path.basename(filename)) @@ -45,10 +45,7 @@ const compression = async (filename, dry) => { .toFile(tempFilePath) } - fs.copyFileSync(tempFilePath, filename) - fs.unlinkSync(tempFilePath) - - const fileSizeAfter = size(filename) + const fileSizeAfter = size(tempFilePath) let color = 'white' let status = 'Skipped' @@ -62,15 +59,17 @@ const compression = async (filename, dry) => { color = 'blue' status = 'Skipped' details = 'even more compressed' - - // Restore the backup’ed file - fs.renameSync(filenameBackup, filename) } - if (fs.existsSync(filenameBackup)) { - fs.unlinkSync(filenameBackup) + if (dry) { + console.info(chalk.gray(`Dry run: ${status} ${filename} (${details})`)) + fs.unlinkSync(tempFilePath) + return 0 } + fs.copyFileSync(tempFilePath, filename) + fs.unlinkSync(tempFilePath) + console.info( chalk[color](`${status} ${filename} (${details})`) ) @@ -84,6 +83,10 @@ const compression = async (filename, dry) => { console.error(`Error compressing ${filename}:`, err) fs.renameSync(filenameBackup, filename) return 0 + } finally { + if (fs.existsSync(filenameBackup)) { + fs.unlinkSync(filenameBackup) + } } } From d1fecf0823090cad75b8c0e2d3ecd190f7b6acb9 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Sun, 6 Oct 2024 20:31:46 +0200 Subject: [PATCH 11/39] test: add dry run test for imagemin-guard Introduce a test case to ensure no files are modified during a dry run. This enhances the test coverage and ensures the functionality works as intended when running with the --dry flag. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- bin/imagemin-guard.test.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/bin/imagemin-guard.test.js b/bin/imagemin-guard.test.js index 6dae936..0cc85a1 100644 --- a/bin/imagemin-guard.test.js +++ b/bin/imagemin-guard.test.js @@ -55,7 +55,7 @@ function areImagesAlreadyCompressed(dir) { describe('Imagemin Guard', () => { beforeAll(() => { - // Backup original images + // Back up original images copyFiles(testFolder, testFolderGit) }) @@ -106,4 +106,22 @@ describe('Imagemin Guard', () => { } expect(allCompressed).toBe(true) }) + + test('Do not modify files in dry run', () => { + const originalStats = fs.readdirSync(testFolderGit).map(file => { + const filePath = path.join(testFolderGit, file) + return { file, stats: fs.statSync(filePath) } + }) + execSync(`node ${imageminGuardScript} --dry`) + const newStats = fs.readdirSync(testFolderGit).map(file => { + const filePath = path.join(testFolderGit, file) + return { file, stats: fs.statSync(filePath) } + }) + originalStats.forEach((original, index) => { + const newFile = newStats[index] + expect(newFile.file).toStrictEqual(original.file) + expect(newFile.stats.size).toStrictEqual(original.stats.size) + expect(newFile.stats.mtime).toStrictEqual(original.stats.mtime) + }) + }) }) \ No newline at end of file From 080df4fb4e1f615c35a2864823cd6688ac1f852d Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Sun, 6 Oct 2024 20:50:34 +0200 Subject: [PATCH 12/39] fix: remove unnecessary comment in imagemin-guard test Removed a stray comment that was not contributing to the functionality of the test in imagemin-guard.test.js. This helps maintain clean and readable code. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- bin/imagemin-guard.test.js | 1 - 1 file changed, 1 deletion(-) diff --git a/bin/imagemin-guard.test.js b/bin/imagemin-guard.test.js index 0cc85a1..93df6a8 100644 --- a/bin/imagemin-guard.test.js +++ b/bin/imagemin-guard.test.js @@ -74,7 +74,6 @@ describe('Imagemin Guard', () => { // Verify images are compressed const { allCompressed, uncompressedFiles } = areImagesCompressed(testFolderGit) if (uncompressedFiles.length > 0) { - // @@ Ensure all compressed files are listed console.log('The following files were not compressed:', uncompressedFiles.join(', ')) } expect(allCompressed).toBe(true) From 480a512b17452c27507c906afd38bedc42c1e7b9 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Sun, 6 Oct 2024 21:06:08 +0200 Subject: [PATCH 13/39] chore: update test file comment for better clarity Updated a comment in the imagemin-guard test file to specify consolidation timing based on better Jest ESM support. This makes the intention behind the comment more explicit and actionable. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- bin/imagemin-guard.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/imagemin-guard.test.js b/bin/imagemin-guard.test.js index 93df6a8..4d94aa8 100644 --- a/bin/imagemin-guard.test.js +++ b/bin/imagemin-guard.test.js @@ -6,7 +6,7 @@ const testFolder = path.join(__dirname, '../media/test') const testFolderGit = path.join(__dirname, '../media/test-git') const imageminGuardScript = path.join(__dirname, '../bin/imagemin-guard.js') // Crutch to avoid files like .DS_Store to sneak in -// @@ Consolidate with package, to keep image definitions DRY +// @@ Consolidate with package, to keep image definitions DRY (once there’s better Jest ESM support?) const allowedFileTypes = ['avif', 'gif', 'jpg', 'jpeg', 'png', 'webp'] // Function to copy files From d07301a1ebfcb736f58bd9467e72291ec1aea904 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Sun, 6 Oct 2024 21:06:14 +0200 Subject: [PATCH 14/39] feat: update README for Imagemin Guard Revise descriptions and tool references in the README. Changed tool from imagemin to sharp and streamlined future plans section. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- README.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 7a9d891..239f92d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Imagemin Guard -(This project has been based on [sum.cumo’s imagemin-merlin](https://github.com/sumcumo/imagemin-merlin). [Changes are documented](https://github.com/sumcumo/imagemin-merlin/compare/master...j9t:master), and include this README. Imagemin Guard supports two additional file formats—WebP and AVIF—, comes with improved code and documentation, and is being maintained—including automatically updated dependencies.) +(This project was based on [sum.cumo’s imagemin-merlin](https://github.com/sumcumo/imagemin-merlin). [Changes are documented](https://github.com/sumcumo/imagemin-merlin/compare/master...j9t:master), and include this README. Imagemin Guard supports two additional file formats—WebP and AVIF—, comes with improved code and documentation, and is being maintained—including automatically updated dependencies.) Imagemin Guard takes care of lossless compression of your images, to help you avoid bloat in your repositories. It’s an extension of [imagemin](https://www.npmjs.com/package/imagemin) and a fork of [imagemin-merlin (Merlin)](https://github.com/sumcumo/imagemin-merlin) that makes it convenient and safe to automatically compress JPG, PNG, GIF, WebP, and AVIF images. @@ -63,7 +63,7 @@ Roughly like this (the screenshot shows an early version of Merlin): ## How Does Imagemin Guard Work? -Imagemin Guard is a Node script that puts a wrapper around [imagemin-cli](https://www.npmjs.com/package/imagemin-cli) and the packages [imagemin-mozjpeg](https://www.npmjs.com/package/imagemin-mozjpeg), [imagemin-optipng](https://www.npmjs.com/package/imagemin-optipng), [imagemin-gifsicle](https://www.npmjs.com/package/imagemin-gifsicle), [imagemin-webp](https://www.npmjs.com/package/imagemin-webp), and [imagemin-avif](https://www.npmjs.com/package/imagemin-avif). +Imagemin Guard is a Node script that puts a wrapper around [sharp](https://www.npmjs.com/package/sharp) and [gifsicle](https://www.npmjs.com/package/gifsicle). Automated compression works by monitoring whether a given change list includes any JPGs, PNGs, GIFs, WebPs, or AVIFs. It’s initiated by a Git hook. Only those images are compressed where there is an improvement. The compressed images can then be committed to the underlying repository. @@ -85,11 +85,9 @@ The point is: Micro-optimization still needs to be taken care of through other m ## What’s Next? -Following [Merlin](https://github.com/sumcumo/imagemin-merlin), which Imagemin Guard is based on, new features may include the option to configure the underlying imagemin plugins (somewhat prepared but not completed yet), or supporting projects in which the project’s .git folder is not at the same level as its package.json (at the moment, automatic mode doesn’t work in these cases). +There are a few ideas, like supporting projects in which the project’s .git folder is not at the same level as its package.json (at the moment, automatic mode doesn’t work in these cases). -Also, as some imagemin packages are not maintained at the moment, it may be useful or necessary to change to a different compression solution. The situation is being monitored. Ideally, any change here will only happen under the hood. - -Thoughts or suggestions? Please [file an issue](https://github.com/j9t/imagemin-guard/issues/new) or send a pull request (some code still needs care). Thank you! +Feedback is appreciated: Please [file an issue](https://github.com/j9t/imagemin-guard/issues/new) or send a pull request (some code still needs care). Thank you! ## License From 000d03b131ba5d78a7e071456e7a9e0bae9e6587 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Sun, 6 Oct 2024 21:42:09 +0200 Subject: [PATCH 15/39] feat: update README clarifications and removal of outdated info Clarified README to reflect that Imagemin Guard is no longer based on other imagemin packages and removed mention of automatically updated dependencies. Also updated descriptions to improve clarity and reflect the current state of the project. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 239f92d..c51e266 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # Imagemin Guard -(This project was based on [sum.cumo’s imagemin-merlin](https://github.com/sumcumo/imagemin-merlin). [Changes are documented](https://github.com/sumcumo/imagemin-merlin/compare/master...j9t:master), and include this README. Imagemin Guard supports two additional file formats—WebP and AVIF—, comes with improved code and documentation, and is being maintained—including automatically updated dependencies.) +(This project was based on [sum.cumo’s imagemin-merlin](https://github.com/sumcumo/imagemin-merlin). [Changes are documented](https://github.com/sumcumo/imagemin-merlin/compare/master...j9t:master), and include this README. Imagemin Guard supports two additional file formats—WebP and AVIF—, comes with improved code and documentation, and is being maintained.) -Imagemin Guard takes care of lossless compression of your images, to help you avoid bloat in your repositories. It’s an extension of [imagemin](https://www.npmjs.com/package/imagemin) and a fork of [imagemin-merlin (Merlin)](https://github.com/sumcumo/imagemin-merlin) that makes it convenient and safe to automatically compress JPG, PNG, GIF, WebP, and AVIF images. +Imagemin Guard—which had been, but isn’t anymore, based on other imagemin packages—takes care of lossless compression of your images, to help you avoid bloat in your repositories. It makes it convenient and safe to automatically compress JPG, PNG, GIF, WebP, and AVIF images. It’s convenient because setup is simple. Install, run, add hook, done. @@ -63,7 +63,7 @@ Roughly like this (the screenshot shows an early version of Merlin): ## How Does Imagemin Guard Work? -Imagemin Guard is a Node script that puts a wrapper around [sharp](https://www.npmjs.com/package/sharp) and [gifsicle](https://www.npmjs.com/package/gifsicle). +Imagemin Guard is a Node script currently using [sharp](https://www.npmjs.com/package/sharp) and [gifsicle](https://www.npmjs.com/package/gifsicle) under the hood. Automated compression works by monitoring whether a given change list includes any JPGs, PNGs, GIFs, WebPs, or AVIFs. It’s initiated by a Git hook. Only those images are compressed where there is an improvement. The compressed images can then be committed to the underlying repository. From 9cc0d1a8d9ada05b4ad5b8a6db7f645bd5e379b9 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Mon, 7 Oct 2024 16:35:07 +0200 Subject: [PATCH 16/39] fix: improve file handling and error management Ensure file extension is checked before processing and handle missing backup file gracefully. Additionally, make gifsicle command execution asynchronous and refine README.md wording. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- README.md | 4 ++-- src/utils.js | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c51e266..8bd4e25 100644 --- a/README.md +++ b/README.md @@ -85,9 +85,9 @@ The point is: Micro-optimization still needs to be taken care of through other m ## What’s Next? -There are a few ideas, like supporting projects in which the project’s .git folder is not at the same level as its package.json (at the moment, automatic mode doesn’t work in these cases). +There are a few ideas, like supporting projects in which the project’s .git folder is not at the same level as its package.json (currently, automatic mode doesn’t work in these cases). -Feedback is appreciated: Please [file an issue](https://github.com/j9t/imagemin-guard/issues/new) or send a pull request (some code still needs care). Thank you! +Feedback is appreciated: Please [file an issue](https://github.com/j9t/imagemin-guard/issues/new) or send a pull request. Thank you! ## License diff --git a/src/utils.js b/src/utils.js index f5cdb6a..63fe466 100644 --- a/src/utils.js +++ b/src/utils.js @@ -23,6 +23,9 @@ const compression = async (filename, dry) => { try { const ext = path.extname(filename).slice(1) + if (!ext) { + throw new Error(`Cannot determine file type for ${filename}; no extension found.`) + } const outputFormat = ext === 'jpg' ? 'jpeg' : ext // sharp uses “jpeg” instead of “jpg” if (outputFormat === 'png') { @@ -38,7 +41,7 @@ const compression = async (filename, dry) => { .avif({ lossless: true }) .toFile(tempFilePath) } else if (outputFormat === 'gif') { - execFileSync(gifsicle, ['-O3', filename, '-o', tempFilePath]) + await execFileSync(gifsicle, ['-O3', filename, '-o', tempFilePath]) } else { await sharp(filename) .toFormat(outputFormat, { lossless: true, quality: 100 }) @@ -84,8 +87,10 @@ const compression = async (filename, dry) => { fs.renameSync(filenameBackup, filename) return 0 } finally { - if (fs.existsSync(filenameBackup)) { + try { fs.unlinkSync(filenameBackup) + } catch (error) { + // If the file doesn’t exist, no action is needed } } } From e112a62641c8275089ab5b1bbcc24cc784ca09dd Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Mon, 7 Oct 2024 17:03:57 +0200 Subject: [PATCH 17/39] feat: remove unused code and improve README Removed deprecated dry-run code from the index.js. Updated the README to clarify compression methods and terminology. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- README.md | 16 ++++++++-------- src/index.js | 7 ------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 8bd4e25..6e276db 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ # Imagemin Guard -(This project was based on [sum.cumo’s imagemin-merlin](https://github.com/sumcumo/imagemin-merlin). [Changes are documented](https://github.com/sumcumo/imagemin-merlin/compare/master...j9t:master), and include this README. Imagemin Guard supports two additional file formats—WebP and AVIF—, comes with improved code and documentation, and is being maintained.) +(This project was based on [sum.cumo’s imagemin-merlin](https://github.com/sumcumo/imagemin-merlin). [Changes are documented](https://github.com/sumcumo/imagemin-merlin/compare/master...j9t:master), and include this README. Imagemin Guard supports two additional file formats—WebP and AVIF—, comes with improved code and documentation, and is being maintained. For this reason it’s not based on any imagemin packages anymore.) -Imagemin Guard—which had been, but isn’t anymore, based on other imagemin packages—takes care of lossless compression of your images, to help you avoid bloat in your repositories. It makes it convenient and safe to automatically compress JPG, PNG, GIF, WebP, and AVIF images. +Imagemin Guard takes care of near-lossless compression of your images, to help you avoid bloat in your repositories. It makes it convenient and as safe as possible to automatically compress JPG, PNG, GIF, WebP, and AVIF images. It’s convenient because setup is simple. Install, run, add hook, done. -It’s safe because compression happens _losslessly_. Therefore, no worries about forgetting to compress images, but no worries about sacrificing too much quality, either. (You can take care of additional optimizations by yourself or through other tooling.) +It’s as safe as possible because compression happens losslessly (near-lossless for PNG and GIF images). Therefore, practically no worries about forgetting to compress images, but no worries about sacrificing too much quality, either. (You can take care of additional optimizations by yourself or through other tooling.) ## Installation and Use @@ -45,7 +45,7 @@ git commit -m "feat: add Husky pre-commit hook for Imagemin Guard" ### Parameters -`--dry` allows to run Imagemin Guard in “dry mode.” All changed files can then be inspected under `/tmp/imagemin-guard`. +`--dry` allows to run Imagemin Guard in “dry mode.” All changes are being shown in the terminal. `--ignore` allows to specify paths to be ignored (as in `--ignore=example,test`). Multiple paths have to be separated by comma. (Files and paths specified in .gitignore files are generally ignored.) @@ -53,7 +53,7 @@ git commit -m "feat: add Husky pre-commit hook for Imagemin Guard" ## How Does the Output Look Like? -Roughly like this (the screenshot shows an early version of Merlin): +Roughly like this (the screenshot is still based on an early version of Merlin): ![Screenshot of Imagemin Guard’s predecessor, Merlin, in operation.](https://raw.githubusercontent.com/j9t/imagemin-guard/master/media/output.png) @@ -65,9 +65,9 @@ Roughly like this (the screenshot shows an early version of Merlin): Imagemin Guard is a Node script currently using [sharp](https://www.npmjs.com/package/sharp) and [gifsicle](https://www.npmjs.com/package/gifsicle) under the hood. -Automated compression works by monitoring whether a given change list includes any JPGs, PNGs, GIFs, WebPs, or AVIFs. It’s initiated by a Git hook. Only those images are compressed where there is an improvement. The compressed images can then be committed to the underlying repository. +Automated compression works by monitoring whether a given [change list](https://webglossary.info/terms/change-list/) includes any JPGs, PNGs, GIFs, WebPs, or AVIFs. It’s initiated by a Git hook. Only those images are compressed where there is an improvement. The compressed images can then be committed to the underlying repository. -Through this approach, though still glossed over here, Imagemin Guard makes up for what’s missing or complicated in imagemin and related packages, namely easy, riskless, automated, resource-friendly in-repo optimization. +Through this approach, though still glossed over here, Imagemin Guard makes up for what’s missing or complicated in other packages, namely easy, near-riskless, automated, resource-friendly in-repo optimization. ## Why Use Imagemin Guard? @@ -75,7 +75,7 @@ Through this approach, though still glossed over here, Imagemin Guard makes up f You _can_ use Imagemin Guard if you need a simple, automatable, robust solution to compress images and to keep the compressed results in your repository (instead of only in the production environment). -That last piece is important, as Imagemin Guard compresses losslessly, so there’s no risk that images suffer from quality issues after processing. With this kind of defensive base compression, there’s no reason, and only advantages, to feed back compressed graphics into the respective source repository. +That last piece is important, as Imagemin Guard compresses near-losslessly, so there’s little risk that images suffer from quality issues after processing. With this kind of defensive base compression, there’s no reason, and only advantages, to feed back compressed graphics into the respective source repository. ## What Does Imagemin Guard _Not_ Do? diff --git a/src/index.js b/src/index.js index abbac6c..6685768 100644 --- a/src/index.js +++ b/src/index.js @@ -11,13 +11,6 @@ import { hideBin } from 'yargs/helpers' const yargs = _yargs(hideBin(process.argv)) const argv = await yargs.argv - // Test - // console.log(argv) - - if (argv.dry) { - rimraf.sync('/tmp/imagemin-guard') - } - // Share status const summary = (run) => { if (run) { From a01abc1c0667756343e0d808b9222b5d0a52c8e0 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Mon, 7 Oct 2024 20:20:35 +0200 Subject: [PATCH 18/39] feat: make size function asynchronous The size function has been refactored to use async/await. This change ensures that file size operations are non-blocking, improving performance. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- src/utils.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/utils.js b/src/utils.js index 63fe466..b3ae791 100644 --- a/src/utils.js +++ b/src/utils.js @@ -12,7 +12,7 @@ const compression = async (filename, dry) => { const filenameBackup = `${filename}.bak` fs.copyFileSync(filename, filenameBackup) - const fileSizeBefore = size(filename) + const fileSizeBefore = await size(filename) if (fileSizeBefore === 0) { console.info(chalk.blue(`Skipping ${filename}, it has ${sizeReadable(fileSizeBefore)}`)) @@ -41,14 +41,14 @@ const compression = async (filename, dry) => { .avif({ lossless: true }) .toFile(tempFilePath) } else if (outputFormat === 'gif') { - await execFileSync(gifsicle, ['-O3', filename, '-o', tempFilePath]) + execFileSync(gifsicle, ['-O3', filename, '-o', tempFilePath]) } else { await sharp(filename) .toFormat(outputFormat, { lossless: true, quality: 100 }) .toFile(tempFilePath) } - const fileSizeAfter = size(tempFilePath) + const fileSizeAfter = await size(tempFilePath) let color = 'white' let status = 'Skipped' @@ -95,10 +95,11 @@ const compression = async (filename, dry) => { } } -const size = (file) => { - return fs.statSync(file)['size'] +const size = async (file) => { + const stats = await fs.promises.stat(file) + return stats.size } -const sizeReadable = (size) => `${(size / 1024).toFixed(2)} KB` +const sizeReadable = (size) => `${(size / 1024).toFixed(2)} KB` export const utils = { compression, sizeReadable } \ No newline at end of file From c92e69a2db9ad66ce1ca0888b61c47d17411a42d Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Mon, 7 Oct 2024 20:20:40 +0200 Subject: [PATCH 19/39] feat: refine README for better clarity Updated wording in the README to enhance clarity and readability. Changes include minor grammatical adjustments and improved explanations of features and parameters. This helps new users understand the project setup and usage more easily. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6e276db..0a580d3 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ # Imagemin Guard -(This project was based on [sum.cumo’s imagemin-merlin](https://github.com/sumcumo/imagemin-merlin). [Changes are documented](https://github.com/sumcumo/imagemin-merlin/compare/master...j9t:master), and include this README. Imagemin Guard supports two additional file formats—WebP and AVIF—, comes with improved code and documentation, and is being maintained. For this reason it’s not based on any imagemin packages anymore.) +(This project was based on [sum.cumo’s imagemin-merlin](https://github.com/sumcumo/imagemin-merlin). [Changes are documented](https://github.com/sumcumo/imagemin-merlin/compare/master...j9t:master), and include this README. Imagemin Guard supports two additional file formats—WebP and AVIF—, comes with improved code and documentation, and is being maintained. For this reason, it’s not based on any imagemin packages anymore.) Imagemin Guard takes care of near-lossless compression of your images, to help you avoid bloat in your repositories. It makes it convenient and as safe as possible to automatically compress JPG, PNG, GIF, WebP, and AVIF images. It’s convenient because setup is simple. Install, run, add hook, done. -It’s as safe as possible because compression happens losslessly (near-lossless for PNG and GIF images). Therefore, practically no worries about forgetting to compress images, but no worries about sacrificing too much quality, either. (You can take care of additional optimizations by yourself or through other tooling.) +It’s as safe as possible because compression happens losslessly (to be precise, near-lossless for PNG and GIF images). That allows you to stop worrying about forgetting to compress images, but also about sacrificing too much quality. (You can take care of additional optimizations by yourself or through other tooling.) ## Installation and Use @@ -45,9 +45,9 @@ git commit -m "feat: add Husky pre-commit hook for Imagemin Guard" ### Parameters -`--dry` allows to run Imagemin Guard in “dry mode.” All changes are being shown in the terminal. +`--dry` allows you to run Imagemin Guard in “dry mode.” All changes are shown in the terminal. -`--ignore` allows to specify paths to be ignored (as in `--ignore=example,test`). Multiple paths have to be separated by comma. (Files and paths specified in .gitignore files are generally ignored.) +`--ignore` allows you to specify paths to be ignored (as in `--ignore=example,test`). Multiple paths must be separated by commas. (Files and paths specified in .gitignore files are generally ignored.) `--staged` (recommended with automated use) triggers a mode that watches JPG, PNG, GIF, WebP, and AVIF files in `git diff` and only compresses those files—that approach makes Imagemin Guard more efficient in operation. From 6074af4393cc2bee0ca3c105d27ae14c6677cc03 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Mon, 7 Oct 2024 20:35:51 +0200 Subject: [PATCH 20/39] chore: add test image to media directory Include a new JPEG test image to the media directory for testing purposes. This will help in validating the image processing functionalities. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- media/test/test.JPEG | Bin 0 -> 161985 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 media/test/test.JPEG diff --git a/media/test/test.JPEG b/media/test/test.JPEG new file mode 100644 index 0000000000000000000000000000000000000000..48e4d6985bb8ad251da24832475df2c4f5c0f564 GIT binary patch literal 161985 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 literal 0 HcmV?d00001 From 0c7861574fe020a3d5cff721bed08ec29da62042 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Mon, 7 Oct 2024 20:39:05 +0200 Subject: [PATCH 21/39] fix: support uppercase file extensions in [Imagemin Guard] Updated patterns to support uppercase file extensions and ensured extensions are compared in lowercase. This enhances the accuracy of file matching and processing regardless of extension casing. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- src/index.js | 2 +- src/utils.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/index.js b/src/index.js index 6685768..9d0595d 100644 --- a/src/index.js +++ b/src/index.js @@ -40,7 +40,7 @@ import { hideBin } from 'yargs/helpers' const patterns = [] fileTypes.forEach((fileType) => { - patterns.push(`**/*.${fileType}`) + patterns.push(`**/*.${fileType}`, `**/*.${fileType.toUpperCase()}`) }) if (ignore) { diff --git a/src/utils.js b/src/utils.js index b3ae791..3743f3f 100644 --- a/src/utils.js +++ b/src/utils.js @@ -22,7 +22,7 @@ const compression = async (filename, dry) => { const tempFilePath = path.join(os.tmpdir(), path.basename(filename)) try { - const ext = path.extname(filename).slice(1) + const ext = path.extname(filename).slice(1).toLowerCase() if (!ext) { throw new Error(`Cannot determine file type for ${filename}; no extension found.`) } From cc1087a8f384e3c3400ac50d90d298b472184526 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Mon, 7 Oct 2024 20:44:46 +0200 Subject: [PATCH 22/39] fix(utils): improve compression logic and status details Removed lossless option from format method to enhance flexibility in compression levels. Updated status detail message for better clarity on compression results. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- src/utils.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils.js b/src/utils.js index 3743f3f..db57c40 100644 --- a/src/utils.js +++ b/src/utils.js @@ -44,7 +44,7 @@ const compression = async (filename, dry) => { execFileSync(gifsicle, ['-O3', filename, '-o', tempFilePath]) } else { await sharp(filename) - .toFormat(outputFormat, { lossless: true, quality: 100 }) + .toFormat(outputFormat, { quality: 100 }) .toFile(tempFilePath) } @@ -61,7 +61,7 @@ const compression = async (filename, dry) => { } else if (fileSizeAfter > fileSizeBefore) { color = 'blue' status = 'Skipped' - details = 'even more compressed' + details = 'already better compressed' } if (dry) { From 8ac46ba7c9564a1739a04f3c85c786471b1cf37c Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Mon, 7 Oct 2024 22:53:54 +0200 Subject: [PATCH 23/39] feat(docs): clarify output section header in README Updated section title to enhance clarity for users reviewing output information. This change improves the document by providing a more explicit question. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0a580d3..d352490 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ git commit -m "feat: add Husky pre-commit hook for Imagemin Guard" `--staged` (recommended with automated use) triggers a mode that watches JPG, PNG, GIF, WebP, and AVIF files in `git diff` and only compresses those files—that approach makes Imagemin Guard more efficient in operation. -## How Does the Output Look Like? +## What Does the Output Look Like? Roughly like this (the screenshot is still based on an early version of Merlin): From 09d2a5a328bca544f78503088cdade38b5d6443f Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Tue, 8 Oct 2024 21:54:21 +0200 Subject: [PATCH 24/39] chore: fix README wording for clarity Improved the clarity of specific sentences in the README.md file. Replaced unclear terms with more precise ones to enhance readability and comprehension. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d352490..4fa3822 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ Imagemin Guard is a Node script currently using [sharp](https://www.npmjs.com/pa Automated compression works by monitoring whether a given [change list](https://webglossary.info/terms/change-list/) includes any JPGs, PNGs, GIFs, WebPs, or AVIFs. It’s initiated by a Git hook. Only those images are compressed where there is an improvement. The compressed images can then be committed to the underlying repository. -Through this approach, though still glossed over here, Imagemin Guard makes up for what’s missing or complicated in other packages, namely easy, near-riskless, automated, resource-friendly in-repo optimization. +Through this approach, though still glossed over here, Imagemin Guard makes up for what’s missing or complicated in other packages, namely easy, near-riskless, automatable, resource-friendly in-repo optimization. ## Why Use Imagemin Guard? @@ -79,7 +79,7 @@ That last piece is important, as Imagemin Guard compresses near-losslessly, so t ## What Does Imagemin Guard _Not_ Do? -Imagemin Guard is no substitute for image fine-tuning and micro-optimization. That is difficult to do in an automated fashion, because this type of compression requires [balancing quality and performance](https://meiert.com/en/blog/understanding-image-compression/) and is context-dependent. In its most extreme form, when maximum quality at maximum performance is required from each graphic, micro-optimization is even hard to do manually. +Imagemin Guard is no substitute for image fine-tuning and micro-optimization. That’s difficult to do in an automated fashion, because this type of compression requires [balancing quality and performance](https://meiert.com/en/blog/understanding-image-compression/) and is context-dependent. In its most extreme form, when maximum quality at maximum performance is required from each graphic, micro-optimization is even hard to do manually. The point is: Micro-optimization still needs to be taken care of through other means, whether manually or through tools (well including other packages from the [imagemin family](https://github.com/imagemin)). Imagemin Guard just solves the problem that images are checked in or go live that are not compressed _at all_. From 5d67c0547edd75a9eb810012cfbcec028aab2319 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Tue, 8 Oct 2024 23:30:04 +0200 Subject: [PATCH 25/39] feat: update README with new feature ideas The README now includes potential development ideas such as adding light SVG support and ensuring compatibility with projects where .git and package.json are not at the same level. These updates aim to outline possible future enhancements and gather feedback. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4fa3822..5b3f2c9 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ The point is: Micro-optimization still needs to be taken care of through other m ## What’s Next? -There are a few ideas, like supporting projects in which the project’s .git folder is not at the same level as its package.json (currently, automatic mode doesn’t work in these cases). +There are a few ideas, like adding light SVG support, or ensuring compatibility with projects in which the project’s .git folder is not at the same level as its package.json (currently, automatic mode doesn’t work in these cases). Feedback is appreciated: Please [file an issue](https://github.com/j9t/imagemin-guard/issues/new) or send a pull request. Thank you! From 27bf474aebfebeca1d41c16ed3089f2970c1350e Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Wed, 9 Oct 2024 12:13:51 +0200 Subject: [PATCH 26/39] feat(media): add test for corrupted GIF This new file serves as a test case for handling corrupted GIFs in the media module. It helps ensure robustness and stability in image processing functionalities. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- media/test/test#corrupted.gif | Bin 0 -> 42 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 media/test/test#corrupted.gif diff --git a/media/test/test#corrupted.gif b/media/test/test#corrupted.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d9a4f524c97fa9d148cc15d7e114acce53520a7 GIT binary patch literal 42 rcmZ?wbhEHbWMp7uX!y@?;J^U}1_s5SEQ~;kK?g*DWEdD3jTo!}%isql literal 0 HcmV?d00001 From 00545536bd68ee9985f053810165be716a287ec0 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Wed, 9 Oct 2024 12:21:35 +0200 Subject: [PATCH 27/39] refactor: rename test file for clarity Renamed "test#corrupted.gif" to "test#corrupt.gif" to improve file naming consistency and clarity. This helps in better understanding the test scenario. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- media/test/{test#corrupted.gif => test#corrupt.gif} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename media/test/{test#corrupted.gif => test#corrupt.gif} (100%) diff --git a/media/test/test#corrupted.gif b/media/test/test#corrupt.gif similarity index 100% rename from media/test/test#corrupted.gif rename to media/test/test#corrupt.gif From 07a225d1402024b0f6644f12cea264bae316e243 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Wed, 9 Oct 2024 12:23:39 +0200 Subject: [PATCH 28/39] feat: improve image compression handling Introduce file skipping for corrupt or ignored images to avoid errors. Added try-catch blocks to safely handle potential issues during the compression process. Updated GIF processing to handle exceptions and avoid crashes. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- bin/imagemin-guard.test.js | 23 +++++++++++++++++------ src/utils.js | 7 ++++++- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/bin/imagemin-guard.test.js b/bin/imagemin-guard.test.js index 4d94aa8..4dbd273 100644 --- a/bin/imagemin-guard.test.js +++ b/bin/imagemin-guard.test.js @@ -22,20 +22,31 @@ function copyFiles(srcDir, destDir) { } // Function to check if images are compressed +const ignoreFiles = ['test#corrupt.gif'] + function areImagesCompressed(dir) { const uncompressedFiles = [] const allCompressed = fs.readdirSync(dir).every(file => { + if (ignoreFiles.includes(file)) { + // console.info(`Ignoring file: ${file}`) + return true + } const ext = path.extname(file).slice(1) if (!allowedFileTypes.includes(ext)) return true const filePath = path.join(dir, file) const originalFilePath = path.join(testFolder, file) - const originalStats = fs.statSync(originalFilePath) - const compressedStats = fs.statSync(filePath) - const isCompressed = compressedStats.size < originalStats.size - if (!isCompressed) { - uncompressedFiles.push(file) + try { + const originalStats = fs.statSync(originalFilePath) + const compressedStats = fs.statSync(filePath) + const isCompressed = compressedStats.size < originalStats.size + if (!isCompressed) { + uncompressedFiles.push(file) + } + return isCompressed + } catch (err) { + console.warn(`Skipping corrupt file: ${file}`) + return true } - return isCompressed }) return { allCompressed, uncompressedFiles } } diff --git a/src/utils.js b/src/utils.js index db57c40..e8f698c 100644 --- a/src/utils.js +++ b/src/utils.js @@ -41,7 +41,12 @@ const compression = async (filename, dry) => { .avif({ lossless: true }) .toFile(tempFilePath) } else if (outputFormat === 'gif') { - execFileSync(gifsicle, ['-O3', filename, '-o', tempFilePath]) + try { + execFileSync(gifsicle, ['-O3', filename, '-o', tempFilePath], { stdio: ['ignore', 'ignore', 'ignore'] }) + } catch (err) { + console.info(chalk.yellow(`Skipped ${filename} (appears corrupt)`)) + return 0 + } } else { await sharp(filename) .toFormat(outputFormat, { quality: 100 }) From 9749bbdf74bbae21163c1cdeba8b34f8405657ea Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Wed, 9 Oct 2024 12:28:56 +0200 Subject: [PATCH 29/39] feat: improve file compression logging messages Updated log messages to use yellow color for skipped files and adjusted condition to handle cases with better compression clearly. This ensures better readability and accuracy of log information during file compression tasks. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- src/utils.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/utils.js b/src/utils.js index e8f698c..e0b1739 100644 --- a/src/utils.js +++ b/src/utils.js @@ -15,7 +15,7 @@ const compression = async (filename, dry) => { const fileSizeBefore = await size(filename) if (fileSizeBefore === 0) { - console.info(chalk.blue(`Skipping ${filename}, it has ${sizeReadable(fileSizeBefore)}`)) + console.info(chalk.yellow(`Skipped ${filename} (${sizeReadable(fileSizeBefore)})`)) return 0 } @@ -63,7 +63,9 @@ const compression = async (filename, dry) => { color = 'green' status = 'Compressed' details = `${sizeReadable(fileSizeBefore)} → ${sizeReadable(fileSizeAfter)}` - } else if (fileSizeAfter > fileSizeBefore) { + } + + if (fileSizeAfter > fileSizeBefore) { color = 'blue' status = 'Skipped' details = 'already better compressed' From 9aed0c5afb97f33bdd8986ed8a3ce99f54bfb1d2 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Wed, 9 Oct 2024 12:33:23 +0200 Subject: [PATCH 30/39] feat: add logMessage function for consistent logging Introduced a reusable logMessage function to standardize logging and removed redundant console.info calls. This integrates dry run logging within the new function for cleaner and more maintainable code. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- src/utils.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/utils.js b/src/utils.js index e0b1739..47dd5f3 100644 --- a/src/utils.js +++ b/src/utils.js @@ -8,6 +8,14 @@ import os from 'os' import path from 'path' import sharp from 'sharp' +const logMessage = (message, dry, color = 'yellow') => { + if (dry) { + console.info(chalk.gray(`Dry run: ${message}`)) + } else { + console.info(chalk[color](message)) + } +} + const compression = async (filename, dry) => { const filenameBackup = `${filename}.bak` fs.copyFileSync(filename, filenameBackup) @@ -15,7 +23,7 @@ const compression = async (filename, dry) => { const fileSizeBefore = await size(filename) if (fileSizeBefore === 0) { - console.info(chalk.yellow(`Skipped ${filename} (${sizeReadable(fileSizeBefore)})`)) + logMessage(`Skipped ${filename} (${sizeReadable(fileSizeBefore)})`, dry) return 0 } @@ -44,7 +52,7 @@ const compression = async (filename, dry) => { try { execFileSync(gifsicle, ['-O3', filename, '-o', tempFilePath], { stdio: ['ignore', 'ignore', 'ignore'] }) } catch (err) { - console.info(chalk.yellow(`Skipped ${filename} (appears corrupt)`)) + logMessage(`Skipped ${filename} (appears corrupt)`, dry) return 0 } } else { @@ -71,8 +79,9 @@ const compression = async (filename, dry) => { details = 'already better compressed' } + logMessage(`${status} ${filename} (${details})`, dry, color) + if (dry) { - console.info(chalk.gray(`Dry run: ${status} ${filename} (${details})`)) fs.unlinkSync(tempFilePath) return 0 } @@ -80,10 +89,6 @@ const compression = async (filename, dry) => { fs.copyFileSync(tempFilePath, filename) fs.unlinkSync(tempFilePath) - console.info( - chalk[color](`${status} ${filename} (${details})`) - ) - if (fileSizeAfter === 0) { console.error(chalk.bold.red(`Something went wrong, new file size is ${sizeReadable(fileSizeAfter)}`)) } From 22ca1dbe5917b0554f0c5230eebe8335bbdc2d92 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Wed, 9 Oct 2024 12:35:28 +0200 Subject: [PATCH 31/39] feat: enhance logMessage to support dynamic colors Updated logMessage function to allow dynamic color input for better flexibility. This change improves the readability and customization of log messages during both dry run and normal execution. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- src/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils.js b/src/utils.js index 47dd5f3..f88b299 100644 --- a/src/utils.js +++ b/src/utils.js @@ -10,7 +10,7 @@ import sharp from 'sharp' const logMessage = (message, dry, color = 'yellow') => { if (dry) { - console.info(chalk.gray(`Dry run: ${message}`)) + console.info(chalk[color](`Dry run: ${message}`)) } else { console.info(chalk[color](message)) } From 55bbba329c0f4f3f6abc957d3a471929d08f2f93 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Wed, 9 Oct 2024 13:12:48 +0200 Subject: [PATCH 32/39] feat: improve error handling and code readability Refactor error logging for consistency and simplify log messages. Introduce try-catch around file copy to handle errors and ensure process continuation. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- src/index.js | 4 ++-- src/utils.js | 23 +++++++++++------------ 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/index.js b/src/index.js index 9d0595d..cac0b2c 100644 --- a/src/index.js +++ b/src/index.js @@ -68,8 +68,8 @@ import { hideBin } from 'yargs/helpers' const status = await git.status() compressionFiles = status.staged.filter(filename => files.includes(filename)) await compress(compressionFiles, argv.dry) - } catch (err) { - console.error(err) + } catch (error) { + console.error(error) } } else { await compress(compressionFiles, argv.dry) diff --git a/src/utils.js b/src/utils.js index f88b299..6443ad5 100644 --- a/src/utils.js +++ b/src/utils.js @@ -9,16 +9,17 @@ import path from 'path' import sharp from 'sharp' const logMessage = (message, dry, color = 'yellow') => { - if (dry) { - console.info(chalk[color](`Dry run: ${message}`)) - } else { - console.info(chalk[color](message)) - } + console.info(chalk[color](`${dry ? 'Dry run: ' : ''}${message}`)) } const compression = async (filename, dry) => { const filenameBackup = `${filename}.bak` - fs.copyFileSync(filename, filenameBackup) + try { + fs.copyFileSync(filename, filenameBackup) + } catch (error) { + console.error(`Error creating backup for ${filename}:`, error) + return 0 + } const fileSizeBefore = await size(filename) @@ -71,9 +72,7 @@ const compression = async (filename, dry) => { color = 'green' status = 'Compressed' details = `${sizeReadable(fileSizeBefore)} → ${sizeReadable(fileSizeAfter)}` - } - - if (fileSizeAfter > fileSizeBefore) { + } else if (fileSizeAfter > fileSizeBefore) { color = 'blue' status = 'Skipped' details = 'already better compressed' @@ -90,12 +89,12 @@ const compression = async (filename, dry) => { fs.unlinkSync(tempFilePath) if (fileSizeAfter === 0) { - console.error(chalk.bold.red(`Something went wrong, new file size is ${sizeReadable(fileSizeAfter)}`)) + console.error(chalk.bold.red(`Error doing something meaningful here, new file size is ${sizeReadable(fileSizeAfter)}`)) } return fileSizeAfter < fileSizeBefore ? fileSizeBefore - fileSizeAfter : 0 - } catch (err) { - console.error(`Error compressing ${filename}:`, err) + } catch (error) { + console.error(`Error compressing ${filename}:`, error) fs.renameSync(filenameBackup, filename) return 0 } finally { From 089a904ebf25e823209e7d7d9d2f525a702644e9 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Wed, 9 Oct 2024 13:30:55 +0200 Subject: [PATCH 33/39] feat: enhance error logging and file handling in compression Added `chalk` for better error message formatting and switched to using async file operations with `fs.promises` to improve performance and error handling. This refactor provides more informative and readable logs for users. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- src/index.js | 5 +++-- src/utils.js | 22 ++++++++++++---------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/index.js b/src/index.js index cac0b2c..e58d0aa 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,7 @@ // This file, which had been forked from imagemin-merlin, was modified for imagemin-guard: https://github.com/sumcumo/imagemin-merlin/compare/master...j9t:master import { utils } from './utils.js' +import chalk from 'chalk'; import { globbySync } from 'globby' import { rimraf } from 'rimraf' import simpleGit from 'simple-git' @@ -14,9 +15,9 @@ import { hideBin } from 'yargs/helpers' // Share status const summary = (run) => { if (run) { - console.info(`\nDefensive base compression completed. You saved ${utils.sizeReadable(savedKB)}.`) + console.info(chalk.bold(`\nDefensive base compression completed. You saved ${utils.sizeReadable(savedKB)}.`)) } else { - console.info('There were no images to compress.') + console.info(chalk.bold('There were no images to compress.')) } } diff --git a/src/utils.js b/src/utils.js index 6443ad5..3ed71fa 100644 --- a/src/utils.js +++ b/src/utils.js @@ -15,9 +15,9 @@ const logMessage = (message, dry, color = 'yellow') => { const compression = async (filename, dry) => { const filenameBackup = `${filename}.bak` try { - fs.copyFileSync(filename, filenameBackup) + await fs.promises.copyFile(filename, filenameBackup) } catch (error) { - console.error(`Error creating backup for ${filename}:`, error) + console.error(chalk.red(`Error creating backup for ${filename}:`), error) return 0 } @@ -33,7 +33,7 @@ const compression = async (filename, dry) => { try { const ext = path.extname(filename).slice(1).toLowerCase() if (!ext) { - throw new Error(`Cannot determine file type for ${filename}; no extension found.`) + throw new Error(`Cannot determine file type for ${filename}—no extension found`) } const outputFormat = ext === 'jpg' ? 'jpeg' : ext // sharp uses “jpeg” instead of “jpg” @@ -85,23 +85,25 @@ const compression = async (filename, dry) => { return 0 } - fs.copyFileSync(tempFilePath, filename) - fs.unlinkSync(tempFilePath) + await fs.promises.copyFile(tempFilePath, filename) + await fs.promises.unlink(tempFilePath) if (fileSizeAfter === 0) { - console.error(chalk.bold.red(`Error doing something meaningful here, new file size is ${sizeReadable(fileSizeAfter)}`)) + console.error(chalk.red(`Error doing something meaningful here—compressed file size is 0 for ${filename}`)) } return fileSizeAfter < fileSizeBefore ? fileSizeBefore - fileSizeAfter : 0 } catch (error) { - console.error(`Error compressing ${filename}:`, error) - fs.renameSync(filenameBackup, filename) + console.error(chalk.red(`Error compressing ${filename}:`), error) + await fs.promises.rename(filenameBackup, filename) return 0 } finally { try { - fs.unlinkSync(filenameBackup) + await fs.promises.unlink(filenameBackup) } catch (error) { - // If the file doesn’t exist, no action is needed + if (error.code !== 'ENOENT') { + console.warn(chalk.yellow(`Failed to delete backup file ${filenameBackup}:`), error) + } } } } From d97d7a229f7717d55d61997a608013fcd2480dd1 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Wed, 9 Oct 2024 13:33:34 +0200 Subject: [PATCH 34/39] docs: format parameters section in README Changed plain text list to a formatted bullet list in the parameters section. This improves readability and consistency within the documentation. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5b3f2c9..fb18326 100644 --- a/README.md +++ b/README.md @@ -45,11 +45,11 @@ git commit -m "feat: add Husky pre-commit hook for Imagemin Guard" ### Parameters -`--dry` allows you to run Imagemin Guard in “dry mode.” All changes are shown in the terminal. +* `--dry` allows you to run Imagemin Guard in “dry mode.” All changes are shown in the terminal. -`--ignore` allows you to specify paths to be ignored (as in `--ignore=example,test`). Multiple paths must be separated by commas. (Files and paths specified in .gitignore files are generally ignored.) +* `--ignore` allows you to specify paths to be ignored (as in `--ignore=example,test`). Multiple paths must be separated by commas. (Files and paths specified in .gitignore files are generally ignored.) -`--staged` (recommended with automated use) triggers a mode that watches JPG, PNG, GIF, WebP, and AVIF files in `git diff` and only compresses those files—that approach makes Imagemin Guard more efficient in operation. +* `--staged` (recommended with automated use) triggers a mode that watches JPG, PNG, GIF, WebP, and AVIF files in `git diff` and only compresses those files—that approach makes Imagemin Guard more efficient in operation. ## What Does the Output Look Like? From cdbb17fc25f112ec0fc9d5eee27d2a0c2bfbc978 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Wed, 9 Oct 2024 13:44:34 +0200 Subject: [PATCH 35/39] feat: switch from execFileSync to execFile Utilize async execFile instead of sync execFileSync for gif optimization. This change aims to improve performance and prevent blocking the event loop during execution. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- src/utils.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/utils.js b/src/utils.js index 3ed71fa..70c0739 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,12 +1,13 @@ // This file, which had been forked from imagemin-merlin, was modified for imagemin-guard: https://github.com/sumcumo/imagemin-merlin/compare/master...j9t:master import chalk from 'chalk' -import { execFileSync } from 'child_process' +import { execFile } from 'child_process' import fs from 'fs' import gifsicle from 'gifsicle' import os from 'os' import path from 'path' import sharp from 'sharp' +import util from 'util' const logMessage = (message, dry, color = 'yellow') => { console.info(chalk[color](`${dry ? 'Dry run: ' : ''}${message}`)) @@ -35,6 +36,7 @@ const compression = async (filename, dry) => { if (!ext) { throw new Error(`Cannot determine file type for ${filename}—no extension found`) } + const outputFormat = ext === 'jpg' ? 'jpeg' : ext // sharp uses “jpeg” instead of “jpg” if (outputFormat === 'png') { @@ -50,8 +52,9 @@ const compression = async (filename, dry) => { .avif({ lossless: true }) .toFile(tempFilePath) } else if (outputFormat === 'gif') { + const execFileAsync = util.promisify(execFile) try { - execFileSync(gifsicle, ['-O3', filename, '-o', tempFilePath], { stdio: ['ignore', 'ignore', 'ignore'] }) + await execFileAsync(gifsicle, ['-O3', filename, '-o', tempFilePath], { stdio: ['ignore', 'ignore', 'ignore'] }) } catch (err) { logMessage(`Skipped ${filename} (appears corrupt)`, dry) return 0 From 95f104ec382a38c47160662e750abd82b97435ad Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Wed, 9 Oct 2024 14:09:30 +0200 Subject: [PATCH 36/39] feat(docs): update README.md for clarity Replace "hard" with "challenging" to improve readability and clarity. This change enhances the documentation by using more precise language. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fb18326..0f79b23 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ That last piece is important, as Imagemin Guard compresses near-losslessly, so t ## What Does Imagemin Guard _Not_ Do? -Imagemin Guard is no substitute for image fine-tuning and micro-optimization. That’s difficult to do in an automated fashion, because this type of compression requires [balancing quality and performance](https://meiert.com/en/blog/understanding-image-compression/) and is context-dependent. In its most extreme form, when maximum quality at maximum performance is required from each graphic, micro-optimization is even hard to do manually. +Imagemin Guard is no substitute for image fine-tuning and micro-optimization. That’s difficult to do in an automated fashion, because this type of compression requires [balancing quality and performance](https://meiert.com/en/blog/understanding-image-compression/) and is context-dependent. In its most extreme form, when maximum quality at maximum performance is required from each graphic, micro-optimization is even challenging to do manually. The point is: Micro-optimization still needs to be taken care of through other means, whether manually or through tools (well including other packages from the [imagemin family](https://github.com/imagemin)). Imagemin Guard just solves the problem that images are checked in or go live that are not compressed _at all_. From df19687361f8d23f20c6e45532b8b6560973ff18 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Wed, 9 Oct 2024 14:09:42 +0200 Subject: [PATCH 37/39] feat: add file size check and conditional copy Added a maximum file size check to skip files larger than 100MB. Moved the file copy operation to occur conditionally only when compression is successful. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- src/utils.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/utils.js b/src/utils.js index 70c0739..45b38f0 100644 --- a/src/utils.js +++ b/src/utils.js @@ -29,6 +29,13 @@ const compression = async (filename, dry) => { return 0 } + const maxFileSize = 100 * 1024 * 1024; // 100 MB + + if (fileSizeBefore > maxFileSize) { + logMessage(`Skipped ${filename} (file too large: ${sizeReadable(fileSizeBefore)})`, dry) + return 0 + } + const tempFilePath = path.join(os.tmpdir(), path.basename(filename)) try { @@ -75,6 +82,9 @@ const compression = async (filename, dry) => { color = 'green' status = 'Compressed' details = `${sizeReadable(fileSizeBefore)} → ${sizeReadable(fileSizeAfter)}` + if (!dry) { + await fs.promises.copyFile(tempFilePath, filename) + } } else if (fileSizeAfter > fileSizeBefore) { color = 'blue' status = 'Skipped' @@ -88,7 +98,6 @@ const compression = async (filename, dry) => { return 0 } - await fs.promises.copyFile(tempFilePath, filename) await fs.promises.unlink(tempFilePath) if (fileSizeAfter === 0) { From 1723c9aa44058da5b2419cc2c59a4ed7bdf12b28 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Wed, 9 Oct 2024 14:16:38 +0200 Subject: [PATCH 38/39] refactor: improve maintainability in file compression logic Removed unnecessary semicolon and added comment for better configurability. These small adjustments enhance code clarity and ease future updates. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- src/utils.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/utils.js b/src/utils.js index 45b38f0..4850c54 100644 --- a/src/utils.js +++ b/src/utils.js @@ -29,7 +29,7 @@ const compression = async (filename, dry) => { return 0 } - const maxFileSize = 100 * 1024 * 1024; // 100 MB + const maxFileSize = 100 * 1024 * 1024 // 100 MB if (fileSizeBefore > maxFileSize) { logMessage(`Skipped ${filename} (file too large: ${sizeReadable(fileSizeBefore)})`, dry) @@ -46,6 +46,7 @@ const compression = async (filename, dry) => { const outputFormat = ext === 'jpg' ? 'jpeg' : ext // sharp uses “jpeg” instead of “jpg” + // @@ Refactor for better maintainability and configurability if (outputFormat === 'png') { await sharp(filename) .png({ compressionLevel: 9, quality: 100 }) @@ -105,11 +106,15 @@ const compression = async (filename, dry) => { } return fileSizeAfter < fileSizeBefore ? fileSizeBefore - fileSizeAfter : 0 + } catch (error) { + console.error(chalk.red(`Error compressing ${filename}:`), error) await fs.promises.rename(filenameBackup, filename) return 0 + } finally { + try { await fs.promises.unlink(filenameBackup) } catch (error) { From 7ef3e1d8e352e0e08fa7af4a70277325d0937240 Mon Sep 17 00:00:00 2001 From: Jens Oliver Meiert Date: Wed, 9 Oct 2024 14:31:23 +0200 Subject: [PATCH 39/39] fix: clarify error message for zero compressed file size Refined the error message to be more descriptive and concise. This helps in better understanding the cause of the error when the compressed file size is zero. (This commit message was AI-generated.) Signed-off-by: Jens Oliver Meiert --- src/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils.js b/src/utils.js index 4850c54..6064e87 100644 --- a/src/utils.js +++ b/src/utils.js @@ -102,7 +102,7 @@ const compression = async (filename, dry) => { await fs.promises.unlink(tempFilePath) if (fileSizeAfter === 0) { - console.error(chalk.red(`Error doing something meaningful here—compressed file size is 0 for ${filename}`)) + console.error(chalk.red(`Error compressing ${filename}: Compressed file size is 0`)) } return fileSizeAfter < fileSizeBefore ? fileSizeBefore - fileSizeAfter : 0