diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 258f58202..7716d4fa8 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -10,7 +10,7 @@ repos: - id: end-of-file-fixer - id: trailing-whitespace - repo: https://github.com/golangci/golangci-lint - rev: v1.57.1 + rev: v1.57.2 hooks: - id: golangci-lint - repo: https://github.com/igorshubovych/markdownlint-cli diff --git a/.woodpecker/docker.yaml b/.woodpecker/docker.yaml index d7807c14c..d1a5eea94 100644 --- a/.woodpecker/docker.yaml +++ b/.woodpecker/docker.yaml @@ -3,7 +3,7 @@ variables: - &node_image 'docker.io/node:21-alpine' - &xgo_image 'docker.io/techknowlogick/xgo:go-1.22.1' - &xgo_version 'go-1.21.2' - - &buildx_plugin 'docker.io/woodpeckerci/plugin-docker-buildx:3.2.0' + - &buildx_plugin 'docker.io/woodpeckerci/plugin-docker-buildx:3.2.1' - &platforms_release 'linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/386,linux/amd64,linux/ppc64le,linux/riscv64,linux/s390x,freebsd/arm64,freebsd/amd64,openbsd/arm64,openbsd/amd64' - &platforms_server 'linux/arm/v7,linux/arm64/v8,linux/amd64,linux/ppc64le,linux/riscv64' - &platforms_preview 'linux/amd64' diff --git a/cmd/server/flags.go b/cmd/server/flags.go index 152070ba5..dd7eefe52 100644 --- a/cmd/server/flags.go +++ b/cmd/server/flags.go @@ -340,6 +340,12 @@ var flags = append([]cli.Flag{ Usage: "github pull requests use merge ref", Value: true, }, + &cli.BoolFlag{ + EnvVars: []string{"WOODPECKER_GITHUB_PUBLIC_ONLY"}, + Name: "github-public-only", + Usage: "github tokens should only get access to public repos", + Value: false, + }, &cli.BoolFlag{ EnvVars: []string{"WOODPECKER_GITHUB_SKIP_VERIFY"}, Name: "github-skip-verify", diff --git a/cmd/server/setup.go b/cmd/server/setup.go index fa3bba2d8..be63d5c32 100644 --- a/cmd/server/setup.go +++ b/cmd/server/setup.go @@ -200,6 +200,7 @@ func setupGitHub(c *cli.Context) (forge.Forge, error) { Secret: c.String("github-secret"), SkipVerify: c.Bool("github-skip-verify"), MergeRef: c.Bool("github-merge-ref"), + OnlyPublic: c.Bool("github-public-only"), } log.Trace().Msgf("forge (github) opts: %#v", opts) return github.New(opts) diff --git a/docs/docs/30-administration/11-forges/20-github.md b/docs/docs/30-administration/11-forges/20-github.md index f3656f8fd..338e555fd 100644 --- a/docs/docs/30-administration/11-forges/20-github.md +++ b/docs/docs/30-administration/11-forges/20-github.md @@ -81,3 +81,9 @@ Read the value for `WOODPECKER_GITHUB_SECRET` from the specified filepath. > Default: `false` Configure if SSL verification should be skipped. + +### `WOODPECKER_GITHUB_PUBLIC_ONLY` + +> Default: `false` + +Configures the GitHub OAuth client to only obtain a token that can manage public repositories. diff --git a/server/forge/github/github.go b/server/forge/github/github.go index 278b91401..d48fec314 100644 --- a/server/forge/github/github.go +++ b/server/forge/github/github.go @@ -51,6 +51,7 @@ type Opts struct { Secret string // GitHub oauth client secret. SkipVerify bool // Skip ssl verification. MergeRef bool // Clone pull requests using the merge ref. + OnlyPublic bool // Only obtain OAuth tokens with access to public repos. } // New returns a Forge implementation that integrates with a GitHub Cloud or @@ -63,6 +64,7 @@ func New(opts Opts) (forge.Forge, error) { Secret: opts.Secret, SkipVerify: opts.SkipVerify, MergeRef: opts.MergeRef, + OnlyPublic: opts.OnlyPublic, } if opts.URL != defaultURL { r.url = strings.TrimSuffix(opts.URL, "/") @@ -79,6 +81,7 @@ type client struct { Secret string SkipVerify bool MergeRef bool + OnlyPublic bool } // Name returns the string name of this driver @@ -405,10 +408,17 @@ func (c *client) newContext(ctx context.Context) context.Context { // helper function to return the GitHub oauth2 config func (c *client) newConfig() *oauth2.Config { + scopes := []string{"user:email", "read:org"} + if c.OnlyPublic { + scopes = append(scopes, []string{"admin:repo_hook", "repo:status"}...) + } else { + scopes = append(scopes, "repo") + } + return &oauth2.Config{ ClientID: c.Client, ClientSecret: c.Secret, - Scopes: []string{"repo", "user:email", "read:org"}, + Scopes: scopes, Endpoint: oauth2.Endpoint{ AuthURL: fmt.Sprintf("%s/login/oauth/authorize", c.url), TokenURL: fmt.Sprintf("%s/login/oauth/access_token", c.url), diff --git a/web/package.json b/web/package.json index fad13f847..a86646bda 100644 --- a/web/package.json +++ b/web/package.json @@ -17,7 +17,7 @@ "test": "echo 'No tests configured' && exit 0" }, "dependencies": { - "@intlify/unplugin-vue-i18n": "^3.0.0", + "@intlify/unplugin-vue-i18n": "^4.0.0", "@kyvg/vue3-notification": "^3.1.3", "@vueuse/core": "^10.7.2", "ansi_up": "^6.0.2", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index ee0eda6ba..b4a4f9ed3 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -9,8 +9,8 @@ overrides: dependencies: '@intlify/unplugin-vue-i18n': - specifier: ^3.0.0 - version: 3.0.1(vue-i18n@9.10.2) + specifier: ^4.0.0 + version: 4.0.0(vue-i18n@9.10.2) '@kyvg/vue3-notification': specifier: ^3.1.3 version: 3.2.1(vue@3.4.21) @@ -63,7 +63,7 @@ devDependencies: version: 4.17.0 '@types/node': specifier: ^20.11.5 - version: 20.11.30 + version: 20.12.2 '@types/node-emoji': specifier: ^2.0.0 version: 2.1.0 @@ -81,7 +81,7 @@ devDependencies: version: 7.4.0(eslint@8.57.0)(typescript@5.4.3) '@vitejs/plugin-vue': specifier: ^5.0.3 - version: 5.0.4(vite@5.2.6)(vue@3.4.21) + version: 5.0.4(vite@5.2.7)(vue@3.4.21) '@vue/compiler-sfc': specifier: ^3.4.15 version: 3.4.21 @@ -135,13 +135,13 @@ devDependencies: version: 0.26.0(vue@3.4.21) vite: specifier: ^5.0.12 - version: 5.2.6(@types/node@20.11.30) + version: 5.2.7(@types/node@20.12.2) vite-plugin-prismjs: specifier: ^0.0.11 version: 0.0.11(prismjs@1.29.0) vite-plugin-windicss: specifier: ^1.9.3 - version: 1.9.3(vite@5.2.6) + version: 1.9.3(vite@5.2.7) vite-svg-loader: specifier: ^5.1.0 version: 5.1.0(vue@3.4.21) @@ -664,8 +664,8 @@ packages: - supports-color dev: true - /@intlify/bundle-utils@7.5.1(vue-i18n@9.10.2): - resolution: {integrity: sha512-UovJl10oBIlmYEcWw+VIHdKY5Uv5sdPG0b/b6bOYxGLln3UwB75+2dlc0F3Fsa0RhoznQ5Rp589/BZpABpE4Xw==} + /@intlify/bundle-utils@8.0.0(vue-i18n@9.10.2): + resolution: {integrity: sha512-1B++zykRnMwQ+20SpsZI1JCnV/YJt9Oq7AGlEurzkWJOFtFAVqaGc/oV36PBRYeiKnTbY9VYfjBimr2Vt42wLQ==} engines: {node: '>= 14.16'} peerDependencies: petite-vue-i18n: '*' @@ -682,7 +682,6 @@ packages: escodegen: 2.1.0 estree-walker: 2.0.2 jsonc-eslint-parser: 2.4.0 - magic-string: 0.30.8 mlly: 1.6.1 source-map-js: 1.2.0 vue-i18n: 9.10.2(vue@3.4.21) @@ -710,8 +709,8 @@ packages: engines: {node: '>= 16'} dev: false - /@intlify/unplugin-vue-i18n@3.0.1(vue-i18n@9.10.2): - resolution: {integrity: sha512-q1zJhA/WpoLBzAAuKA5/AEp0e+bMOM10ll/HxT4g1VAw/9JhC4TTobP9KobKH90JMZ4U2daLFlYQfKNd29lpqw==} + /@intlify/unplugin-vue-i18n@4.0.0(vue-i18n@9.10.2): + resolution: {integrity: sha512-q2Mhqa/mLi0tulfLFO4fMXXvEbkSZpI5yGhNNsLTNJJ41icEGUuyDe+j5zRZIKSkOJRgX6YbCyibTDJdRsukmw==} engines: {node: '>= 14.16'} peerDependencies: petite-vue-i18n: '*' @@ -725,7 +724,7 @@ packages: vue-i18n-bridge: optional: true dependencies: - '@intlify/bundle-utils': 7.5.1(vue-i18n@9.10.2) + '@intlify/bundle-utils': 8.0.0(vue-i18n@9.10.2) '@intlify/shared': 9.10.2 '@rollup/pluginutils': 5.1.0 '@vue/compiler-sfc': 3.4.21 @@ -816,104 +815,120 @@ packages: estree-walker: 2.0.2 picomatch: 2.3.1 - /@rollup/rollup-android-arm-eabi@4.13.0: - resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==} + /@rollup/rollup-android-arm-eabi@4.13.2: + resolution: {integrity: sha512-3XFIDKWMFZrMnao1mJhnOT1h2g0169Os848NhhmGweEcfJ4rCi+3yMCOLG4zA61rbJdkcrM/DjVZm9Hg5p5w7g==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.13.0: - resolution: {integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==} + /@rollup/rollup-android-arm64@4.13.2: + resolution: {integrity: sha512-GdxxXbAuM7Y/YQM9/TwwP+L0omeE/lJAR1J+olu36c3LqqZEBdsIWeQ91KBe6nxwOnb06Xh7JS2U5ooWU5/LgQ==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.13.0: - resolution: {integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==} + /@rollup/rollup-darwin-arm64@4.13.2: + resolution: {integrity: sha512-mCMlpzlBgOTdaFs83I4XRr8wNPveJiJX1RLfv4hggyIVhfB5mJfN4P8Z6yKh+oE4Luz+qq1P3kVdWrCKcMYrrA==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.13.0: - resolution: {integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==} + /@rollup/rollup-darwin-x64@4.13.2: + resolution: {integrity: sha512-yUoEvnH0FBef/NbB1u6d3HNGyruAKnN74LrPAfDQL3O32e3k3OSfLrPgSJmgb3PJrBZWfPyt6m4ZhAFa2nZp2A==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.13.0: - resolution: {integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==} + /@rollup/rollup-linux-arm-gnueabihf@4.13.2: + resolution: {integrity: sha512-GYbLs5ErswU/Xs7aGXqzc3RrdEjKdmoCrgzhJWyFL0r5fL3qd1NPcDKDowDnmcoSiGJeU68/Vy+OMUluRxPiLQ==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.13.0: - resolution: {integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==} + /@rollup/rollup-linux-arm64-gnu@4.13.2: + resolution: {integrity: sha512-L1+D8/wqGnKQIlh4Zre9i4R4b4noxzH5DDciyahX4oOz62CphY7WDWqJoQ66zNR4oScLNOqQJfNSIAe/6TPUmQ==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.13.0: - resolution: {integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==} + /@rollup/rollup-linux-arm64-musl@4.13.2: + resolution: {integrity: sha512-tK5eoKFkXdz6vjfkSTCupUzCo40xueTOiOO6PeEIadlNBkadH1wNOH8ILCPIl8by/Gmb5AGAeQOFeLev7iZDOA==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.13.0: - resolution: {integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==} + /@rollup/rollup-linux-powerpc64le-gnu@4.13.2: + resolution: {integrity: sha512-zvXvAUGGEYi6tYhcDmb9wlOckVbuD+7z3mzInCSTACJ4DQrdSLPNUeDIcAQW39M3q6PDquqLWu7pnO39uSMRzQ==} + cpu: [ppc64le] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.13.2: + resolution: {integrity: sha512-C3GSKvMtdudHCN5HdmAMSRYR2kkhgdOfye4w0xzyii7lebVr4riCgmM6lRiSCnJn2w1Xz7ZZzHKuLrjx5620kw==} cpu: [riscv64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.13.0: - resolution: {integrity: sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==} + /@rollup/rollup-linux-s390x-gnu@4.13.2: + resolution: {integrity: sha512-l4U0KDFwzD36j7HdfJ5/TveEQ1fUTjFFQP5qIt9gBqBgu1G8/kCaq5Ok05kd5TG9F8Lltf3MoYsUMw3rNlJ0Yg==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.13.2: + resolution: {integrity: sha512-xXMLUAMzrtsvh3cZ448vbXqlUa7ZL8z0MwHp63K2IIID2+DeP5iWIT6g1SN7hg1VxPzqx0xZdiDM9l4n9LRU1A==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.13.0: - resolution: {integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==} + /@rollup/rollup-linux-x64-musl@4.13.2: + resolution: {integrity: sha512-M/JYAWickafUijWPai4ehrjzVPKRCyDb1SLuO+ZyPfoXgeCEAlgPkNXewFZx0zcnoIe3ay4UjXIMdXQXOZXWqA==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.13.0: - resolution: {integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==} + /@rollup/rollup-win32-arm64-msvc@4.13.2: + resolution: {integrity: sha512-2YWwoVg9KRkIKaXSh0mz3NmfurpmYoBBTAXA9qt7VXk0Xy12PoOP40EFuau+ajgALbbhi4uTj3tSG3tVseCjuA==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.13.0: - resolution: {integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==} + /@rollup/rollup-win32-ia32-msvc@4.13.2: + resolution: {integrity: sha512-2FSsE9aQ6OWD20E498NYKEQLneShWes0NGMPQwxWOdws35qQXH+FplabOSP5zEe1pVjurSDOGEVCE2agFwSEsw==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.13.0: - resolution: {integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==} + /@rollup/rollup-win32-x64-msvc@4.13.2: + resolution: {integrity: sha512-7h7J2nokcdPePdKykd8wtc8QqqkqxIrUz7MHj6aNr8waBRU//NLDVnNjQnqQO6fqtjrtCdftpbTuOKAyrAQETQ==} cpu: [x64] os: [win32] requiresBuild: true @@ -951,8 +966,8 @@ packages: node-emoji: 2.1.3 dev: true - /@types/node@20.11.30: - resolution: {integrity: sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==} + /@types/node@20.12.2: + resolution: {integrity: sha512-zQ0NYO87hyN6Xrclcqp7f8ZbXNbRfoGWNcMvHTPQp9UUrwI0mI7XBz+cu7/W6/VClYo2g63B0cjull/srU7LgQ==} dependencies: undici-types: 5.26.5 dev: true @@ -1105,14 +1120,14 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@vitejs/plugin-vue@5.0.4(vite@5.2.6)(vue@3.4.21): + /@vitejs/plugin-vue@5.0.4(vite@5.2.7)(vue@3.4.21): resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 vue: ^3.2.25 dependencies: - vite: 5.2.6(@types/node@20.11.30) + vite: 5.2.7(@types/node@20.12.2) vue: 3.4.21(typescript@5.4.3) dev: true @@ -3290,26 +3305,28 @@ packages: glob: 7.2.3 dev: true - /rollup@4.13.0: - resolution: {integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==} + /rollup@4.13.2: + resolution: {integrity: sha512-MIlLgsdMprDBXC+4hsPgzWUasLO9CE4zOkj/u6j+Z6j5A4zRY+CtiXAdJyPtgCsc42g658Aeh1DlrdVEJhsL2g==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.13.0 - '@rollup/rollup-android-arm64': 4.13.0 - '@rollup/rollup-darwin-arm64': 4.13.0 - '@rollup/rollup-darwin-x64': 4.13.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.13.0 - '@rollup/rollup-linux-arm64-gnu': 4.13.0 - '@rollup/rollup-linux-arm64-musl': 4.13.0 - '@rollup/rollup-linux-riscv64-gnu': 4.13.0 - '@rollup/rollup-linux-x64-gnu': 4.13.0 - '@rollup/rollup-linux-x64-musl': 4.13.0 - '@rollup/rollup-win32-arm64-msvc': 4.13.0 - '@rollup/rollup-win32-ia32-msvc': 4.13.0 - '@rollup/rollup-win32-x64-msvc': 4.13.0 + '@rollup/rollup-android-arm-eabi': 4.13.2 + '@rollup/rollup-android-arm64': 4.13.2 + '@rollup/rollup-darwin-arm64': 4.13.2 + '@rollup/rollup-darwin-x64': 4.13.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.13.2 + '@rollup/rollup-linux-arm64-gnu': 4.13.2 + '@rollup/rollup-linux-arm64-musl': 4.13.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.13.2 + '@rollup/rollup-linux-riscv64-gnu': 4.13.2 + '@rollup/rollup-linux-s390x-gnu': 4.13.2 + '@rollup/rollup-linux-x64-gnu': 4.13.2 + '@rollup/rollup-linux-x64-musl': 4.13.2 + '@rollup/rollup-win32-arm64-msvc': 4.13.2 + '@rollup/rollup-win32-ia32-msvc': 4.13.2 + '@rollup/rollup-win32-x64-msvc': 4.13.2 fsevents: 2.3.3 dev: true @@ -3778,7 +3795,7 @@ packages: - supports-color dev: true - /vite-plugin-windicss@1.9.3(vite@5.2.6): + /vite-plugin-windicss@1.9.3(vite@5.2.7): resolution: {integrity: sha512-PqNiIsrEftCrgn0xIpj8ZMSdpz8NZn+OJ3gKXnOF+hFzbHFrKGJA49ViOUKCHDOquxoGBZMmTjepWr8GrftKcQ==} peerDependencies: vite: ^2.0.1 || ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -3786,7 +3803,7 @@ packages: '@windicss/plugin-utils': 1.9.3 debug: 4.3.4 kolorist: 1.8.0 - vite: 5.2.6(@types/node@20.11.30) + vite: 5.2.7(@types/node@20.12.2) windicss: 3.5.6 transitivePeerDependencies: - supports-color @@ -3801,8 +3818,8 @@ packages: vue: 3.4.21(typescript@5.4.3) dev: true - /vite@5.2.6(@types/node@20.11.30): - resolution: {integrity: sha512-FPtnxFlSIKYjZ2eosBQamz4CbyrTizbZ3hnGJlh/wMtCrlp1Hah6AzBLjGI5I2urTfNnpovpHdrL6YRuBOPnCA==} + /vite@5.2.7(@types/node@20.12.2): + resolution: {integrity: sha512-k14PWOKLI6pMaSzAuGtT+Cf0YmIx12z9YGon39onaJNy8DLBfBJrzg9FQEmkAM5lpHBZs9wksWAsyF/HkpEwJA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -3829,10 +3846,10 @@ packages: terser: optional: true dependencies: - '@types/node': 20.11.30 + '@types/node': 20.12.2 esbuild: 0.20.2 postcss: 8.4.38 - rollup: 4.13.0 + rollup: 4.13.2 optionalDependencies: fsevents: 2.3.3 dev: true