diff --git a/.github/instructions/base.instructions.md b/AGENTS.md similarity index 70% rename from .github/instructions/base.instructions.md rename to AGENTS.md index 238ac2b..09e71ae 100644 --- a/.github/instructions/base.instructions.md +++ b/AGENTS.md @@ -1,7 +1,3 @@ ---- -description: Describe the guidelines for contributing to the Helm Command Template project. ---- - # Helm Command Template Project Guidelines ## 1. Project Intent @@ -35,6 +31,15 @@ When contributing to or maintaining this project, you must adhere to the followi 2. **Installation:** How to use `make install`. 3. **Usage:** Basic verification or connection steps. +* **Operator / Service Separation:** + * **Operators and services MUST be in separate directories.** Never mix an operator deployment and its managed service/cluster in the same directory. + * An operator-only directory should be named `-operator/` (e.g., `mysql-operator/`, `cassandra-operator/`). + * A service/cluster directory should use the plain service name (e.g., `mysql/`, `cassandra/`). + * The operator directory's Makefile should only include `../_template/base.mk` and deploy the operator chart directly via the standard `install` target. Do **not** use `operator.mk` in either directory — `operator.mk` is deprecated for new services. + * The service/cluster directory's README must state that the operator must be installed first, with a link to the operator directory (e.g., `See [mysql-operator](../mysql-operator/)`). + * If a service is inherently operator-only with no separate cluster chart (e.g., Strimzi Kafka), the directory should still be named `-operator/` and include any sample CRD manifests (e.g., `kafka-cluster.yaml`) for creating resources after the operator is installed. + * When evaluating a new service that uses the operator pattern, search the upstream operator's GitHub repository and Helm chart registry to confirm the correct chart names and repo URLs for both the operator and the cluster/service charts. + * **Command Interface:** * The end-user interaction must remain simple. The primary entry point for any service is executing `make install` inside its directory. diff --git a/package.json b/package.json index b7ef0a4..4370ea4 100644 --- a/package.json +++ b/package.json @@ -17,9 +17,9 @@ "prepare": "simple-git-hooks" }, "devDependencies": { - "@antfu/eslint-config": "^7.4.3", - "eslint": "^10.0.1", - "lint-staged": "^16.2.7", + "@antfu/eslint-config": "^8.2.0", + "eslint": "^10.2.0", + "lint-staged": "^16.4.0", "simple-git-hooks": "^2.13.1" }, "simple-git-hooks": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 742029b..8c862a6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,28 +9,28 @@ importers: .: devDependencies: '@antfu/eslint-config': - specifier: ^7.4.3 - version: 7.4.3(@vue/compiler-sfc@3.5.28)(eslint@10.0.1)(typescript@5.9.3) + specifier: ^8.2.0 + version: 8.2.0(@typescript-eslint/rule-tester@8.58.2(eslint@10.2.0)(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.58.2(typescript@5.9.3))(@typescript-eslint/utils@8.58.2(eslint@10.2.0)(typescript@5.9.3))(@vue/compiler-sfc@3.5.28)(eslint@10.2.0)(typescript@5.9.3) eslint: - specifier: ^10.0.1 - version: 10.0.1 + specifier: ^10.2.0 + version: 10.2.0 lint-staged: - specifier: ^16.2.7 - version: 16.2.7 + specifier: ^16.4.0 + version: 16.4.0 simple-git-hooks: specifier: ^2.13.1 version: 2.13.1 packages: - '@antfu/eslint-config@7.4.3': - resolution: {integrity: sha512-qHOG2408wBz21x191n0Mm9r2q/PqMYul+YE+DUBqZMtJYUn+bd+Dh3g8LIkyItMJR+Xs9f9TKXJehZLRYxJlHg==} + '@antfu/eslint-config@8.2.0': + resolution: {integrity: sha512-spfwYXMNrlkl69riTSBnbC0C2K8EVfVMOK3ceP2EpAAioyfprIW1gTwyLRtd9jZSFeNdX4mFNAIG+o0sOneOfA==} hasBin: true peerDependencies: '@angular-eslint/eslint-plugin': ^21.1.0 '@angular-eslint/eslint-plugin-template': ^21.1.0 '@angular-eslint/template-parser': ^21.1.0 - '@eslint-react/eslint-plugin': ^2.11.0 + '@eslint-react/eslint-plugin': ^3.0.0 '@next/eslint-plugin-next': '>=15.0.0' '@prettier/plugin-xml': ^3.4.1 '@unocss/eslint-plugin': '>=0.50.0' @@ -39,7 +39,6 @@ packages: eslint-plugin-astro: ^1.2.0 eslint-plugin-format: '>=0.1.0' eslint-plugin-jsx-a11y: '>=6.10.2' - eslint-plugin-react-hooks: ^7.0.0 eslint-plugin-react-refresh: ^0.5.0 eslint-plugin-solid: ^0.14.3 eslint-plugin-svelte: '>=2.35.1' @@ -70,8 +69,6 @@ packages: optional: true eslint-plugin-jsx-a11y: optional: true - eslint-plugin-react-hooks: - optional: true eslint-plugin-react-refresh: optional: true eslint-plugin-solid: @@ -98,8 +95,8 @@ packages: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.0': - resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} + '@babel/parser@7.29.2': + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} engines: {node: '>=6.0.0'} hasBin: true @@ -107,29 +104,40 @@ packages: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} - '@clack/core@1.0.1': - resolution: {integrity: sha512-WKeyK3NOBwDOzagPR5H08rFk9D/WuN705yEbuZvKqlkmoLM2woKtXb10OO2k1NoSU4SFG947i2/SCYh+2u5e4g==} + '@clack/core@1.2.0': + resolution: {integrity: sha512-qfxof/3T3t9DPU/Rj3OmcFyZInceqj/NVtO9rwIuJqCUgh32gwPjpFQQp/ben07qKlhpwq7GzfWpST4qdJ5Drg==} - '@clack/prompts@1.0.1': - resolution: {integrity: sha512-/42G73JkuYdyWZ6m8d/CJtBrGl1Hegyc7Fy78m5Ob+jF85TOUmLR5XLce/U3LxYAw0kJ8CT5aI99RIvPHcGp/Q==} + '@clack/prompts@1.2.0': + resolution: {integrity: sha512-4jmztR9fMqPMjz6H/UZXj0zEmE43ha1euENwkckKKel4XpSfokExPo5AiVStdHSAlHekz4d0CA/r45Ok1E4D3w==} - '@es-joy/jsdoccomment@0.78.0': - resolution: {integrity: sha512-rQkU5u8hNAq2NVRzHnIUUvR6arbO0b6AOlvpTNS48CkiKSn/xtNfOzBK23JE4SiW89DgvU7GtxLVgV4Vn2HBAw==} - engines: {node: '>=20.11.0'} + '@e18e/eslint-plugin@0.3.0': + resolution: {integrity: sha512-hHgfpxsrZ2UYHcicA+tGZnmk19uJTaye9VH79O+XS8R4ona2Hx3xjhXghclNW58uXMk3xXlbYEOMr8thsoBmWg==} + peerDependencies: + eslint: ^9.0.0 || ^10.0.0 + oxlint: ^1.55.0 + peerDependenciesMeta: + eslint: + optional: true + oxlint: + optional: true '@es-joy/jsdoccomment@0.84.0': resolution: {integrity: sha512-0xew1CxOam0gV5OMjh2KjFQZsKL2bByX1+q4j3E73MpYIdyUxcZb/xQct9ccUb+ve5KGUYbCUxyPnYB7RbuP+w==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@es-joy/jsdoccomment@0.86.0': + resolution: {integrity: sha512-ukZmRQ81WiTpDWO6D/cTBM7XbrNtutHKvAVnZN/8pldAwLoJArGOvkNyxPTBGsPjsoaQBJxlH+tE2TNA/92Qgw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@es-joy/resolve.exports@1.2.0': resolution: {integrity: sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==} engines: {node: '>=10'} - '@eslint-community/eslint-plugin-eslint-comments@4.6.0': - resolution: {integrity: sha512-2EX2bBQq1ez++xz2o9tEeEQkyvfieWgUFMH4rtJJri2q0Azvhja3hZGXsjPXs31R4fQkZDtWzNDDK2zQn5UE5g==} + '@eslint-community/eslint-plugin-eslint-comments@4.7.1': + resolution: {integrity: sha512-Ql2nJFwA8wUGpILYGOQaT1glPsmvEwE0d+a+l7AALLzQvInqdbXJdx7aSu0DpUX9dB1wMVBMhm99/++S3MdEtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} @@ -141,8 +149,8 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/compat@2.0.2': - resolution: {integrity: sha512-pR1DoD0h3HfF675QZx0xsyrsU8q70Z/plx7880NOhS02NuWLgBCOMDL787nUeQ7EWLkxv3bPQJaarjcPQb2Dwg==} + '@eslint/compat@2.0.5': + resolution: {integrity: sha512-IbHDbHJfkVNv6xjlET8AIVo/K1NQt7YT4Rp6ok/clyBGcpRx1l6gv0Rq3vBvYfPJIZt6ODf66Zq08FJNDpnzgg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: ^8.40 || 9 || 10 @@ -150,36 +158,32 @@ packages: eslint: optional: true - '@eslint/config-array@0.23.2': - resolution: {integrity: sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A==} + '@eslint/config-array@0.23.5': + resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/config-helpers@0.5.2': - resolution: {integrity: sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==} + '@eslint/config-helpers@0.5.5': + resolution: {integrity: sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/core@0.17.0': - resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@1.1.0': - resolution: {integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==} + '@eslint/core@1.2.1': + resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/markdown@7.5.1': - resolution: {integrity: sha512-R8uZemG9dKTbru/DQRPblbJyXpObwKzo8rv1KYGGuPUPtjM4LXBYM9q5CIZAComzZupws3tWbDwam5AFpPLyJQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@3.0.2': - resolution: {integrity: sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw==} + '@eslint/markdown@8.0.1': + resolution: {integrity: sha512-WWKmld/EyNdEB8GMq7JMPX1SDWgyJAM1uhtCi5ySrqYQM4HQjmg11EX/q3ZpnpRXHfdccFtli3NBvvGaYjWyQw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/plugin-kit@0.4.1': - resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/object-schema@3.0.5': + resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/plugin-kit@0.6.0': - resolution: {integrity: sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==} + '@eslint/plugin-kit@0.6.1': + resolution: {integrity: sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/plugin-kit@0.7.1': + resolution: {integrity: sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@humanfs/core@0.19.1': @@ -201,12 +205,9 @@ packages: '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@ota-meshi/ast-token-store@0.2.1': - resolution: {integrity: sha512-+8oB1wcOSWJCR6vAm2ioSLas7SoPwp+8tZ1Tcy8DSVEHMip6jxxlGu6EsRzJLAYVCyzKQ38B5pAqSbon1l1rmA==} + '@ota-meshi/ast-token-store@0.3.0': + resolution: {integrity: sha512-XRO0zi2NIUKq2lUk3T1ecFSld1fMWRKE6naRFGkgkdeosx7IslyUKNv5Dcb5PJTja9tHJoFu0v/7yEpAkrkrTg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - peerDependencies: - '@eslint/markdown': ^7.4.0 - eslint: '>=9.0.0' '@pkgr/core@0.2.9': resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} @@ -216,14 +217,14 @@ packages: resolution: {integrity: sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==} engines: {node: '>=18'} - '@stylistic/eslint-plugin@5.9.0': - resolution: {integrity: sha512-FqqSkvDMYJReydrMhlugc71M76yLLQWNfmGq+SIlLa7N3kHp8Qq8i2PyWrVNAfjOyOIY+xv9XaaYwvVW7vroMA==} + '@stylistic/eslint-plugin@5.10.0': + resolution: {integrity: sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^9.0.0 || ^10.0.0 - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} '@types/esrecurse@4.3.1': resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} @@ -231,9 +232,15 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/katex@0.16.8': + resolution: {integrity: sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==} + '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -243,73 +250,82 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@typescript-eslint/eslint-plugin@8.56.0': - resolution: {integrity: sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==} + '@typescript-eslint/eslint-plugin@8.58.2': + resolution: {integrity: sha512-aC2qc5thQahutKjP+cl8cgN9DWe3ZUqVko30CMSZHnFEHyhOYoZSzkGtAI2mcwZ38xeImDucI4dnqsHiOYuuCw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.56.0 + '@typescript-eslint/parser': ^8.58.2 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.56.0': - resolution: {integrity: sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==} + '@typescript-eslint/parser@8.58.2': + resolution: {integrity: sha512-/Zb/xaIDfxeJnvishjGdcR4jmr7S+bda8PKNhRGdljDM+elXhlvN0FyPSsMnLmJUrVG9aPO6dof80wjMawsASg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.56.0': - resolution: {integrity: sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==} + '@typescript-eslint/project-service@8.58.2': + resolution: {integrity: sha512-Cq6UfpZZk15+r87BkIh5rDpi38W4b+Sjnb8wQCPPDDweS/LRCFjCyViEbzHk5Ck3f2QDfgmlxqSa7S7clDtlfg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.56.0': - resolution: {integrity: sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/tsconfig-utils@8.56.0': - resolution: {integrity: sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/type-utils@8.56.0': - resolution: {integrity: sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==} + '@typescript-eslint/rule-tester@8.58.2': + resolution: {integrity: sha512-HF7ry5ZhQSLn4JAJfQCPX39D6BE5MhYXE743I0phrJw1BvB0adH8JpsEc4owCxEESQflodyhRWNUZY+m2EVenw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.56.0': - resolution: {integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==} + '@typescript-eslint/scope-manager@8.58.2': + resolution: {integrity: sha512-SgmyvDPexWETQek+qzZnrG6844IaO02UVyOLhI4wpo82dpZJY9+6YZCKAMFzXb7qhx37mFK1QcPQ18tud+vo6Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.56.0': - resolution: {integrity: sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==} + '@typescript-eslint/tsconfig-utils@8.58.2': + resolution: {integrity: sha512-3SR+RukipDvkkKp/d0jP0dyzuls3DbGmwDpVEc5wqk5f38KFThakqAAO0XMirWAE+kT00oTauTbzMFGPoAzB0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.56.0': - resolution: {integrity: sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==} + '@typescript-eslint/type-utils@8.58.2': + resolution: {integrity: sha512-Z7EloNR/B389FvabdGeTo2XMs4W9TjtPiO9DAsmT0yom0bwlPyRjkJ1uCdW1DvrrrYP50AJZ9Xc3sByZA9+dcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.56.0': - resolution: {integrity: sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==} + '@typescript-eslint/types@8.58.2': + resolution: {integrity: sha512-9TukXyATBQf/Jq9AMQXfvurk+G5R2MwfqQGDR2GzGz28HvY/lXNKGhkY+6IOubwcquikWk5cjlgPvD2uAA7htQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vitest/eslint-plugin@1.6.9': - resolution: {integrity: sha512-9WfPx1OwJ19QLCSRLkqVO7//1WcWnK3fE/3fJhKMAmDe8+9G4rB47xCNIIeCq3FdEzkIoLTfDlwDlPBaUTMhow==} + '@typescript-eslint/typescript-estree@8.58.2': + resolution: {integrity: sha512-ELGuoofuhhoCvNbQjFFiobFcGgcDCEm0ThWdmO4Z0UzLqPXS3KFvnEZ+SHewwOYHjM09tkzOWXNTv9u6Gqtyuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/utils@8.58.2': + resolution: {integrity: sha512-QZfjHNEzPY8+l0+fIXMvuQ2sJlplB4zgDZvA+NmvZsZv3EQwOcc1DuIU1VJUTWZ/RKouBMhDyNaBMx4sWvrzRA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/visitor-keys@8.58.2': + resolution: {integrity: sha512-f1WO2Lx8a9t8DARmcWAUPJbu0G20bJlj8L4z72K00TMeJAoyLr/tHhI/pzYBLrR4dXWkcxO1cWYZEOX8DKHTqA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@vitest/eslint-plugin@1.6.15': + resolution: {integrity: sha512-dTMjrdngmcB+DxomlKQ+SUubCTvd0m2hQQFpv5sx+GRodmeoxr2PVbphk57SVp250vpxphk9Ccwyv6fQ6+2gkA==} engines: {node: '>=18'} peerDependencies: + '@typescript-eslint/eslint-plugin': '*' eslint: '>=8.57.0' typescript: '>=5.0.0' vitest: '*' peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true typescript: optional: true vitest: @@ -367,37 +383,33 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - baseline-browser-mapping@2.10.0: - resolution: {integrity: sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==} + baseline-browser-mapping@2.10.19: + resolution: {integrity: sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==} engines: {node: '>=6.0.0'} hasBin: true boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - brace-expansion@5.0.3: - resolution: {integrity: sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==} + brace-expansion@5.0.5: + resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} engines: {node: 18 || 20 || >=22} - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browserslist@4.28.1: - resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - builtin-modules@5.0.0: - resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} + builtin-modules@5.1.0: + resolution: {integrity: sha512-c5JxaDrzwRjq3WyJkI1AGR5xy6Gr6udlt7sQPbl09+3ckB+Zo2qqQ2KhCTBr7Q8dHB43bENGYEk4xddrFH/b7A==} engines: {node: '>=18.20'} - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} + cac@7.0.0: + resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} + engines: {node: '>=20.19.0'} - caniuse-lite@1.0.30001772: - resolution: {integrity: sha512-mIwLZICj+ntVTw4BT2zfp+yu/AqV6GMKfJVJMx3MwPxs+uk/uj2GLl2dH8LQbjiLDX66amCga5nKFyDgRR43kg==} + caniuse-lite@1.0.30001788: + resolution: {integrity: sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -420,8 +432,8 @@ packages: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} - cli-truncate@5.1.1: - resolution: {integrity: sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==} + cli-truncate@5.2.0: + resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} engines: {node: '>=20'} colorette@2.0.20: @@ -431,22 +443,26 @@ packages: resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} engines: {node: '>=20'} - comment-parser@1.4.1: - resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} - engines: {node: '>= 12.0.0'} + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} comment-parser@1.4.5: resolution: {integrity: sha512-aRDkn3uyIlCFfk5NUA+VdwMmMsh8JGhc4hapfV4yxymHGQ3BVskMQfoXGpCo5IoBuQ9tS5iiVKhCpTcB4pW4qw==} engines: {node: '>= 12.0.0'} + comment-parser@1.4.6: + resolution: {integrity: sha512-ObxuY6vnbWTN6Od72xfwN9DbzC7Y2vv8u1Soi9ahRKL37gb6y1qk6/dgjs+3JWuXJHWvsg3BXIwzd/rkmAwavg==} + engines: {node: '>= 12.0.0'} + confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} confbox@0.2.4: resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} - core-js-compat@3.48.0: - resolution: {integrity: sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==} + core-js-compat@3.49.0: + resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} @@ -479,16 +495,12 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - diff-sequences@27.5.1: - resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - electron-to-chromium@1.5.302: - resolution: {integrity: sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==} + electron-to-chromium@1.5.336: + resolution: {integrity: sha512-AbH9q9J455r/nLmdNZes0G0ZKcRX73FicwowalLs6ijwOmCJSRRrLX63lcAlzy9ux3dWK1w1+1nsBJEWN11hcQ==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -497,8 +509,8 @@ packages: resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} engines: {node: '>=14'} - enhanced-resolve@5.19.0: - resolution: {integrity: sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==} + enhanced-resolve@5.20.1: + resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==} engines: {node: '>=10.13.0'} entities@7.0.1: @@ -531,22 +543,16 @@ packages: peerDependencies: eslint: '>=6.0.0' - eslint-compat-utils@0.6.5: - resolution: {integrity: sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=6.0.0' - - eslint-config-flat-gitignore@2.2.1: - resolution: {integrity: sha512-wA5EqN0era7/7Gt5Botlsfin/UNY0etJSEeBgbUlFLFrBi47rAN//+39fI7fpYcl8RENutlFtvp/zRa/M/pZNg==} + eslint-config-flat-gitignore@2.3.0: + resolution: {integrity: sha512-bg4ZLGgoARg1naWfsINUUb/52Ksw/K22K+T16D38Y8v+/sGwwIYrGvH/JBjOin+RQtxxC9tzNNiy4shnGtGyyQ==} peerDependencies: eslint: ^9.5.0 || ^10.0.0 - eslint-flat-config-utils@3.0.1: - resolution: {integrity: sha512-VMA3u86bLzNAwD/7DkLtQ9lolgIOx2Sj0kTMMnBvrvEz7w0rQj4aGCR+lqsqtld63gKiLyT4BnQZ3gmGDXtvjg==} + eslint-flat-config-utils@3.1.0: + resolution: {integrity: sha512-lM+Nwo2CzpuTS/RASQExlEIwk/BQoKqJWX6VbDlLMb/mveqvt9MMrRXFEkG3bseuK6g8noKZLeX82epkILtv4A==} - eslint-json-compat-utils@0.2.2: - resolution: {integrity: sha512-KcTUifi8VSSHkrOY0FzB7smuTZRU9T2nCrcCy6k2b+Q77+uylBQVIxN4baVCIWvWJEpud+IsrYgco4JJ6io05g==} + eslint-json-compat-utils@0.2.3: + resolution: {integrity: sha512-RbBmDFyu7FqnjE8F0ZxPNzx5UaptdeS9Uu50r7A+D7s/+FCX+ybiyViYEgFUaFIFqSWJgZRTpL5d8Kanxxl2lQ==} engines: {node: '>=12'} peerDependencies: '@eslint/json': '*' @@ -566,34 +572,42 @@ packages: peerDependencies: eslint: '*' - eslint-plugin-command@3.4.0: - resolution: {integrity: sha512-EW4eg/a7TKEhG0s5IEti72kh3YOTlnhfFNuctq5WnB1fst37/IHTd5OkD+vnlRf3opTvUcSRihAateP6bT5ZcA==} + eslint-plugin-command@3.5.2: + resolution: {integrity: sha512-PA59QAkQDwvcCMEt5lYLJLI3zDGVKJeC4id/pcRY2XdRYhSGW7iyYT1VC1N3bmpuvu6Qb/9QptiS3GJMjeGTJg==} peerDependencies: + '@typescript-eslint/rule-tester': '*' + '@typescript-eslint/typescript-estree': '*' + '@typescript-eslint/utils': '*' eslint: '*' + eslint-plugin-depend@1.5.0: + resolution: {integrity: sha512-i3UeLYmclf1Icp35+6W7CR4Bp2PIpDgBuf/mpmXK5UeLkZlvYJ21VuQKKHHAIBKRTPivPGX/gZl5JGno1o9Y0A==} + peerDependencies: + eslint: '>=8.40.0' + eslint-plugin-es-x@7.8.0: resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' - eslint-plugin-import-lite@0.5.2: - resolution: {integrity: sha512-XvfdWOC5dSLEI9krIPRlNmKSI2ViIE9pVylzfV9fCq0ZpDaNeUk6o0wZv0OzN83QdadgXp1NsY0qjLINxwYCsw==} + eslint-plugin-import-lite@0.6.0: + resolution: {integrity: sha512-80vevx2A7i3H7n1/6pqDO8cc5wRz6OwLDvIyVl9UflBV1N1f46e9Ihzi65IOLYoSxM6YykK2fTw1xm0Ixx6aTQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: '>=9.0.0' + eslint: ^9.0.0 || ^10.0.0 - eslint-plugin-jsdoc@62.7.0: - resolution: {integrity: sha512-jootujJOIGMkCLN+/WgDFKtaclCt2MEEy9cZ1RyK19Az1JvVI3awbeMXNlJ6y4h8RWIJpcXqmxsu4t9NThYbNw==} + eslint-plugin-jsdoc@62.9.0: + resolution: {integrity: sha512-PY7/X4jrVgoIDncUmITlUqK546Ltmx/Pd4Hdsu4CvSjryQZJI2mEV4vrdMufyTetMiZ5taNSqvK//BTgVUlNkA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 - eslint-plugin-jsonc@2.21.1: - resolution: {integrity: sha512-dbNR5iEnQeORwsK2WZzr3QaMtFCY3kKJVMRHPzUpKzMhmVy2zIpVgFDpX8MNoIdoqz6KCpCfOJavhfiSbZbN+w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-plugin-jsonc@3.1.2: + resolution: {integrity: sha512-dopTxdB22iuOkgKyJCupEC5IYBItUT4J/teq1H5ddUObcaYhOURxtJElZczdcYnnKCghNU/vccuyPkliy2Wxsg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: - eslint: '>=6.0.0' + eslint: '>=9.38.0' eslint-plugin-n@17.24.0: resolution: {integrity: sha512-/gC7/KAYmfNnPNOb3eu8vw+TdVnV0zhdQwexsw6FLXbhzroVj20vRn2qL8lDWDGnAQ2J8DhdfvXxX9EoxvERvw==} @@ -605,31 +619,31 @@ packages: resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} engines: {node: '>=5.0.0'} - eslint-plugin-perfectionist@5.6.0: - resolution: {integrity: sha512-pxrLrfRp5wl1Vol1fAEa/G5yTXxefTPJjz07qC7a8iWFXcOZNuWBItMQ2OtTzfQIvMq6bMyYcrzc3Wz++na55Q==} + eslint-plugin-perfectionist@5.8.0: + resolution: {integrity: sha512-k8uIptWIxkUclonCFGyDzgYs9NI+Qh0a7cUXS3L7IYZDEsjXuimFBVbxXPQQngWqMiaxJRwbtYB4smMGMqF+cw==} engines: {node: ^20.0.0 || >=22.0.0} peerDependencies: eslint: ^8.45.0 || ^9.0.0 || ^10.0.0 - eslint-plugin-pnpm@1.5.0: - resolution: {integrity: sha512-ayMo1GvrQ/sF/bz1aOAiH0jv9eAqU2Z+a1ycoWz/uFFK5NxQDq49BDKQtBumcOUBf2VHyiTW4a8u+6KVqoIWzQ==} + eslint-plugin-pnpm@1.6.0: + resolution: {integrity: sha512-dxmt9r3zvPaft6IugS4i0k16xag3fTbOvm/road5uV9Y8qUCQT0xzheSh3gMlYAlC6vXRpfArBDsTZ7H7JKCbg==} peerDependencies: - eslint: ^9.0.0 + eslint: ^9.0.0 || ^10.0.0 - eslint-plugin-regexp@3.0.0: - resolution: {integrity: sha512-iW7hgAV8NOG6E2dz+VeKpq67YLQ9jaajOKYpoOSic2/q8y9BMdXBKkSR9gcMtbqEhNQzdW41E3wWzvhp8ExYwQ==} + eslint-plugin-regexp@3.1.0: + resolution: {integrity: sha512-qGXIC3DIKZHcK1H9A9+Byz9gmndY6TTSRkSMTZpNXdyCw2ObSehRgccJv35n9AdUakEjQp5VFNLas6BMXizCZg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: '>=9.38.0' - eslint-plugin-toml@1.1.1: - resolution: {integrity: sha512-Gg7wxVIYe2bJ1GqcOxmkVqdd1ScE2U3Ia3Q7RLgBhV9NVhAfkFaAOCRwRAAJ2TkbM/dQmXvNuFmAPx4y5XqIHA==} + eslint-plugin-toml@1.3.1: + resolution: {integrity: sha512-1l00fBP03HIt9IPV7ZxBi7x0y0NMdEZmakL1jBD6N/FoKBvfKxPw5S8XkmzBecOnFBTn5Z8sNJtL5vdf9cpRMQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: '>=9.38.0' - eslint-plugin-unicorn@63.0.0: - resolution: {integrity: sha512-Iqecl9118uQEXYh7adylgEmGfkn5es3/mlQTLLkd4pXkIk9CTGrAbeUux+YljSa2ohXCBmQQ0+Ej1kZaFgcfkA==} + eslint-plugin-unicorn@64.0.0: + resolution: {integrity: sha512-rNZwalHh8i0UfPlhNwg5BTUO1CMdKNmjqe+TgzOTZnpKoi8VBgsW7u9qCHIdpxEzZ1uwrJrPF0uRb7l//K38gA==} engines: {node: ^20.10.0 || >=21.0.0} peerDependencies: eslint: '>=9.38.0' @@ -657,8 +671,8 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-yml@3.2.1: - resolution: {integrity: sha512-/oFj7MWk56AKLelLSUb7zN1OKDI9kR+uKEzbf/sGu7Bov0tJs3qwtMcu+VCcEtFAFD7KZe0LSYhyy0Uq8hKF9g==} + eslint-plugin-yml@3.3.1: + resolution: {integrity: sha512-isntsZchaTqDMNNkD+CakrgA/pdUoJ45USWBKpuqfAW1MCuw731xX/vrXfoJFZU3tTFr24nCbDYmDfT2+g4QtQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} peerDependencies: eslint: '>=9.38.0' @@ -669,8 +683,8 @@ packages: '@vue/compiler-sfc': ^3.3.0 eslint: '>=9.0.0' - eslint-scope@9.1.1: - resolution: {integrity: sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==} + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} eslint-visitor-keys@3.4.3: @@ -685,8 +699,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.0.1: - resolution: {integrity: sha512-20MV9SUdeN6Jd84xESsKhRly+/vxI+hwvpBMA93s+9dAcjdCuCojn4IqUGS3lvVaqjVYGYHSRMCpeFtF2rQYxQ==} + eslint@10.2.0: + resolution: {integrity: sha512-+L0vBFYGIpSNIt/KWTpFonPrqYvgKw1eUI5Vn7mEogrQcWtWYtNQ7dNqC+px/J0idT3BAkiWrhfS7k+Tum8TUA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -699,14 +713,10 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@11.1.1: - resolution: {integrity: sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==} + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - esquery@1.7.0: resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} @@ -741,6 +751,15 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-string-truncated-width@1.2.1: + resolution: {integrity: sha512-Q9acT/+Uu3GwGj+5w/zsGuQjh9O1TyywhIwAxHudtWrgF09nHOPrvTLhQevPbttcxjr/SNN7mJmfOw/B1bXgow==} + + fast-string-width@1.1.0: + resolution: {integrity: sha512-O3fwIVIH5gKB38QNbdg+3760ZmGz0SZMgvwJbA1b2TGXceKE6A2cOlfogh1iw8lr049zPyd7YADHy+B7U4W9bQ==} + + fast-wrap-ansi@0.1.6: + resolution: {integrity: sha512-HlUwET7a5gqjURj70D5jl7aC3Zmy4weA1SHUfM0JFI0Ptq987NH2TwbBFLoERhfwk+E+eaq4EK3jXoT+R3yp3w==} + fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} @@ -757,10 +776,6 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - find-up-simple@1.0.1: resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} engines: {node: '>=18'} @@ -773,8 +788,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} format@0.2.2: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} @@ -784,8 +799,8 @@ packages: resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} engines: {node: '>=18'} - get-tsconfig@4.13.6: - resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} + get-tsconfig@4.13.8: + resolution: {integrity: sha512-J87BxkLXykmisLQ+KA4x2+O6rVf+PJrtFUO8lGyiRg4lyxJLJ8/v0sRAKdVZQOy6tR6lMRAF1NqzCf9BQijm0w==} github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -798,12 +813,8 @@ packages: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} - globals@16.5.0: - resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} - engines: {node: '>=18'} - - globals@17.3.0: - resolution: {integrity: sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==} + globals@17.5.0: + resolution: {integrity: sha512-qoV+HK2yFl/366t2/Cb3+xxPUo5BuMynomoDmiaZBIdbs+0pYbjfZU+twLhGKp4uCZ/+NbtpVepH5bGCxRyy2g==} engines: {node: '>=18'} globrex@0.1.2: @@ -812,9 +823,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - html-entities@2.6.0: resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} @@ -850,21 +858,17 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jsdoc-type-pratt-parser@7.0.0: - resolution: {integrity: sha512-c7YbokssPOSHmqTbSAmTtnVgAVa/7lumWNYqomgd5KOMyPrRve2anx6lonfOsXEQacqF9FKVUj7bLg4vRSvdYA==} - engines: {node: '>=20.0.0'} - jsdoc-type-pratt-parser@7.1.1: resolution: {integrity: sha512-/2uqY7x6bsrpi3i9LVU6J89352C0rpMk0as8trXxCtvd4kPk1ke/Eyif6wqfSLvoNJqcDG9Vk4UsXgygzCt2xA==} engines: {node: '>=20.0.0'} + jsdoc-type-pratt-parser@7.2.0: + resolution: {integrity: sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==} + engines: {node: '>=20.0.0'} + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -879,9 +883,13 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - jsonc-eslint-parser@2.4.2: - resolution: {integrity: sha512-1e4qoRgnn448pRuMvKGsFFymUCquZV0mpGgOyIKNgD3JVDTsVJyRBGH/Fm0tBb8WsWGgmB1mDe6/yJMQM37DUA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + jsonc-eslint-parser@3.1.0: + resolution: {integrity: sha512-75EA7EWZExL/j+MDKQrRbdzcRI2HOkRlmUw8fZJc1ioqFEOvBsq7Rt+A6yCxOt9w/TYNpkt52gC6nm/g5tFIng==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + katex@0.16.45: + resolution: {integrity: sha512-pQpZbdBu7wCTmQUh7ufPmLr0pFoObnGUoL/yhtwJDgmmQpbkg/0HSVti25Fu4rmd1oCR6NGWe9vqTWuWv3GcNA==} + hasBin: true keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -890,8 +898,8 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lint-staged@16.2.7: - resolution: {integrity: sha512-lDIj4RnYmK7/kXMya+qJsmkRFkGolciXjrsZ6PC25GdTfWOAWetR0ZbsNXRAj1EHHImRSalc+whZFg56F5DVow==} + lint-staged@16.4.0: + resolution: {integrity: sha512-lBWt8hujh/Cjysw5GYVmZpFHXDCgZzhrOm8vbcUdobADZNOK/bRshr2kM3DfgrrtR1DQhfupW9gnIXOfiFi+bw==} engines: {node: '>=20.17'} hasBin: true @@ -907,6 +915,9 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + log-update@6.1.0: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} @@ -947,6 +958,9 @@ packages: mdast-util-gfm@3.1.0: resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + mdast-util-math@3.0.0: + resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==} + mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} @@ -983,6 +997,9 @@ packages: micromark-extension-gfm@3.0.0: resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + micromark-extension-math@3.1.0: + resolution: {integrity: sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==} + micromark-factory-destination@2.0.1: resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} @@ -1043,32 +1060,23 @@ packages: micromark@4.0.2: resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - mimic-function@5.0.1: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} - minimatch@10.2.2: - resolution: {integrity: sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} - minimatch@9.0.6: - resolution: {integrity: sha512-kQAVowdR33euIqeA0+VZTDqU+qo1IeVY+hrKYtZMio3Pg0P0vuh/kwRylLUddJhB6pf3q/botcOvRtx4IN1wqQ==} - engines: {node: '>=16 || 14 >=14.17'} + mlly@1.8.2: + resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} - mlly@1.8.0: - resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + module-replacements@2.11.0: + resolution: {integrity: sha512-j5sNQm3VCpQQ7nTqGeOZtoJtV3uKERgCBm9QRhmGRiXiqkf7iRFOkfxdJRZWLkqYY8PNf4cDQF/WfXUYLENrRA==} ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nano-spawn@2.0.0: - resolution: {integrity: sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==} - engines: {node: '>=20.17'} - nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -1081,8 +1089,8 @@ packages: resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} engines: {node: '>=18'} - node-releases@2.0.27: - resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + node-releases@2.0.37: + resolution: {integrity: sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==} nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -1133,19 +1141,10 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} - pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} @@ -1156,15 +1155,15 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} - pnpm-workspace-yaml@1.5.0: - resolution: {integrity: sha512-PxdyJuFvq5B0qm3s9PaH/xOtSxrcvpBRr+BblhucpWjs8c79d4b7/cXhyY4AyHOHCnqklCYZTjfl0bT/mFVTRw==} + pnpm-workspace-yaml@1.6.0: + resolution: {integrity: sha512-uUy4dK3E11sp7nK+hnT7uAWfkBMe00KaUw8OG3NuNlYQoTk4sc9pcdIy1+XIP85v9Tvr02mK3JPaNNrP0QyRaw==} postcss-selector-parser@7.1.1: resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + postcss@8.5.9: + resolution: {integrity: sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -1190,8 +1189,8 @@ packages: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true - regjsparser@0.13.0: - resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} + regjsparser@0.13.1: + resolution: {integrity: sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==} hasBin: true reserved-identifiers@1.2.0: @@ -1240,6 +1239,10 @@ packages: resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} + slice-ansi@8.0.0: + resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} + engines: {node: '>=20'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -1265,8 +1268,8 @@ packages: resolution: {integrity: sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==} engines: {node: '>=20'} - strip-ansi@7.1.2: - resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} strip-indent@4.1.1: @@ -1277,22 +1280,18 @@ packages: resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} engines: {node: ^14.18.0 || >=16.0.0} - tapable@2.3.0: - resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + tapable@2.3.2: + resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==} engines: {node: '>=6'} - tinyexec@1.0.2: - resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + tinyexec@1.1.1: + resolution: {integrity: sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==} engines: {node: '>=18'} - tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - to-valid-identifier@1.0.0: resolution: {integrity: sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==} engines: {node: '>=20'} @@ -1301,8 +1300,8 @@ packages: resolution: {integrity: sha512-A5F0cM6+mDleacLIEUkmfpkBbnHJFV1d2rprHU2MXNk7mlxHq2zGojA+SRvQD1RoMo9gqjZPWEaKG4v1BQ48lw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - ts-api-utils@2.4.0: - resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -1327,6 +1326,9 @@ packages: unist-util-is@6.0.1: resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} @@ -1375,8 +1377,8 @@ packages: resolution: {integrity: sha512-h0uDm97wvT2bokfwwTmY6kJ1hp6YDFL0nRHwNKz8s/VD1FH/vvZjAKoMUE+un0eaYBSG7/c6h+lJTP+31tjgTw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - yaml@2.8.2: - resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} + yaml@2.8.3: + resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} engines: {node: '>= 14.6'} hasBin: true @@ -1389,48 +1391,52 @@ packages: snapshots: - '@antfu/eslint-config@7.4.3(@vue/compiler-sfc@3.5.28)(eslint@10.0.1)(typescript@5.9.3)': + '@antfu/eslint-config@8.2.0(@typescript-eslint/rule-tester@8.58.2(eslint@10.2.0)(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.58.2(typescript@5.9.3))(@typescript-eslint/utils@8.58.2(eslint@10.2.0)(typescript@5.9.3))(@vue/compiler-sfc@3.5.28)(eslint@10.2.0)(typescript@5.9.3)': dependencies: '@antfu/install-pkg': 1.1.0 - '@clack/prompts': 1.0.1 - '@eslint-community/eslint-plugin-eslint-comments': 4.6.0(eslint@10.0.1) - '@eslint/markdown': 7.5.1 - '@stylistic/eslint-plugin': 5.9.0(eslint@10.0.1) - '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(typescript@5.9.3) - '@typescript-eslint/parser': 8.56.0(eslint@10.0.1)(typescript@5.9.3) - '@vitest/eslint-plugin': 1.6.9(eslint@10.0.1)(typescript@5.9.3) + '@clack/prompts': 1.2.0 + '@e18e/eslint-plugin': 0.3.0(eslint@10.2.0) + '@eslint-community/eslint-plugin-eslint-comments': 4.7.1(eslint@10.2.0) + '@eslint/markdown': 8.0.1 + '@stylistic/eslint-plugin': 5.10.0(eslint@10.2.0) + '@typescript-eslint/eslint-plugin': 8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.58.2(eslint@10.2.0)(typescript@5.9.3) + '@vitest/eslint-plugin': 1.6.15(@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(typescript@5.9.3) ansis: 4.2.0 - cac: 6.7.14 - eslint: 10.0.1 - eslint-config-flat-gitignore: 2.2.1(eslint@10.0.1) - eslint-flat-config-utils: 3.0.1 - eslint-merge-processors: 2.0.0(eslint@10.0.1) - eslint-plugin-antfu: 3.2.2(eslint@10.0.1) - eslint-plugin-command: 3.4.0(eslint@10.0.1) - eslint-plugin-import-lite: 0.5.2(eslint@10.0.1) - eslint-plugin-jsdoc: 62.7.0(eslint@10.0.1) - eslint-plugin-jsonc: 2.21.1(eslint@10.0.1) - eslint-plugin-n: 17.24.0(eslint@10.0.1)(typescript@5.9.3) + cac: 7.0.0 + eslint: 10.2.0 + eslint-config-flat-gitignore: 2.3.0(eslint@10.2.0) + eslint-flat-config-utils: 3.1.0 + eslint-merge-processors: 2.0.0(eslint@10.2.0) + eslint-plugin-antfu: 3.2.2(eslint@10.2.0) + eslint-plugin-command: 3.5.2(@typescript-eslint/rule-tester@8.58.2(eslint@10.2.0)(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.58.2(typescript@5.9.3))(@typescript-eslint/utils@8.58.2(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0) + eslint-plugin-import-lite: 0.6.0(eslint@10.2.0) + eslint-plugin-jsdoc: 62.9.0(eslint@10.2.0) + eslint-plugin-jsonc: 3.1.2(eslint@10.2.0) + eslint-plugin-n: 17.24.0(eslint@10.2.0)(typescript@5.9.3) eslint-plugin-no-only-tests: 3.3.0 - eslint-plugin-perfectionist: 5.6.0(eslint@10.0.1)(typescript@5.9.3) - eslint-plugin-pnpm: 1.5.0(eslint@10.0.1) - eslint-plugin-regexp: 3.0.0(eslint@10.0.1) - eslint-plugin-toml: 1.1.1(@eslint/markdown@7.5.1)(eslint@10.0.1) - eslint-plugin-unicorn: 63.0.0(eslint@10.0.1) - eslint-plugin-unused-imports: 4.4.1(@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1) - eslint-plugin-vue: 10.8.0(@stylistic/eslint-plugin@5.9.0(eslint@10.0.1))(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)) - eslint-plugin-yml: 3.2.1(@eslint/markdown@7.5.1)(eslint@10.0.1) - eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.28)(eslint@10.0.1) - globals: 17.3.0 - jsonc-eslint-parser: 2.4.2 + eslint-plugin-perfectionist: 5.8.0(eslint@10.2.0)(typescript@5.9.3) + eslint-plugin-pnpm: 1.6.0(eslint@10.2.0) + eslint-plugin-regexp: 3.1.0(eslint@10.2.0) + eslint-plugin-toml: 1.3.1(eslint@10.2.0) + eslint-plugin-unicorn: 64.0.0(eslint@10.2.0) + eslint-plugin-unused-imports: 4.4.1(@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0) + eslint-plugin-vue: 10.8.0(@stylistic/eslint-plugin@5.10.0(eslint@10.2.0))(@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(vue-eslint-parser@10.4.0(eslint@10.2.0)) + eslint-plugin-yml: 3.3.1(eslint@10.2.0) + eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.28)(eslint@10.2.0) + globals: 17.5.0 local-pkg: 1.1.2 parse-gitignore: 2.0.0 toml-eslint-parser: 1.0.3 - vue-eslint-parser: 10.4.0(eslint@10.0.1) + vue-eslint-parser: 10.4.0(eslint@10.2.0) yaml-eslint-parser: 2.0.0 transitivePeerDependencies: - '@eslint/json' + - '@typescript-eslint/rule-tester' + - '@typescript-eslint/typescript-estree' + - '@typescript-eslint/utils' - '@vue/compiler-sfc' + - oxlint - supports-color - typescript - vitest @@ -1438,13 +1444,13 @@ snapshots: '@antfu/install-pkg@1.1.0': dependencies: package-manager-detector: 1.6.0 - tinyexec: 1.0.2 + tinyexec: 1.1.1 '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.28.5': {} - '@babel/parser@7.29.0': + '@babel/parser@7.29.2': dependencies: '@babel/types': 7.29.0 @@ -1453,98 +1459,103 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@clack/core@1.0.1': + '@clack/core@1.2.0': dependencies: - picocolors: 1.1.1 + fast-wrap-ansi: 0.1.6 sisteransi: 1.0.5 - '@clack/prompts@1.0.1': + '@clack/prompts@1.2.0': dependencies: - '@clack/core': 1.0.1 - picocolors: 1.1.1 + '@clack/core': 1.2.0 + fast-string-width: 1.1.0 + fast-wrap-ansi: 0.1.6 sisteransi: 1.0.5 - '@es-joy/jsdoccomment@0.78.0': + '@e18e/eslint-plugin@0.3.0(eslint@10.2.0)': dependencies: - '@types/estree': 1.0.8 - '@typescript-eslint/types': 8.56.0 - comment-parser: 1.4.1 - esquery: 1.7.0 - jsdoc-type-pratt-parser: 7.0.0 + eslint-plugin-depend: 1.5.0(eslint@10.2.0) + optionalDependencies: + eslint: 10.2.0 '@es-joy/jsdoccomment@0.84.0': dependencies: '@types/estree': 1.0.8 - '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/types': 8.58.2 comment-parser: 1.4.5 esquery: 1.7.0 jsdoc-type-pratt-parser: 7.1.1 + '@es-joy/jsdoccomment@0.86.0': + dependencies: + '@types/estree': 1.0.8 + '@typescript-eslint/types': 8.58.2 + comment-parser: 1.4.6 + esquery: 1.7.0 + jsdoc-type-pratt-parser: 7.2.0 + '@es-joy/resolve.exports@1.2.0': {} - '@eslint-community/eslint-plugin-eslint-comments@4.6.0(eslint@10.0.1)': + '@eslint-community/eslint-plugin-eslint-comments@4.7.1(eslint@10.2.0)': dependencies: escape-string-regexp: 4.0.0 - eslint: 10.0.1 + eslint: 10.2.0 ignore: 7.0.5 - '@eslint-community/eslint-utils@4.9.1(eslint@10.0.1)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.2.0)': dependencies: - eslint: 10.0.1 + eslint: 10.2.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/compat@2.0.2(eslint@10.0.1)': + '@eslint/compat@2.0.5(eslint@10.2.0)': dependencies: - '@eslint/core': 1.1.0 + '@eslint/core': 1.2.1 optionalDependencies: - eslint: 10.0.1 + eslint: 10.2.0 - '@eslint/config-array@0.23.2': + '@eslint/config-array@0.23.5': dependencies: - '@eslint/object-schema': 3.0.2 + '@eslint/object-schema': 3.0.5 debug: 4.4.3 - minimatch: 10.2.2 + minimatch: 10.2.5 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.5.2': + '@eslint/config-helpers@0.5.5': dependencies: - '@eslint/core': 1.1.0 + '@eslint/core': 1.2.1 - '@eslint/core@0.17.0': + '@eslint/core@1.2.1': dependencies: '@types/json-schema': 7.0.15 - '@eslint/core@1.1.0': + '@eslint/markdown@8.0.1': dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/markdown@7.5.1': - dependencies: - '@eslint/core': 0.17.0 - '@eslint/plugin-kit': 0.4.1 + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.6.1 github-slugger: 2.0.0 mdast-util-from-markdown: 2.0.3 mdast-util-frontmatter: 2.0.1 mdast-util-gfm: 3.1.0 + mdast-util-math: 3.0.0 micromark-extension-frontmatter: 2.0.0 micromark-extension-gfm: 3.0.0 + micromark-extension-math: 3.1.0 micromark-util-normalize-identifier: 2.0.1 transitivePeerDependencies: - supports-color - '@eslint/object-schema@3.0.2': {} + '@eslint/object-schema@3.0.5': {} - '@eslint/plugin-kit@0.4.1': + '@eslint/plugin-kit@0.6.1': dependencies: - '@eslint/core': 0.17.0 + '@eslint/core': 1.2.1 levn: 0.4.1 - '@eslint/plugin-kit@0.6.0': + '@eslint/plugin-kit@0.7.1': dependencies: - '@eslint/core': 1.1.0 + '@eslint/core': 1.2.1 levn: 0.4.1 '@humanfs/core@0.19.1': {} @@ -1560,26 +1571,23 @@ snapshots: '@jridgewell/sourcemap-codec@1.5.5': {} - '@ota-meshi/ast-token-store@0.2.1(@eslint/markdown@7.5.1)(eslint@10.0.1)': - dependencies: - '@eslint/markdown': 7.5.1 - eslint: 10.0.1 + '@ota-meshi/ast-token-store@0.3.0': {} '@pkgr/core@0.2.9': {} '@sindresorhus/base62@1.0.0': {} - '@stylistic/eslint-plugin@5.9.0(eslint@10.0.1)': + '@stylistic/eslint-plugin@5.10.0(eslint@10.2.0)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) - '@typescript-eslint/types': 8.56.0 - eslint: 10.0.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0) + '@typescript-eslint/types': 8.58.2 + eslint: 10.2.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 - picomatch: 4.0.3 + picomatch: 4.0.4 - '@types/debug@4.1.12': + '@types/debug@4.1.13': dependencies: '@types/ms': 2.1.0 @@ -1587,8 +1595,14 @@ snapshots: '@types/estree@1.0.8': {} + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + '@types/json-schema@7.0.15': {} + '@types/katex@0.16.8': {} + '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 @@ -1597,110 +1611,125 @@ snapshots: '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.56.0(eslint@10.0.1)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/type-utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.56.0 - eslint: 10.0.1 + '@typescript-eslint/parser': 8.58.2(eslint@10.2.0)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/type-utils': 8.58.2(eslint@10.2.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.58.2(eslint@10.2.0)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.58.2 + eslint: 10.2.0 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.4.0(typescript@5.9.3) + ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3)': + '@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.56.0 + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/typescript-estree': 8.58.2(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.58.2 debug: 4.4.3 - eslint: 10.0.1 + eslint: 10.2.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.56.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.58.2(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.3) - '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@5.9.3) + '@typescript-eslint/types': 8.58.2 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.56.0': + '@typescript-eslint/rule-tester@8.58.2(eslint@10.2.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/visitor-keys': 8.56.0 - - '@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - - '@typescript-eslint/type-utils@8.56.0(eslint@10.0.1)(typescript@5.9.3)': - dependencies: - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) - debug: 4.4.3 - eslint: 10.0.1 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@8.56.0': {} - - '@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/project-service': 8.56.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.3) - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/visitor-keys': 8.56.0 - debug: 4.4.3 - minimatch: 9.0.6 + '@typescript-eslint/parser': 8.58.2(eslint@10.2.0)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.58.2(typescript@5.9.3) + '@typescript-eslint/utils': 8.58.2(eslint@10.2.0)(typescript@5.9.3) + ajv: 6.14.0 + eslint: 10.2.0 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 semver: 7.7.4 - tinyglobby: 0.2.15 - ts-api-utils: 2.4.0(typescript@5.9.3) + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/scope-manager@8.58.2': + dependencies: + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/visitor-keys': 8.58.2 + + '@typescript-eslint/tsconfig-utils@8.58.2(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.58.2(eslint@10.2.0)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/typescript-estree': 8.58.2(typescript@5.9.3) + '@typescript-eslint/utils': 8.58.2(eslint@10.2.0)(typescript@5.9.3) + debug: 4.4.3 + eslint: 10.2.0 + ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.56.0(eslint@10.0.1)(typescript@5.9.3)': + '@typescript-eslint/types@8.58.2': {} + + '@typescript-eslint/typescript-estree@8.58.2(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) - '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - eslint: 10.0.1 + '@typescript-eslint/project-service': 8.58.2(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@5.9.3) + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/visitor-keys': 8.58.2 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.7.4 + tinyglobby: 0.2.16 + ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.56.0': + '@typescript-eslint/utils@8.58.2(eslint@10.2.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.56.0 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0) + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/typescript-estree': 8.58.2(typescript@5.9.3) + eslint: 10.2.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.58.2': + dependencies: + '@typescript-eslint/types': 8.58.2 eslint-visitor-keys: 5.0.1 - '@vitest/eslint-plugin@1.6.9(eslint@10.0.1)(typescript@5.9.3)': + '@vitest/eslint-plugin@1.6.15(@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) - eslint: 10.0.1 + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/utils': 8.58.2(eslint@10.2.0)(typescript@5.9.3) + eslint: 10.2.0 optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color '@vue/compiler-core@3.5.28': dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@vue/shared': 3.5.28 entities: 7.0.1 estree-walker: 2.0.2 @@ -1713,14 +1742,14 @@ snapshots: '@vue/compiler-sfc@3.5.28': dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@vue/compiler-core': 3.5.28 '@vue/compiler-dom': 3.5.28 '@vue/compiler-ssr': 3.5.28 '@vue/shared': 3.5.28 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.6 + postcss: 8.5.9 source-map-js: 1.2.1 '@vue/compiler-ssr@3.5.28': @@ -1757,31 +1786,27 @@ snapshots: balanced-match@4.0.4: {} - baseline-browser-mapping@2.10.0: {} + baseline-browser-mapping@2.10.19: {} boolbase@1.0.0: {} - brace-expansion@5.0.3: + brace-expansion@5.0.5: dependencies: balanced-match: 4.0.4 - braces@3.0.3: + browserslist@4.28.2: dependencies: - fill-range: 7.1.1 + baseline-browser-mapping: 2.10.19 + caniuse-lite: 1.0.30001788 + electron-to-chromium: 1.5.336 + node-releases: 2.0.37 + update-browserslist-db: 1.2.3(browserslist@4.28.2) - browserslist@4.28.1: - dependencies: - baseline-browser-mapping: 2.10.0 - caniuse-lite: 1.0.30001772 - electron-to-chromium: 1.5.302 - node-releases: 2.0.27 - update-browserslist-db: 1.2.3(browserslist@4.28.1) + builtin-modules@5.1.0: {} - builtin-modules@5.0.0: {} + cac@7.0.0: {} - cac@6.7.14: {} - - caniuse-lite@1.0.30001772: {} + caniuse-lite@1.0.30001788: {} ccount@2.0.1: {} @@ -1799,26 +1824,28 @@ snapshots: dependencies: restore-cursor: 5.1.0 - cli-truncate@5.1.1: + cli-truncate@5.2.0: dependencies: - slice-ansi: 7.1.2 + slice-ansi: 8.0.0 string-width: 8.2.0 colorette@2.0.20: {} commander@14.0.3: {} - comment-parser@1.4.1: {} + commander@8.3.0: {} comment-parser@1.4.5: {} + comment-parser@1.4.6: {} + confbox@0.1.8: {} confbox@0.2.4: {} - core-js-compat@3.48.0: + core-js-compat@3.49.0: dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 cross-spawn@7.0.6: dependencies: @@ -1844,20 +1871,18 @@ snapshots: dependencies: dequal: 2.0.3 - diff-sequences@27.5.1: {} - diff-sequences@29.6.3: {} - electron-to-chromium@1.5.302: {} + electron-to-chromium@1.5.336: {} emoji-regex@10.6.0: {} empathic@2.0.0: {} - enhanced-resolve@5.19.0: + enhanced-resolve@5.20.1: dependencies: graceful-fs: 4.2.11 - tapable: 2.3.0 + tapable: 2.3.2 entities@7.0.1: {} @@ -1871,66 +1896,71 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.5.1(eslint@10.0.1): + eslint-compat-utils@0.5.1(eslint@10.2.0): dependencies: - eslint: 10.0.1 + eslint: 10.2.0 semver: 7.7.4 - eslint-compat-utils@0.6.5(eslint@10.0.1): + eslint-config-flat-gitignore@2.3.0(eslint@10.2.0): dependencies: - eslint: 10.0.1 - semver: 7.7.4 + '@eslint/compat': 2.0.5(eslint@10.2.0) + eslint: 10.2.0 - eslint-config-flat-gitignore@2.2.1(eslint@10.0.1): + eslint-flat-config-utils@3.1.0: dependencies: - '@eslint/compat': 2.0.2(eslint@10.0.1) - eslint: 10.0.1 - - eslint-flat-config-utils@3.0.1: - dependencies: - '@eslint/config-helpers': 0.5.2 + '@eslint/config-helpers': 0.5.5 pathe: 2.0.3 - eslint-json-compat-utils@0.2.2(eslint@10.0.1)(jsonc-eslint-parser@2.4.2): + eslint-json-compat-utils@0.2.3(eslint@10.2.0)(jsonc-eslint-parser@3.1.0): dependencies: - eslint: 10.0.1 + eslint: 10.2.0 esquery: 1.7.0 - jsonc-eslint-parser: 2.4.2 + jsonc-eslint-parser: 3.1.0 - eslint-merge-processors@2.0.0(eslint@10.0.1): + eslint-merge-processors@2.0.0(eslint@10.2.0): dependencies: - eslint: 10.0.1 + eslint: 10.2.0 - eslint-plugin-antfu@3.2.2(eslint@10.0.1): + eslint-plugin-antfu@3.2.2(eslint@10.2.0): dependencies: - eslint: 10.0.1 + eslint: 10.2.0 - eslint-plugin-command@3.4.0(eslint@10.0.1): - dependencies: - '@es-joy/jsdoccomment': 0.78.0 - eslint: 10.0.1 - - eslint-plugin-es-x@7.8.0(eslint@10.0.1): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) - '@eslint-community/regexpp': 4.12.2 - eslint: 10.0.1 - eslint-compat-utils: 0.5.1(eslint@10.0.1) - - eslint-plugin-import-lite@0.5.2(eslint@10.0.1): - dependencies: - eslint: 10.0.1 - - eslint-plugin-jsdoc@62.7.0(eslint@10.0.1): + eslint-plugin-command@3.5.2(@typescript-eslint/rule-tester@8.58.2(eslint@10.2.0)(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.58.2(typescript@5.9.3))(@typescript-eslint/utils@8.58.2(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0): dependencies: '@es-joy/jsdoccomment': 0.84.0 + '@typescript-eslint/rule-tester': 8.58.2(eslint@10.2.0)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.58.2(typescript@5.9.3) + '@typescript-eslint/utils': 8.58.2(eslint@10.2.0)(typescript@5.9.3) + eslint: 10.2.0 + + eslint-plugin-depend@1.5.0(eslint@10.2.0): + dependencies: + empathic: 2.0.0 + eslint: 10.2.0 + module-replacements: 2.11.0 + semver: 7.7.4 + + eslint-plugin-es-x@7.8.0(eslint@10.2.0): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0) + '@eslint-community/regexpp': 4.12.2 + eslint: 10.2.0 + eslint-compat-utils: 0.5.1(eslint@10.2.0) + + eslint-plugin-import-lite@0.6.0(eslint@10.2.0): + dependencies: + eslint: 10.2.0 + + eslint-plugin-jsdoc@62.9.0(eslint@10.2.0): + dependencies: + '@es-joy/jsdoccomment': 0.86.0 '@es-joy/resolve.exports': 1.2.0 are-docs-informative: 0.0.2 - comment-parser: 1.4.5 + comment-parser: 1.4.6 debug: 4.4.3 escape-string-regexp: 4.0.0 - eslint: 10.0.1 - espree: 11.1.1 + eslint: 10.2.0 + espree: 11.2.0 esquery: 1.7.0 html-entities: 2.6.0 object-deep-merge: 2.0.0 @@ -1941,28 +1971,28 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-jsonc@2.21.1(eslint@10.0.1): + eslint-plugin-jsonc@3.1.2(eslint@10.2.0): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) - diff-sequences: 27.5.1 - eslint: 10.0.1 - eslint-compat-utils: 0.6.5(eslint@10.0.1) - eslint-json-compat-utils: 0.2.2(eslint@10.0.1)(jsonc-eslint-parser@2.4.2) - espree: 10.4.0 - graphemer: 1.4.0 - jsonc-eslint-parser: 2.4.2 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0) + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.6.1 + '@ota-meshi/ast-token-store': 0.3.0 + diff-sequences: 29.6.3 + eslint: 10.2.0 + eslint-json-compat-utils: 0.2.3(eslint@10.2.0)(jsonc-eslint-parser@3.1.0) + jsonc-eslint-parser: 3.1.0 natural-compare: 1.4.0 synckit: 0.11.12 transitivePeerDependencies: - '@eslint/json' - eslint-plugin-n@17.24.0(eslint@10.0.1)(typescript@5.9.3): + eslint-plugin-n@17.24.0(eslint@10.2.0)(typescript@5.9.3): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) - enhanced-resolve: 5.19.0 - eslint: 10.0.1 - eslint-plugin-es-x: 7.8.0(eslint@10.0.1) - get-tsconfig: 4.13.6 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0) + enhanced-resolve: 5.20.1 + eslint: 10.2.0 + eslint-plugin-es-x: 7.8.0(eslint@10.2.0) + get-tsconfig: 4.13.8 globals: 15.15.0 globrex: 0.1.2 ignore: 5.3.2 @@ -1973,110 +2003,108 @@ snapshots: eslint-plugin-no-only-tests@3.3.0: {} - eslint-plugin-perfectionist@5.6.0(eslint@10.0.1)(typescript@5.9.3): + eslint-plugin-perfectionist@5.8.0(eslint@10.2.0)(typescript@5.9.3): dependencies: - '@typescript-eslint/utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) - eslint: 10.0.1 + '@typescript-eslint/utils': 8.58.2(eslint@10.2.0)(typescript@5.9.3) + eslint: 10.2.0 natural-orderby: 5.0.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-pnpm@1.5.0(eslint@10.0.1): + eslint-plugin-pnpm@1.6.0(eslint@10.2.0): dependencies: empathic: 2.0.0 - eslint: 10.0.1 - jsonc-eslint-parser: 2.4.2 + eslint: 10.2.0 + jsonc-eslint-parser: 3.1.0 pathe: 2.0.3 - pnpm-workspace-yaml: 1.5.0 - tinyglobby: 0.2.15 - yaml: 2.8.2 + pnpm-workspace-yaml: 1.6.0 + tinyglobby: 0.2.16 + yaml: 2.8.3 yaml-eslint-parser: 2.0.0 - eslint-plugin-regexp@3.0.0(eslint@10.0.1): + eslint-plugin-regexp@3.1.0(eslint@10.2.0): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0) '@eslint-community/regexpp': 4.12.2 - comment-parser: 1.4.5 - eslint: 10.0.1 - jsdoc-type-pratt-parser: 7.1.1 + comment-parser: 1.4.6 + eslint: 10.2.0 + jsdoc-type-pratt-parser: 7.2.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-toml@1.1.1(@eslint/markdown@7.5.1)(eslint@10.0.1): + eslint-plugin-toml@1.3.1(eslint@10.2.0): dependencies: - '@eslint/core': 1.1.0 - '@eslint/plugin-kit': 0.6.0 - '@ota-meshi/ast-token-store': 0.2.1(@eslint/markdown@7.5.1)(eslint@10.0.1) + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.6.1 + '@ota-meshi/ast-token-store': 0.3.0 debug: 4.4.3 - eslint: 10.0.1 + eslint: 10.2.0 toml-eslint-parser: 1.0.3 transitivePeerDependencies: - - '@eslint/markdown' - supports-color - eslint-plugin-unicorn@63.0.0(eslint@10.0.1): + eslint-plugin-unicorn@64.0.0(eslint@10.2.0): dependencies: '@babel/helper-validator-identifier': 7.28.5 - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0) change-case: 5.4.4 ci-info: 4.4.0 clean-regexp: 1.0.0 - core-js-compat: 3.48.0 - eslint: 10.0.1 + core-js-compat: 3.49.0 + eslint: 10.2.0 find-up-simple: 1.0.1 - globals: 16.5.0 + globals: 17.5.0 indent-string: 5.0.0 is-builtin-module: 5.0.0 jsesc: 3.1.0 pluralize: 8.0.0 regexp-tree: 0.1.27 - regjsparser: 0.13.0 + regjsparser: 0.13.1 semver: 7.7.4 strip-indent: 4.1.1 - eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1): + eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0): dependencies: - eslint: 10.0.1 + eslint: 10.2.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(typescript@5.9.3) - eslint-plugin-vue@10.8.0(@stylistic/eslint-plugin@5.9.0(eslint@10.0.1))(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)): + eslint-plugin-vue@10.8.0(@stylistic/eslint-plugin@5.10.0(eslint@10.2.0))(@typescript-eslint/parser@8.58.2(eslint@10.2.0)(typescript@5.9.3))(eslint@10.2.0)(vue-eslint-parser@10.4.0(eslint@10.2.0)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) - eslint: 10.0.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0) + eslint: 10.2.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 7.1.1 semver: 7.7.4 - vue-eslint-parser: 10.4.0(eslint@10.0.1) + vue-eslint-parser: 10.4.0(eslint@10.2.0) xml-name-validator: 4.0.0 optionalDependencies: - '@stylistic/eslint-plugin': 5.9.0(eslint@10.0.1) - '@typescript-eslint/parser': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + '@stylistic/eslint-plugin': 5.10.0(eslint@10.2.0) + '@typescript-eslint/parser': 8.58.2(eslint@10.2.0)(typescript@5.9.3) - eslint-plugin-yml@3.2.1(@eslint/markdown@7.5.1)(eslint@10.0.1): + eslint-plugin-yml@3.3.1(eslint@10.2.0): dependencies: - '@eslint/core': 1.1.0 - '@eslint/plugin-kit': 0.6.0 - '@ota-meshi/ast-token-store': 0.2.1(@eslint/markdown@7.5.1)(eslint@10.0.1) + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.6.1 + '@ota-meshi/ast-token-store': 0.3.0 debug: 4.4.3 diff-sequences: 29.6.3 escape-string-regexp: 5.0.0 - eslint: 10.0.1 + eslint: 10.2.0 natural-compare: 1.4.0 yaml-eslint-parser: 2.0.0 transitivePeerDependencies: - - '@eslint/markdown' - supports-color - eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.28)(eslint@10.0.1): + eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.28)(eslint@10.2.0): dependencies: '@vue/compiler-sfc': 3.5.28 - eslint: 10.0.1 + eslint: 10.2.0 - eslint-scope@9.1.1: + eslint-scope@9.1.2: dependencies: '@types/esrecurse': 4.3.1 '@types/estree': 1.0.8 @@ -2089,14 +2117,14 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.0.1: + eslint@10.2.0: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.2 - '@eslint/config-helpers': 0.5.2 - '@eslint/core': 1.1.0 - '@eslint/plugin-kit': 0.6.0 + '@eslint/config-array': 0.23.5 + '@eslint/config-helpers': 0.5.5 + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.7.1 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -2105,9 +2133,9 @@ snapshots: cross-spawn: 7.0.6 debug: 4.4.3 escape-string-regexp: 4.0.0 - eslint-scope: 9.1.1 + eslint-scope: 9.1.2 eslint-visitor-keys: 5.0.1 - espree: 11.1.1 + espree: 11.2.0 esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -2118,7 +2146,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.2.2 + minimatch: 10.2.5 natural-compare: 1.4.0 optionator: 0.9.4 transitivePeerDependencies: @@ -2130,18 +2158,12 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.16.0) eslint-visitor-keys: 4.2.1 - espree@11.1.1: + espree@11.2.0: dependencies: acorn: 8.16.0 acorn-jsx: 5.3.2(acorn@8.16.0) eslint-visitor-keys: 5.0.1 - espree@9.6.1: - dependencies: - acorn: 8.16.0 - acorn-jsx: 5.3.2(acorn@8.16.0) - eslint-visitor-keys: 3.4.3 - esquery@1.7.0: dependencies: estraverse: 5.3.0 @@ -2166,22 +2188,28 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-string-truncated-width@1.2.1: {} + + fast-string-width@1.1.0: + dependencies: + fast-string-truncated-width: 1.2.1 + + fast-wrap-ansi@0.1.6: + dependencies: + fast-string-width: 1.1.0 + fault@2.0.1: dependencies: format: 0.2.2 - fdir@6.5.0(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - find-up-simple@1.0.1: {} find-up@5.0.0: @@ -2191,16 +2219,16 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.3 + flatted: 3.4.2 keyv: 4.5.4 - flatted@3.3.3: {} + flatted@3.4.2: {} format@0.2.2: {} get-east-asian-width@1.5.0: {} - get-tsconfig@4.13.6: + get-tsconfig@4.13.8: dependencies: resolve-pkg-maps: 1.0.0 @@ -2212,16 +2240,12 @@ snapshots: globals@15.15.0: {} - globals@16.5.0: {} - - globals@17.3.0: {} + globals@17.5.0: {} globrex@0.1.2: {} graceful-fs@4.2.11: {} - graphemer@1.4.0: {} - html-entities@2.6.0: {} ignore@5.3.2: {} @@ -2234,7 +2258,7 @@ snapshots: is-builtin-module@5.0.0: dependencies: - builtin-modules: 5.0.0 + builtin-modules: 5.1.0 is-extglob@2.1.1: {} @@ -2246,14 +2270,12 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-number@7.0.0: {} - isexe@2.0.0: {} - jsdoc-type-pratt-parser@7.0.0: {} - jsdoc-type-pratt-parser@7.1.1: {} + jsdoc-type-pratt-parser@7.2.0: {} + jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -2262,13 +2284,16 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} - jsonc-eslint-parser@2.4.2: + jsonc-eslint-parser@3.1.0: dependencies: acorn: 8.16.0 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-visitor-keys: 5.0.1 semver: 7.7.4 + katex@0.16.45: + dependencies: + commander: 8.3.0 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -2278,19 +2303,18 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lint-staged@16.2.7: + lint-staged@16.4.0: dependencies: commander: 14.0.3 listr2: 9.0.5 - micromatch: 4.0.8 - nano-spawn: 2.0.0 - pidtree: 0.6.0 + picomatch: 4.0.4 string-argv: 0.3.2 - yaml: 2.8.2 + tinyexec: 1.1.1 + yaml: 2.8.3 listr2@9.0.5: dependencies: - cli-truncate: 5.1.1 + cli-truncate: 5.2.0 colorette: 2.0.20 eventemitter3: 5.0.4 log-update: 6.1.0 @@ -2299,7 +2323,7 @@ snapshots: local-pkg@1.1.2: dependencies: - mlly: 1.8.0 + mlly: 1.8.2 pkg-types: 2.3.0 quansync: 0.2.11 @@ -2307,12 +2331,14 @@ snapshots: dependencies: p-locate: 5.0.0 + lodash.merge@4.6.2: {} + log-update@6.1.0: dependencies: ansi-escapes: 7.3.0 cli-cursor: 5.0.0 slice-ansi: 7.1.2 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 wrap-ansi: 9.0.2 longest-streak@3.1.0: {} @@ -2415,6 +2441,18 @@ snapshots: transitivePeerDependencies: - supports-color + mdast-util-math@3.0.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + longest-streak: 3.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + unist-util-remove-position: 5.0.0 + transitivePeerDependencies: + - supports-color + mdast-util-phrasing@4.1.0: dependencies: '@types/mdast': 4.0.4 @@ -2520,6 +2558,16 @@ snapshots: micromark-util-combine-extensions: 2.0.1 micromark-util-types: 2.0.2 + micromark-extension-math@3.1.0: + dependencies: + '@types/katex': 0.16.8 + devlop: 1.1.0 + katex: 0.16.45 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-factory-destination@2.0.1: dependencies: micromark-util-character: 2.1.1 @@ -2614,7 +2662,7 @@ snapshots: micromark@4.0.2: dependencies: - '@types/debug': 4.1.12 + '@types/debug': 4.1.13 debug: 4.4.3 decode-named-character-reference: 1.3.0 devlop: 1.1.0 @@ -2634,31 +2682,22 @@ snapshots: transitivePeerDependencies: - supports-color - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - mimic-function@5.0.1: {} - minimatch@10.2.2: + minimatch@10.2.5: dependencies: - brace-expansion: 5.0.3 + brace-expansion: 5.0.5 - minimatch@9.0.6: - dependencies: - brace-expansion: 5.0.3 - - mlly@1.8.0: + mlly@1.8.2: dependencies: acorn: 8.16.0 pathe: 2.0.3 pkg-types: 1.3.1 ufo: 1.6.3 - ms@2.1.3: {} + module-replacements@2.11.0: {} - nano-spawn@2.0.0: {} + ms@2.1.3: {} nanoid@3.3.11: {} @@ -2666,7 +2705,7 @@ snapshots: natural-orderby@5.0.0: {} - node-releases@2.0.27: {} + node-releases@2.0.37: {} nth-check@2.1.1: dependencies: @@ -2713,16 +2752,12 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.1: {} - - picomatch@4.0.3: {} - - pidtree@0.6.0: {} + picomatch@4.0.4: {} pkg-types@1.3.1: dependencies: confbox: 0.1.8 - mlly: 1.8.0 + mlly: 1.8.2 pathe: 2.0.3 pkg-types@2.3.0: @@ -2733,16 +2768,16 @@ snapshots: pluralize@8.0.0: {} - pnpm-workspace-yaml@1.5.0: + pnpm-workspace-yaml@1.6.0: dependencies: - yaml: 2.8.2 + yaml: 2.8.3 postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss@8.5.6: + postcss@8.5.9: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -2765,7 +2800,7 @@ snapshots: regexp-tree@0.1.27: {} - regjsparser@0.13.0: + regjsparser@0.13.1: dependencies: jsesc: 3.1.0 @@ -2805,6 +2840,11 @@ snapshots: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 + slice-ansi@8.0.0: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 + source-map-js@1.2.1: {} spdx-exceptions@2.5.0: {} @@ -2822,14 +2862,14 @@ snapshots: dependencies: emoji-regex: 10.6.0 get-east-asian-width: 1.5.0 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 string-width@8.2.0: dependencies: get-east-asian-width: 1.5.0 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 - strip-ansi@7.1.2: + strip-ansi@7.2.0: dependencies: ansi-regex: 6.2.2 @@ -2839,18 +2879,14 @@ snapshots: dependencies: '@pkgr/core': 0.2.9 - tapable@2.3.0: {} + tapable@2.3.2: {} - tinyexec@1.0.2: {} + tinyexec@1.1.1: {} - tinyglobby@0.2.15: + tinyglobby@0.2.16: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 to-valid-identifier@1.0.0: dependencies: @@ -2861,13 +2897,13 @@ snapshots: dependencies: eslint-visitor-keys: 5.0.1 - ts-api-utils@2.4.0(typescript@5.9.3): + ts-api-utils@2.5.0(typescript@5.9.3): dependencies: typescript: 5.9.3 ts-declaration-location@1.0.7(typescript@5.9.3): dependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 typescript: 5.9.3 type-check@0.4.0: @@ -2882,6 +2918,11 @@ snapshots: dependencies: '@types/unist': 3.0.3 + unist-util-remove-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-visit: 5.1.0 + unist-util-stringify-position@4.0.0: dependencies: '@types/unist': 3.0.3 @@ -2897,9 +2938,9 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - update-browserslist-db@1.2.3(browserslist@4.28.1): + update-browserslist-db@1.2.3(browserslist@4.28.2): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 escalade: 3.2.0 picocolors: 1.1.1 @@ -2909,13 +2950,13 @@ snapshots: util-deprecate@1.0.2: {} - vue-eslint-parser@10.4.0(eslint@10.0.1): + vue-eslint-parser@10.4.0(eslint@10.2.0): dependencies: debug: 4.4.3 - eslint: 10.0.1 - eslint-scope: 9.1.1 + eslint: 10.2.0 + eslint-scope: 9.1.2 eslint-visitor-keys: 5.0.1 - espree: 11.1.1 + espree: 11.2.0 esquery: 1.7.0 semver: 7.7.4 transitivePeerDependencies: @@ -2931,16 +2972,16 @@ snapshots: dependencies: ansi-styles: 6.2.3 string-width: 7.2.0 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 xml-name-validator@4.0.0: {} yaml-eslint-parser@2.0.0: dependencies: eslint-visitor-keys: 5.0.1 - yaml: 2.8.2 + yaml: 2.8.3 - yaml@2.8.2: {} + yaml@2.8.3: {} yocto-queue@0.1.0: {} diff --git a/src/_template/operator.mk b/src/_template/operator.mk index 69935af..199940d 100644 --- a/src/_template/operator.mk +++ b/src/_template/operator.mk @@ -1,4 +1,8 @@ -# Kubernetes Operator Installation Template +# DEPRECATED: This file is deprecated. Do not use for new services. +# Operators and services should be in separate directories, each using base.mk directly. +# See AGENTS.md "Operator / Service Separation" for details. +# +# Kubernetes Operator Installation Template (DEPRECATED) # This file provides common targets for deploying services using the Operator pattern. # # Usage: diff --git a/src/cassandra-operator/Makefile b/src/cassandra-operator/Makefile new file mode 100644 index 0000000..dfe5680 --- /dev/null +++ b/src/cassandra-operator/Makefile @@ -0,0 +1,15 @@ +HELM_RELEASE_NAME ?= k8ssandra-operator +HELM_APPLICATION_NAME ?= k8ssandra-operator +HELM_NAMESPACE ?= k8ssandra-operator +HELM_DIR ?= ./helm +HELM_CHART_VERSION ?= +HELM_VALUES_FILE ?= ./values.yaml +HELM_OCI_REGISTRY ?= +HELM_OCI_NAMESPACE ?= +HELM_OCI_USERNAME ?= +HELM_OCI_PASSWORD ?= +HELM_REPO_NAME ?= k8ssandra +HELM_REPO_URL ?= https://helm.k8ssandra.io/stable +HELM_CHART_REPO ?= $(HELM_REPO_NAME)/k8ssandra-operator + +include ../_template/base.mk diff --git a/src/cassandra-operator/README.md b/src/cassandra-operator/README.md new file mode 100644 index 0000000..8fa9d29 --- /dev/null +++ b/src/cassandra-operator/README.md @@ -0,0 +1,60 @@ +# K8ssandra Operator + +## Introduction + +K8ssandra Operator is a Kubernetes operator that manages the lifecycle of Apache Cassandra clusters using K8ssandra. It handles provisioning, scaling, repair scheduling (Reaper), backup management (Medusa), and monitoring. + +This chart installs the K8ssandra Operator only. To deploy a K8ssandra/Cassandra cluster using Helm, see the [cassandra](../cassandra/) directory. Alternatively, Cassandra clusters can be created with K8ssandraCluster CRDs — a sample cluster definition is provided in `k8ssandra-cluster.yaml`. + +## Installation + +To install the K8ssandra Operator, run: + +```bash +make install +``` + +## Usage + +After installation, verify the operator is running: + +```bash +kubectl get pods -n k8ssandra-operator +``` + +Create a Cassandra cluster using the sample CRD: + +```bash +kubectl apply -f k8ssandra-cluster.yaml -n cassandra +``` + +Check the cluster status: + +```bash +kubectl get k8ssandraclusters -n cassandra +``` + +Connect with cqlsh once the cluster is ready: + +```bash +kubectl exec -it -n cassandra cassandra-cluster-dc1-default-sts-0 -- cqlsh +``` + +Check that CRDs are registered: + +```bash +kubectl get crd | grep k8ssandra +``` + +## Uninstall + +To uninstall: + +```bash +make uninstall +``` + +## Documentation + +- [K8ssandra Documentation](https://docs.k8ssandra.io/) +- [K8ssandra Operator GitHub](https://github.com/k8ssandra/k8ssandra-operator) diff --git a/src/cassandra-operator/README.zh.md b/src/cassandra-operator/README.zh.md new file mode 100644 index 0000000..e493e27 --- /dev/null +++ b/src/cassandra-operator/README.zh.md @@ -0,0 +1,60 @@ +# K8ssandra Operator + +## 简介 + +K8ssandra Operator 是一个 Kubernetes Operator,用于管理基于 K8ssandra 的 Apache Cassandra 集群的生命周期。它负责集群的配置、扩展、修复调度(Reaper)、备份管理(Medusa)和监控。 + +此 Chart 仅安装 K8ssandra Operator。要使用 Helm 部署 K8ssandra/Cassandra 集群,请参阅 [cassandra](../cassandra/) 目录。也可以通过 K8ssandraCluster CRD 创建 Cassandra 集群——示例集群定义见 `k8ssandra-cluster.yaml`。 + +## 安装 + +安装 K8ssandra Operator: + +```bash +make install +``` + +## 使用 + +安装完成后,验证 Operator 是否正常运行: + +```bash +kubectl get pods -n k8ssandra-operator +``` + +使用示例 CRD 创建 Cassandra 集群: + +```bash +kubectl apply -f k8ssandra-cluster.yaml -n cassandra +``` + +检查集群状态: + +```bash +kubectl get k8ssandraclusters -n cassandra +``` + +集群就绪后,可使用 cqlsh 连接: + +```bash +kubectl exec -it -n cassandra cassandra-cluster-dc1-default-sts-0 -- cqlsh +``` + +检查 CRD 是否已注册: + +```bash +kubectl get crd | grep k8ssandra +``` + +## 卸载 + +卸载: + +```bash +make uninstall +``` + +## 文档 + +- [K8ssandra 文档](https://docs.k8ssandra.io/) +- [K8ssandra Operator GitHub](https://github.com/k8ssandra/k8ssandra-operator) diff --git a/src/cassandra-operator/k8ssandra-cluster.yaml b/src/cassandra-operator/k8ssandra-cluster.yaml new file mode 100644 index 0000000..252102e --- /dev/null +++ b/src/cassandra-operator/k8ssandra-cluster.yaml @@ -0,0 +1,38 @@ +apiVersion: k8ssandra.io/v1alpha1 +kind: K8ssandraCluster +metadata: + name: cassandra-cluster +spec: + cassandra: + serverVersion: 4.0.1 + datacenters: + - metadata: + name: dc1 + size: 3 + racks: + - name: rack1 + - name: rack2 + - name: rack3 + storageConfig: + cassandraDataVolumeClaimSpec: + storageClassName: standard + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi + config: + jvmOptions: + heapSize: 1Gi + resources: + requests: + cpu: 1000m + memory: 4Gi + limits: + cpu: 2000m + memory: 4Gi + reaper: + autoScheduling: + enabled: false + medusa: + storageProperties: {} diff --git a/src/cassandra-operator/values.yaml b/src/cassandra-operator/values.yaml new file mode 100644 index 0000000..0f7ee03 --- /dev/null +++ b/src/cassandra-operator/values.yaml @@ -0,0 +1,28 @@ +# K8ssandra Operator Configuration +# https://github.com/k8ssandra/k8ssandra-operator + +# Operator configuration +replicaCount: 1 + +resources: + requests: + cpu: 100m + memory: 256Mi + limits: + cpu: 500m + memory: 512Mi + +# Medusa backup configuration +medusa: + enabled: false + +# Prometheus monitoring +monitoring: + enabled: false + +# Cluster-wide configuration +clusterScoped: false + +# Webhook configuration +webhook: + enabled: false diff --git a/src/cassandra/Makefile b/src/cassandra/Makefile index 9eb76f6..314b53c 100644 --- a/src/cassandra/Makefile +++ b/src/cassandra/Makefile @@ -1,5 +1,5 @@ -HELM_RELEASE_NAME ?= cassandra -HELM_APPLICATION_NAME ?= cassandra +HELM_RELEASE_NAME ?= k8ssandra +HELM_APPLICATION_NAME ?= k8ssandra HELM_NAMESPACE ?= cassandra HELM_DIR ?= ./helm HELM_CHART_VERSION ?= @@ -10,21 +10,6 @@ HELM_OCI_USERNAME ?= HELM_OCI_PASSWORD ?= HELM_REPO_NAME ?= k8ssandra HELM_REPO_URL ?= https://helm.k8ssandra.io/stable +HELM_CHART_REPO ?= $(HELM_REPO_NAME)/k8ssandra -# Operator configuration -OPERATOR_RELEASE_NAME ?= k8ssandra-operator -OPERATOR_NAMESPACE ?= k8ssandra-operator -OPERATOR_CHART_REPO ?= $(HELM_REPO_NAME)/k8ssandra-operator -OPERATOR_CHART_VERSION ?= -OPERATOR_VALUES_FILE ?= ./values.yaml - -# Cluster configuration -CLUSTER_RELEASE_NAME ?= cassandra-cluster -CLUSTER_CHART_REPO ?= $(HELM_REPO_NAME)/k8ssandra -CLUSTER_VALUES_FILE ?= ./cluster-values.yaml - -# Enable CRD waiting -WAIT_FOR_CRD ?= true - -include ../_template/base.mk -include ../_template/operator.mk +include ../_template/base.mk \ No newline at end of file diff --git a/src/cassandra/README.md b/src/cassandra/README.md index 076302c..e337139 100644 --- a/src/cassandra/README.md +++ b/src/cassandra/README.md @@ -2,13 +2,13 @@ ## Introduction -Apache Cassandra is an open-source distributed NoSQL database management system designed to handle large amounts of data across many commodity servers. This deployment uses K8ssandra Operator, which provides a Kubernetes-native way to manage Cassandra clusters. +Apache Cassandra is a free, open-source, distributed, wide-column store, NoSQL database management system designed to handle large amounts of data across many commodity servers. This chart deploys a K8ssandra cluster, which manages Cassandra using the K8ssandra Operator. -K8ssandra is a cloud-native distribution of Apache Cassandra that runs on Kubernetes. It includes automation for operational tasks such as repairs, backups, and monitoring. +The K8ssandra Operator must be installed first — see the [cassandra-operator](../cassandra-operator/) directory. ## Installation -To install Cassandra, run: +To install Apache Cassandra, run: ```bash make install @@ -16,67 +16,34 @@ make install ## Usage -After installation, you can create a Cassandra cluster: +After installation, verify the deployment: ```bash -# Check if operator is running kubectl get pods -n cassandra - -# Create a Cassandra cluster -kubectl apply -f - < +``` + +## Uninstall + +To uninstall: + +```bash +make uninstall +``` + +## Documentation + +- [OpenLIT Operator Overview](https://docs.openlit.io/latest/operator/overview) +- [Installation Guide](https://docs.openlit.io/latest/operator/installation) +- [Configuration](https://docs.openlit.io/latest/operator/configuration/operator) diff --git a/src/openlit-operator/README.zh.md b/src/openlit-operator/README.zh.md new file mode 100644 index 0000000..12bd3c6 --- /dev/null +++ b/src/openlit-operator/README.zh.md @@ -0,0 +1,51 @@ +# OpenLIT Operator + +## 简介 + +OpenLIT Operator 是一个 Kubernetes Operator,为零代码 AI 可观测性提供支持。它利用 OpenTelemetry 通过 init 容器注入探针,自动为 AI/LLM 工作负载(如 OpenAI、HuggingFace、LangChain 和向量数据库)添加可观测性,无需修改代码。 + +用于接收和可视化遥测数据的 OpenLIT 后端,请参阅 [openlit](../openlit/) 目录。 + +`auto-instrumentation.yaml` 中提供了示例 AutoInstrumentation 清单。 + +## 安装 + +安装 OpenLIT Operator: + +```bash +make install +``` + +## 使用 + +安装完成后,验证 Operator 是否正常运行: + +```bash +kubectl get pods -n openlit +``` + +使用示例 CRD 创建 `AutoInstrumentation` 资源: + +```bash +kubectl apply -f auto-instrumentation.yaml -n default +``` + +重启你的应用 Deployment 以使 instrumentation 生效: + +```bash +kubectl rollout restart deployment +``` + +## 卸载 + +卸载: + +```bash +make uninstall +``` + +## 文档 + +- [OpenLIT Operator 概览](https://docs.openlit.io/latest/operator/overview) +- [安装指南](https://docs.openlit.io/latest/operator/installation) +- [配置说明](https://docs.openlit.io/latest/operator/configuration/operator) diff --git a/src/openlit-operator/auto-instrumentation.yaml b/src/openlit-operator/auto-instrumentation.yaml new file mode 100644 index 0000000..bf7bc17 --- /dev/null +++ b/src/openlit-operator/auto-instrumentation.yaml @@ -0,0 +1,13 @@ +apiVersion: openlit.io/v1alpha1 +kind: AutoInstrumentation +metadata: + name: my-instrumentation +spec: + selector: + matchLabels: + app: my-ai-app + python: + instrumentation: + enabled: true + otlp: + endpoint: 'http://openlit.openlit.svc:4318' diff --git a/src/openlit-operator/values.yaml b/src/openlit-operator/values.yaml new file mode 100644 index 0000000..a823f06 --- /dev/null +++ b/src/openlit-operator/values.yaml @@ -0,0 +1,19 @@ +# OpenLIT Operator Helm Chart Values +# https://github.com/openlit/openlit + +# Operator image configuration +image: + repository: ghcr.io/openlit/openlit-operator + pullPolicy: IfNotPresent + +# Operator replica count +replicaCount: 1 + +# Resource limits and requests +resources: + requests: + cpu: 100m + memory: 128Mi + limits: + cpu: 500m + memory: 256Mi diff --git a/src/openlit/Makefile b/src/openlit/Makefile new file mode 100644 index 0000000..1c6cd1c --- /dev/null +++ b/src/openlit/Makefile @@ -0,0 +1,15 @@ +HELM_RELEASE_NAME ?= openlit +HELM_APPLICATION_NAME ?= openlit +HELM_NAMESPACE ?= openlit +HELM_DIR ?= ./helm +HELM_CHART_VERSION ?= +HELM_VALUES_FILE ?= ./values.yaml +HELM_OCI_REGISTRY ?= +HELM_OCI_NAMESPACE ?= +HELM_OCI_USERNAME ?= +HELM_OCI_PASSWORD ?= +HELM_REPO_NAME ?= openlit +HELM_REPO_URL ?= https://openlit.github.io/helm/ +HELM_CHART_REPO ?= $(HELM_REPO_NAME)/openlit + +include ../_template/base.mk \ No newline at end of file diff --git a/src/openlit/README.md b/src/openlit/README.md new file mode 100644 index 0000000..ef51dc0 --- /dev/null +++ b/src/openlit/README.md @@ -0,0 +1,45 @@ +# OpenLIT + +## Introduction + +OpenLIT is an open-source observability platform for AI/LLM applications. It provides monitoring, tracing, and analytics for AI workloads including OpenAI, HuggingFace, LangChain, and vector databases. This chart deploys the OpenLIT backend that receives and visualizes telemetry data. + +For zero-code AI instrumentation of your applications, install the [openlit-operator](../openlit-operator/) which automatically injects OpenTelemetry instrumentation via init containers. + +## Installation + +To install OpenLIT, run: + +```bash +make install +``` + +## Usage + +After installation, verify the deployment: + +```bash +kubectl get pods -n openlit +``` + +To access the OpenLIT dashboard, port-forward the service: + +```bash +kubectl port-forward svc/openlit 8080:8080 -n openlit +``` + +Then access at + +## Uninstall + +To uninstall OpenLIT: + +```bash +make uninstall +``` + +## Documentation + +- [OpenLIT Documentation](https://docs.openlit.io/) +- [OpenLIT GitHub](https://github.com/openlit/openlit) +- [OpenLIT Operator](https://docs.openlit.io/latest/operator/overview) diff --git a/src/openlit/README.zh.md b/src/openlit/README.zh.md new file mode 100644 index 0000000..098c90c --- /dev/null +++ b/src/openlit/README.zh.md @@ -0,0 +1,45 @@ +# OpenLIT + +## 简介 + +OpenLIT 是一个开源的 AI/LLM 应用可观测性平台。它为 AI 工作负载(包括 OpenAI、HuggingFace、LangChain 和向量数据库)提供监控、追踪和分析功能。此 Chart 部署 OpenLIT 后端,用于接收和可视化遥测数据。 + +如需对应用进行零代码 AI 探针注入,请安装 [openlit-operator](../openlit-operator/),它通过 init 容器自动注入 OpenTelemetry 探针。 + +## 安装 + +要安装 OpenLIT,请运行: + +```bash +make install +``` + +## 使用 + +安装完成后,验证部署: + +```bash +kubectl get pods -n openlit +``` + +要访问 OpenLIT 仪表板,请端口转发服务: + +```bash +kubectl port-forward svc/openlit 8080:8080 -n openlit +``` + +然后在 访问 + +## 卸载 + +卸载 OpenLIT: + +```bash +make uninstall +``` + +## 文档 + +- [OpenLIT 文档](https://docs.openlit.io/) +- [OpenLIT GitHub](https://github.com/openlit/openlit) +- [OpenLIT Operator](https://docs.openlit.io/latest/operator/overview) diff --git a/src/openlit/values.yaml b/src/openlit/values.yaml new file mode 100644 index 0000000..54509bf --- /dev/null +++ b/src/openlit/values.yaml @@ -0,0 +1,22 @@ +# OpenLIT Helm Chart Values +# https://github.com/openlit/openlit + +# OpenLIT backend configuration +openlit: + # AI observability configuration + ai: + enabled: true + + # Resource configuration + resources: + requests: + cpu: 100m + memory: 128Mi + limits: + cpu: 500m + memory: 512Mi + +# Service configuration +service: + type: ClusterIP + port: 8080 diff --git a/src/postgres-operator/Makefile b/src/postgres-operator/Makefile new file mode 100644 index 0000000..17d7571 --- /dev/null +++ b/src/postgres-operator/Makefile @@ -0,0 +1,15 @@ +HELM_RELEASE_NAME ?= cnpg +HELM_APPLICATION_NAME ?= cloudnative-pg +HELM_NAMESPACE ?= cnpg-system +HELM_DIR ?= ./helm +HELM_CHART_VERSION ?= +HELM_VALUES_FILE ?= ./values.yaml +HELM_OCI_REGISTRY ?= +HELM_OCI_NAMESPACE ?= +HELM_OCI_USERNAME ?= +HELM_OCI_PASSWORD ?= +HELM_REPO_NAME ?= cnpg +HELM_REPO_URL ?= https://cloudnative-pg.github.io/charts +HELM_CHART_REPO ?= $(HELM_REPO_NAME)/cloudnative-pg + +include ../_template/base.mk \ No newline at end of file diff --git a/src/postgres-operator/README.md b/src/postgres-operator/README.md new file mode 100644 index 0000000..e7c1376 --- /dev/null +++ b/src/postgres-operator/README.md @@ -0,0 +1,76 @@ +# CloudNativePG Operator + +## Introduction + +CloudNativePG is a Kubernetes operator for PostgreSQL that manages the entire PostgreSQL lifecycle — provisioning, replication, failover, backup, and monitoring — through Kubernetes-native CRDs. + +This chart installs the CloudNativePG Operator only. PostgreSQL clusters are created through Cluster CRDs after the operator is installed. + +## Installation + +To install the CloudNativePG Operator, run: + +```bash +make install +``` + +## Usage + +After installation, verify the operator is running: + +```bash +kubectl get pods -n cnpg-system +``` + +Check that CRDs are registered: + +```bash +kubectl get crd | grep cnpg +``` + +### Create a PostgreSQL Cluster + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: postgres-cluster +spec: + instances: 3 + storage: + size: 1Gi + postgresql: + parameters: + max_connections: '200' +``` + +Apply the manifest: + +```bash +kubectl apply -f postgres-cluster.yaml +``` + +Check the cluster status: + +```bash +kubectl get cluster -n postgres +``` + +Connect to PostgreSQL: + +```bash +kubectl exec -it postgres-cluster-1 -n postgres -- psql +``` + +## Uninstall + +To uninstall: + +```bash +make uninstall +``` + +## Documentation + +- [CloudNativePG Documentation](https://cloudnative-pg.io/documentation/) +- [CloudNativePG GitHub](https://github.com/cloudnative-pg/cloudnative-pg) diff --git a/src/postgres-operator/README.zh.md b/src/postgres-operator/README.zh.md new file mode 100644 index 0000000..64ac75e --- /dev/null +++ b/src/postgres-operator/README.zh.md @@ -0,0 +1,76 @@ +# CloudNativePG Operator + +## 简介 + +CloudNativePG 是一个 PostgreSQL Kubernetes Operator,通过 Kubernetes 原生 CRD 管理完整的 PostgreSQL 生命周期——配置、复制、故障转移、备份和监控。 + +此 Chart 仅安装 CloudNativePG Operator。PostgreSQL 集群在 Operator 安装后通过 Cluster CRD 创建。 + +## 安装 + +安装 CloudNativePG Operator: + +```bash +make install +``` + +## 使用 + +安装完成后,验证 Operator 是否正常运行: + +```bash +kubectl get pods -n cnpg-system +``` + +检查 CRD 是否已注册: + +```bash +kubectl get crd | grep cnpg +``` + +### 创建 PostgreSQL 集群 + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: postgres-cluster +spec: + instances: 3 + storage: + size: 1Gi + postgresql: + parameters: + max_connections: '200' +``` + +应用清单: + +```bash +kubectl apply -f postgres-cluster.yaml +``` + +检查集群状态: + +```bash +kubectl get cluster -n postgres +``` + +连接 PostgreSQL: + +```bash +kubectl exec -it postgres-cluster-1 -n postgres -- psql +``` + +## 卸载 + +卸载: + +```bash +make uninstall +``` + +## 文档 + +- [CloudNativePG 文档](https://cloudnative-pg.io/documentation/) +- [CloudNativePG GitHub](https://github.com/cloudnative-pg/cloudnative-pg) diff --git a/src/postgres-operator/values.yaml b/src/postgres-operator/values.yaml new file mode 100644 index 0000000..567b73b --- /dev/null +++ b/src/postgres-operator/values.yaml @@ -0,0 +1,14 @@ +# CloudNativePG Operator Configuration +# https://cloudnative-pg.io/documentation/ + +# Default values for cloudnative-pg +# Uses chart defaults for most settings + +# Resource configuration +resources: + requests: + cpu: 100m + memory: 128Mi + limits: + cpu: 500m + memory: 512Mi diff --git a/src/postgres/README.md b/src/postgres/README.md index 5370b11..60cbaca 100644 --- a/src/postgres/README.md +++ b/src/postgres/README.md @@ -4,6 +4,8 @@ PostgreSQL is a powerful, open source object-relational database system with over 35 years of active development. +This chart deploys a standalone PostgreSQL instance. For operator-managed PostgreSQL with automated high availability, failover, backup, and monitoring, see the [postgres-operator](../postgres-operator/) directory. + ## Installation To install PostgreSQL, run: diff --git a/src/postgres/README.zh.md b/src/postgres/README.zh.md index ac0ef88..ded738d 100644 --- a/src/postgres/README.zh.md +++ b/src/postgres/README.zh.md @@ -2,7 +2,9 @@ ## 简介 -PostgreSQL 是一个强大的开源对象关系数据库系统,已有超过 35 年的活跃开发。 +PostgreSQL 是一个功能强大的开源对象关系型数据库系统,拥有超过 35 年的活跃开发历史。 + +此 Chart 部署独立的 PostgreSQL 实例。如需 Operator 管理的 PostgreSQL(支持自动高可用、故障转移、备份和监控),请参阅 [postgres-operator](../postgres-operator/) 目录。 ## 安装 diff --git a/src/rabbitmq-cluster-operator/Makefile b/src/rabbitmq-cluster-operator/Makefile index 394706f..7c4deaf 100644 --- a/src/rabbitmq-cluster-operator/Makefile +++ b/src/rabbitmq-cluster-operator/Makefile @@ -1,6 +1,6 @@ -HELM_RELEASE_NAME ?= rabbitmq -HELM_APPLICATION_NAME ?= rabbitmq -HELM_NAMESPACE ?= rabbitmq +HELM_RELEASE_NAME ?= rabbitmq-cluster-operator +HELM_APPLICATION_NAME ?= rabbitmq-cluster-operator +HELM_NAMESPACE ?= rabbitmq-operator HELM_DIR ?= ./helm HELM_CHART_VERSION ?= 0.2.0 HELM_VALUES_FILE ?= ./values.yaml @@ -8,28 +8,6 @@ HELM_OCI_REGISTRY ?= docker.io HELM_OCI_NAMESPACE ?= cloudpirates HELM_OCI_USERNAME ?= HELM_OCI_PASSWORD ?= - -# Operator configuration -OPERATOR_RELEASE_NAME ?= rabbitmq-cluster-operator -OPERATOR_NAMESPACE ?= rabbitmq-operator -OPERATOR_CHART_REPO ?= oci://$(HELM_OCI_REGISTRY)/$(HELM_OCI_NAMESPACE)/rabbitmq-cluster-operator -OPERATOR_CHART_VERSION ?= $(HELM_CHART_VERSION) -OPERATOR_VALUES_FILE ?= ./values.yaml - -# For RabbitMQ Cluster Operator, we only install the operator -# RabbitMQ clusters are created using RabbitmqCluster CRDs after operator is installed +HELM_CHART_REPO ?= oci://$(HELM_OCI_REGISTRY)/$(HELM_OCI_NAMESPACE)/rabbitmq-cluster-operator include ../_template/base.mk -include ../_template/operator.mk - -# Override install target to only install operator -.PHONY: install -install: install-operator - -# Override uninstall target to only uninstall operator -.PHONY: uninstall -uninstall: uninstall-operator - -# Override verify target -.PHONY: verify -verify: verify-operator diff --git a/src/rabbitmq-cluster-operator/README.md b/src/rabbitmq-cluster-operator/README.md index 4e99ee1..924155e 100644 --- a/src/rabbitmq-cluster-operator/README.md +++ b/src/rabbitmq-cluster-operator/README.md @@ -4,6 +4,8 @@ The RabbitMQ Cluster Operator is a Kubernetes operator that automates the deployment and management of RabbitMQ clusters on Kubernetes. +For a standalone RabbitMQ deployment (without operator), see the [rabbitmq](../rabbitmq/) directory. + ## Installation To install RabbitMQ Cluster Operator, run: @@ -17,7 +19,7 @@ make install After installation, verify the deployment: ```bash -kubectl get pods -n rabbitmq-cluster-operator +kubectl get pods -n rabbitmq-operator ``` To create a RabbitMQ cluster, apply a RabbitmqCluster custom resource: diff --git a/src/rabbitmq-cluster-operator/README.zh.md b/src/rabbitmq-cluster-operator/README.zh.md index 4ecc6ea..47b154a 100644 --- a/src/rabbitmq-cluster-operator/README.zh.md +++ b/src/rabbitmq-cluster-operator/README.zh.md @@ -2,7 +2,9 @@ ## 简介 -RabbitMQ Cluster Operator 是一个 Kubernetes 运营商,用于在 Kubernetes 上自动部署和管理 RabbitMQ 集群。 +RabbitMQ Cluster Operator 是一个 Kubernetes Operator,用于自动化 Kubernetes 上 RabbitMQ 集群的部署和管理。 + +如需部署独立的 RabbitMQ(不使用 Operator),请参阅 [rabbitmq](../rabbitmq/) 目录。 ## 安装 @@ -17,7 +19,7 @@ make install 安装后,验证部署: ```bash -kubectl get pods -n rabbitmq-cluster-operator +kubectl get pods -n rabbitmq-operator ``` 要创建 RabbitMQ 集群,请应用 RabbitmqCluster 自定义资源: diff --git a/src/rabbitmq/README.md b/src/rabbitmq/README.md index f965426..7b71dac 100644 --- a/src/rabbitmq/README.md +++ b/src/rabbitmq/README.md @@ -4,6 +4,8 @@ RabbitMQ is the most widely deployed open source message broker. +This chart deploys a standalone RabbitMQ instance using the CloudPirates Helm chart. For operator-managed RabbitMQ clusters with advanced features like automatic scaling and self-healing, see the [rabbitmq-cluster-operator](../rabbitmq-cluster-operator/) directory. + ## Installation To install RabbitMQ, run: diff --git a/src/rabbitmq/README.zh.md b/src/rabbitmq/README.zh.md index 3ffd8eb..e491441 100644 --- a/src/rabbitmq/README.zh.md +++ b/src/rabbitmq/README.zh.md @@ -4,6 +4,8 @@ RabbitMQ 是部署最广泛的开源消息代理。 +此 Chart 使用 CloudPirates Helm chart 部署独立的 RabbitMQ 实例。如需 Operator 管理的 RabbitMQ 集群(支持自动扩缩容和自愈等高级功能),请参阅 [rabbitmq-cluster-operator](../rabbitmq-cluster-operator/) 目录。 + ## 安装 要安装 RabbitMQ,请运行: diff --git a/src/vault/Makefile b/src/vault/Makefile index 7ca281b..ff04e80 100644 --- a/src/vault/Makefile +++ b/src/vault/Makefile @@ -2,7 +2,7 @@ HELM_RELEASE_NAME ?= vault HELM_APPLICATION_NAME ?= vault HELM_NAMESPACE ?= vault HELM_DIR ?= ./helm -HELM_CHART_VERSION ?= +HELM_CHART_VERSION ?= 0.31.0 HELM_VALUES_FILE ?= ./values.yaml HELM_OCI_REGISTRY ?= HELM_OCI_NAMESPACE ?=