From 6fb4da0ab1972e1a83a51dff00fdd54460a82249 Mon Sep 17 00:00:00 2001 From: Karsa Date: Mon, 8 May 2023 12:17:34 +0200 Subject: [PATCH] Added icon release metadata builder --- .gitignore | 1 + docs/.vitepress/lib/icons.ts | 4 +- docs/.vitepress/theme/types.ts | 8 + docs/package.json | 5 +- package.json | 2 + pnpm-lock.yaml | 529 ++++++++++++++++++------------- scripts/writeReleaseMetadata.mjs | 94 ++++++ 7 files changed, 423 insertions(+), 220 deletions(-) create mode 100644 scripts/writeReleaseMetadata.mjs diff --git a/.gitignore b/.gitignore index 7cff21c8d..a8cff6107 100644 --- a/.gitignore +++ b/.gitignore @@ -28,5 +28,6 @@ docs/.vitepress/dist docs/.vitepress/.temp docs/.vitepress/data/iconNodes docs/.vitepress/data/iconMetaData.ts +docs/.vitepress/data/releaseMetaData.json docs/.vercel docs/.nitro diff --git a/docs/.vitepress/lib/icons.ts b/docs/.vitepress/lib/icons.ts index b0a4bff3e..67a3a5b46 100644 --- a/docs/.vitepress/lib/icons.ts +++ b/docs/.vitepress/lib/icons.ts @@ -2,9 +2,10 @@ import fs from "fs"; import path from "path"; import { parseSync } from "svgson"; import { IconNode } from "../../../packages/lucide-react/src/createLucideIcon"; -import { IconEntity } from "../theme/types"; +import { IconEntity, Release } from "../theme/types"; import { getContributors } from "./fetchAllContributors"; import { generateHashedKey } from "./helpers"; +import releaseMeta from "../data/releaseMetaData.json"; const directory = path.join(process.cwd(), "../icons"); @@ -47,6 +48,7 @@ export async function getData(name: string, { withChildKeys = false }: GetDataOp categories, // contributors, iconNode, + ...(releaseMeta[name] ?? {}) }; } diff --git a/docs/.vitepress/theme/types.ts b/docs/.vitepress/theme/types.ts index 695e29fef..79cbc3738 100644 --- a/docs/.vitepress/theme/types.ts +++ b/docs/.vitepress/theme/types.ts @@ -6,6 +6,8 @@ export interface IconEntity { categories: string[]; contributors: Contributor[]; iconNode: IconNode; + createdRelease?: Release; + changedRelease?: Release; } export interface Contributor { @@ -36,3 +38,9 @@ export interface PackageItem { private?: boolean flutter?: object } + + +export interface Release { + version: string + date: string +} diff --git a/docs/package.json b/docs/package.json index 3fa877736..03ee4dffb 100644 --- a/docs/package.json +++ b/docs/package.json @@ -10,10 +10,11 @@ "docs:preview": "vitepress preview", "build:iconNodes": "node ../scripts/writeIconNodes.mjs", "build:metaJson": "node ../scripts/writeIconMetaIndex.mjs", + "build:releaseJson": "node ../scripts/writeReleaseMetadata.mjs", "build:vercelJson": "node ../scripts/writeVercelOutput.mjs", "dev": "npx nitropack dev", "build:api": "npx nitropack build", - "build": "pnpm build:iconNodes && pnpm build:metaJson && pnpm build:api && pnpm docs:build && pnpm build:vercelJson", + "build": "pnpm build:iconNodes && pnpm build:metaJson && pnpm build:releaseJson && pnpm build:api && pnpm docs:build && pnpm build:vercelJson", "preview": "node .output/server/index.mjs" }, "keywords": [], @@ -39,8 +40,10 @@ "lucide-vue-next": "workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0", + "semver": "^7.5.0", "shiki": "^0.14.2", "shiki-processor": "^0.1.3", + "simple-git": "^3.18.0", "svg-pathdata": "^6.0.3", "vue": "^3.2.47" } diff --git a/package.json b/package.json index af583d3f6..ab651cb96 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,8 @@ "minimist": "^1.2.8", "node-fetch": "^3.3.1", "prettier": "2.7.1", + "semver": "^7.5.0", + "simple-git": "^3.18.0", "svgo": "^3.0.2", "svgson": "^5.2.1" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index efb48f8ff..8d145f71e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,6 +34,12 @@ importers: prettier: specifier: 2.7.1 version: 2.7.1 + semver: + specifier: ^7.5.0 + version: 7.5.0 + simple-git: + specifier: ^3.18.0 + version: 3.18.0 svgo: specifier: ^3.0.2 version: 3.0.2 @@ -82,12 +88,18 @@ importers: react-dom: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) + semver: + specifier: ^7.5.0 + version: 7.5.0 shiki: specifier: ^0.14.2 version: 0.14.2 shiki-processor: specifier: ^0.1.3 version: 0.1.3(shiki@0.14.2) + simple-git: + specifier: ^3.18.0 + version: 3.18.0 svg-pathdata: specifier: ^6.0.3 version: 6.0.3 @@ -100,7 +112,7 @@ importers: version: 1.6.4 nitropack: specifier: latest - version: 2.3.3 + version: 2.4.0 node-fetch: specifier: '2' version: 2.6.7 @@ -1252,7 +1264,7 @@ packages: dependency-graph: 0.11.0 magic-string: 0.26.7 reflect-metadata: 0.1.13 - semver: 7.4.0 + semver: 7.5.0 sourcemap-codec: 1.4.8 tslib: 2.5.0 typescript: 4.6.2 @@ -7067,8 +7079,8 @@ packages: resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} dev: false - /@esbuild/android-arm64@0.17.16: - resolution: {integrity: sha512-QX48qmsEZW+gcHgTmAj+x21mwTz8MlYQBnzF6861cNdQGvj2jzzFjqH0EBabrIa/WVZ2CHolwMoqxVryqKt8+Q==} + /@esbuild/android-arm64@0.17.18: + resolution: {integrity: sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -7093,8 +7105,8 @@ packages: requiresBuild: true optional: true - /@esbuild/android-arm@0.17.16: - resolution: {integrity: sha512-baLqRpLe4JnKrUXLJChoTN0iXZH7El/mu58GE3WIA6/H834k0XWvLRmGLG8y8arTRS9hJJibPnF0tiGhmWeZgw==} + /@esbuild/android-arm@0.17.18: + resolution: {integrity: sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -7102,8 +7114,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.17.16: - resolution: {integrity: sha512-G4wfHhrrz99XJgHnzFvB4UwwPxAWZaZBOFXh+JH1Duf1I4vIVfuYY9uVLpx4eiV2D/Jix8LJY+TAdZ3i40tDow==} + /@esbuild/android-x64@0.17.18: + resolution: {integrity: sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -7111,8 +7123,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.17.16: - resolution: {integrity: sha512-/Ofw8UXZxuzTLsNFmz1+lmarQI6ztMZ9XktvXedTbt3SNWDn0+ODTwxExLYQ/Hod91EZB4vZPQJLoqLF0jvEzA==} + /@esbuild/darwin-arm64@0.17.18: + resolution: {integrity: sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -7120,8 +7132,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.17.16: - resolution: {integrity: sha512-SzBQtCV3Pdc9kyizh36Ol+dNVhkDyIrGb/JXZqFq8WL37LIyrXU0gUpADcNV311sCOhvY+f2ivMhb5Tuv8nMOQ==} + /@esbuild/darwin-x64@0.17.18: + resolution: {integrity: sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -7129,8 +7141,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.17.16: - resolution: {integrity: sha512-ZqftdfS1UlLiH1DnS2u3It7l4Bc3AskKeu+paJSfk7RNOMrOxmeFDhLTMQqMxycP1C3oj8vgkAT6xfAuq7ZPRA==} + /@esbuild/freebsd-arm64@0.17.18: + resolution: {integrity: sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -7138,8 +7150,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.17.16: - resolution: {integrity: sha512-rHV6zNWW1tjgsu0dKQTX9L0ByiJHHLvQKrWtnz8r0YYJI27FU3Xu48gpK2IBj1uCSYhJ+pEk6Y0Um7U3rIvV8g==} + /@esbuild/freebsd-x64@0.17.18: + resolution: {integrity: sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -7147,8 +7159,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.17.16: - resolution: {integrity: sha512-8yoZhGkU6aHu38WpaM4HrRLTFc7/VVD9Q2SvPcmIQIipQt2I/GMTZNdEHXoypbbGao5kggLcxg0iBKjo0SQYKA==} + /@esbuild/linux-arm64@0.17.18: + resolution: {integrity: sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -7156,8 +7168,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.17.16: - resolution: {integrity: sha512-n4O8oVxbn7nl4+m+ISb0a68/lcJClIbaGAoXwqeubj/D1/oMMuaAXmJVfFlRjJLu/ZvHkxoiFJnmbfp4n8cdSw==} + /@esbuild/linux-arm@0.17.18: + resolution: {integrity: sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -7165,8 +7177,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.17.16: - resolution: {integrity: sha512-9ZBjlkdaVYxPNO8a7OmzDbOH9FMQ1a58j7Xb21UfRU29KcEEU3VTHk+Cvrft/BNv0gpWJMiiZ/f4w0TqSP0gLA==} + /@esbuild/linux-ia32@0.17.18: + resolution: {integrity: sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -7191,8 +7203,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-loong64@0.17.16: - resolution: {integrity: sha512-TIZTRojVBBzdgChY3UOG7BlPhqJz08AL7jdgeeu+kiObWMFzGnQD7BgBBkWRwOtKR1i2TNlO7YK6m4zxVjjPRQ==} + /@esbuild/linux-loong64@0.17.18: + resolution: {integrity: sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -7200,8 +7212,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.17.16: - resolution: {integrity: sha512-UPeRuFKCCJYpBbIdczKyHLAIU31GEm0dZl1eMrdYeXDH+SJZh/i+2cAmD3A1Wip9pIc5Sc6Kc5cFUrPXtR0XHA==} + /@esbuild/linux-mips64el@0.17.18: + resolution: {integrity: sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -7209,8 +7221,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.17.16: - resolution: {integrity: sha512-io6yShgIEgVUhExJejJ21xvO5QtrbiSeI7vYUnr7l+v/O9t6IowyhdiYnyivX2X5ysOVHAuyHW+Wyi7DNhdw6Q==} + /@esbuild/linux-ppc64@0.17.18: + resolution: {integrity: sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -7218,8 +7230,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.17.16: - resolution: {integrity: sha512-WhlGeAHNbSdG/I2gqX2RK2gfgSNwyJuCiFHMc8s3GNEMMHUI109+VMBfhVqRb0ZGzEeRiibi8dItR3ws3Lk+cA==} + /@esbuild/linux-riscv64@0.17.18: + resolution: {integrity: sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -7227,8 +7239,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.17.16: - resolution: {integrity: sha512-gHRReYsJtViir63bXKoFaQ4pgTyah4ruiMRQ6im9YZuv+gp3UFJkNTY4sFA73YDynmXZA6hi45en4BGhNOJUsw==} + /@esbuild/linux-s390x@0.17.18: + resolution: {integrity: sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -7236,8 +7248,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.17.16: - resolution: {integrity: sha512-mfiiBkxEbUHvi+v0P+TS7UnA9TeGXR48aK4XHkTj0ZwOijxexgMF01UDFaBX7Q6CQsB0d+MFNv9IiXbIHTNd4g==} + /@esbuild/linux-x64@0.17.18: + resolution: {integrity: sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -7245,8 +7257,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.17.16: - resolution: {integrity: sha512-n8zK1YRDGLRZfVcswcDMDM0j2xKYLNXqei217a4GyBxHIuPMGrrVuJ+Ijfpr0Kufcm7C1k/qaIrGy6eG7wvgmA==} + /@esbuild/netbsd-x64@0.17.18: + resolution: {integrity: sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -7254,8 +7266,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.17.16: - resolution: {integrity: sha512-lEEfkfsUbo0xC47eSTBqsItXDSzwzwhKUSsVaVjVji07t8+6KA5INp2rN890dHZeueXJAI8q0tEIfbwVRYf6Ew==} + /@esbuild/openbsd-x64@0.17.18: + resolution: {integrity: sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -7263,8 +7275,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.17.16: - resolution: {integrity: sha512-jlRjsuvG1fgGwnE8Afs7xYDnGz0dBgTNZfgCK6TlvPH3Z13/P5pi6I57vyLE8qZYLrGVtwcm9UbUx1/mZ8Ukag==} + /@esbuild/sunos-x64@0.17.18: + resolution: {integrity: sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -7272,8 +7284,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.17.16: - resolution: {integrity: sha512-TzoU2qwVe2boOHl/3KNBUv2PNUc38U0TNnzqOAcgPiD/EZxT2s736xfC2dYQbszAwo4MKzzwBV0iHjhfjxMimg==} + /@esbuild/win32-arm64@0.17.18: + resolution: {integrity: sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -7281,8 +7293,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.17.16: - resolution: {integrity: sha512-B8b7W+oo2yb/3xmwk9Vc99hC9bNolvqjaTZYEfMQhzdpBsjTvZBlXQ/teUE55Ww6sg//wlcDjOaqldOKyigWdA==} + /@esbuild/win32-ia32@0.17.18: + resolution: {integrity: sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -7290,8 +7302,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.17.16: - resolution: {integrity: sha512-xJ7OH/nanouJO9pf03YsL9NAFQBHd8AqfrQd7Pf5laGyyTt/gToul6QYOA/i5i/q8y9iaM5DQFNTgpi995VkOg==} + /@esbuild/win32-x64@0.17.18: + resolution: {integrity: sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -7322,7 +7334,7 @@ packages: debug: 4.3.4 espree: 9.3.3 globals: 13.17.0 - ignore: 5.2.0 + ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -8095,6 +8107,16 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true + /@kwsites/file-exists@1.1.1: + resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + /@kwsites/promise-deferred@1.1.1: + resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} + /@mapbox/node-pre-gyp@1.0.10: resolution: {integrity: sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==} hasBin: true @@ -8106,7 +8128,7 @@ packages: nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.4.0 + semver: 7.5.0 tar: 6.1.13 transitivePeerDependencies: - encoding @@ -8391,7 +8413,7 @@ packages: resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} dependencies: '@gar/promisify': 1.1.3 - semver: 7.4.0 + semver: 7.5.0 dev: true /@npmcli/fs@2.1.2: @@ -8399,7 +8421,7 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: '@gar/promisify': 1.1.3 - semver: 7.4.0 + semver: 7.5.0 dev: true /@npmcli/git@2.1.0: @@ -8411,7 +8433,7 @@ packages: npm-pick-manifest: 6.1.1 promise-inflight: 1.0.1 promise-retry: 2.0.1 - semver: 7.4.0 + semver: 7.5.0 which: 2.0.2 transitivePeerDependencies: - bluebird @@ -8920,7 +8942,7 @@ packages: resolution: {integrity: sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==} dev: true - /@rollup/plugin-alias@5.0.0(rollup@3.20.2): + /@rollup/plugin-alias@5.0.0(rollup@3.21.5): resolution: {integrity: sha512-l9hY5chSCjuFRPsnRm16twWBiSApl2uYFLsepQYwtBuAxNMQ/1dJqADld40P0Jkqm65GRTLy/AC6hnpVebtLsA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -8929,7 +8951,7 @@ packages: rollup: optional: true dependencies: - rollup: 3.20.2 + rollup: 3.21.5 slash: 4.0.0 dev: true @@ -8954,8 +8976,8 @@ packages: rollup: 3.5.1 dev: true - /@rollup/plugin-commonjs@24.0.1(rollup@3.20.2): - resolution: {integrity: sha512-15LsiWRZk4eOGqvrJyu3z3DaBu5BhXIMeWnijSRvd8irrrg9SHpQ1pH+BUK4H6Z9wL9yOxZJMTLU+Au86XHxow==} + /@rollup/plugin-commonjs@24.1.0(rollup@3.21.5): + resolution: {integrity: sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.68.0||^3.0.0 @@ -8963,16 +8985,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.20.2) + '@rollup/pluginutils': 5.0.2(rollup@3.21.5) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.0.3 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.20.2 + rollup: 3.21.5 dev: true - /@rollup/plugin-inject@5.0.3(rollup@3.20.2): + /@rollup/plugin-inject@5.0.3(rollup@3.21.5): resolution: {integrity: sha512-411QlbL+z2yXpRWFXSmw/teQRMkXcAAC8aYTemc15gwJRpvEVDQwoe+N/HTFD8RFG8+88Bme9DK2V9CVm7hJdA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -8981,10 +9003,10 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.20.2) + '@rollup/pluginutils': 5.0.2(rollup@3.21.5) estree-walker: 2.0.2 magic-string: 0.27.0 - rollup: 3.20.2 + rollup: 3.21.5 dev: true /@rollup/plugin-json@4.1.0(rollup@2.79.1): @@ -8996,7 +9018,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-json@6.0.0(rollup@3.20.2): + /@rollup/plugin-json@6.0.0(rollup@3.21.5): resolution: {integrity: sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==} engines: {node: '>=14.0.0'} peerDependencies: @@ -9005,8 +9027,8 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.20.2) - rollup: 3.20.2 + '@rollup/pluginutils': 5.0.2(rollup@3.21.5) + rollup: 3.21.5 dev: true /@rollup/plugin-node-resolve@11.2.1(rollup@2.77.2): @@ -9057,7 +9079,7 @@ packages: rollup: 3.5.1 dev: true - /@rollup/plugin-node-resolve@15.0.2(rollup@3.20.2): + /@rollup/plugin-node-resolve@15.0.2(rollup@3.21.5): resolution: {integrity: sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -9066,13 +9088,13 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.20.2) + '@rollup/pluginutils': 5.0.2(rollup@3.21.5) '@types/resolve': 1.20.2 deepmerge: 4.2.2 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.1 - rollup: 3.20.2 + rollup: 3.21.5 dev: true /@rollup/plugin-replace@5.0.1(rollup@3.5.1): @@ -9088,7 +9110,7 @@ packages: magic-string: 0.26.7 rollup: 3.5.1 - /@rollup/plugin-replace@5.0.2(rollup@3.20.2): + /@rollup/plugin-replace@5.0.2(rollup@3.21.5): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -9097,9 +9119,9 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.20.2) + '@rollup/pluginutils': 5.0.2(rollup@3.21.5) magic-string: 0.27.0 - rollup: 3.20.2 + rollup: 3.21.5 dev: true /@rollup/plugin-terser@0.1.0(rollup@3.5.1): @@ -9115,7 +9137,7 @@ packages: terser: 5.16.1 dev: true - /@rollup/plugin-terser@0.4.1(rollup@3.20.2): + /@rollup/plugin-terser@0.4.1(rollup@3.21.5): resolution: {integrity: sha512-aKS32sw5a7hy+fEXVy+5T95aDIwjpGHCTv833HXVtyKMDoVS7pBr5K3L9hEQoNqbJFjfANPrNpIXlTQ7is00eA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -9124,13 +9146,13 @@ packages: rollup: optional: true dependencies: - rollup: 3.20.2 + rollup: 3.21.5 serialize-javascript: 6.0.0 smob: 0.0.6 terser: 5.16.1 dev: true - /@rollup/plugin-wasm@6.1.2(rollup@3.20.2): + /@rollup/plugin-wasm@6.1.2(rollup@3.21.5): resolution: {integrity: sha512-YdrQ7zfnZ54Y+6raCev3tR1PrhQGxYKSTajGylhyP0oBacouuNo6KcNCk+pYKw9M98jxRWLFFca/udi76IDXzg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -9139,7 +9161,7 @@ packages: rollup: optional: true dependencies: - rollup: 3.20.2 + rollup: 3.21.5 dev: true /@rollup/pluginutils@3.1.0(rollup@2.77.2): @@ -9174,7 +9196,7 @@ packages: picomatch: 2.3.1 dev: true - /@rollup/pluginutils@5.0.2(rollup@3.20.2): + /@rollup/pluginutils@5.0.2(rollup@3.21.5): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -9186,7 +9208,7 @@ packages: '@types/estree': 1.0.0 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.20.2 + rollup: 3.21.5 dev: true /@rollup/pluginutils@5.0.2(rollup@3.5.1): @@ -10159,7 +10181,7 @@ packages: functional-red-black-tree: 1.0.1 ignore: 5.2.0 regexpp: 3.2.0 - semver: 7.3.7 + semver: 7.5.0 tsutils: 3.21.0(typescript@4.8.4) typescript: 4.8.4 transitivePeerDependencies: @@ -10186,7 +10208,7 @@ packages: ignore: 5.2.4 natural-compare-lite: 1.4.0 regexpp: 3.2.0 - semver: 7.4.0 + semver: 7.5.0 tsutils: 3.21.0(typescript@4.6.2) typescript: 4.6.2 transitivePeerDependencies: @@ -10343,7 +10365,7 @@ packages: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.4.0 + semver: 7.5.0 tsutils: 3.21.0(typescript@4.6.2) typescript: 4.6.2 transitivePeerDependencies: @@ -10364,7 +10386,7 @@ packages: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.4.0 + semver: 7.5.0 tsutils: 3.21.0(typescript@4.8.4) typescript: 4.8.4 transitivePeerDependencies: @@ -10385,7 +10407,7 @@ packages: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.4.0 + semver: 7.5.0 tsutils: 3.21.0(typescript@4.6.2) typescript: 4.6.2 transitivePeerDependencies: @@ -10424,7 +10446,7 @@ packages: eslint: 8.36.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0(eslint@8.36.0) - semver: 7.4.0 + semver: 7.5.0 transitivePeerDependencies: - supports-color - typescript @@ -10934,7 +10956,7 @@ packages: /acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: - acorn: 8.8.1 + acorn: 8.8.2 acorn-walk: 8.2.0 dev: true @@ -10946,14 +10968,6 @@ packages: acorn: 8.8.2 dev: true - /acorn-jsx@5.3.2(acorn@8.8.1): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.8.1 - dev: true - /acorn-jsx@5.3.2(acorn@8.8.2): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -12184,6 +12198,13 @@ packages: resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} dev: true + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: true + /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -12194,16 +12215,19 @@ packages: engines: {node: '>= 0.8'} dev: true - /c12@1.2.0: - resolution: {integrity: sha512-CMznkE0LpNEuD8ILp5QvsQVP+YvcpJnrI/zFeFnosU2PyDtx1wT7tXfZ8S3Tl3l9MTTXbKeuhDYKwgvnAPOx3w==} + /c12@1.4.1: + resolution: {integrity: sha512-0x7pWfLZpZsgtyotXtuepJc0rZYE0Aw8PwNAXs0jSG9zq6Sl5xmbWnFqfmRY01ieZLHNbvneSFm9/x88CvzAuw==} dependencies: + chokidar: 3.5.3 defu: 6.1.2 dotenv: 16.0.3 giget: 1.1.2 jiti: 1.18.2 mlly: 1.2.0 + ohash: 1.1.2 pathe: 1.1.0 - pkg-types: 1.0.2 + perfect-debounce: 0.1.3 + pkg-types: 1.0.3 rc9: 2.1.0 transitivePeerDependencies: - supports-color @@ -12469,6 +12493,10 @@ packages: webpack: 5.76.1(@swc/core@1.3.35) dev: true + /citty@0.1.1: + resolution: {integrity: sha512-fL/EEp9TyXlNkgYFQYNqtMJhnAk2tAq8lCST7O5LPn1NrzWPsOKE5wafR7J+8W87oxqolpxNli+w7khq5WP7tg==} + dev: true + /cjs-module-lexer@0.6.0: resolution: {integrity: sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==} dev: true @@ -12786,8 +12814,8 @@ packages: - supports-color dev: true - /consola@3.0.2: - resolution: {integrity: sha512-o/Wau2FmZKiQgyp3c3IULgN6J5yc0lwYMnoyiZdEpdGxKGBtt2ACbkulBZ6BUsHy1HlSJqoP4YOyPIJLgRJyKQ==} + /consola@3.1.0: + resolution: {integrity: sha512-rrrJE6rP0qzl/Srg+C9x/AE5Kxfux7reVm1Wh0wCjuXvih6DqZgqDZe8auTD28fzJ9TF0mHlSDrPpWlujQRo1Q==} dev: true /console-control-strings@1.1.0: @@ -12814,6 +12842,10 @@ packages: resolution: {integrity: sha512-RyZrFi6PNpBFbIaQjXDlFIhFVqV42QeKSZX1yQIl6ihImq6vcHNGMtqQ/QzY3RMPuYSkvsRwtnt5M9NeYxKt0g==} dev: true + /cookie-es@1.0.0: + resolution: {integrity: sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==} + dev: true + /cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} dev: true @@ -13030,7 +13062,7 @@ packages: postcss-modules-scope: 3.0.0(postcss@8.4.23) postcss-modules-values: 4.0.0(postcss@8.4.23) postcss-value-parser: 4.2.0 - semver: 7.4.0 + semver: 7.5.0 webpack: 5.76.1(@swc/core@1.3.35) dev: true @@ -14838,34 +14870,34 @@ packages: esbuild-windows-64: 0.15.16 esbuild-windows-arm64: 0.15.16 - /esbuild@0.17.16: - resolution: {integrity: sha512-aeSuUKr9aFVY9Dc8ETVELGgkj4urg5isYx8pLf4wlGgB0vTFjxJQdHnNH6Shmx4vYYrOTLCHtRI5i1XZ9l2Zcg==} + /esbuild@0.17.18: + resolution: {integrity: sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.16 - '@esbuild/android-arm64': 0.17.16 - '@esbuild/android-x64': 0.17.16 - '@esbuild/darwin-arm64': 0.17.16 - '@esbuild/darwin-x64': 0.17.16 - '@esbuild/freebsd-arm64': 0.17.16 - '@esbuild/freebsd-x64': 0.17.16 - '@esbuild/linux-arm': 0.17.16 - '@esbuild/linux-arm64': 0.17.16 - '@esbuild/linux-ia32': 0.17.16 - '@esbuild/linux-loong64': 0.17.16 - '@esbuild/linux-mips64el': 0.17.16 - '@esbuild/linux-ppc64': 0.17.16 - '@esbuild/linux-riscv64': 0.17.16 - '@esbuild/linux-s390x': 0.17.16 - '@esbuild/linux-x64': 0.17.16 - '@esbuild/netbsd-x64': 0.17.16 - '@esbuild/openbsd-x64': 0.17.16 - '@esbuild/sunos-x64': 0.17.16 - '@esbuild/win32-arm64': 0.17.16 - '@esbuild/win32-ia32': 0.17.16 - '@esbuild/win32-x64': 0.17.16 + '@esbuild/android-arm': 0.17.18 + '@esbuild/android-arm64': 0.17.18 + '@esbuild/android-x64': 0.17.18 + '@esbuild/darwin-arm64': 0.17.18 + '@esbuild/darwin-x64': 0.17.18 + '@esbuild/freebsd-arm64': 0.17.18 + '@esbuild/freebsd-x64': 0.17.18 + '@esbuild/linux-arm': 0.17.18 + '@esbuild/linux-arm64': 0.17.18 + '@esbuild/linux-ia32': 0.17.18 + '@esbuild/linux-loong64': 0.17.18 + '@esbuild/linux-mips64el': 0.17.18 + '@esbuild/linux-ppc64': 0.17.18 + '@esbuild/linux-riscv64': 0.17.18 + '@esbuild/linux-s390x': 0.17.18 + '@esbuild/linux-x64': 0.17.18 + '@esbuild/netbsd-x64': 0.17.18 + '@esbuild/openbsd-x64': 0.17.18 + '@esbuild/sunos-x64': 0.17.18 + '@esbuild/win32-arm64': 0.17.18 + '@esbuild/win32-ia32': 0.17.18 + '@esbuild/win32-x64': 0.17.18 dev: true /esbuild@0.9.7: @@ -15206,8 +15238,8 @@ packages: resolution: {integrity: sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.8.1 - acorn-jsx: 5.3.2(acorn@8.8.1) + acorn: 8.8.2 + acorn-jsx: 5.3.2(acorn@8.8.2) eslint-visitor-keys: 3.3.0 dev: true @@ -16205,8 +16237,8 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.11 - ignore: 5.2.0 + fast-glob: 3.2.12 + ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -16223,8 +16255,8 @@ packages: slash: 4.0.0 dev: true - /globby@13.1.3: - resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==} + /globby@13.1.4: + resolution: {integrity: sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 @@ -16300,6 +16332,18 @@ packages: uncrypto: 0.1.2 dev: true + /h3@1.6.5: + resolution: {integrity: sha512-A0r2LCDzeavSfcAbJpMwHXLcSN0H3FpEZtYigbz4IYun0fOE8r6vy3galwubAnmc6gXVob4261zXQsu3sZayzg==} + dependencies: + cookie-es: 1.0.0 + defu: 6.1.2 + destr: 1.2.2 + iron-webcrypto: 0.7.0 + radix3: 1.0.1 + ufo: 1.1.2 + uncrypto: 0.1.2 + dev: true + /handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} dev: true @@ -16899,8 +16943,8 @@ packages: dependencies: loose-envify: 1.4.0 - /ioredis@5.3.1: - resolution: {integrity: sha512-C+IBcMysM6v52pTLItYMeV4Hz7uriGtoJdz7SSBDX6u+zwSYGirLdQh3L7t/OItWITcw3gTFMjJReYUwS4zihg==} + /ioredis@5.3.2: + resolution: {integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==} engines: {node: '>=12.22.0'} dependencies: '@ioredis/commands': 1.2.0 @@ -16943,6 +16987,10 @@ packages: resolution: {integrity: sha512-WYgEQttulX/+JTv1BTJFYY3OsAb+ZnCuA53IjppZMyiRsVdGeEuZ/k4fJrg77Rzn0pp9/PgWtXUF+5HndDA5SQ==} dev: true + /iron-webcrypto@0.7.0: + resolution: {integrity: sha512-WkX32iTcwd79ZsWRPP5wq1Jq6XXfPwO783ZiUBY8uMw4/AByx5WvBmxvYGnpVt6AOVJ0F41Qo420r8lIneT9Wg==} + dev: true + /is-accessor-descriptor@0.1.6: resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} engines: {node: '>=0.10.0'} @@ -17940,7 +17988,7 @@ packages: jest-resolve: 26.6.2 natural-compare: 1.4.0 pretty-format: 26.6.2 - semver: 7.4.0 + semver: 7.5.0 transitivePeerDependencies: - supports-color dev: true @@ -18665,7 +18713,7 @@ packages: http-shutdown: 1.2.2 ip-regex: 5.0.0 node-forge: 1.3.1 - ufo: 1.1.1 + ufo: 1.1.2 dev: true /listr2@5.0.8: @@ -18896,6 +18944,11 @@ packages: engines: {node: '>=12'} dev: true + /lru-cache@9.1.1: + resolution: {integrity: sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==} + engines: {node: 14 || >=16.14} + dev: true + /lz-string@1.4.4: resolution: {integrity: sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==} hasBin: true @@ -19641,8 +19694,8 @@ packages: dependencies: acorn: 8.8.2 pathe: 1.1.0 - pkg-types: 1.0.2 - ufo: 1.1.1 + pkg-types: 1.0.3 + ufo: 1.1.2 dev: true /moment@2.29.4: @@ -19878,39 +19931,40 @@ packages: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} dev: true - /nitropack@2.3.3: - resolution: {integrity: sha512-1g/4zdwWo+tWSvno57rhRXeGk6jNbG5W1yRNtOywInT1nyoEG1ksOwQ3W3JHGB2E1GNjZwAVi611UVOVL+JgYw==} - engines: {node: ^14.16.0 || ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0} + /nitropack@2.4.0: + resolution: {integrity: sha512-Gk7ujq8s4oT/6V0EO8NzeEfGz66EupWGrbD8Dhxm0LOkNcBl7y6iKk3CCQTSvcr9fpBdTifLsaUdRjQxohiGpw==} + engines: {node: ^14.16.0 || ^16.11.0 || >=17.0.0} hasBin: true dependencies: '@cloudflare/kv-asset-handler': 0.3.0 '@netlify/functions': 1.4.0 - '@rollup/plugin-alias': 5.0.0(rollup@3.20.2) - '@rollup/plugin-commonjs': 24.0.1(rollup@3.20.2) - '@rollup/plugin-inject': 5.0.3(rollup@3.20.2) - '@rollup/plugin-json': 6.0.0(rollup@3.20.2) - '@rollup/plugin-node-resolve': 15.0.2(rollup@3.20.2) - '@rollup/plugin-replace': 5.0.2(rollup@3.20.2) - '@rollup/plugin-terser': 0.4.1(rollup@3.20.2) - '@rollup/plugin-wasm': 6.1.2(rollup@3.20.2) - '@rollup/pluginutils': 5.0.2(rollup@3.20.2) + '@rollup/plugin-alias': 5.0.0(rollup@3.21.5) + '@rollup/plugin-commonjs': 24.1.0(rollup@3.21.5) + '@rollup/plugin-inject': 5.0.3(rollup@3.21.5) + '@rollup/plugin-json': 6.0.0(rollup@3.21.5) + '@rollup/plugin-node-resolve': 15.0.2(rollup@3.21.5) + '@rollup/plugin-replace': 5.0.2(rollup@3.21.5) + '@rollup/plugin-terser': 0.4.1(rollup@3.21.5) + '@rollup/plugin-wasm': 6.1.2(rollup@3.21.5) + '@rollup/pluginutils': 5.0.2(rollup@3.21.5) '@vercel/nft': 0.22.6 archiver: 5.3.1 - c12: 1.2.0 + c12: 1.4.1 chalk: 5.2.0 chokidar: 3.5.3 - consola: 3.0.2 - cookie-es: 0.5.0 + citty: 0.1.1 + consola: 3.1.0 + cookie-es: 1.0.0 defu: 6.1.2 destr: 1.2.2 dot-prop: 7.2.0 - esbuild: 0.17.16 + esbuild: 0.17.18 escape-string-regexp: 5.0.0 etag: 1.8.1 fs-extra: 11.1.1 - globby: 13.1.3 + globby: 13.1.4 gzip-size: 7.0.0 - h3: 1.6.4 + h3: 1.6.5 hookable: 5.5.3 http-proxy: 1.18.1 is-primitive: 3.0.1 @@ -19923,24 +19977,25 @@ packages: mri: 1.2.0 node-fetch-native: 1.1.0 ofetch: 1.0.1 - ohash: 1.0.0 + ohash: 1.1.2 + openapi-typescript: 6.2.4 pathe: 1.1.0 - perfect-debounce: 0.1.3 - pkg-types: 1.0.2 + perfect-debounce: 1.0.0 + pkg-types: 1.0.3 pretty-bytes: 6.1.0 radix3: 1.0.1 - rollup: 3.20.2 - rollup-plugin-visualizer: 5.9.0(rollup@3.20.2) + rollup: 3.21.5 + rollup-plugin-visualizer: 5.9.0(rollup@3.21.5) scule: 1.0.0 - semver: 7.4.0 + semver: 7.5.0 serve-placeholder: 2.0.1 serve-static: 1.15.0 source-map-support: 0.5.21 - std-env: 3.3.2 - ufo: 1.1.1 - unenv: 1.3.1 - unimport: 3.0.6(rollup@3.20.2) - unstorage: 1.4.1 + std-env: 3.3.3 + ufo: 1.1.2 + unenv: 1.4.1 + unimport: 3.0.6(rollup@3.21.5) + unstorage: 1.6.0 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -19949,6 +20004,8 @@ packages: - '@azure/keyvault-secrets' - '@azure/storage-blob' - '@planetscale/database' + - '@upstash/redis' + - '@vercel/kv' - debug - encoding - supports-color @@ -20035,7 +20092,7 @@ packages: nopt: 5.0.0 npmlog: 6.0.2 rimraf: 3.0.2 - semver: 7.4.0 + semver: 7.5.0 tar: 6.1.13 which: 2.0.2 transitivePeerDependencies: @@ -20053,7 +20110,7 @@ packages: dependencies: growly: 1.3.0 is-wsl: 2.2.0 - semver: 7.4.0 + semver: 7.5.0 shellwords: 0.1.1 uuid: 8.3.2 which: 2.0.2 @@ -20112,7 +20169,7 @@ packages: resolution: {integrity: sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==} engines: {node: '>=10'} dependencies: - semver: 7.4.0 + semver: 7.5.0 dev: true /npm-normalize-package-bin@1.0.1: @@ -20124,7 +20181,7 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 4.1.0 - semver: 7.4.0 + semver: 7.5.0 validate-npm-package-name: 3.0.0 dev: true @@ -20145,7 +20202,7 @@ packages: npm-install-checks: 4.0.0 npm-normalize-package-bin: 1.0.1 npm-package-arg: 8.1.5 - semver: 7.4.0 + semver: 7.5.0 dev: true /npm-registry-fetch@12.0.2: @@ -20427,11 +20484,11 @@ packages: dependencies: destr: 1.2.2 node-fetch-native: 1.1.0 - ufo: 1.1.1 + ufo: 1.1.2 dev: true - /ohash@1.0.0: - resolution: {integrity: sha512-kxSyzq6tt+6EE/xCnD1XaFhCCjUNUaz3X30rJp6mnjGLXAAvuPFqohMdv0aScWzajR45C29HyBaXZ8jXBwnh9A==} + /ohash@1.1.2: + resolution: {integrity: sha512-9CIOSq5945rI045GFtcO3uudyOkYVY1nyfFxVQp+9BRgslr8jPNiSSrsFGg/BNTUFOLqx0P5tng6G32brIPw0w==} dev: true /omggif@1.0.10: @@ -20498,6 +20555,18 @@ packages: is-docker: 2.2.1 is-wsl: 2.2.0 + /openapi-typescript@6.2.4: + resolution: {integrity: sha512-P/VK7oJ3TnIS67o1UzuS1pMnry4mzNzeQG0ZjLdPGT04mN9FeeTgHw1bN6MiANFN0tO6BcRavSL5tUFAh6iiwg==} + hasBin: true + dependencies: + ansi-colors: 4.1.3 + fast-glob: 3.2.12 + js-yaml: 4.1.0 + supports-color: 9.3.1 + undici: 5.22.0 + yargs-parser: 21.1.1 + dev: true + /optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} @@ -20796,6 +20865,10 @@ packages: resolution: {integrity: sha512-NOT9AcKiDGpnV/HBhI22Str++XWcErO/bALvHCuhv33owZW/CjH8KAFLZDCmu3727sihe0wTxpDhyGc6M8qacQ==} dev: true + /perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + dev: true + /performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true @@ -20881,8 +20954,8 @@ packages: find-up: 5.0.0 dev: false - /pkg-types@1.0.2: - resolution: {integrity: sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==} + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: jsonc-parser: 3.2.0 mlly: 1.2.0 @@ -21293,7 +21366,7 @@ packages: cosmiconfig: 7.0.1 klona: 2.0.6 postcss: 8.4.5 - semver: 7.4.0 + semver: 7.5.0 webpack: 5.76.1(@swc/core@1.3.35) dev: true @@ -22887,7 +22960,7 @@ packages: yargs: 17.6.2 dev: false - /rollup-plugin-visualizer@5.9.0(rollup@3.20.2): + /rollup-plugin-visualizer@5.9.0(rollup@3.21.5): resolution: {integrity: sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==} engines: {node: '>=14'} hasBin: true @@ -22899,7 +22972,7 @@ packages: dependencies: open: 8.4.0 picomatch: 2.3.1 - rollup: 3.20.2 + rollup: 3.21.5 source-map: 0.7.4 yargs: 17.6.2 dev: true @@ -22954,16 +23027,8 @@ packages: fsevents: 2.3.2 dev: true - /rollup@3.20.2: - resolution: {integrity: sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /rollup@3.21.3: - resolution: {integrity: sha512-VnPfEG51nIv2xPLnZaekkuN06q9ZbnyDcLkaBdJa/W7UddyhOfMP2yOPziYQfeY7k++fZM8FdQIummFN5y14kA==} + /rollup@3.21.5: + resolution: {integrity: sha512-a4NTKS4u9PusbUJcfF4IMxuqjFzjm6ifj76P54a7cKnvVzJaG12BLVR+hgU2YDGHzyMMQNxLAZWuALsn8q2oQg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -23252,16 +23317,8 @@ packages: lru-cache: 6.0.0 dev: true - /semver@7.3.7: - resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /semver@7.4.0: - resolution: {integrity: sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==} + /semver@7.5.0: + resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} engines: {node: '>=10'} hasBin: true dependencies: @@ -23372,7 +23429,7 @@ packages: detect-libc: 1.0.3 node-addon-api: 3.2.1 prebuild-install: 6.1.4 - semver: 7.4.0 + semver: 7.5.0 simple-get: 3.1.1 tar-fs: 2.1.1 tunnel-agent: 0.6.0 @@ -23453,6 +23510,15 @@ packages: simple-concat: 1.0.1 dev: false + /simple-git@3.18.0: + resolution: {integrity: sha512-Yt0GJ5aYrpPci3JyrYcsPz8Xc05Hi4JPSOb+Sgn/BmPX35fn/6Fp9Mef8eMBCrL2siY5w4j49TA5Q+bxPpri1Q==} + dependencies: + '@kwsites/file-exists': 1.1.1 + '@kwsites/promise-deferred': 1.1.1 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + /simple-string-table@1.0.0: resolution: {integrity: sha512-iflPccjsYtTN+Rqj35v/G+i9A04g2HgOPkPp/B5evznUD4VZ4egi/qcFwrUHgGZwJMZz+Aq5elow4Qqsodfflw==} @@ -23893,8 +23959,8 @@ packages: engines: {node: '>= 0.8'} dev: true - /std-env@3.3.2: - resolution: {integrity: sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==} + /std-env@3.3.3: + resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==} dev: true /streamroller@3.1.2: @@ -23908,6 +23974,11 @@ packages: - supports-color dev: true + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: true + /string-argv@0.3.1: resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} engines: {node: '>=0.6.19'} @@ -24066,13 +24137,13 @@ packages: /strip-literal@0.4.1: resolution: {integrity: sha512-z+F/xmDM8GOdvA5UoZXFxEnxdvMOZ+XEBIwjfLfc8hMSuHpGxjXAUCfuEo+t1GOHSb8+qgI/IBRpxXVMaABYWA==} dependencies: - acorn: 8.8.0 + acorn: 8.8.2 dev: true /strip-literal@0.4.2: resolution: {integrity: sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==} dependencies: - acorn: 8.8.0 + acorn: 8.8.2 dev: true /strip-literal@1.0.1: @@ -24181,6 +24252,11 @@ packages: has-flag: 4.0.0 dev: true + /supports-color@9.3.1: + resolution: {integrity: sha512-knBY82pjmnIzK3NifMo3RxEIRD9E0kIzV4BKcyTZ9+9kWgLMxd4PrsTSMoFQUabgRBbF8KOLRDCyKgNV+iK44Q==} + engines: {node: '>=12'} + dev: true + /supports-hyperlinks@2.2.0: resolution: {integrity: sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==} engines: {node: '>=8'} @@ -24960,6 +25036,10 @@ packages: resolution: {integrity: sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==} dev: true + /ufo@1.1.2: + resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==} + dev: true + /uglify-es@3.3.9: resolution: {integrity: sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==} engines: {node: '>=0.8.0'} @@ -24989,8 +25069,15 @@ packages: resolution: {integrity: sha512-kuZwRKV615lEw/Xx3Iz56FKk3nOeOVGaVmw0eg+x4Mne28lCotNFbBhDW7dEBCBKyKbRQiCadEZeNAFPVC5cgw==} dev: true - /unenv@1.3.1: - resolution: {integrity: sha512-4hTMiJf1TgQNnOsZxaI6XpCpVvOUNYLW3NxEkjdzXf+Dukys4b01AShapcXzKzvgoyoWByP3MLbg/CkzcKx+GA==} + /undici@5.22.0: + resolution: {integrity: sha512-fR9RXCc+6Dxav4P9VV/sp5w3eFiSdOjJYsbtWfd4s5L5C4ogyuVpdKIVHeW0vV1MloM65/f7W45nR9ZxwVdyiA==} + engines: {node: '>=14.0'} + dependencies: + busboy: 1.6.0 + dev: true + + /unenv@1.4.1: + resolution: {integrity: sha512-DuFZUDfaBC92zy3fW7QqKTLdYJIPkpwTN0yGZtaxnpOI7HvIfl41NYh9NVv4zcqhT8CGXJ1ELpvO2tecaB6NfA==} dependencies: defu: 6.1.2 mime: 3.0.0 @@ -25040,17 +25127,17 @@ packages: vfile: 4.2.1 dev: false - /unimport@3.0.6(rollup@3.20.2): + /unimport@3.0.6(rollup@3.21.5): resolution: {integrity: sha512-GYxGJ1Bri1oqx8VFDjdgooGzeK7jBk3bvhXmamTIpu3nONOcUMGwZbX7X0L5RA7OWMXpR4vzpSQP7pXUzJg1/Q==} dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.20.2) + '@rollup/pluginutils': 5.0.2(rollup@3.21.5) escape-string-regexp: 5.0.0 fast-glob: 3.2.12 local-pkg: 0.4.3 magic-string: 0.30.0 mlly: 1.2.0 pathe: 1.1.0 - pkg-types: 1.0.2 + pkg-types: 1.0.3 scule: 1.0.0 strip-literal: 1.0.1 unplugin: 1.3.1 @@ -25191,16 +25278,18 @@ packages: isobject: 3.0.1 dev: true - /unstorage@1.4.1: - resolution: {integrity: sha512-ETLczXBd7sjJZuA3oIzaYwhMShiGlo7cGx01Ww23x2ehlk6WiRR1YsmjDBipoiGorq8pX1RRoMQFp/n3me7QOg==} + /unstorage@1.6.0: + resolution: {integrity: sha512-lWRPiW7WlIybZL96xt7V07P5y129CAc+sveSTR9SA/OeduOisOH7zWFNj6WqULLPetA5qP2PeTjNjpTUqyLh0w==} peerDependencies: - '@azure/app-configuration': ^1.3.1 + '@azure/app-configuration': ^1.4.1 '@azure/cosmos': ^3.17.3 - '@azure/data-tables': ^13.2.1 - '@azure/identity': ^3.1.3 - '@azure/keyvault-secrets': ^4.6.0 - '@azure/storage-blob': ^12.13.0 - '@planetscale/database': ^1.6.0 + '@azure/data-tables': ^13.2.2 + '@azure/identity': ^3.1.4 + '@azure/keyvault-secrets': ^4.7.0 + '@azure/storage-blob': ^12.14.0 + '@planetscale/database': ^1.7.0 + '@upstash/redis': ^1.20.5 + '@vercel/kv': ^0.1.1 peerDependenciesMeta: '@azure/app-configuration': optional: true @@ -25216,18 +25305,22 @@ packages: optional: true '@planetscale/database': optional: true + '@upstash/redis': + optional: true + '@vercel/kv': + optional: true dependencies: anymatch: 3.1.3 chokidar: 3.5.3 destr: 1.2.2 - h3: 1.6.4 - ioredis: 5.3.1 + h3: 1.6.5 + ioredis: 5.3.2 listhen: 1.0.4 - lru-cache: 7.18.3 + lru-cache: 9.1.1 mri: 1.2.0 node-fetch-native: 1.1.0 ofetch: 1.0.1 - ufo: 1.1.1 + ufo: 1.1.2 transitivePeerDependencies: - supports-color dev: true @@ -25553,9 +25646,9 @@ packages: terser: optional: true dependencies: - esbuild: 0.17.16 + esbuild: 0.17.18 postcss: 8.4.23 - rollup: 3.21.3 + rollup: 3.21.5 optionalDependencies: fsevents: 2.3.2 dev: true diff --git a/scripts/writeReleaseMetadata.mjs b/scripts/writeReleaseMetadata.mjs new file mode 100644 index 000000000..c10d8d47c --- /dev/null +++ b/scripts/writeReleaseMetadata.mjs @@ -0,0 +1,94 @@ +import {CleanOptions, simpleGit} from 'simple-git'; +import semver from 'semver'; +import fs from 'fs'; +import path from 'path'; +import {readSvgDirectory} from './helpers.mjs'; + +const currentDir = process.cwd(); +const ICONS_DIR = path.resolve(currentDir, '../icons'); +const iconJsonFiles = readSvgDirectory(ICONS_DIR, '.json'); + +const location = path.resolve(currentDir, '.vitepress/data', 'releaseMetaData.json'); + +if (fs.existsSync(location)) { + fs.unlinkSync(location); +} + +export const releaseMin = (a, b) => { + if (!a) return b; + if (!b) return a; + return semver.gt(a.version, b.version) ? b : a; +} + +export const releaseMax = (a, b) => { + if (!a) return b; + if (!b) return a; + return semver.gt(a.version, b.version) ? a : b; +} + +export const updateReleaseMetadataWithCommit = (metadata, date, release) => { + metadata = metadata || {}; + metadata.createdRelease = releaseMin(metadata.createdRelease, release); + metadata.changedRelease = releaseMax(metadata.changedRelease, release); +} + +export const fetchAllReleases = async () => { + return (await Promise.all((await simpleGit().raw('show-ref', '--tags', '-d')).trim().split(/\n/) + .map(async (line) => { + const [commit, ref] = line.split(/ /); + const version = semver.coerce(ref.replace('refs/tags/', '')).version; + const date = (await simpleGit().show(['-s', '--format=%cI', commit])).trim(); + return {version, date}; + }))).filter(({version}) => semver.valid(version)) +} + +simpleGit().clean(CleanOptions.FORCE); + +const findRelease = (date, releases) => { + let closestRelease = null; + for (const release of releases) { + if (release.date >= date && (closestRelease === null || release.date < closestRelease.date)) { + closestRelease = release; + } + } + return closestRelease; +} + +const fetchCommits = async (name) => { + const file = `../icons/${name}.svg`; + const {all: commits} = await simpleGit().log(['--reverse', '--follow', '--', file]); + return commits; +} + +export const getReleaseMetadata = async (name, aliases, releases) => { + const metadata = {name}; + for (let alias of [name, ...(aliases ?? [])]) { + const commits = await fetchCommits(alias); + for (const commit of commits) { + const date = new Date(commit.date).toISOString(); + const release = findRelease(date, releases) + updateReleaseMetadataWithCommit(metadata, date, release); + } + } + return metadata; +}; + + +const releases = await fetchAllReleases(); +const releaseMetaData = (await Promise.all(iconJsonFiles.map(async (iconJsonFile) => { + const iconName = path.basename(iconJsonFile, '.json'); + const aliases = JSON.parse(fs.readFileSync(path.join(ICONS_DIR, iconJsonFile))).aliases; + return await getReleaseMetadata(iconName, aliases, releases); +}))).reduce((acc, {name, ...rest}) => { + acc[name] = rest; + return acc; +}, {}) + +fs.promises + .writeFile(location, JSON.stringify(releaseMetaData, null, 2), 'utf-8') + .then(() => { + console.log('Successfully written icon release meta cache file'); + }) + .catch((error) => { + throw new Error(`Something went wrong generating icon release meta cache file,\n ${error}`); + });