From 490da81d6b95fac06bd79b1cf16d5762bd216ed3 Mon Sep 17 00:00:00 2001 From: Yizack Rangel Date: Tue, 8 Jul 2025 21:03:30 -0500 Subject: [PATCH 01/13] chore(deps): update deps --- package.json | 8 +- pnpm-lock.yaml | 1144 ++++++++++++++++++++++++------------------------ 2 files changed, 581 insertions(+), 571 deletions(-) diff --git a/package.json b/package.json index 4175bb3..3566d67 100644 --- a/package.json +++ b/package.json @@ -57,11 +57,11 @@ "devDependencies": { "@eslint/compat": "^1.3.1", "@stylistic/eslint-plugin": "^5.1.0", - "@types/node": "^24.0.10", - "@typescript-eslint/eslint-plugin": "^8.35.1", - "@typescript-eslint/parser": "^8.35.1", + "@types/node": "^24.0.12", + "@typescript-eslint/eslint-plugin": "^8.36.0", + "@typescript-eslint/parser": "^8.36.0", "@vitest/coverage-v8": "^3.2.4", - "changelogen": "^0.6.1", + "changelogen": "^0.6.2", "eslint": "^9.30.1", "eslint-plugin-import-x": "^4.16.1", "jiti": "^2.4.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c6f4883..e32b541 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,26 +19,26 @@ importers: specifier: ^5.1.0 version: 5.1.0(eslint@9.30.1(jiti@2.4.2)) '@types/node': - specifier: ^24.0.10 - version: 24.0.10 + specifier: ^24.0.12 + version: 24.0.12 '@typescript-eslint/eslint-plugin': - specifier: ^8.35.1 - version: 8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + specifier: ^8.36.0 + version: 8.36.0(@typescript-eslint/parser@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/parser': - specifier: ^8.35.1 - version: 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + specifier: ^8.36.0 + version: 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) '@vitest/coverage-v8': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@24.0.10)(jiti@2.4.2)) + version: 3.2.4(vitest@3.2.4(@types/node@24.0.12)(jiti@2.4.2)) changelogen: - specifier: ^0.6.1 - version: 0.6.1(magicast@0.3.5) + specifier: ^0.6.2 + version: 0.6.2(magicast@0.3.5) eslint: specifier: ^9.30.1 version: 9.30.1(jiti@2.4.2) eslint-plugin-import-x: specifier: ^4.16.1 - version: 4.16.1(@typescript-eslint/utils@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2)) + version: 4.16.1(@typescript-eslint/utils@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2)) jiti: specifier: ^2.4.2 version: 2.4.2 @@ -53,13 +53,13 @@ importers: version: 3.5.0(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)) vitepress: specifier: ^1.6.3 - version: 1.6.3(@algolia/client-search@5.30.0)(@types/node@24.0.10)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.8.3) + version: 1.6.3(@algolia/client-search@5.32.0)(@types/node@24.0.12)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.8.3) vitepress-plugin-group-icons: specifier: ^1.6.1 - version: 1.6.1(markdown-it@14.1.0)(vite@7.0.0(@types/node@24.0.10)(jiti@2.4.2)) + version: 1.6.1(markdown-it@14.1.0)(vite@7.0.3(@types/node@24.0.12)(jiti@2.4.2)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@24.0.10)(jiti@2.4.2) + version: 3.2.4(@types/node@24.0.12)(jiti@2.4.2) packages: @@ -83,56 +83,56 @@ packages: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/client-abtesting@5.30.0': - resolution: {integrity: sha512-Q3OQXYlTNqVUN/V1qXX8VIzQbLjP3yrRBO9m6NRe1CBALmoGHh9JrYosEGvfior28+DjqqU3Q+nzCSuf/bX0Gw==} + '@algolia/client-abtesting@5.32.0': + resolution: {integrity: sha512-HG/6Eib6DnJYm/B2ijWFXr4txca/YOuA4K7AsEU0JBrOZSB+RU7oeDyNBPi3c0v0UDDqlkBqM3vBU/auwZlglA==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.30.0': - resolution: {integrity: sha512-/b+SAfHjYjx/ZVeVReCKTTnFAiZWOyvYLrkYpeNMraMT6akYRR8eC1AvFcvR60GLG/jytxcJAp42G8nN5SdcLg==} + '@algolia/client-analytics@5.32.0': + resolution: {integrity: sha512-8Y9MLU72WFQOW3HArYv16+Wvm6eGmsqbxxM1qxtm0hvSASJbxCm+zQAZe5stqysTlcWo4BJ82KEH1PfgHbJAmQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.30.0': - resolution: {integrity: sha512-tbUgvkp2d20mHPbM0+NPbLg6SzkUh0lADUUjzNCF+HiPkjFRaIW3NGMlESKw5ia4Oz6ZvFzyREquUX6rdkdJcQ==} + '@algolia/client-common@5.32.0': + resolution: {integrity: sha512-w8L+rgyXMCPBKmEdOT+RfgMrF0mT6HK60vPYWLz8DBs/P7yFdGo7urn99XCJvVLMSKXrIbZ2FMZ/i50nZTXnuQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.30.0': - resolution: {integrity: sha512-caXuZqJK761m32KoEAEkjkE2WF/zYg1McuGesWXiLSgfxwZZIAf+DljpiSToBUXhoPesvjcLtINyYUzbkwE0iw==} + '@algolia/client-insights@5.32.0': + resolution: {integrity: sha512-AdWfynhUeX7jz/LTiFU3wwzJembTbdLkQIOLs4n7PyBuxZ3jz4azV1CWbIP8AjUOFmul6uXbmYza+KqyS5CzOA==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.30.0': - resolution: {integrity: sha512-7K6P7TRBHLX1zTmwKDrIeBSgUidmbj6u3UW/AfroLRDGf9oZFytPKU49wg28lz/yulPuHY0nZqiwbyAxq9V17w==} + '@algolia/client-personalization@5.32.0': + resolution: {integrity: sha512-bTupJY4xzGZYI4cEQcPlSjjIEzMvv80h7zXGrXY1Y0KC/n/SLiMv84v7Uy+B6AG1Kiy9FQm2ADChBLo1uEhGtQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.30.0': - resolution: {integrity: sha512-WMjWuBjYxJheRt7Ec5BFr33k3cV0mq2WzmH9aBf5W4TT8kUp34x91VRsYVaWOBRlxIXI8o/WbhleqSngiuqjLA==} + '@algolia/client-query-suggestions@5.32.0': + resolution: {integrity: sha512-if+YTJw1G3nDKL2omSBjQltCHUQzbaHADkcPQrGFnIGhVyHU3Dzq4g46uEv8mrL5sxL8FjiS9LvekeUlL2NRqw==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.30.0': - resolution: {integrity: sha512-puc1/LREfSqzgmrOFMY5L/aWmhYOlJ0TTpa245C0ZNMKEkdOkcimFbXTXQ8lZhzh+rlyFgR7cQGNtXJ5H0XgZg==} + '@algolia/client-search@5.32.0': + resolution: {integrity: sha512-kmK5nVkKb4DSUgwbveMKe4X3xHdMsPsOVJeEzBvFJ+oS7CkBPmpfHAEq+CcmiPJs20YMv6yVtUT9yPWL5WgAhg==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.30.0': - resolution: {integrity: sha512-NfqiIKVgGKTLr6T9F81oqB39pPiEtILTy0z8ujxPKg2rCvI/qQeDqDWFBmQPElCfUTU6kk67QAgMkQ7T6fE+gg==} + '@algolia/ingestion@1.32.0': + resolution: {integrity: sha512-PZTqjJbx+fmPuT2ud1n4vYDSF1yrT//vOGI9HNYKNA0PM0xGUBWigf5gRivHsXa3oBnUlTyHV9j7Kqx5BHbVHQ==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.30.0': - resolution: {integrity: sha512-/eeM3aqLKro5KBZw0W30iIA6afkGa+bcpvEM0NDa92m5t3vil4LOmJI9FkgzfmSkF4368z/SZMOTPShYcaVXjA==} + '@algolia/monitoring@1.32.0': + resolution: {integrity: sha512-kYYoOGjvNQAmHDS1v5sBj+0uEL9RzYqH/TAdq8wmcV+/22weKt/fjh+6LfiqkS1SCZFYYrwGnirrUhUM36lBIQ==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.30.0': - resolution: {integrity: sha512-iWeAUWqw+xT+2IyUyTqnHCK+cyCKYV5+B6PXKdagc9GJJn6IaPs8vovwoC0Za5vKCje/aXQ24a2Z1pKpc/tdHg==} + '@algolia/recommend@5.32.0': + resolution: {integrity: sha512-jyIBLdskjPAL7T1g57UMfUNx+PzvYbxKslwRUKBrBA6sNEsYCFdxJAtZSLUMmw6MC98RDt4ksmEl5zVMT5bsuw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.30.0': - resolution: {integrity: sha512-alo3ly0tdNLjfMSPz9dmNwYUFHx7guaz5dTGlIzVGnOiwLgIoM6NgA+MJLMcH6e1S7OpmE2AxOy78svlhst2tQ==} + '@algolia/requester-browser-xhr@5.32.0': + resolution: {integrity: sha512-eDp14z92Gt6JlFgiexImcWWH+Lk07s/FtxcoDaGrE4UVBgpwqOO6AfQM6dXh1pvHxlDFbMJihHc/vj3gBhPjqQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.30.0': - resolution: {integrity: sha512-WOnTYUIY2InllHBy6HHMpGIOo7Or4xhYUx/jkoSK/kPIa1BRoFEHqa8v4pbKHtoG7oLvM2UAsylSnjVpIhGZXg==} + '@algolia/requester-fetch@5.32.0': + resolution: {integrity: sha512-rnWVglh/K75hnaLbwSc2t7gCkbq1ldbPgeIKDUiEJxZ4mlguFgcltWjzpDQ/t1LQgxk9HdIFcQfM17Hid3aQ6Q==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.30.0': - resolution: {integrity: sha512-uSTUh9fxeHde1c7KhvZKUrivk90sdiDftC+rSKNFKKEU9TiIKAGA7B2oKC+AoMCqMymot1vW9SGbeESQPTZd0w==} + '@algolia/requester-node-http@5.32.0': + resolution: {integrity: sha512-LbzQ04+VLkzXY4LuOzgyjqEv/46Gwrk55PldaglMJ4i4eDXSRXGKkwJpXFwsoU+c1HMQlHIyjJBhrfsfdyRmyQ==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': @@ -157,13 +157,13 @@ packages: resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} - '@babel/parser@7.27.7': - resolution: {integrity: sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==} + '@babel/parser@7.28.0': + resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/types@7.27.7': - resolution: {integrity: sha512-8OLQgDScAOHXnAz2cV+RfzzNMipuLVBz2biuAJFMV9bfkNf393je3VM8CLkjQodW5+iWsSJdSgSWT6rsZoXHPw==} + '@babel/types@7.28.0': + resolution: {integrity: sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@1.0.2': @@ -193,14 +193,14 @@ packages: search-insights: optional: true - '@emnapi/core@1.4.3': - resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==} + '@emnapi/core@1.4.4': + resolution: {integrity: sha512-A9CnAbC6ARNMKcIcrQwq6HeHCjpcBZ5wSx4U01WXCqEKlrzB9F9315WDNHkrs2xbx7YjjSxbUYxuN6EQzpcY2g==} - '@emnapi/runtime@1.4.3': - resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + '@emnapi/runtime@1.4.4': + resolution: {integrity: sha512-hHyapA4A3gPaDCNfiqyZUStTMqIkKRshqPIuDOXv1hcBnD4U3l8cP0T1HMCfGRxQ6V64TGCcoswChANyOAwbQg==} - '@emnapi/wasi-threads@1.0.2': - resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} + '@emnapi/wasi-threads@1.0.3': + resolution: {integrity: sha512-8K5IFFsQqF9wQNJptGbS6FNKgUTsSRYnTqNCG1vPP8jFdjSv18n2mQfJpkt2Oibo9iBEzcDnDxNwKTzC7svlJw==} '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} @@ -208,8 +208,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.5': - resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} + '@esbuild/aix-ppc64@0.25.6': + resolution: {integrity: sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -220,8 +220,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.5': - resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} + '@esbuild/android-arm64@0.25.6': + resolution: {integrity: sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -232,8 +232,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.5': - resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} + '@esbuild/android-arm@0.25.6': + resolution: {integrity: sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -244,8 +244,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.5': - resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} + '@esbuild/android-x64@0.25.6': + resolution: {integrity: sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -256,8 +256,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.5': - resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} + '@esbuild/darwin-arm64@0.25.6': + resolution: {integrity: sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -268,8 +268,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.5': - resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} + '@esbuild/darwin-x64@0.25.6': + resolution: {integrity: sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -280,8 +280,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.5': - resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} + '@esbuild/freebsd-arm64@0.25.6': + resolution: {integrity: sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -292,8 +292,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.5': - resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} + '@esbuild/freebsd-x64@0.25.6': + resolution: {integrity: sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -304,8 +304,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.5': - resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} + '@esbuild/linux-arm64@0.25.6': + resolution: {integrity: sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -316,8 +316,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.5': - resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} + '@esbuild/linux-arm@0.25.6': + resolution: {integrity: sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -328,8 +328,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.5': - resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} + '@esbuild/linux-ia32@0.25.6': + resolution: {integrity: sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -340,8 +340,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.5': - resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} + '@esbuild/linux-loong64@0.25.6': + resolution: {integrity: sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -352,8 +352,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.5': - resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} + '@esbuild/linux-mips64el@0.25.6': + resolution: {integrity: sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -364,8 +364,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.5': - resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} + '@esbuild/linux-ppc64@0.25.6': + resolution: {integrity: sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -376,8 +376,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.5': - resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} + '@esbuild/linux-riscv64@0.25.6': + resolution: {integrity: sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -388,8 +388,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.5': - resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} + '@esbuild/linux-s390x@0.25.6': + resolution: {integrity: sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -400,14 +400,14 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.5': - resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} + '@esbuild/linux-x64@0.25.6': + resolution: {integrity: sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.5': - resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} + '@esbuild/netbsd-arm64@0.25.6': + resolution: {integrity: sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -418,14 +418,14 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.5': - resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} + '@esbuild/netbsd-x64@0.25.6': + resolution: {integrity: sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.5': - resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} + '@esbuild/openbsd-arm64@0.25.6': + resolution: {integrity: sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -436,20 +436,26 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.5': - resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} + '@esbuild/openbsd-x64@0.25.6': + resolution: {integrity: sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openharmony-arm64@0.25.6': + resolution: {integrity: sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.5': - resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} + '@esbuild/sunos-x64@0.25.6': + resolution: {integrity: sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -460,8 +466,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.5': - resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} + '@esbuild/win32-arm64@0.25.6': + resolution: {integrity: sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -472,8 +478,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.5': - resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} + '@esbuild/win32-ia32@0.25.6': + resolution: {integrity: sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -484,8 +490,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.5': - resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} + '@esbuild/win32-x64@0.25.6': + resolution: {integrity: sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -564,8 +570,8 @@ packages: '@iconify-json/logos@1.2.4': resolution: {integrity: sha512-XC4If5D/hbaZvUkTV8iaZuGlQCyG6CNOlaAaJaGa13V5QMYwYjgtKk3vPP8wz3wtTVNVEVk3LRx1fOJz+YnSMw==} - '@iconify-json/simple-icons@1.2.41': - resolution: {integrity: sha512-4tt29cKzNsxvt6rjAOVhEgpZV0L8jleTDTMdtvIJjF14Afp9aH8peuwGYyX35l6idfFwuzbvjSVfVyVjJtfmYA==} + '@iconify-json/simple-icons@1.2.42': + resolution: {integrity: sha512-G/EED0hUV1wMNUsWaFdQYLibm6SO7rP2GZP1+CvhszB5WAFYYibD3zoWp3X96xSIWpYQFvccvE17ewpd0Q1hWQ==} '@iconify-json/vscode-icons@1.2.23': resolution: {integrity: sha512-gFTcKecKra2/b5SbGDgHGI/l8CuikHyBPmqGlK+YCmS8AK72dtDQbUekdoACsju/3TYS37QvdPoOQwnyx2LdYg==} @@ -678,103 +684,103 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.44.1': - resolution: {integrity: sha512-JAcBr1+fgqx20m7Fwe1DxPUl/hPkee6jA6Pl7n1v2EFiktAHenTaXl5aIFjUIEsfn9w3HE4gK1lEgNGMzBDs1w==} + '@rollup/rollup-android-arm-eabi@4.44.2': + resolution: {integrity: sha512-g0dF8P1e2QYPOj1gu7s/3LVP6kze9A7m6x0BZ9iTdXK8N5c2V7cpBKHV3/9A4Zd8xxavdhK0t4PnqjkqVmUc9Q==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.44.1': - resolution: {integrity: sha512-RurZetXqTu4p+G0ChbnkwBuAtwAbIwJkycw1n6GvlGlBuS4u5qlr5opix8cBAYFJgaY05TWtM+LaoFggUmbZEQ==} + '@rollup/rollup-android-arm64@4.44.2': + resolution: {integrity: sha512-Yt5MKrOosSbSaAK5Y4J+vSiID57sOvpBNBR6K7xAaQvk3MkcNVV0f9fE20T+41WYN8hDn6SGFlFrKudtx4EoxA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.44.1': - resolution: {integrity: sha512-fM/xPesi7g2M7chk37LOnmnSTHLG/v2ggWqKj3CCA1rMA4mm5KVBT1fNoswbo1JhPuNNZrVwpTvlCVggv8A2zg==} + '@rollup/rollup-darwin-arm64@4.44.2': + resolution: {integrity: sha512-EsnFot9ZieM35YNA26nhbLTJBHD0jTwWpPwmRVDzjylQT6gkar+zenfb8mHxWpRrbn+WytRRjE0WKsfaxBkVUA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.44.1': - resolution: {integrity: sha512-gDnWk57urJrkrHQ2WVx9TSVTH7lSlU7E3AFqiko+bgjlh78aJ88/3nycMax52VIVjIm3ObXnDL2H00e/xzoipw==} + '@rollup/rollup-darwin-x64@4.44.2': + resolution: {integrity: sha512-dv/t1t1RkCvJdWWxQ2lWOO+b7cMsVw5YFaS04oHpZRWehI1h0fV1gF4wgGCTyQHHjJDfbNpwOi6PXEafRBBezw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.44.1': - resolution: {integrity: sha512-wnFQmJ/zPThM5zEGcnDcCJeYJgtSLjh1d//WuHzhf6zT3Md1BvvhJnWoy+HECKu2bMxaIcfWiu3bJgx6z4g2XA==} + '@rollup/rollup-freebsd-arm64@4.44.2': + resolution: {integrity: sha512-W4tt4BLorKND4qeHElxDoim0+BsprFTwb+vriVQnFFtT/P6v/xO5I99xvYnVzKWrK6j7Hb0yp3x7V5LUbaeOMg==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.44.1': - resolution: {integrity: sha512-uBmIxoJ4493YATvU2c0upGz87f99e3wop7TJgOA/bXMFd2SvKCI7xkxY/5k50bv7J6dw1SXT4MQBQSLn8Bb/Uw==} + '@rollup/rollup-freebsd-x64@4.44.2': + resolution: {integrity: sha512-tdT1PHopokkuBVyHjvYehnIe20fxibxFCEhQP/96MDSOcyjM/shlTkZZLOufV3qO6/FQOSiJTBebhVc12JyPTA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.44.1': - resolution: {integrity: sha512-n0edDmSHlXFhrlmTK7XBuwKlG5MbS7yleS1cQ9nn4kIeW+dJH+ExqNgQ0RrFRew8Y+0V/x6C5IjsHrJmiHtkxQ==} + '@rollup/rollup-linux-arm-gnueabihf@4.44.2': + resolution: {integrity: sha512-+xmiDGGaSfIIOXMzkhJ++Oa0Gwvl9oXUeIiwarsdRXSe27HUIvjbSIpPxvnNsRebsNdUo7uAiQVgBD1hVriwSQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.44.1': - resolution: {integrity: sha512-8WVUPy3FtAsKSpyk21kV52HCxB+me6YkbkFHATzC2Yd3yuqHwy2lbFL4alJOLXKljoRw08Zk8/xEj89cLQ/4Nw==} + '@rollup/rollup-linux-arm-musleabihf@4.44.2': + resolution: {integrity: sha512-bDHvhzOfORk3wt8yxIra8N4k/N0MnKInCW5OGZaeDYa/hMrdPaJzo7CSkjKZqX4JFUWjUGm88lI6QJLCM7lDrA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.44.1': - resolution: {integrity: sha512-yuktAOaeOgorWDeFJggjuCkMGeITfqvPgkIXhDqsfKX8J3jGyxdDZgBV/2kj/2DyPaLiX6bPdjJDTu9RB8lUPQ==} + '@rollup/rollup-linux-arm64-gnu@4.44.2': + resolution: {integrity: sha512-NMsDEsDiYghTbeZWEGnNi4F0hSbGnsuOG+VnNvxkKg0IGDvFh7UVpM/14mnMwxRxUf9AdAVJgHPvKXf6FpMB7A==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.44.1': - resolution: {integrity: sha512-W+GBM4ifET1Plw8pdVaecwUgxmiH23CfAUj32u8knq0JPFyK4weRy6H7ooxYFD19YxBulL0Ktsflg5XS7+7u9g==} + '@rollup/rollup-linux-arm64-musl@4.44.2': + resolution: {integrity: sha512-lb5bxXnxXglVq+7imxykIp5xMq+idehfl+wOgiiix0191av84OqbjUED+PRC5OA8eFJYj5xAGcpAZ0pF2MnW+A==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.44.1': - resolution: {integrity: sha512-1zqnUEMWp9WrGVuVak6jWTl4fEtrVKfZY7CvcBmUUpxAJ7WcSowPSAWIKa/0o5mBL/Ij50SIf9tuirGx63Ovew==} + '@rollup/rollup-linux-loongarch64-gnu@4.44.2': + resolution: {integrity: sha512-Yl5Rdpf9pIc4GW1PmkUGHdMtbx0fBLE1//SxDmuf3X0dUC57+zMepow2LK0V21661cjXdTn8hO2tXDdAWAqE5g==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.44.1': - resolution: {integrity: sha512-Rl3JKaRu0LHIx7ExBAAnf0JcOQetQffaw34T8vLlg9b1IhzcBgaIdnvEbbsZq9uZp3uAH+JkHd20Nwn0h9zPjA==} + '@rollup/rollup-linux-powerpc64le-gnu@4.44.2': + resolution: {integrity: sha512-03vUDH+w55s680YYryyr78jsO1RWU9ocRMaeV2vMniJJW/6HhoTBwyyiiTPVHNWLnhsnwcQ0oH3S9JSBEKuyqw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.44.1': - resolution: {integrity: sha512-j5akelU3snyL6K3N/iX7otLBIl347fGwmd95U5gS/7z6T4ftK288jKq3A5lcFKcx7wwzb5rgNvAg3ZbV4BqUSw==} + '@rollup/rollup-linux-riscv64-gnu@4.44.2': + resolution: {integrity: sha512-iYtAqBg5eEMG4dEfVlkqo05xMOk6y/JXIToRca2bAWuqjrJYJlx/I7+Z+4hSrsWU8GdJDFPL4ktV3dy4yBSrzg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.44.1': - resolution: {integrity: sha512-ppn5llVGgrZw7yxbIm8TTvtj1EoPgYUAbfw0uDjIOzzoqlZlZrLJ/KuiE7uf5EpTpCTrNt1EdtzF0naMm0wGYg==} + '@rollup/rollup-linux-riscv64-musl@4.44.2': + resolution: {integrity: sha512-e6vEbgaaqz2yEHqtkPXa28fFuBGmUJ0N2dOJK8YUfijejInt9gfCSA7YDdJ4nYlv67JfP3+PSWFX4IVw/xRIPg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.44.1': - resolution: {integrity: sha512-Hu6hEdix0oxtUma99jSP7xbvjkUM/ycke/AQQ4EC5g7jNRLLIwjcNwaUy95ZKBJJwg1ZowsclNnjYqzN4zwkAw==} + '@rollup/rollup-linux-s390x-gnu@4.44.2': + resolution: {integrity: sha512-evFOtkmVdY3udE+0QKrV5wBx7bKI0iHz5yEVx5WqDJkxp9YQefy4Mpx3RajIVcM6o7jxTvVd/qpC1IXUhGc1Mw==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.44.1': - resolution: {integrity: sha512-EtnsrmZGomz9WxK1bR5079zee3+7a+AdFlghyd6VbAjgRJDbTANJ9dcPIPAi76uG05micpEL+gPGmAKYTschQw==} + '@rollup/rollup-linux-x64-gnu@4.44.2': + resolution: {integrity: sha512-/bXb0bEsWMyEkIsUL2Yt5nFB5naLAwyOWMEviQfQY1x3l5WsLKgvZf66TM7UTfED6erckUVUJQ/jJ1FSpm3pRQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.44.1': - resolution: {integrity: sha512-iAS4p+J1az6Usn0f8xhgL4PaU878KEtutP4hqw52I4IO6AGoyOkHCxcc4bqufv1tQLdDWFx8lR9YlwxKuv3/3g==} + '@rollup/rollup-linux-x64-musl@4.44.2': + resolution: {integrity: sha512-3D3OB1vSSBXmkGEZR27uiMRNiwN08/RVAcBKwhUYPaiZ8bcvdeEwWPvbnXvvXHY+A/7xluzcN+kaiOFNiOZwWg==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.44.1': - resolution: {integrity: sha512-NtSJVKcXwcqozOl+FwI41OH3OApDyLk3kqTJgx8+gp6On9ZEt5mYhIsKNPGuaZr3p9T6NWPKGU/03Vw4CNU9qg==} + '@rollup/rollup-win32-arm64-msvc@4.44.2': + resolution: {integrity: sha512-VfU0fsMK+rwdK8mwODqYeM2hDrF2WiHaSmCBrS7gColkQft95/8tphyzv2EupVxn3iE0FI78wzffoULH1G+dkw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.44.1': - resolution: {integrity: sha512-JYA3qvCOLXSsnTR3oiyGws1Dm0YTuxAAeaYGVlGpUsHqloPcFjPg+X0Fj2qODGLNwQOAcCiQmHub/V007kiH5A==} + '@rollup/rollup-win32-ia32-msvc@4.44.2': + resolution: {integrity: sha512-+qMUrkbUurpE6DVRjiJCNGZBGo9xM4Y0FXU5cjgudWqIBWbcLkjE3XprJUsOFgC6xjBClwVa9k6O3A7K3vxb5Q==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.44.1': - resolution: {integrity: sha512-J8o22LuF0kTe7m+8PvW9wk3/bRq5+mRo5Dqo6+vXb7otCm3TPhYOJqOaQtGU9YMWQSL3krMnoOxMr0+9E6F3Ug==} + '@rollup/rollup-win32-x64-msvc@4.44.2': + resolution: {integrity: sha512-3+QZROYfJ25PDcxFF66UEk8jGWigHJeecZILvkPkyQN7oc5BvFo4YEXFkOs154j3FTMp9mn9Ky8RCOwastduEA==} cpu: [x64] os: [win32] @@ -842,8 +848,8 @@ packages: '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} - '@types/node@24.0.10': - resolution: {integrity: sha512-ENHwaH+JIRTDIEEbDK6QSQntAYGtbvdDXnMXnZaZ6k13Du1dPMmprkEHIL7ok2Wl2aZevetwTAb5S+7yIF+enA==} + '@types/node@24.0.12': + resolution: {integrity: sha512-LtOrbvDf5ndC9Xi+4QZjVL0woFymF/xSTKZKPgrrl7H7XoeDvnD+E2IclKVDyaK9UM756W/3BXqSU+JEHopA9g==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -854,160 +860,160 @@ packages: '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} - '@typescript-eslint/eslint-plugin@8.35.1': - resolution: {integrity: sha512-9XNTlo7P7RJxbVeICaIIIEipqxLKguyh+3UbXuT2XQuFp6d8VOeDEGuz5IiX0dgZo8CiI6aOFLg4e8cF71SFVg==} + '@typescript-eslint/eslint-plugin@8.36.0': + resolution: {integrity: sha512-lZNihHUVB6ZZiPBNgOQGSxUASI7UJWhT8nHyUGCnaQ28XFCw98IfrMCG3rUl1uwUWoAvodJQby2KTs79UTcrAg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.35.1 + '@typescript-eslint/parser': ^8.36.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.35.1': - resolution: {integrity: sha512-3MyiDfrfLeK06bi/g9DqJxP5pV74LNv4rFTyvGDmT3x2p1yp1lOd+qYZfiRPIOf/oON+WRZR5wxxuF85qOar+w==} + '@typescript-eslint/parser@8.36.0': + resolution: {integrity: sha512-FuYgkHwZLuPbZjQHzJXrtXreJdFMKl16BFYyRrLxDhWr6Qr7Kbcu2s1Yhu8tsiMXw1S0W1pjfFfYEt+R604s+Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/project-service@8.35.1': - resolution: {integrity: sha512-VYxn/5LOpVxADAuP3NrnxxHYfzVtQzLKeldIhDhzC8UHaiQvYlXvKuVho1qLduFbJjjy5U5bkGwa3rUGUb1Q6Q==} + '@typescript-eslint/project-service@8.36.0': + resolution: {integrity: sha512-JAhQFIABkWccQYeLMrHadu/fhpzmSQ1F1KXkpzqiVxA/iYI6UnRt2trqXHt1sYEcw1mxLnB9rKMsOxXPxowN/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.35.1': - resolution: {integrity: sha512-s/Bpd4i7ht2934nG+UoSPlYXd08KYz3bmjLEb7Ye1UVob0d1ENiT3lY8bsCmik4RqfSbPw9xJJHbugpPpP5JUg==} + '@typescript-eslint/scope-manager@8.36.0': + resolution: {integrity: sha512-wCnapIKnDkN62fYtTGv2+RY8FlnBYA3tNm0fm91kc2BjPhV2vIjwwozJ7LToaLAyb1ca8BxrS7vT+Pvvf7RvqA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.35.1': - resolution: {integrity: sha512-K5/U9VmT9dTHoNowWZpz+/TObS3xqC5h0xAIjXPw+MNcKV9qg6eSatEnmeAwkjHijhACH0/N7bkhKvbt1+DXWQ==} + '@typescript-eslint/tsconfig-utils@8.36.0': + resolution: {integrity: sha512-Nhh3TIEgN18mNbdXpd5Q8mSCBnrZQeY9V7Ca3dqYvNDStNIGRmJA6dmrIPMJ0kow3C7gcQbpsG2rPzy1Ks/AnA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.35.1': - resolution: {integrity: sha512-HOrUBlfVRz5W2LIKpXzZoy6VTZzMu2n8q9C2V/cFngIC5U1nStJgv0tMV4sZPzdf4wQm9/ToWUFPMN9Vq9VJQQ==} + '@typescript-eslint/type-utils@8.36.0': + resolution: {integrity: sha512-5aaGYG8cVDd6cxfk/ynpYzxBRZJk7w/ymto6uiyUFtdCozQIsQWh7M28/6r57Fwkbweng8qAzoMCPwSJfWlmsg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.35.1': - resolution: {integrity: sha512-q/O04vVnKHfrrhNAscndAn1tuQhIkwqnaW+eu5waD5IPts2eX1dgJxgqcPx5BX109/qAz7IG6VrEPTOYKCNfRQ==} + '@typescript-eslint/types@8.36.0': + resolution: {integrity: sha512-xGms6l5cTJKQPZOKM75Dl9yBfNdGeLRsIyufewnxT4vZTrjC0ImQT4fj8QmtJK84F58uSh5HVBSANwcfiXxABQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.35.1': - resolution: {integrity: sha512-Vvpuvj4tBxIka7cPs6Y1uvM7gJgdF5Uu9F+mBJBPY4MhvjrjWGK4H0lVgLJd/8PWZ23FTqsaJaLEkBCFUk8Y9g==} + '@typescript-eslint/typescript-estree@8.36.0': + resolution: {integrity: sha512-JaS8bDVrfVJX4av0jLpe4ye0BpAaUW7+tnS4Y4ETa3q7NoZgzYbN9zDQTJ8kPb5fQ4n0hliAt9tA4Pfs2zA2Hg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.35.1': - resolution: {integrity: sha512-lhnwatFmOFcazAsUm3ZnZFpXSxiwoa1Lj50HphnDe1Et01NF4+hrdXONSUHIcbVu2eFb1bAf+5yjXkGVkXBKAQ==} + '@typescript-eslint/utils@8.36.0': + resolution: {integrity: sha512-VOqmHu42aEMT+P2qYjylw6zP/3E/HvptRwdn/PZxyV27KhZg2IOszXod4NcXisWzPAGSS4trE/g4moNj6XmH2g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.35.1': - resolution: {integrity: sha512-VRwixir4zBWCSTP/ljEo091lbpypz57PoeAQ9imjG+vbeof9LplljsL1mos4ccG6H9IjfrVGM359RozUnuFhpw==} + '@typescript-eslint/visitor-keys@8.36.0': + resolution: {integrity: sha512-vZrhV2lRPWDuGoxcmrzRZyxAggPL+qp3WzUrlZD+slFueDiYHxeBa34dUXPuC0RmGKzl4lS5kFJYvKCq9cnNDA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@unrs/resolver-binding-android-arm-eabi@1.9.2': - resolution: {integrity: sha512-tS+lqTU3N0kkthU+rYp0spAYq15DU8ld9kXkaKg9sbQqJNF+WPMuNHZQGCgdxrUOEO0j22RKMwRVhF1HTl+X8A==} + '@unrs/resolver-binding-android-arm-eabi@1.11.0': + resolution: {integrity: sha512-LRw5BW29sYj9NsQC6QoqeLVQhEa+BwVINYyMlcve+6stwdBsSt5UB7zw4UZB4+4PNqIVilHoMaPWCb/KhABHQw==} cpu: [arm] os: [android] - '@unrs/resolver-binding-android-arm64@1.9.2': - resolution: {integrity: sha512-MffGiZULa/KmkNjHeuuflLVqfhqLv1vZLm8lWIyeADvlElJ/GLSOkoUX+5jf4/EGtfwrNFcEaB8BRas03KT0/Q==} + '@unrs/resolver-binding-android-arm64@1.11.0': + resolution: {integrity: sha512-zYX8D2zcWCAHqghA8tPjbp7LwjVXbIZP++mpU/Mrf5jUVlk3BWIxkeB8yYzZi5GpFSlqMcRZQxQqbMI0c2lASQ==} cpu: [arm64] os: [android] - '@unrs/resolver-binding-darwin-arm64@1.9.2': - resolution: {integrity: sha512-dzJYK5rohS1sYl1DHdJ3mwfwClJj5BClQnQSyAgEfggbUwA9RlROQSSbKBLqrGfsiC/VyrDPtbO8hh56fnkbsQ==} + '@unrs/resolver-binding-darwin-arm64@1.11.0': + resolution: {integrity: sha512-YsYOT049hevAY/lTYD77GhRs885EXPeAfExG5KenqMJ417nYLS2N/kpRpYbABhFZBVQn+2uRPasTe4ypmYoo3w==} cpu: [arm64] os: [darwin] - '@unrs/resolver-binding-darwin-x64@1.9.2': - resolution: {integrity: sha512-gaIMWK+CWtXcg9gUyznkdV54LzQ90S3X3dn8zlh+QR5Xy7Y+Efqw4Rs4im61K1juy4YNb67vmJsCDAGOnIeffQ==} + '@unrs/resolver-binding-darwin-x64@1.11.0': + resolution: {integrity: sha512-PSjvk3OZf1aZImdGY5xj9ClFG3bC4gnSSYWrt+id0UAv+GwwVldhpMFjAga8SpMo2T1GjV9UKwM+QCsQCQmtdA==} cpu: [x64] os: [darwin] - '@unrs/resolver-binding-freebsd-x64@1.9.2': - resolution: {integrity: sha512-S7QpkMbVoVJb0xwHFwujnwCAEDe/596xqY603rpi/ioTn9VDgBHnCCxh+UFrr5yxuMH+dliHfjwCZJXOPJGPnw==} + '@unrs/resolver-binding-freebsd-x64@1.11.0': + resolution: {integrity: sha512-KC/iFaEN/wsTVYnHClyHh5RSYA9PpuGfqkFua45r4sweXpC0KHZ+BYY7ikfcGPt5w1lMpR1gneFzuqWLQxsRKg==} cpu: [x64] os: [freebsd] - '@unrs/resolver-binding-linux-arm-gnueabihf@1.9.2': - resolution: {integrity: sha512-+XPUMCuCCI80I46nCDFbGum0ZODP5NWGiwS3Pj8fOgsG5/ctz+/zzuBlq/WmGa+EjWZdue6CF0aWWNv84sE1uw==} + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.0': + resolution: {integrity: sha512-CDh/0v8uot43cB4yKtDL9CVY8pbPnMV0dHyQCE4lFz6PW/+9tS0i9eqP5a91PAqEBVMqH1ycu+k8rP6wQU846w==} cpu: [arm] os: [linux] - '@unrs/resolver-binding-linux-arm-musleabihf@1.9.2': - resolution: {integrity: sha512-sqvUyAd1JUpwbz33Ce2tuTLJKM+ucSsYpPGl2vuFwZnEIg0CmdxiZ01MHQ3j6ExuRqEDUCy8yvkDKvjYFPb8Zg==} + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.0': + resolution: {integrity: sha512-+TE7epATDSnvwr3L/hNHX3wQ8KQYB+jSDTdywycg3qDqvavRP8/HX9qdq/rMcnaRDn4EOtallb3vL/5wCWGCkw==} cpu: [arm] os: [linux] - '@unrs/resolver-binding-linux-arm64-gnu@1.9.2': - resolution: {integrity: sha512-UYA0MA8ajkEDCFRQdng/FVx3F6szBvk3EPnkTTQuuO9lV1kPGuTB+V9TmbDxy5ikaEgyWKxa4CI3ySjklZ9lFA==} + '@unrs/resolver-binding-linux-arm64-gnu@1.11.0': + resolution: {integrity: sha512-VBAYGg3VahofpQ+L4k/ZO8TSICIbUKKTaMYOWHWfuYBFqPbSkArZZLezw3xd27fQkxX4BaLGb/RKnW0dH9Y/UA==} cpu: [arm64] os: [linux] - '@unrs/resolver-binding-linux-arm64-musl@1.9.2': - resolution: {integrity: sha512-P/CO3ODU9YJIHFqAkHbquKtFst0COxdphc8TKGL5yCX75GOiVpGqd1d15ahpqu8xXVsqP4MGFP2C3LRZnnL5MA==} + '@unrs/resolver-binding-linux-arm64-musl@1.11.0': + resolution: {integrity: sha512-9IgGFUUb02J1hqdRAHXpZHIeUHRrbnGo6vrRbz0fREH7g+rzQy53/IBSyadZ/LG5iqMxukriNPu4hEMUn+uWEg==} cpu: [arm64] os: [linux] - '@unrs/resolver-binding-linux-ppc64-gnu@1.9.2': - resolution: {integrity: sha512-uKStFlOELBxBum2s1hODPtgJhY4NxYJE9pAeyBgNEzHgTqTiVBPjfTlPFJkfxyTjQEuxZbbJlJnMCrRgD7ubzw==} + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.0': + resolution: {integrity: sha512-LR4iQ/LPjMfivpL2bQ9kmm3UnTas3U+umcCnq/CV7HAkukVdHxrDD1wwx74MIWbbgzQTLPYY7Ur2MnnvkYJCBQ==} cpu: [ppc64] os: [linux] - '@unrs/resolver-binding-linux-riscv64-gnu@1.9.2': - resolution: {integrity: sha512-LkbNnZlhINfY9gK30AHs26IIVEZ9PEl9qOScYdmY2o81imJYI4IMnJiW0vJVtXaDHvBvxeAgEy5CflwJFIl3tQ==} + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.0': + resolution: {integrity: sha512-HCupFQwMrRhrOg7YHrobbB5ADg0Q8RNiuefqMHVsdhEy9lLyXm/CxsCXeLJdrg27NAPsCaMDtdlm8Z2X8x91Tg==} cpu: [riscv64] os: [linux] - '@unrs/resolver-binding-linux-riscv64-musl@1.9.2': - resolution: {integrity: sha512-vI+e6FzLyZHSLFNomPi+nT+qUWN4YSj8pFtQZSFTtmgFoxqB6NyjxSjAxEC1m93qn6hUXhIsh8WMp+fGgxCoRg==} + '@unrs/resolver-binding-linux-riscv64-musl@1.11.0': + resolution: {integrity: sha512-Ckxy76A5xgjWa4FNrzcKul5qFMWgP5JSQ5YKd0XakmWOddPLSkQT+uAvUpQNnFGNbgKzv90DyQlxPDYPQ4nd6A==} cpu: [riscv64] os: [linux] - '@unrs/resolver-binding-linux-s390x-gnu@1.9.2': - resolution: {integrity: sha512-sSO4AlAYhSM2RAzBsRpahcJB1msc6uYLAtP6pesPbZtptF8OU/CbCPhSRW6cnYOGuVmEmWVW5xVboAqCnWTeHQ==} + '@unrs/resolver-binding-linux-s390x-gnu@1.11.0': + resolution: {integrity: sha512-HfO0PUCCRte2pMJmVyxPI+eqT7KuV3Fnvn2RPvMe5mOzb2BJKf4/Vth8sSt9cerQboMaTVpbxyYjjLBWIuI5BQ==} cpu: [s390x] os: [linux] - '@unrs/resolver-binding-linux-x64-gnu@1.9.2': - resolution: {integrity: sha512-jkSkwch0uPFva20Mdu8orbQjv2A3G88NExTN2oPTI1AJ+7mZfYW3cDCTyoH6OnctBKbBVeJCEqh0U02lTkqD5w==} + '@unrs/resolver-binding-linux-x64-gnu@1.11.0': + resolution: {integrity: sha512-9PZdjP7tLOEjpXHS6+B/RNqtfVUyDEmaViPOuSqcbomLdkJnalt5RKQ1tr2m16+qAufV0aDkfhXtoO7DQos/jg==} cpu: [x64] os: [linux] - '@unrs/resolver-binding-linux-x64-musl@1.9.2': - resolution: {integrity: sha512-Uk64NoiTpQbkpl+bXsbeyOPRpUoMdcUqa+hDC1KhMW7aN1lfW8PBlBH4mJ3n3Y47dYE8qi0XTxy1mBACruYBaw==} + '@unrs/resolver-binding-linux-x64-musl@1.11.0': + resolution: {integrity: sha512-qkE99ieiSKMnFJY/EfyGKVtNra52/k+lVF/PbO4EL5nU6AdvG4XhtJ+WHojAJP7ID9BNIra/yd75EHndewNRfA==} cpu: [x64] os: [linux] - '@unrs/resolver-binding-wasm32-wasi@1.9.2': - resolution: {integrity: sha512-EpBGwkcjDicjR/ybC0g8wO5adPNdVuMrNalVgYcWi+gYtC1XYNuxe3rufcO7dA76OHGeVabcO6cSkPJKVcbCXQ==} + '@unrs/resolver-binding-wasm32-wasi@1.11.0': + resolution: {integrity: sha512-MjXek8UL9tIX34gymvQLecz2hMaQzOlaqYJJBomwm1gsvK2F7hF+YqJJ2tRyBDTv9EZJGMt4KlKkSD/gZWCOiw==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@unrs/resolver-binding-win32-arm64-msvc@1.9.2': - resolution: {integrity: sha512-EdFbGn7o1SxGmN6aZw9wAkehZJetFPao0VGZ9OMBwKx6TkvDuj6cNeLimF/Psi6ts9lMOe+Dt6z19fZQ9Ye2fw==} + '@unrs/resolver-binding-win32-arm64-msvc@1.11.0': + resolution: {integrity: sha512-9LT6zIGO7CHybiQSh7DnQGwFMZvVr0kUjah6qQfkH2ghucxPV6e71sUXJdSM4Ba0MaGE6DC/NwWf7mJmc3DAng==} cpu: [arm64] os: [win32] - '@unrs/resolver-binding-win32-ia32-msvc@1.9.2': - resolution: {integrity: sha512-JY9hi1p7AG+5c/dMU8o2kWemM8I6VZxfGwn1GCtf3c5i+IKcMo2NQ8OjZ4Z3/itvY/Si3K10jOBQn7qsD/whUA==} + '@unrs/resolver-binding-win32-ia32-msvc@1.11.0': + resolution: {integrity: sha512-HYchBYOZ7WN266VjoGm20xFv5EonG/ODURRgwl9EZT7Bq1nLEs6VKJddzfFdXEAho0wfFlt8L/xIiE29Pmy1RA==} cpu: [ia32] os: [win32] - '@unrs/resolver-binding-win32-x64-msvc@1.9.2': - resolution: {integrity: sha512-ryoo+EB19lMxAd80ln9BVf8pdOAxLb97amrQ3SFN9OCRn/5M5wvwDgAe4i8ZjhpbiHoDeP8yavcTEnpKBo7lZg==} + '@unrs/resolver-binding-win32-x64-msvc@1.11.0': + resolution: {integrity: sha512-+oLKLHw3I1UQo4MeHfoLYF+e6YBa8p5vYUw3Rgt7IDzCs+57vIZqQlIo62NDpYM0VG6BjWOwnzBczMvbtH8hag==} cpu: [x64] os: [win32] @@ -1157,8 +1163,8 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - algoliasearch@5.30.0: - resolution: {integrity: sha512-ILSdPX4je0n5WUKD34TMe57/eqiXUzCIjAsdtLQYhomqOjTtFUg1s6dE7kUegc4Mc43Xr7IXYlMutU9HPiYfdw==} + algoliasearch@5.32.0: + resolution: {integrity: sha512-84xBncKNPBK8Ae89F65+SyVcOihrIbm/3N7to+GpRBHEUXGjA3ydWTMpcRW6jmFzkBQ/eqYy/y+J+NBpJWYjBg==} engines: {node: '>= 14.0.0'} ansi-regex@5.0.1: @@ -1241,22 +1247,22 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001726: - resolution: {integrity: sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==} + caniuse-lite@1.0.30001727: + resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@5.2.0: - resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} - engines: {node: '>=12'} + chai@5.2.1: + resolution: {integrity: sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==} + engines: {node: '>=18'} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - changelogen@0.6.1: - resolution: {integrity: sha512-rTw2bZgiEHMgyYzWFMH+qTMFOSpCf4qwmd8LyxLDUKCtL4T/7O7978tPPtKYpjiFbPoHG64y4ugdF0Mt/l+lQg==} + changelogen@0.6.2: + resolution: {integrity: sha512-QtC7+r9BxoUm+XDAwhLbz3CgU134J1ytfE3iCpLpA4KFzX2P1e6s21RrWDwUBzfx66b1Rv+6lOA2nS2btprd+A==} hasBin: true character-entities-html4@2.1.0: @@ -1440,8 +1446,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.178: - resolution: {integrity: sha512-wObbz/ar3Bc6e4X5vf0iO8xTN8YAjN/tgiAOJLr7yjYFtP9wAjq8Mb5h0yn6kResir+VYx2DXBj9NNobs0ETSA==} + electron-to-chromium@1.5.180: + resolution: {integrity: sha512-ED+GEyEh3kYMwt2faNmgMB0b8O5qtATGgR4RmRsIp4T6p7B8vdMbIedYndnvZfsaXvSzegtpfqRMDNCjjiSduA==} emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -1464,8 +1470,8 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.25.5: - resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} + esbuild@0.25.6: + resolution: {integrity: sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==} engines: {node: '>=18'} hasBin: true @@ -1547,8 +1553,8 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - expect-type@1.2.1: - resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} + expect-type@1.2.2: + resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} exsolve@1.0.7: @@ -1932,8 +1938,8 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - napi-postinstall@0.2.5: - resolution: {integrity: sha512-kmsgUvCRIJohHjbZ3V8avP0I1Pekw329MVAMDzVxsrkjgdnqiwvMX5XwR+hWV66vsAtZ+iM+fVnq8RTQawUmCQ==} + napi-postinstall@0.3.0: + resolution: {integrity: sha512-M7NqKyhODKV1gRLdkwE7pDsZP2/SC2a2vHkOYh9MCpKMbWVfyVfUw5MaH83Fv6XMjxr5jryUp3IDDL9rlxsTeA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} hasBin: true @@ -2284,8 +2290,8 @@ packages: rollup: ^3.29.4 || ^4 typescript: ^4.5 || ^5.0 - rollup@4.44.1: - resolution: {integrity: sha512-x8H8aPvD+xbl0Do8oez5f5o8eMS3trfCghc4HhLAnCkj7Vl0d1JWGs0UF/D886zLW2rOj2QymV/JcSSsw+XDNg==} + rollup@4.44.2: + resolution: {integrity: sha512-PVoapzTwSEcelaWGth3uR66u7ZRo6qhPHc0f2uRO9fX6XDVNrIiGYS0Pj9+R8yIIYSD/mCx2b16Ws9itljKSPg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2485,8 +2491,8 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - unrs-resolver@1.9.2: - resolution: {integrity: sha512-VUyWiTNQD7itdiMuJy+EuLEErLj3uwX/EpHQF8EOf33Dq3Ju6VW1GXm+swk6+1h7a49uv9fKZ+dft9jU7esdLA==} + unrs-resolver@1.11.0: + resolution: {integrity: sha512-uw3hCGO/RdAEAb4zgJ3C/v6KIAFFOtBoxR86b2Ejc5TnH7HrhTWJR2o0A9ullC3eWMegKQCw/arQ/JivywQzkg==} untyped@2.0.0: resolution: {integrity: sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==} @@ -2546,8 +2552,8 @@ packages: terser: optional: true - vite@7.0.0: - resolution: {integrity: sha512-ixXJB1YRgDIw2OszKQS9WxGHKwLdCsbQNkpJN171udl6szi/rIySHL6/Os3s2+oE4P/FLD4dxg4mD7Wust+u5g==} + vite@7.0.3: + resolution: {integrity: sha512-y2L5oJZF7bj4c0jgGYgBNSdIu+5HF+m68rn2cQXFbGoShdhV1phX9rbnxy9YXj82aS8MMsCLAAFkRxZeWdldrQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -2671,110 +2677,110 @@ packages: snapshots: - '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.30.0)(algoliasearch@5.30.0)(search-insights@2.17.3)': + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.30.0)(algoliasearch@5.30.0)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.30.0)(algoliasearch@5.30.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.30.0)(algoliasearch@5.30.0)(search-insights@2.17.3)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.30.0)(algoliasearch@5.30.0) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.30.0)(algoliasearch@5.30.0)': + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.30.0)(algoliasearch@5.30.0) - '@algolia/client-search': 5.30.0 - algoliasearch: 5.30.0 + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0) + '@algolia/client-search': 5.32.0 + algoliasearch: 5.32.0 - '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.30.0)(algoliasearch@5.30.0)': + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)': dependencies: - '@algolia/client-search': 5.30.0 - algoliasearch: 5.30.0 + '@algolia/client-search': 5.32.0 + algoliasearch: 5.32.0 - '@algolia/client-abtesting@5.30.0': + '@algolia/client-abtesting@5.32.0': dependencies: - '@algolia/client-common': 5.30.0 - '@algolia/requester-browser-xhr': 5.30.0 - '@algolia/requester-fetch': 5.30.0 - '@algolia/requester-node-http': 5.30.0 + '@algolia/client-common': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 - '@algolia/client-analytics@5.30.0': + '@algolia/client-analytics@5.32.0': dependencies: - '@algolia/client-common': 5.30.0 - '@algolia/requester-browser-xhr': 5.30.0 - '@algolia/requester-fetch': 5.30.0 - '@algolia/requester-node-http': 5.30.0 + '@algolia/client-common': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 - '@algolia/client-common@5.30.0': {} + '@algolia/client-common@5.32.0': {} - '@algolia/client-insights@5.30.0': + '@algolia/client-insights@5.32.0': dependencies: - '@algolia/client-common': 5.30.0 - '@algolia/requester-browser-xhr': 5.30.0 - '@algolia/requester-fetch': 5.30.0 - '@algolia/requester-node-http': 5.30.0 + '@algolia/client-common': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 - '@algolia/client-personalization@5.30.0': + '@algolia/client-personalization@5.32.0': dependencies: - '@algolia/client-common': 5.30.0 - '@algolia/requester-browser-xhr': 5.30.0 - '@algolia/requester-fetch': 5.30.0 - '@algolia/requester-node-http': 5.30.0 + '@algolia/client-common': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 - '@algolia/client-query-suggestions@5.30.0': + '@algolia/client-query-suggestions@5.32.0': dependencies: - '@algolia/client-common': 5.30.0 - '@algolia/requester-browser-xhr': 5.30.0 - '@algolia/requester-fetch': 5.30.0 - '@algolia/requester-node-http': 5.30.0 + '@algolia/client-common': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 - '@algolia/client-search@5.30.0': + '@algolia/client-search@5.32.0': dependencies: - '@algolia/client-common': 5.30.0 - '@algolia/requester-browser-xhr': 5.30.0 - '@algolia/requester-fetch': 5.30.0 - '@algolia/requester-node-http': 5.30.0 + '@algolia/client-common': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 - '@algolia/ingestion@1.30.0': + '@algolia/ingestion@1.32.0': dependencies: - '@algolia/client-common': 5.30.0 - '@algolia/requester-browser-xhr': 5.30.0 - '@algolia/requester-fetch': 5.30.0 - '@algolia/requester-node-http': 5.30.0 + '@algolia/client-common': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 - '@algolia/monitoring@1.30.0': + '@algolia/monitoring@1.32.0': dependencies: - '@algolia/client-common': 5.30.0 - '@algolia/requester-browser-xhr': 5.30.0 - '@algolia/requester-fetch': 5.30.0 - '@algolia/requester-node-http': 5.30.0 + '@algolia/client-common': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 - '@algolia/recommend@5.30.0': + '@algolia/recommend@5.32.0': dependencies: - '@algolia/client-common': 5.30.0 - '@algolia/requester-browser-xhr': 5.30.0 - '@algolia/requester-fetch': 5.30.0 - '@algolia/requester-node-http': 5.30.0 + '@algolia/client-common': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 - '@algolia/requester-browser-xhr@5.30.0': + '@algolia/requester-browser-xhr@5.32.0': dependencies: - '@algolia/client-common': 5.30.0 + '@algolia/client-common': 5.32.0 - '@algolia/requester-fetch@5.30.0': + '@algolia/requester-fetch@5.32.0': dependencies: - '@algolia/client-common': 5.30.0 + '@algolia/client-common': 5.32.0 - '@algolia/requester-node-http@5.30.0': + '@algolia/requester-node-http@5.32.0': dependencies: - '@algolia/client-common': 5.30.0 + '@algolia/client-common': 5.32.0 '@ampproject/remapping@2.3.0': dependencies: @@ -2799,11 +2805,11 @@ snapshots: '@babel/helper-validator-identifier@7.27.1': {} - '@babel/parser@7.27.7': + '@babel/parser@7.28.0': dependencies: - '@babel/types': 7.27.7 + '@babel/types': 7.28.0 - '@babel/types@7.27.7': + '@babel/types@7.28.0': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 @@ -2812,9 +2818,9 @@ snapshots: '@docsearch/css@3.8.2': {} - '@docsearch/js@3.8.2(@algolia/client-search@5.30.0)(search-insights@2.17.3)': + '@docsearch/js@3.8.2(@algolia/client-search@5.32.0)(search-insights@2.17.3)': dependencies: - '@docsearch/react': 3.8.2(@algolia/client-search@5.30.0)(search-insights@2.17.3) + '@docsearch/react': 3.8.2(@algolia/client-search@5.32.0)(search-insights@2.17.3) preact: 10.26.9 transitivePeerDependencies: - '@algolia/client-search' @@ -2823,29 +2829,29 @@ snapshots: - react-dom - search-insights - '@docsearch/react@3.8.2(@algolia/client-search@5.30.0)(search-insights@2.17.3)': + '@docsearch/react@3.8.2(@algolia/client-search@5.32.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.30.0)(algoliasearch@5.30.0)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.30.0)(algoliasearch@5.30.0) + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0) '@docsearch/css': 3.8.2 - algoliasearch: 5.30.0 + algoliasearch: 5.32.0 optionalDependencies: search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - '@emnapi/core@1.4.3': + '@emnapi/core@1.4.4': dependencies: - '@emnapi/wasi-threads': 1.0.2 + '@emnapi/wasi-threads': 1.0.3 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.4.3': + '@emnapi/runtime@1.4.4': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.0.2': + '@emnapi/wasi-threads@1.0.3': dependencies: tslib: 2.8.1 optional: true @@ -2853,145 +2859,148 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.25.5': + '@esbuild/aix-ppc64@0.25.6': optional: true '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.25.5': + '@esbuild/android-arm64@0.25.6': optional: true '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.25.5': + '@esbuild/android-arm@0.25.6': optional: true '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.25.5': + '@esbuild/android-x64@0.25.6': optional: true '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.25.5': + '@esbuild/darwin-arm64@0.25.6': optional: true '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.25.5': + '@esbuild/darwin-x64@0.25.6': optional: true '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.25.5': + '@esbuild/freebsd-arm64@0.25.6': optional: true '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.25.5': + '@esbuild/freebsd-x64@0.25.6': optional: true '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.25.5': + '@esbuild/linux-arm64@0.25.6': optional: true '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.25.5': + '@esbuild/linux-arm@0.25.6': optional: true '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.25.5': + '@esbuild/linux-ia32@0.25.6': optional: true '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.25.5': + '@esbuild/linux-loong64@0.25.6': optional: true '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.25.5': + '@esbuild/linux-mips64el@0.25.6': optional: true '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.25.5': + '@esbuild/linux-ppc64@0.25.6': optional: true '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.25.5': + '@esbuild/linux-riscv64@0.25.6': optional: true '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.25.5': + '@esbuild/linux-s390x@0.25.6': optional: true '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.25.5': + '@esbuild/linux-x64@0.25.6': optional: true - '@esbuild/netbsd-arm64@0.25.5': + '@esbuild/netbsd-arm64@0.25.6': optional: true '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.25.5': + '@esbuild/netbsd-x64@0.25.6': optional: true - '@esbuild/openbsd-arm64@0.25.5': + '@esbuild/openbsd-arm64@0.25.6': optional: true '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.25.5': + '@esbuild/openbsd-x64@0.25.6': + optional: true + + '@esbuild/openharmony-arm64@0.25.6': optional: true '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.25.5': + '@esbuild/sunos-x64@0.25.6': optional: true '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.25.5': + '@esbuild/win32-arm64@0.25.6': optional: true '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.25.5': + '@esbuild/win32-ia32@0.25.6': optional: true '@esbuild/win32-x64@0.21.5': optional: true - '@esbuild/win32-x64@0.25.5': + '@esbuild/win32-x64@0.25.6': optional: true '@eslint-community/eslint-utils@4.7.0(eslint@9.30.1(jiti@2.4.2))': @@ -3063,7 +3072,7 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify-json/simple-icons@1.2.41': + '@iconify-json/simple-icons@1.2.42': dependencies: '@iconify/types': 2.0.0 @@ -3119,8 +3128,8 @@ snapshots: '@napi-rs/wasm-runtime@0.2.11': dependencies: - '@emnapi/core': 1.4.3 - '@emnapi/runtime': 1.4.3 + '@emnapi/core': 1.4.4 + '@emnapi/runtime': 1.4.4 '@tybys/wasm-util': 0.9.0 optional: true @@ -3139,13 +3148,13 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@rollup/plugin-alias@5.1.1(rollup@4.44.1)': + '@rollup/plugin-alias@5.1.1(rollup@4.44.2)': optionalDependencies: - rollup: 4.44.1 + rollup: 4.44.2 - '@rollup/plugin-commonjs@28.0.6(rollup@4.44.1)': + '@rollup/plugin-commonjs@28.0.6(rollup@4.44.2)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.44.1) + '@rollup/pluginutils': 5.2.0(rollup@4.44.2) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.6(picomatch@4.0.2) @@ -3153,97 +3162,97 @@ snapshots: magic-string: 0.30.17 picomatch: 4.0.2 optionalDependencies: - rollup: 4.44.1 + rollup: 4.44.2 - '@rollup/plugin-json@6.1.0(rollup@4.44.1)': + '@rollup/plugin-json@6.1.0(rollup@4.44.2)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.44.1) + '@rollup/pluginutils': 5.2.0(rollup@4.44.2) optionalDependencies: - rollup: 4.44.1 + rollup: 4.44.2 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.44.1)': + '@rollup/plugin-node-resolve@16.0.1(rollup@4.44.2)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.44.1) + '@rollup/pluginutils': 5.2.0(rollup@4.44.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.44.1 + rollup: 4.44.2 - '@rollup/plugin-replace@6.0.2(rollup@4.44.1)': + '@rollup/plugin-replace@6.0.2(rollup@4.44.2)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.44.1) + '@rollup/pluginutils': 5.2.0(rollup@4.44.2) magic-string: 0.30.17 optionalDependencies: - rollup: 4.44.1 + rollup: 4.44.2 - '@rollup/pluginutils@5.2.0(rollup@4.44.1)': + '@rollup/pluginutils@5.2.0(rollup@4.44.2)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.44.1 + rollup: 4.44.2 - '@rollup/rollup-android-arm-eabi@4.44.1': + '@rollup/rollup-android-arm-eabi@4.44.2': optional: true - '@rollup/rollup-android-arm64@4.44.1': + '@rollup/rollup-android-arm64@4.44.2': optional: true - '@rollup/rollup-darwin-arm64@4.44.1': + '@rollup/rollup-darwin-arm64@4.44.2': optional: true - '@rollup/rollup-darwin-x64@4.44.1': + '@rollup/rollup-darwin-x64@4.44.2': optional: true - '@rollup/rollup-freebsd-arm64@4.44.1': + '@rollup/rollup-freebsd-arm64@4.44.2': optional: true - '@rollup/rollup-freebsd-x64@4.44.1': + '@rollup/rollup-freebsd-x64@4.44.2': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.44.1': + '@rollup/rollup-linux-arm-gnueabihf@4.44.2': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.44.1': + '@rollup/rollup-linux-arm-musleabihf@4.44.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.44.1': + '@rollup/rollup-linux-arm64-gnu@4.44.2': optional: true - '@rollup/rollup-linux-arm64-musl@4.44.1': + '@rollup/rollup-linux-arm64-musl@4.44.2': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.44.1': + '@rollup/rollup-linux-loongarch64-gnu@4.44.2': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.44.1': + '@rollup/rollup-linux-powerpc64le-gnu@4.44.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.44.1': + '@rollup/rollup-linux-riscv64-gnu@4.44.2': optional: true - '@rollup/rollup-linux-riscv64-musl@4.44.1': + '@rollup/rollup-linux-riscv64-musl@4.44.2': optional: true - '@rollup/rollup-linux-s390x-gnu@4.44.1': + '@rollup/rollup-linux-s390x-gnu@4.44.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.44.1': + '@rollup/rollup-linux-x64-gnu@4.44.2': optional: true - '@rollup/rollup-linux-x64-musl@4.44.1': + '@rollup/rollup-linux-x64-musl@4.44.2': optional: true - '@rollup/rollup-win32-arm64-msvc@4.44.1': + '@rollup/rollup-win32-arm64-msvc@4.44.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.44.1': + '@rollup/rollup-win32-ia32-msvc@4.44.2': optional: true - '@rollup/rollup-win32-x64-msvc@4.44.1': + '@rollup/rollup-win32-x64-msvc@4.44.2': optional: true '@shikijs/core@2.5.0': @@ -3289,7 +3298,7 @@ snapshots: '@stylistic/eslint-plugin@5.1.0(eslint@9.30.1(jiti@2.4.2))': dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2)) - '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/types': 8.36.0 eslint: 9.30.1(jiti@2.4.2) eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -3330,7 +3339,7 @@ snapshots: '@types/mdurl@2.0.0': {} - '@types/node@24.0.10': + '@types/node@24.0.12': dependencies: undici-types: 7.8.0 @@ -3340,14 +3349,14 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript-eslint/eslint-plugin@8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.36.0(@typescript-eslint/parser@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.35.1 - '@typescript-eslint/type-utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.35.1 + '@typescript-eslint/parser': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.36.0 + '@typescript-eslint/type-utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.36.0 eslint: 9.30.1(jiti@2.4.2) graphemer: 1.4.0 ignore: 7.0.5 @@ -3357,40 +3366,40 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/parser@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.35.1 - '@typescript-eslint/types': 8.35.1 - '@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.35.1 + '@typescript-eslint/scope-manager': 8.36.0 + '@typescript-eslint/types': 8.36.0 + '@typescript-eslint/typescript-estree': 8.36.0(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.36.0 debug: 4.4.1 eslint: 9.30.1(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.35.1(typescript@5.8.3)': + '@typescript-eslint/project-service@8.36.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.35.1(typescript@5.8.3) - '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/tsconfig-utils': 8.36.0(typescript@5.8.3) + '@typescript-eslint/types': 8.36.0 debug: 4.4.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.35.1': + '@typescript-eslint/scope-manager@8.36.0': dependencies: - '@typescript-eslint/types': 8.35.1 - '@typescript-eslint/visitor-keys': 8.35.1 + '@typescript-eslint/types': 8.36.0 + '@typescript-eslint/visitor-keys': 8.36.0 - '@typescript-eslint/tsconfig-utils@8.35.1(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.36.0(typescript@5.8.3)': dependencies: typescript: 5.8.3 - '@typescript-eslint/type-utils@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.36.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) debug: 4.4.1 eslint: 9.30.1(jiti@2.4.2) ts-api-utils: 2.1.0(typescript@5.8.3) @@ -3398,14 +3407,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.35.1': {} + '@typescript-eslint/types@8.36.0': {} - '@typescript-eslint/typescript-estree@8.35.1(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.36.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.35.1(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.35.1(typescript@5.8.3) - '@typescript-eslint/types': 8.35.1 - '@typescript-eslint/visitor-keys': 8.35.1 + '@typescript-eslint/project-service': 8.36.0(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.36.0(typescript@5.8.3) + '@typescript-eslint/types': 8.36.0 + '@typescript-eslint/visitor-keys': 8.36.0 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -3416,89 +3425,89 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/utils@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.35.1 - '@typescript-eslint/types': 8.35.1 - '@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.36.0 + '@typescript-eslint/types': 8.36.0 + '@typescript-eslint/typescript-estree': 8.36.0(typescript@5.8.3) eslint: 9.30.1(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.35.1': + '@typescript-eslint/visitor-keys@8.36.0': dependencies: - '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/types': 8.36.0 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} - '@unrs/resolver-binding-android-arm-eabi@1.9.2': + '@unrs/resolver-binding-android-arm-eabi@1.11.0': optional: true - '@unrs/resolver-binding-android-arm64@1.9.2': + '@unrs/resolver-binding-android-arm64@1.11.0': optional: true - '@unrs/resolver-binding-darwin-arm64@1.9.2': + '@unrs/resolver-binding-darwin-arm64@1.11.0': optional: true - '@unrs/resolver-binding-darwin-x64@1.9.2': + '@unrs/resolver-binding-darwin-x64@1.11.0': optional: true - '@unrs/resolver-binding-freebsd-x64@1.9.2': + '@unrs/resolver-binding-freebsd-x64@1.11.0': optional: true - '@unrs/resolver-binding-linux-arm-gnueabihf@1.9.2': + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.0': optional: true - '@unrs/resolver-binding-linux-arm-musleabihf@1.9.2': + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.0': optional: true - '@unrs/resolver-binding-linux-arm64-gnu@1.9.2': + '@unrs/resolver-binding-linux-arm64-gnu@1.11.0': optional: true - '@unrs/resolver-binding-linux-arm64-musl@1.9.2': + '@unrs/resolver-binding-linux-arm64-musl@1.11.0': optional: true - '@unrs/resolver-binding-linux-ppc64-gnu@1.9.2': + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.0': optional: true - '@unrs/resolver-binding-linux-riscv64-gnu@1.9.2': + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.0': optional: true - '@unrs/resolver-binding-linux-riscv64-musl@1.9.2': + '@unrs/resolver-binding-linux-riscv64-musl@1.11.0': optional: true - '@unrs/resolver-binding-linux-s390x-gnu@1.9.2': + '@unrs/resolver-binding-linux-s390x-gnu@1.11.0': optional: true - '@unrs/resolver-binding-linux-x64-gnu@1.9.2': + '@unrs/resolver-binding-linux-x64-gnu@1.11.0': optional: true - '@unrs/resolver-binding-linux-x64-musl@1.9.2': + '@unrs/resolver-binding-linux-x64-musl@1.11.0': optional: true - '@unrs/resolver-binding-wasm32-wasi@1.9.2': + '@unrs/resolver-binding-wasm32-wasi@1.11.0': dependencies: '@napi-rs/wasm-runtime': 0.2.11 optional: true - '@unrs/resolver-binding-win32-arm64-msvc@1.9.2': + '@unrs/resolver-binding-win32-arm64-msvc@1.11.0': optional: true - '@unrs/resolver-binding-win32-ia32-msvc@1.9.2': + '@unrs/resolver-binding-win32-ia32-msvc@1.11.0': optional: true - '@unrs/resolver-binding-win32-x64-msvc@1.9.2': + '@unrs/resolver-binding-win32-x64-msvc@1.11.0': optional: true - '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@24.0.10))(vue@3.5.17(typescript@5.8.3))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@24.0.12))(vue@3.5.17(typescript@5.8.3))': dependencies: - vite: 5.4.19(@types/node@24.0.10) + vite: 5.4.19(@types/node@24.0.12) vue: 3.5.17(typescript@5.8.3) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.0.10)(jiti@2.4.2))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.0.12)(jiti@2.4.2))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -3513,7 +3522,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.0.10)(jiti@2.4.2) + vitest: 3.2.4(@types/node@24.0.12)(jiti@2.4.2) transitivePeerDependencies: - supports-color @@ -3522,16 +3531,16 @@ snapshots: '@types/chai': 5.2.2 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 - chai: 5.2.0 + chai: 5.2.1 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.0.0(@types/node@24.0.10)(jiti@2.4.2))': + '@vitest/mocker@3.2.4(vite@7.0.3(@types/node@24.0.12)(jiti@2.4.2))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 7.0.0(@types/node@24.0.10)(jiti@2.4.2) + vite: 7.0.3(@types/node@24.0.12)(jiti@2.4.2) '@vitest/pretty-format@3.2.4': dependencies: @@ -3561,7 +3570,7 @@ snapshots: '@vue/compiler-core@3.5.17': dependencies: - '@babel/parser': 7.27.7 + '@babel/parser': 7.28.0 '@vue/shared': 3.5.17 entities: 4.5.0 estree-walker: 2.0.2 @@ -3574,7 +3583,7 @@ snapshots: '@vue/compiler-sfc@3.5.17': dependencies: - '@babel/parser': 7.27.7 + '@babel/parser': 7.28.0 '@vue/compiler-core': 3.5.17 '@vue/compiler-dom': 3.5.17 '@vue/compiler-ssr': 3.5.17 @@ -3671,21 +3680,21 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - algoliasearch@5.30.0: - dependencies: - '@algolia/client-abtesting': 5.30.0 - '@algolia/client-analytics': 5.30.0 - '@algolia/client-common': 5.30.0 - '@algolia/client-insights': 5.30.0 - '@algolia/client-personalization': 5.30.0 - '@algolia/client-query-suggestions': 5.30.0 - '@algolia/client-search': 5.30.0 - '@algolia/ingestion': 1.30.0 - '@algolia/monitoring': 1.30.0 - '@algolia/recommend': 5.30.0 - '@algolia/requester-browser-xhr': 5.30.0 - '@algolia/requester-fetch': 5.30.0 - '@algolia/requester-node-http': 5.30.0 + algoliasearch@5.32.0: + dependencies: + '@algolia/client-abtesting': 5.32.0 + '@algolia/client-analytics': 5.32.0 + '@algolia/client-common': 5.32.0 + '@algolia/client-insights': 5.32.0 + '@algolia/client-personalization': 5.32.0 + '@algolia/client-query-suggestions': 5.32.0 + '@algolia/client-search': 5.32.0 + '@algolia/ingestion': 1.32.0 + '@algolia/monitoring': 1.32.0 + '@algolia/recommend': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 ansi-regex@5.0.1: {} @@ -3710,7 +3719,7 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: browserslist: 4.25.1 - caniuse-lite: 1.0.30001726 + caniuse-lite: 1.0.30001727 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -3738,8 +3747,8 @@ snapshots: browserslist@4.25.1: dependencies: - caniuse-lite: 1.0.30001726 - electron-to-chromium: 1.5.178 + caniuse-lite: 1.0.30001727 + electron-to-chromium: 1.5.180 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.1) @@ -3771,15 +3780,15 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.25.1 - caniuse-lite: 1.0.30001726 + caniuse-lite: 1.0.30001727 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001726: {} + caniuse-lite@1.0.30001727: {} ccount@2.0.1: {} - chai@5.2.0: + chai@5.2.1: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 @@ -3792,7 +3801,7 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - changelogen@0.6.1(magicast@0.3.5): + changelogen@0.6.2(magicast@0.3.5): dependencies: c12: 3.0.4(magicast@0.3.5) confbox: 0.2.2 @@ -3987,7 +3996,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.178: {} + electron-to-chromium@1.5.180: {} emoji-regex-xs@1.0.0: {} @@ -4025,59 +4034,60 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.25.5: + esbuild@0.25.6: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.5 - '@esbuild/android-arm': 0.25.5 - '@esbuild/android-arm64': 0.25.5 - '@esbuild/android-x64': 0.25.5 - '@esbuild/darwin-arm64': 0.25.5 - '@esbuild/darwin-x64': 0.25.5 - '@esbuild/freebsd-arm64': 0.25.5 - '@esbuild/freebsd-x64': 0.25.5 - '@esbuild/linux-arm': 0.25.5 - '@esbuild/linux-arm64': 0.25.5 - '@esbuild/linux-ia32': 0.25.5 - '@esbuild/linux-loong64': 0.25.5 - '@esbuild/linux-mips64el': 0.25.5 - '@esbuild/linux-ppc64': 0.25.5 - '@esbuild/linux-riscv64': 0.25.5 - '@esbuild/linux-s390x': 0.25.5 - '@esbuild/linux-x64': 0.25.5 - '@esbuild/netbsd-arm64': 0.25.5 - '@esbuild/netbsd-x64': 0.25.5 - '@esbuild/openbsd-arm64': 0.25.5 - '@esbuild/openbsd-x64': 0.25.5 - '@esbuild/sunos-x64': 0.25.5 - '@esbuild/win32-arm64': 0.25.5 - '@esbuild/win32-ia32': 0.25.5 - '@esbuild/win32-x64': 0.25.5 + '@esbuild/aix-ppc64': 0.25.6 + '@esbuild/android-arm': 0.25.6 + '@esbuild/android-arm64': 0.25.6 + '@esbuild/android-x64': 0.25.6 + '@esbuild/darwin-arm64': 0.25.6 + '@esbuild/darwin-x64': 0.25.6 + '@esbuild/freebsd-arm64': 0.25.6 + '@esbuild/freebsd-x64': 0.25.6 + '@esbuild/linux-arm': 0.25.6 + '@esbuild/linux-arm64': 0.25.6 + '@esbuild/linux-ia32': 0.25.6 + '@esbuild/linux-loong64': 0.25.6 + '@esbuild/linux-mips64el': 0.25.6 + '@esbuild/linux-ppc64': 0.25.6 + '@esbuild/linux-riscv64': 0.25.6 + '@esbuild/linux-s390x': 0.25.6 + '@esbuild/linux-x64': 0.25.6 + '@esbuild/netbsd-arm64': 0.25.6 + '@esbuild/netbsd-x64': 0.25.6 + '@esbuild/openbsd-arm64': 0.25.6 + '@esbuild/openbsd-x64': 0.25.6 + '@esbuild/openharmony-arm64': 0.25.6 + '@esbuild/sunos-x64': 0.25.6 + '@esbuild/win32-arm64': 0.25.6 + '@esbuild/win32-ia32': 0.25.6 + '@esbuild/win32-x64': 0.25.6 escalade@3.2.0: {} escape-string-regexp@4.0.0: {} - eslint-import-context@0.1.9(unrs-resolver@1.9.2): + eslint-import-context@0.1.9(unrs-resolver@1.11.0): dependencies: get-tsconfig: 4.10.1 stable-hash-x: 0.2.0 optionalDependencies: - unrs-resolver: 1.9.2 + unrs-resolver: 1.11.0 - eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2)): + eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2)): dependencies: - '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/types': 8.36.0 comment-parser: 1.4.1 debug: 4.4.1 eslint: 9.30.1(jiti@2.4.2) - eslint-import-context: 0.1.9(unrs-resolver@1.9.2) + eslint-import-context: 0.1.9(unrs-resolver@1.11.0) is-glob: 4.0.3 minimatch: 10.0.3 semver: 7.7.2 stable-hash-x: 0.2.0 - unrs-resolver: 1.9.2 + unrs-resolver: 1.11.0 optionalDependencies: - '@typescript-eslint/utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) transitivePeerDependencies: - supports-color @@ -4156,7 +4166,7 @@ snapshots: esutils@2.0.3: {} - expect-type@1.2.1: {} + expect-type@1.2.2: {} exsolve@1.0.7: {} @@ -4199,7 +4209,7 @@ snapshots: dependencies: magic-string: 0.30.17 mlly: 1.7.4 - rollup: 4.44.1 + rollup: 4.44.2 flat-cache@4.0.1: dependencies: @@ -4426,8 +4436,8 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.27.7 - '@babel/types': 7.27.7 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.0 source-map-js: 1.2.1 make-dir@4.0.0: @@ -4511,7 +4521,7 @@ snapshots: citty: 0.1.6 cssnano: 7.0.7(postcss@8.5.6) defu: 6.1.4 - esbuild: 0.25.5 + esbuild: 0.25.6 jiti: 1.21.7 mlly: 1.7.4 pathe: 2.0.3 @@ -4537,7 +4547,7 @@ snapshots: nanoid@3.3.11: {} - napi-postinstall@0.2.5: {} + napi-postinstall@0.3.0: {} natural-compare@1.4.0: {} @@ -4854,38 +4864,38 @@ snapshots: rfdc@1.4.1: {} - rollup-plugin-dts@6.2.1(rollup@4.44.1)(typescript@5.8.3): + rollup-plugin-dts@6.2.1(rollup@4.44.2)(typescript@5.8.3): dependencies: magic-string: 0.30.17 - rollup: 4.44.1 + rollup: 4.44.2 typescript: 5.8.3 optionalDependencies: '@babel/code-frame': 7.27.1 - rollup@4.44.1: + rollup@4.44.2: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.44.1 - '@rollup/rollup-android-arm64': 4.44.1 - '@rollup/rollup-darwin-arm64': 4.44.1 - '@rollup/rollup-darwin-x64': 4.44.1 - '@rollup/rollup-freebsd-arm64': 4.44.1 - '@rollup/rollup-freebsd-x64': 4.44.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.44.1 - '@rollup/rollup-linux-arm-musleabihf': 4.44.1 - '@rollup/rollup-linux-arm64-gnu': 4.44.1 - '@rollup/rollup-linux-arm64-musl': 4.44.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.44.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.44.1 - '@rollup/rollup-linux-riscv64-gnu': 4.44.1 - '@rollup/rollup-linux-riscv64-musl': 4.44.1 - '@rollup/rollup-linux-s390x-gnu': 4.44.1 - '@rollup/rollup-linux-x64-gnu': 4.44.1 - '@rollup/rollup-linux-x64-musl': 4.44.1 - '@rollup/rollup-win32-arm64-msvc': 4.44.1 - '@rollup/rollup-win32-ia32-msvc': 4.44.1 - '@rollup/rollup-win32-x64-msvc': 4.44.1 + '@rollup/rollup-android-arm-eabi': 4.44.2 + '@rollup/rollup-android-arm64': 4.44.2 + '@rollup/rollup-darwin-arm64': 4.44.2 + '@rollup/rollup-darwin-x64': 4.44.2 + '@rollup/rollup-freebsd-arm64': 4.44.2 + '@rollup/rollup-freebsd-x64': 4.44.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.44.2 + '@rollup/rollup-linux-arm-musleabihf': 4.44.2 + '@rollup/rollup-linux-arm64-gnu': 4.44.2 + '@rollup/rollup-linux-arm64-musl': 4.44.2 + '@rollup/rollup-linux-loongarch64-gnu': 4.44.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.44.2 + '@rollup/rollup-linux-riscv64-gnu': 4.44.2 + '@rollup/rollup-linux-riscv64-musl': 4.44.2 + '@rollup/rollup-linux-s390x-gnu': 4.44.2 + '@rollup/rollup-linux-x64-gnu': 4.44.2 + '@rollup/rollup-linux-x64-musl': 4.44.2 + '@rollup/rollup-win32-arm64-msvc': 4.44.2 + '@rollup/rollup-win32-ia32-msvc': 4.44.2 + '@rollup/rollup-win32-x64-msvc': 4.44.2 fsevents: 2.3.3 run-applescript@7.0.0: {} @@ -5040,16 +5050,16 @@ snapshots: unbuild@3.5.0(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)): dependencies: - '@rollup/plugin-alias': 5.1.1(rollup@4.44.1) - '@rollup/plugin-commonjs': 28.0.6(rollup@4.44.1) - '@rollup/plugin-json': 6.1.0(rollup@4.44.1) - '@rollup/plugin-node-resolve': 16.0.1(rollup@4.44.1) - '@rollup/plugin-replace': 6.0.2(rollup@4.44.1) - '@rollup/pluginutils': 5.2.0(rollup@4.44.1) + '@rollup/plugin-alias': 5.1.1(rollup@4.44.2) + '@rollup/plugin-commonjs': 28.0.6(rollup@4.44.2) + '@rollup/plugin-json': 6.1.0(rollup@4.44.2) + '@rollup/plugin-node-resolve': 16.0.1(rollup@4.44.2) + '@rollup/plugin-replace': 6.0.2(rollup@4.44.2) + '@rollup/pluginutils': 5.2.0(rollup@4.44.2) citty: 0.1.6 consola: 3.4.2 defu: 6.1.4 - esbuild: 0.25.5 + esbuild: 0.25.6 fix-dts-default-cjs-exports: 1.0.1 hookable: 5.5.3 jiti: 2.4.2 @@ -5059,8 +5069,8 @@ snapshots: pathe: 2.0.3 pkg-types: 2.2.0 pretty-bytes: 6.1.1 - rollup: 4.44.1 - rollup-plugin-dts: 6.2.1(rollup@4.44.1)(typescript@5.8.3) + rollup: 4.44.2 + rollup-plugin-dts: 6.2.1(rollup@4.44.2)(typescript@5.8.3) scule: 1.3.0 tinyglobby: 0.2.14 untyped: 2.0.0 @@ -5097,29 +5107,29 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - unrs-resolver@1.9.2: + unrs-resolver@1.11.0: dependencies: - napi-postinstall: 0.2.5 + napi-postinstall: 0.3.0 optionalDependencies: - '@unrs/resolver-binding-android-arm-eabi': 1.9.2 - '@unrs/resolver-binding-android-arm64': 1.9.2 - '@unrs/resolver-binding-darwin-arm64': 1.9.2 - '@unrs/resolver-binding-darwin-x64': 1.9.2 - '@unrs/resolver-binding-freebsd-x64': 1.9.2 - '@unrs/resolver-binding-linux-arm-gnueabihf': 1.9.2 - '@unrs/resolver-binding-linux-arm-musleabihf': 1.9.2 - '@unrs/resolver-binding-linux-arm64-gnu': 1.9.2 - '@unrs/resolver-binding-linux-arm64-musl': 1.9.2 - '@unrs/resolver-binding-linux-ppc64-gnu': 1.9.2 - '@unrs/resolver-binding-linux-riscv64-gnu': 1.9.2 - '@unrs/resolver-binding-linux-riscv64-musl': 1.9.2 - '@unrs/resolver-binding-linux-s390x-gnu': 1.9.2 - '@unrs/resolver-binding-linux-x64-gnu': 1.9.2 - '@unrs/resolver-binding-linux-x64-musl': 1.9.2 - '@unrs/resolver-binding-wasm32-wasi': 1.9.2 - '@unrs/resolver-binding-win32-arm64-msvc': 1.9.2 - '@unrs/resolver-binding-win32-ia32-msvc': 1.9.2 - '@unrs/resolver-binding-win32-x64-msvc': 1.9.2 + '@unrs/resolver-binding-android-arm-eabi': 1.11.0 + '@unrs/resolver-binding-android-arm64': 1.11.0 + '@unrs/resolver-binding-darwin-arm64': 1.11.0 + '@unrs/resolver-binding-darwin-x64': 1.11.0 + '@unrs/resolver-binding-freebsd-x64': 1.11.0 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.0 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.0 + '@unrs/resolver-binding-linux-arm64-gnu': 1.11.0 + '@unrs/resolver-binding-linux-arm64-musl': 1.11.0 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.0 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.0 + '@unrs/resolver-binding-linux-riscv64-musl': 1.11.0 + '@unrs/resolver-binding-linux-s390x-gnu': 1.11.0 + '@unrs/resolver-binding-linux-x64-gnu': 1.11.0 + '@unrs/resolver-binding-linux-x64-musl': 1.11.0 + '@unrs/resolver-binding-wasm32-wasi': 1.11.0 + '@unrs/resolver-binding-win32-arm64-msvc': 1.11.0 + '@unrs/resolver-binding-win32-ia32-msvc': 1.11.0 + '@unrs/resolver-binding-win32-x64-msvc': 1.11.0 untyped@2.0.0: dependencies: @@ -5151,13 +5161,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@3.2.4(@types/node@24.0.10)(jiti@2.4.2): + vite-node@3.2.4(@types/node@24.0.12)(jiti@2.4.2): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.0.0(@types/node@24.0.10)(jiti@2.4.2) + vite: 7.0.3(@types/node@24.0.12)(jiti@2.4.2) transitivePeerDependencies: - '@types/node' - jiti @@ -5172,48 +5182,48 @@ snapshots: - tsx - yaml - vite@5.4.19(@types/node@24.0.10): + vite@5.4.19(@types/node@24.0.12): dependencies: esbuild: 0.21.5 postcss: 8.5.6 - rollup: 4.44.1 + rollup: 4.44.2 optionalDependencies: - '@types/node': 24.0.10 + '@types/node': 24.0.12 fsevents: 2.3.3 - vite@7.0.0(@types/node@24.0.10)(jiti@2.4.2): + vite@7.0.3(@types/node@24.0.12)(jiti@2.4.2): dependencies: - esbuild: 0.25.5 + esbuild: 0.25.6 fdir: 6.4.6(picomatch@4.0.2) picomatch: 4.0.2 postcss: 8.5.6 - rollup: 4.44.1 + rollup: 4.44.2 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 24.0.10 + '@types/node': 24.0.12 fsevents: 2.3.3 jiti: 2.4.2 - vitepress-plugin-group-icons@1.6.1(markdown-it@14.1.0)(vite@7.0.0(@types/node@24.0.10)(jiti@2.4.2)): + vitepress-plugin-group-icons@1.6.1(markdown-it@14.1.0)(vite@7.0.3(@types/node@24.0.12)(jiti@2.4.2)): dependencies: '@iconify-json/logos': 1.2.4 '@iconify-json/vscode-icons': 1.2.23 '@iconify/utils': 2.3.0 markdown-it: 14.1.0 - vite: 7.0.0(@types/node@24.0.10)(jiti@2.4.2) + vite: 7.0.3(@types/node@24.0.12)(jiti@2.4.2) transitivePeerDependencies: - supports-color - vitepress@1.6.3(@algolia/client-search@5.30.0)(@types/node@24.0.10)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.8.3): + vitepress@1.6.3(@algolia/client-search@5.32.0)(@types/node@24.0.12)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.8.3): dependencies: '@docsearch/css': 3.8.2 - '@docsearch/js': 3.8.2(@algolia/client-search@5.30.0)(search-insights@2.17.3) - '@iconify-json/simple-icons': 1.2.41 + '@docsearch/js': 3.8.2(@algolia/client-search@5.32.0)(search-insights@2.17.3) + '@iconify-json/simple-icons': 1.2.42 '@shikijs/core': 2.5.0 '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.4(vite@5.4.19(@types/node@24.0.10))(vue@3.5.17(typescript@5.8.3)) + '@vitejs/plugin-vue': 5.2.4(vite@5.4.19(@types/node@24.0.12))(vue@3.5.17(typescript@5.8.3)) '@vue/devtools-api': 7.7.7 '@vue/shared': 3.5.17 '@vueuse/core': 12.8.2(typescript@5.8.3) @@ -5222,7 +5232,7 @@ snapshots: mark.js: 8.11.1 minisearch: 7.1.2 shiki: 2.5.0 - vite: 5.4.19(@types/node@24.0.10) + vite: 5.4.19(@types/node@24.0.12) vue: 3.5.17(typescript@5.8.3) optionalDependencies: postcss: 8.5.6 @@ -5253,19 +5263,19 @@ snapshots: - typescript - universal-cookie - vitest@3.2.4(@types/node@24.0.10)(jiti@2.4.2): + vitest@3.2.4(@types/node@24.0.12)(jiti@2.4.2): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.0.0(@types/node@24.0.10)(jiti@2.4.2)) + '@vitest/mocker': 3.2.4(vite@7.0.3(@types/node@24.0.12)(jiti@2.4.2)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 - chai: 5.2.0 + chai: 5.2.1 debug: 4.4.1 - expect-type: 1.2.1 + expect-type: 1.2.2 magic-string: 0.30.17 pathe: 2.0.3 picomatch: 4.0.2 @@ -5275,11 +5285,11 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.0.0(@types/node@24.0.10)(jiti@2.4.2) - vite-node: 3.2.4(@types/node@24.0.10)(jiti@2.4.2) + vite: 7.0.3(@types/node@24.0.12)(jiti@2.4.2) + vite-node: 3.2.4(@types/node@24.0.12)(jiti@2.4.2) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.0.10 + '@types/node': 24.0.12 transitivePeerDependencies: - jiti - less From 9a40e014fa80dd90075fb4b7794c279a1881736e Mon Sep 17 00:00:00 2001 From: Yizack Rangel Date: Tue, 5 Aug 2025 23:16:51 +0200 Subject: [PATCH 02/13] chore(deps): update deps --- package.json | 20 +- pnpm-lock.yaml | 1728 ++++++++++++++++++++++++------------------------ 2 files changed, 880 insertions(+), 868 deletions(-) diff --git a/package.json b/package.json index 3566d67..f5c0f9b 100644 --- a/package.json +++ b/package.json @@ -56,21 +56,21 @@ }, "devDependencies": { "@eslint/compat": "^1.3.1", - "@stylistic/eslint-plugin": "^5.1.0", - "@types/node": "^24.0.12", - "@typescript-eslint/eslint-plugin": "^8.36.0", - "@typescript-eslint/parser": "^8.36.0", + "@stylistic/eslint-plugin": "^5.2.2", + "@types/node": "^24.2.0", + "@typescript-eslint/eslint-plugin": "^8.39.0", + "@typescript-eslint/parser": "^8.39.0", "@vitest/coverage-v8": "^3.2.4", "changelogen": "^0.6.2", - "eslint": "^9.30.1", + "eslint": "^9.32.0", "eslint-plugin-import-x": "^4.16.1", - "jiti": "^2.4.2", + "jiti": "^2.5.1", "scule": "^1.3.0", - "typescript": "^5.8.3", - "unbuild": "^3.5.0", - "vitepress": "^1.6.3", + "typescript": "^5.9.2", + "unbuild": "^3.6.0", + "vitepress": "^1.6.4", "vitepress-plugin-group-icons": "^1.6.1", "vitest": "^3.2.4" }, - "packageManager": "pnpm@10.12.4" + "packageManager": "pnpm@10.14.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e32b541..880d18b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,55 +14,59 @@ importers: devDependencies: '@eslint/compat': specifier: ^1.3.1 - version: 1.3.1(eslint@9.30.1(jiti@2.4.2)) + version: 1.3.1(eslint@9.32.0(jiti@2.5.1)) '@stylistic/eslint-plugin': - specifier: ^5.1.0 - version: 5.1.0(eslint@9.30.1(jiti@2.4.2)) + specifier: ^5.2.2 + version: 5.2.2(eslint@9.32.0(jiti@2.5.1)) '@types/node': - specifier: ^24.0.12 - version: 24.0.12 + specifier: ^24.2.0 + version: 24.2.0 '@typescript-eslint/eslint-plugin': - specifier: ^8.36.0 - version: 8.36.0(@typescript-eslint/parser@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + specifier: ^8.39.0 + version: 8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/parser': - specifier: ^8.36.0 - version: 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + specifier: ^8.39.0 + version: 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) '@vitest/coverage-v8': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@24.0.12)(jiti@2.4.2)) + version: 3.2.4(vitest@3.2.4(@types/node@24.2.0)(jiti@2.5.1)) changelogen: specifier: ^0.6.2 version: 0.6.2(magicast@0.3.5) eslint: - specifier: ^9.30.1 - version: 9.30.1(jiti@2.4.2) + specifier: ^9.32.0 + version: 9.32.0(jiti@2.5.1) eslint-plugin-import-x: specifier: ^4.16.1 - version: 4.16.1(@typescript-eslint/utils@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2)) + version: 4.16.1(@typescript-eslint/utils@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1)) jiti: - specifier: ^2.4.2 - version: 2.4.2 + specifier: ^2.5.1 + version: 2.5.1 scule: specifier: ^1.3.0 version: 1.3.0 typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.2 unbuild: - specifier: ^3.5.0 - version: 3.5.0(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)) + specifier: ^3.6.0 + version: 3.6.0(typescript@5.9.2)(vue@3.5.18(typescript@5.9.2)) vitepress: - specifier: ^1.6.3 - version: 1.6.3(@algolia/client-search@5.32.0)(@types/node@24.0.12)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.8.3) + specifier: ^1.6.4 + version: 1.6.4(@algolia/client-search@5.35.0)(@types/node@24.2.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.2) vitepress-plugin-group-icons: specifier: ^1.6.1 - version: 1.6.1(markdown-it@14.1.0)(vite@7.0.3(@types/node@24.0.12)(jiti@2.4.2)) + version: 1.6.1(markdown-it@14.1.0)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@24.0.12)(jiti@2.4.2) + version: 3.2.4(@types/node@24.2.0)(jiti@2.5.1) packages: + '@algolia/abtesting@1.1.0': + resolution: {integrity: sha512-sEyWjw28a/9iluA37KLGu8vjxEIlb60uxznfTUmXImy7H5NvbpSO6yYgmgH5KiD7j+zTUUihiST0jEP12IoXow==} + engines: {node: '>= 14.0.0'} + '@algolia/autocomplete-core@1.17.7': resolution: {integrity: sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==} @@ -83,56 +87,56 @@ packages: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/client-abtesting@5.32.0': - resolution: {integrity: sha512-HG/6Eib6DnJYm/B2ijWFXr4txca/YOuA4K7AsEU0JBrOZSB+RU7oeDyNBPi3c0v0UDDqlkBqM3vBU/auwZlglA==} + '@algolia/client-abtesting@5.35.0': + resolution: {integrity: sha512-uUdHxbfHdoppDVflCHMxRlj49/IllPwwQ2cQ8DLC4LXr3kY96AHBpW0dMyi6ygkn2MtFCc6BxXCzr668ZRhLBQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.32.0': - resolution: {integrity: sha512-8Y9MLU72WFQOW3HArYv16+Wvm6eGmsqbxxM1qxtm0hvSASJbxCm+zQAZe5stqysTlcWo4BJ82KEH1PfgHbJAmQ==} + '@algolia/client-analytics@5.35.0': + resolution: {integrity: sha512-SunAgwa9CamLcRCPnPHx1V2uxdQwJGqb1crYrRWktWUdld0+B2KyakNEeVn5lln4VyeNtW17Ia7V7qBWyM/Skw==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.32.0': - resolution: {integrity: sha512-w8L+rgyXMCPBKmEdOT+RfgMrF0mT6HK60vPYWLz8DBs/P7yFdGo7urn99XCJvVLMSKXrIbZ2FMZ/i50nZTXnuQ==} + '@algolia/client-common@5.35.0': + resolution: {integrity: sha512-ipE0IuvHu/bg7TjT2s+187kz/E3h5ssfTtjpg1LbWMgxlgiaZIgTTbyynM7NfpSJSKsgQvCQxWjGUO51WSCu7w==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.32.0': - resolution: {integrity: sha512-AdWfynhUeX7jz/LTiFU3wwzJembTbdLkQIOLs4n7PyBuxZ3jz4azV1CWbIP8AjUOFmul6uXbmYza+KqyS5CzOA==} + '@algolia/client-insights@5.35.0': + resolution: {integrity: sha512-UNbCXcBpqtzUucxExwTSfAe8gknAJ485NfPN6o1ziHm6nnxx97piIbcBQ3edw823Tej2Wxu1C0xBY06KgeZ7gA==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.32.0': - resolution: {integrity: sha512-bTupJY4xzGZYI4cEQcPlSjjIEzMvv80h7zXGrXY1Y0KC/n/SLiMv84v7Uy+B6AG1Kiy9FQm2ADChBLo1uEhGtQ==} + '@algolia/client-personalization@5.35.0': + resolution: {integrity: sha512-/KWjttZ6UCStt4QnWoDAJ12cKlQ+fkpMtyPmBgSS2WThJQdSV/4UWcqCUqGH7YLbwlj3JjNirCu3Y7uRTClxvA==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.32.0': - resolution: {integrity: sha512-if+YTJw1G3nDKL2omSBjQltCHUQzbaHADkcPQrGFnIGhVyHU3Dzq4g46uEv8mrL5sxL8FjiS9LvekeUlL2NRqw==} + '@algolia/client-query-suggestions@5.35.0': + resolution: {integrity: sha512-8oCuJCFf/71IYyvQQC+iu4kgViTODbXDk3m7yMctEncRSRV+u2RtDVlpGGfPlJQOrAY7OONwJlSHkmbbm2Kp/w==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.32.0': - resolution: {integrity: sha512-kmK5nVkKb4DSUgwbveMKe4X3xHdMsPsOVJeEzBvFJ+oS7CkBPmpfHAEq+CcmiPJs20YMv6yVtUT9yPWL5WgAhg==} + '@algolia/client-search@5.35.0': + resolution: {integrity: sha512-FfmdHTrXhIduWyyuko1YTcGLuicVbhUyRjO3HbXE4aP655yKZgdTIfMhZ/V5VY9bHuxv/fGEh3Od1Lvv2ODNTg==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.32.0': - resolution: {integrity: sha512-PZTqjJbx+fmPuT2ud1n4vYDSF1yrT//vOGI9HNYKNA0PM0xGUBWigf5gRivHsXa3oBnUlTyHV9j7Kqx5BHbVHQ==} + '@algolia/ingestion@1.35.0': + resolution: {integrity: sha512-gPzACem9IL1Co8mM1LKMhzn1aSJmp+Vp434An4C0OBY4uEJRcqsLN3uLBlY+bYvFg8C8ImwM9YRiKczJXRk0XA==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.32.0': - resolution: {integrity: sha512-kYYoOGjvNQAmHDS1v5sBj+0uEL9RzYqH/TAdq8wmcV+/22weKt/fjh+6LfiqkS1SCZFYYrwGnirrUhUM36lBIQ==} + '@algolia/monitoring@1.35.0': + resolution: {integrity: sha512-w9MGFLB6ashI8BGcQoVt7iLgDIJNCn4OIu0Q0giE3M2ItNrssvb8C0xuwJQyTy1OFZnemG0EB1OvXhIHOvQwWw==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.32.0': - resolution: {integrity: sha512-jyIBLdskjPAL7T1g57UMfUNx+PzvYbxKslwRUKBrBA6sNEsYCFdxJAtZSLUMmw6MC98RDt4ksmEl5zVMT5bsuw==} + '@algolia/recommend@5.35.0': + resolution: {integrity: sha512-AhrVgaaXAb8Ue0u2nuRWwugt0dL5UmRgS9LXe0Hhz493a8KFeZVUE56RGIV3hAa6tHzmAV7eIoqcWTQvxzlJeQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.32.0': - resolution: {integrity: sha512-eDp14z92Gt6JlFgiexImcWWH+Lk07s/FtxcoDaGrE4UVBgpwqOO6AfQM6dXh1pvHxlDFbMJihHc/vj3gBhPjqQ==} + '@algolia/requester-browser-xhr@5.35.0': + resolution: {integrity: sha512-diY415KLJZ6x1Kbwl9u96Jsz0OstE3asjXtJ9pmk1d+5gPuQ5jQyEsgC+WmEXzlec3iuVszm8AzNYYaqw6B+Zw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.32.0': - resolution: {integrity: sha512-rnWVglh/K75hnaLbwSc2t7gCkbq1ldbPgeIKDUiEJxZ4mlguFgcltWjzpDQ/t1LQgxk9HdIFcQfM17Hid3aQ6Q==} + '@algolia/requester-fetch@5.35.0': + resolution: {integrity: sha512-uydqnSmpAjrgo8bqhE9N1wgcB98psTRRQXcjc4izwMB7yRl9C8uuAQ/5YqRj04U0mMQ+fdu2fcNF6m9+Z1BzDQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.32.0': - resolution: {integrity: sha512-LbzQ04+VLkzXY4LuOzgyjqEv/46Gwrk55PldaglMJ4i4eDXSRXGKkwJpXFwsoU+c1HMQlHIyjJBhrfsfdyRmyQ==} + '@algolia/requester-node-http@5.35.0': + resolution: {integrity: sha512-RgLX78ojYOrThJHrIiPzT4HW3yfQa0D7K+MQ81rhxqaNyNBu4F1r+72LNHYH/Z+y9I1Mrjrd/c/Ue5zfDgAEjQ==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': @@ -162,8 +166,8 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/types@7.28.0': - resolution: {integrity: sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==} + '@babel/types@7.28.2': + resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@1.0.2': @@ -193,14 +197,14 @@ packages: search-insights: optional: true - '@emnapi/core@1.4.4': - resolution: {integrity: sha512-A9CnAbC6ARNMKcIcrQwq6HeHCjpcBZ5wSx4U01WXCqEKlrzB9F9315WDNHkrs2xbx7YjjSxbUYxuN6EQzpcY2g==} + '@emnapi/core@1.4.5': + resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} - '@emnapi/runtime@1.4.4': - resolution: {integrity: sha512-hHyapA4A3gPaDCNfiqyZUStTMqIkKRshqPIuDOXv1hcBnD4U3l8cP0T1HMCfGRxQ6V64TGCcoswChANyOAwbQg==} + '@emnapi/runtime@1.4.5': + resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} - '@emnapi/wasi-threads@1.0.3': - resolution: {integrity: sha512-8K5IFFsQqF9wQNJptGbS6FNKgUTsSRYnTqNCG1vPP8jFdjSv18n2mQfJpkt2Oibo9iBEzcDnDxNwKTzC7svlJw==} + '@emnapi/wasi-threads@1.0.4': + resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==} '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} @@ -208,8 +212,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.6': - resolution: {integrity: sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==} + '@esbuild/aix-ppc64@0.25.8': + resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -220,8 +224,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.6': - resolution: {integrity: sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==} + '@esbuild/android-arm64@0.25.8': + resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -232,8 +236,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.6': - resolution: {integrity: sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==} + '@esbuild/android-arm@0.25.8': + resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -244,8 +248,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.6': - resolution: {integrity: sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==} + '@esbuild/android-x64@0.25.8': + resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -256,8 +260,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.6': - resolution: {integrity: sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==} + '@esbuild/darwin-arm64@0.25.8': + resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -268,8 +272,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.6': - resolution: {integrity: sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==} + '@esbuild/darwin-x64@0.25.8': + resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -280,8 +284,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.6': - resolution: {integrity: sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==} + '@esbuild/freebsd-arm64@0.25.8': + resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -292,8 +296,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.6': - resolution: {integrity: sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==} + '@esbuild/freebsd-x64@0.25.8': + resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -304,8 +308,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.6': - resolution: {integrity: sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==} + '@esbuild/linux-arm64@0.25.8': + resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -316,8 +320,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.6': - resolution: {integrity: sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==} + '@esbuild/linux-arm@0.25.8': + resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -328,8 +332,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.6': - resolution: {integrity: sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==} + '@esbuild/linux-ia32@0.25.8': + resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -340,8 +344,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.6': - resolution: {integrity: sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==} + '@esbuild/linux-loong64@0.25.8': + resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -352,8 +356,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.6': - resolution: {integrity: sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==} + '@esbuild/linux-mips64el@0.25.8': + resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -364,8 +368,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.6': - resolution: {integrity: sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==} + '@esbuild/linux-ppc64@0.25.8': + resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -376,8 +380,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.6': - resolution: {integrity: sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==} + '@esbuild/linux-riscv64@0.25.8': + resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -388,8 +392,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.6': - resolution: {integrity: sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==} + '@esbuild/linux-s390x@0.25.8': + resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -400,14 +404,14 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.6': - resolution: {integrity: sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==} + '@esbuild/linux-x64@0.25.8': + resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.6': - resolution: {integrity: sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==} + '@esbuild/netbsd-arm64@0.25.8': + resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -418,14 +422,14 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.6': - resolution: {integrity: sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==} + '@esbuild/netbsd-x64@0.25.8': + resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.6': - resolution: {integrity: sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==} + '@esbuild/openbsd-arm64@0.25.8': + resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -436,14 +440,14 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.6': - resolution: {integrity: sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==} + '@esbuild/openbsd-x64@0.25.8': + resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.6': - resolution: {integrity: sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==} + '@esbuild/openharmony-arm64@0.25.8': + resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -454,8 +458,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.6': - resolution: {integrity: sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==} + '@esbuild/sunos-x64@0.25.8': + resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -466,8 +470,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.6': - resolution: {integrity: sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==} + '@esbuild/win32-arm64@0.25.8': + resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -478,8 +482,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.6': - resolution: {integrity: sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==} + '@esbuild/win32-ia32@0.25.8': + resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -490,8 +494,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.6': - resolution: {integrity: sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==} + '@esbuild/win32-x64@0.25.8': + resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -523,10 +527,6 @@ packages: resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.14.0': - resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.15.1': resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -535,16 +535,16 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.30.1': - resolution: {integrity: sha512-zXhuECFlyep42KZUhWjfvsmXGX39W8K8LFb8AWXM9gSV9dQB+MrJGLKvW6Zw0Ggnbpw0VHTtrhFXYe3Gym18jg==} + '@eslint/js@9.32.0': + resolution: {integrity: sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.3.3': - resolution: {integrity: sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag==} + '@eslint/plugin-kit@0.3.4': + resolution: {integrity: sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@humanfs/core@0.19.1': @@ -567,14 +567,14 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@iconify-json/logos@1.2.4': - resolution: {integrity: sha512-XC4If5D/hbaZvUkTV8iaZuGlQCyG6CNOlaAaJaGa13V5QMYwYjgtKk3vPP8wz3wtTVNVEVk3LRx1fOJz+YnSMw==} + '@iconify-json/logos@1.2.5': + resolution: {integrity: sha512-WR8+9kFwx1tIR+hWpKYC+rpVkAuzHyaVxZRfhGGIjqCfgbodK7rS4+OZhktdKtZKKcdmhpLZKvlmRm4IA4dKRg==} - '@iconify-json/simple-icons@1.2.42': - resolution: {integrity: sha512-G/EED0hUV1wMNUsWaFdQYLibm6SO7rP2GZP1+CvhszB5WAFYYibD3zoWp3X96xSIWpYQFvccvE17ewpd0Q1hWQ==} + '@iconify-json/simple-icons@1.2.46': + resolution: {integrity: sha512-MJfKQDhOMQD5Fc8PcTtCdFX0oBf/nKVfp69ScdEKIXW0JXELX5V2Ld45EsjShi8aJ6DNhdDtSDZvKuDnkDiKnw==} - '@iconify-json/vscode-icons@1.2.23': - resolution: {integrity: sha512-gFTcKecKra2/b5SbGDgHGI/l8CuikHyBPmqGlK+YCmS8AK72dtDQbUekdoACsju/3TYS37QvdPoOQwnyx2LdYg==} + '@iconify-json/vscode-icons@1.2.24': + resolution: {integrity: sha512-iWWsflaDjX8l9JM9m5OrUtC49fuLveoXud7tVobRRyrDpI5ixdM9yfH20dC9R8aW+qpfPFPi6oC3n1noPsp8gA==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -611,8 +611,8 @@ packages: '@jridgewell/trace-mapping@0.3.29': resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} - '@napi-rs/wasm-runtime@0.2.11': - resolution: {integrity: sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==} + '@napi-rs/wasm-runtime@0.2.12': + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -684,103 +684,103 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.44.2': - resolution: {integrity: sha512-g0dF8P1e2QYPOj1gu7s/3LVP6kze9A7m6x0BZ9iTdXK8N5c2V7cpBKHV3/9A4Zd8xxavdhK0t4PnqjkqVmUc9Q==} + '@rollup/rollup-android-arm-eabi@4.46.2': + resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.44.2': - resolution: {integrity: sha512-Yt5MKrOosSbSaAK5Y4J+vSiID57sOvpBNBR6K7xAaQvk3MkcNVV0f9fE20T+41WYN8hDn6SGFlFrKudtx4EoxA==} + '@rollup/rollup-android-arm64@4.46.2': + resolution: {integrity: sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.44.2': - resolution: {integrity: sha512-EsnFot9ZieM35YNA26nhbLTJBHD0jTwWpPwmRVDzjylQT6gkar+zenfb8mHxWpRrbn+WytRRjE0WKsfaxBkVUA==} + '@rollup/rollup-darwin-arm64@4.46.2': + resolution: {integrity: sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.44.2': - resolution: {integrity: sha512-dv/t1t1RkCvJdWWxQ2lWOO+b7cMsVw5YFaS04oHpZRWehI1h0fV1gF4wgGCTyQHHjJDfbNpwOi6PXEafRBBezw==} + '@rollup/rollup-darwin-x64@4.46.2': + resolution: {integrity: sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.44.2': - resolution: {integrity: sha512-W4tt4BLorKND4qeHElxDoim0+BsprFTwb+vriVQnFFtT/P6v/xO5I99xvYnVzKWrK6j7Hb0yp3x7V5LUbaeOMg==} + '@rollup/rollup-freebsd-arm64@4.46.2': + resolution: {integrity: sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.44.2': - resolution: {integrity: sha512-tdT1PHopokkuBVyHjvYehnIe20fxibxFCEhQP/96MDSOcyjM/shlTkZZLOufV3qO6/FQOSiJTBebhVc12JyPTA==} + '@rollup/rollup-freebsd-x64@4.46.2': + resolution: {integrity: sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.44.2': - resolution: {integrity: sha512-+xmiDGGaSfIIOXMzkhJ++Oa0Gwvl9oXUeIiwarsdRXSe27HUIvjbSIpPxvnNsRebsNdUo7uAiQVgBD1hVriwSQ==} + '@rollup/rollup-linux-arm-gnueabihf@4.46.2': + resolution: {integrity: sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.44.2': - resolution: {integrity: sha512-bDHvhzOfORk3wt8yxIra8N4k/N0MnKInCW5OGZaeDYa/hMrdPaJzo7CSkjKZqX4JFUWjUGm88lI6QJLCM7lDrA==} + '@rollup/rollup-linux-arm-musleabihf@4.46.2': + resolution: {integrity: sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.44.2': - resolution: {integrity: sha512-NMsDEsDiYghTbeZWEGnNi4F0hSbGnsuOG+VnNvxkKg0IGDvFh7UVpM/14mnMwxRxUf9AdAVJgHPvKXf6FpMB7A==} + '@rollup/rollup-linux-arm64-gnu@4.46.2': + resolution: {integrity: sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.44.2': - resolution: {integrity: sha512-lb5bxXnxXglVq+7imxykIp5xMq+idehfl+wOgiiix0191av84OqbjUED+PRC5OA8eFJYj5xAGcpAZ0pF2MnW+A==} + '@rollup/rollup-linux-arm64-musl@4.46.2': + resolution: {integrity: sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.44.2': - resolution: {integrity: sha512-Yl5Rdpf9pIc4GW1PmkUGHdMtbx0fBLE1//SxDmuf3X0dUC57+zMepow2LK0V21661cjXdTn8hO2tXDdAWAqE5g==} + '@rollup/rollup-linux-loongarch64-gnu@4.46.2': + resolution: {integrity: sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.44.2': - resolution: {integrity: sha512-03vUDH+w55s680YYryyr78jsO1RWU9ocRMaeV2vMniJJW/6HhoTBwyyiiTPVHNWLnhsnwcQ0oH3S9JSBEKuyqw==} + '@rollup/rollup-linux-ppc64-gnu@4.46.2': + resolution: {integrity: sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.44.2': - resolution: {integrity: sha512-iYtAqBg5eEMG4dEfVlkqo05xMOk6y/JXIToRca2bAWuqjrJYJlx/I7+Z+4hSrsWU8GdJDFPL4ktV3dy4yBSrzg==} + '@rollup/rollup-linux-riscv64-gnu@4.46.2': + resolution: {integrity: sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.44.2': - resolution: {integrity: sha512-e6vEbgaaqz2yEHqtkPXa28fFuBGmUJ0N2dOJK8YUfijejInt9gfCSA7YDdJ4nYlv67JfP3+PSWFX4IVw/xRIPg==} + '@rollup/rollup-linux-riscv64-musl@4.46.2': + resolution: {integrity: sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.44.2': - resolution: {integrity: sha512-evFOtkmVdY3udE+0QKrV5wBx7bKI0iHz5yEVx5WqDJkxp9YQefy4Mpx3RajIVcM6o7jxTvVd/qpC1IXUhGc1Mw==} + '@rollup/rollup-linux-s390x-gnu@4.46.2': + resolution: {integrity: sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.44.2': - resolution: {integrity: sha512-/bXb0bEsWMyEkIsUL2Yt5nFB5naLAwyOWMEviQfQY1x3l5WsLKgvZf66TM7UTfED6erckUVUJQ/jJ1FSpm3pRQ==} + '@rollup/rollup-linux-x64-gnu@4.46.2': + resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.44.2': - resolution: {integrity: sha512-3D3OB1vSSBXmkGEZR27uiMRNiwN08/RVAcBKwhUYPaiZ8bcvdeEwWPvbnXvvXHY+A/7xluzcN+kaiOFNiOZwWg==} + '@rollup/rollup-linux-x64-musl@4.46.2': + resolution: {integrity: sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.44.2': - resolution: {integrity: sha512-VfU0fsMK+rwdK8mwODqYeM2hDrF2WiHaSmCBrS7gColkQft95/8tphyzv2EupVxn3iE0FI78wzffoULH1G+dkw==} + '@rollup/rollup-win32-arm64-msvc@4.46.2': + resolution: {integrity: sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.44.2': - resolution: {integrity: sha512-+qMUrkbUurpE6DVRjiJCNGZBGo9xM4Y0FXU5cjgudWqIBWbcLkjE3XprJUsOFgC6xjBClwVa9k6O3A7K3vxb5Q==} + '@rollup/rollup-win32-ia32-msvc@4.46.2': + resolution: {integrity: sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.44.2': - resolution: {integrity: sha512-3+QZROYfJ25PDcxFF66UEk8jGWigHJeecZILvkPkyQN7oc5BvFo4YEXFkOs154j3FTMp9mn9Ky8RCOwastduEA==} + '@rollup/rollup-win32-x64-msvc@4.46.2': + resolution: {integrity: sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==} cpu: [x64] os: [win32] @@ -808,18 +808,14 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - '@stylistic/eslint-plugin@5.1.0': - resolution: {integrity: sha512-TJRJul4u/lmry5N/kyCU+7RWWOk0wyXN+BncRlDYBqpLFnzXkd7QGVfN7KewarFIXv0IX0jSF/Ksu7aHWEDeuw==} + '@stylistic/eslint-plugin@5.2.2': + resolution: {integrity: sha512-bE2DUjruqXlHYP3Q2Gpqiuj2bHq7/88FnuaS0FjeGGLCy+X6a07bGVuwtiOYnPSLHR6jmx5Bwdv+j7l8H+G97A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=9.0.0' - '@trysound/sax@0.2.0': - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - - '@tybys/wasm-util@0.9.0': - resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + '@tybys/wasm-util@0.10.0': + resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} '@types/chai@5.2.2': resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} @@ -848,8 +844,8 @@ packages: '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} - '@types/node@24.0.12': - resolution: {integrity: sha512-LtOrbvDf5ndC9Xi+4QZjVL0woFymF/xSTKZKPgrrl7H7XoeDvnD+E2IclKVDyaK9UM756W/3BXqSU+JEHopA9g==} + '@types/node@24.2.0': + resolution: {integrity: sha512-3xyG3pMCq3oYCNg7/ZP+E1ooTaGB4cG8JWRsqqOYQdbWNY4zbaV0Ennrd7stjiJEFZCaybcIgpTjJWHRfBSIDw==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -860,160 +856,160 @@ packages: '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} - '@typescript-eslint/eslint-plugin@8.36.0': - resolution: {integrity: sha512-lZNihHUVB6ZZiPBNgOQGSxUASI7UJWhT8nHyUGCnaQ28XFCw98IfrMCG3rUl1uwUWoAvodJQby2KTs79UTcrAg==} + '@typescript-eslint/eslint-plugin@8.39.0': + resolution: {integrity: sha512-bhEz6OZeUR+O/6yx9Jk6ohX6H9JSFTaiY0v9/PuKT3oGK0rn0jNplLmyFUGV+a9gfYnVNwGDwS/UkLIuXNb2Rw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.36.0 + '@typescript-eslint/parser': ^8.39.0 eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.36.0': - resolution: {integrity: sha512-FuYgkHwZLuPbZjQHzJXrtXreJdFMKl16BFYyRrLxDhWr6Qr7Kbcu2s1Yhu8tsiMXw1S0W1pjfFfYEt+R604s+Q==} + '@typescript-eslint/parser@8.39.0': + resolution: {integrity: sha512-g3WpVQHngx0aLXn6kfIYCZxM6rRJlWzEkVpqEFLT3SgEDsp9cpCbxxgwnE504q4H+ruSDh/VGS6nqZIDynP+vg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.36.0': - resolution: {integrity: sha512-JAhQFIABkWccQYeLMrHadu/fhpzmSQ1F1KXkpzqiVxA/iYI6UnRt2trqXHt1sYEcw1mxLnB9rKMsOxXPxowN/g==} + '@typescript-eslint/project-service@8.39.0': + resolution: {integrity: sha512-CTzJqaSq30V/Z2Og9jogzZt8lJRR5TKlAdXmWgdu4hgcC9Kww5flQ+xFvMxIBWVNdxJO7OifgdOK4PokMIWPew==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.36.0': - resolution: {integrity: sha512-wCnapIKnDkN62fYtTGv2+RY8FlnBYA3tNm0fm91kc2BjPhV2vIjwwozJ7LToaLAyb1ca8BxrS7vT+Pvvf7RvqA==} + '@typescript-eslint/scope-manager@8.39.0': + resolution: {integrity: sha512-8QOzff9UKxOh6npZQ/4FQu4mjdOCGSdO3p44ww0hk8Vu+IGbg0tB/H1LcTARRDzGCC8pDGbh2rissBuuoPgH8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.36.0': - resolution: {integrity: sha512-Nhh3TIEgN18mNbdXpd5Q8mSCBnrZQeY9V7Ca3dqYvNDStNIGRmJA6dmrIPMJ0kow3C7gcQbpsG2rPzy1Ks/AnA==} + '@typescript-eslint/tsconfig-utils@8.39.0': + resolution: {integrity: sha512-Fd3/QjmFV2sKmvv3Mrj8r6N8CryYiCS8Wdb/6/rgOXAWGcFuc+VkQuG28uk/4kVNVZBQuuDHEDUpo/pQ32zsIQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.36.0': - resolution: {integrity: sha512-5aaGYG8cVDd6cxfk/ynpYzxBRZJk7w/ymto6uiyUFtdCozQIsQWh7M28/6r57Fwkbweng8qAzoMCPwSJfWlmsg==} + '@typescript-eslint/type-utils@8.39.0': + resolution: {integrity: sha512-6B3z0c1DXVT2vYA9+z9axjtc09rqKUPRmijD5m9iv8iQpHBRYRMBcgxSiKTZKm6FwWw1/cI4v6em35OsKCiN5Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.36.0': - resolution: {integrity: sha512-xGms6l5cTJKQPZOKM75Dl9yBfNdGeLRsIyufewnxT4vZTrjC0ImQT4fj8QmtJK84F58uSh5HVBSANwcfiXxABQ==} + '@typescript-eslint/types@8.39.0': + resolution: {integrity: sha512-ArDdaOllnCj3yn/lzKn9s0pBQYmmyme/v1HbGIGB0GB/knFI3fWMHloC+oYTJW46tVbYnGKTMDK4ah1sC2v0Kg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.36.0': - resolution: {integrity: sha512-JaS8bDVrfVJX4av0jLpe4ye0BpAaUW7+tnS4Y4ETa3q7NoZgzYbN9zDQTJ8kPb5fQ4n0hliAt9tA4Pfs2zA2Hg==} + '@typescript-eslint/typescript-estree@8.39.0': + resolution: {integrity: sha512-ndWdiflRMvfIgQRpckQQLiB5qAKQ7w++V4LlCHwp62eym1HLB/kw7D9f2e8ytONls/jt89TEasgvb+VwnRprsw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.36.0': - resolution: {integrity: sha512-VOqmHu42aEMT+P2qYjylw6zP/3E/HvptRwdn/PZxyV27KhZg2IOszXod4NcXisWzPAGSS4trE/g4moNj6XmH2g==} + '@typescript-eslint/utils@8.39.0': + resolution: {integrity: sha512-4GVSvNA0Vx1Ktwvf4sFE+exxJ3QGUorQG1/A5mRfRNZtkBT2xrA/BCO2H0eALx/PnvCS6/vmYwRdDA41EoffkQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.36.0': - resolution: {integrity: sha512-vZrhV2lRPWDuGoxcmrzRZyxAggPL+qp3WzUrlZD+slFueDiYHxeBa34dUXPuC0RmGKzl4lS5kFJYvKCq9cnNDA==} + '@typescript-eslint/visitor-keys@8.39.0': + resolution: {integrity: sha512-ldgiJ+VAhQCfIjeOgu8Kj5nSxds0ktPOSO9p4+0VDH2R2pLvQraaM5Oen2d7NxzMCm+Sn/vJT+mv2H5u6b/3fA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@unrs/resolver-binding-android-arm-eabi@1.11.0': - resolution: {integrity: sha512-LRw5BW29sYj9NsQC6QoqeLVQhEa+BwVINYyMlcve+6stwdBsSt5UB7zw4UZB4+4PNqIVilHoMaPWCb/KhABHQw==} + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} cpu: [arm] os: [android] - '@unrs/resolver-binding-android-arm64@1.11.0': - resolution: {integrity: sha512-zYX8D2zcWCAHqghA8tPjbp7LwjVXbIZP++mpU/Mrf5jUVlk3BWIxkeB8yYzZi5GpFSlqMcRZQxQqbMI0c2lASQ==} + '@unrs/resolver-binding-android-arm64@1.11.1': + resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} cpu: [arm64] os: [android] - '@unrs/resolver-binding-darwin-arm64@1.11.0': - resolution: {integrity: sha512-YsYOT049hevAY/lTYD77GhRs885EXPeAfExG5KenqMJ417nYLS2N/kpRpYbABhFZBVQn+2uRPasTe4ypmYoo3w==} + '@unrs/resolver-binding-darwin-arm64@1.11.1': + resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} cpu: [arm64] os: [darwin] - '@unrs/resolver-binding-darwin-x64@1.11.0': - resolution: {integrity: sha512-PSjvk3OZf1aZImdGY5xj9ClFG3bC4gnSSYWrt+id0UAv+GwwVldhpMFjAga8SpMo2T1GjV9UKwM+QCsQCQmtdA==} + '@unrs/resolver-binding-darwin-x64@1.11.1': + resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} cpu: [x64] os: [darwin] - '@unrs/resolver-binding-freebsd-x64@1.11.0': - resolution: {integrity: sha512-KC/iFaEN/wsTVYnHClyHh5RSYA9PpuGfqkFua45r4sweXpC0KHZ+BYY7ikfcGPt5w1lMpR1gneFzuqWLQxsRKg==} + '@unrs/resolver-binding-freebsd-x64@1.11.1': + resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} cpu: [x64] os: [freebsd] - '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.0': - resolution: {integrity: sha512-CDh/0v8uot43cB4yKtDL9CVY8pbPnMV0dHyQCE4lFz6PW/+9tS0i9eqP5a91PAqEBVMqH1ycu+k8rP6wQU846w==} + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} cpu: [arm] os: [linux] - '@unrs/resolver-binding-linux-arm-musleabihf@1.11.0': - resolution: {integrity: sha512-+TE7epATDSnvwr3L/hNHX3wQ8KQYB+jSDTdywycg3qDqvavRP8/HX9qdq/rMcnaRDn4EOtallb3vL/5wCWGCkw==} + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} cpu: [arm] os: [linux] - '@unrs/resolver-binding-linux-arm64-gnu@1.11.0': - resolution: {integrity: sha512-VBAYGg3VahofpQ+L4k/ZO8TSICIbUKKTaMYOWHWfuYBFqPbSkArZZLezw3xd27fQkxX4BaLGb/RKnW0dH9Y/UA==} + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} cpu: [arm64] os: [linux] - '@unrs/resolver-binding-linux-arm64-musl@1.11.0': - resolution: {integrity: sha512-9IgGFUUb02J1hqdRAHXpZHIeUHRrbnGo6vrRbz0fREH7g+rzQy53/IBSyadZ/LG5iqMxukriNPu4hEMUn+uWEg==} + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} cpu: [arm64] os: [linux] - '@unrs/resolver-binding-linux-ppc64-gnu@1.11.0': - resolution: {integrity: sha512-LR4iQ/LPjMfivpL2bQ9kmm3UnTas3U+umcCnq/CV7HAkukVdHxrDD1wwx74MIWbbgzQTLPYY7Ur2MnnvkYJCBQ==} + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} cpu: [ppc64] os: [linux] - '@unrs/resolver-binding-linux-riscv64-gnu@1.11.0': - resolution: {integrity: sha512-HCupFQwMrRhrOg7YHrobbB5ADg0Q8RNiuefqMHVsdhEy9lLyXm/CxsCXeLJdrg27NAPsCaMDtdlm8Z2X8x91Tg==} + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} cpu: [riscv64] os: [linux] - '@unrs/resolver-binding-linux-riscv64-musl@1.11.0': - resolution: {integrity: sha512-Ckxy76A5xgjWa4FNrzcKul5qFMWgP5JSQ5YKd0XakmWOddPLSkQT+uAvUpQNnFGNbgKzv90DyQlxPDYPQ4nd6A==} + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} cpu: [riscv64] os: [linux] - '@unrs/resolver-binding-linux-s390x-gnu@1.11.0': - resolution: {integrity: sha512-HfO0PUCCRte2pMJmVyxPI+eqT7KuV3Fnvn2RPvMe5mOzb2BJKf4/Vth8sSt9cerQboMaTVpbxyYjjLBWIuI5BQ==} + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} cpu: [s390x] os: [linux] - '@unrs/resolver-binding-linux-x64-gnu@1.11.0': - resolution: {integrity: sha512-9PZdjP7tLOEjpXHS6+B/RNqtfVUyDEmaViPOuSqcbomLdkJnalt5RKQ1tr2m16+qAufV0aDkfhXtoO7DQos/jg==} + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} cpu: [x64] os: [linux] - '@unrs/resolver-binding-linux-x64-musl@1.11.0': - resolution: {integrity: sha512-qkE99ieiSKMnFJY/EfyGKVtNra52/k+lVF/PbO4EL5nU6AdvG4XhtJ+WHojAJP7ID9BNIra/yd75EHndewNRfA==} + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} cpu: [x64] os: [linux] - '@unrs/resolver-binding-wasm32-wasi@1.11.0': - resolution: {integrity: sha512-MjXek8UL9tIX34gymvQLecz2hMaQzOlaqYJJBomwm1gsvK2F7hF+YqJJ2tRyBDTv9EZJGMt4KlKkSD/gZWCOiw==} + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@unrs/resolver-binding-win32-arm64-msvc@1.11.0': - resolution: {integrity: sha512-9LT6zIGO7CHybiQSh7DnQGwFMZvVr0kUjah6qQfkH2ghucxPV6e71sUXJdSM4Ba0MaGE6DC/NwWf7mJmc3DAng==} + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} cpu: [arm64] os: [win32] - '@unrs/resolver-binding-win32-ia32-msvc@1.11.0': - resolution: {integrity: sha512-HYchBYOZ7WN266VjoGm20xFv5EonG/ODURRgwl9EZT7Bq1nLEs6VKJddzfFdXEAho0wfFlt8L/xIiE29Pmy1RA==} + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} cpu: [ia32] os: [win32] - '@unrs/resolver-binding-win32-x64-msvc@1.11.0': - resolution: {integrity: sha512-+oLKLHw3I1UQo4MeHfoLYF+e6YBa8p5vYUw3Rgt7IDzCs+57vIZqQlIo62NDpYM0VG6BjWOwnzBczMvbtH8hag==} + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} cpu: [x64] os: [win32] @@ -1062,17 +1058,17 @@ packages: '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} - '@vue/compiler-core@3.5.17': - resolution: {integrity: sha512-Xe+AittLbAyV0pabcN7cP7/BenRBNcteM4aSDCtRvGw0d9OL+HG1u/XHLY/kt1q4fyMeZYXyIYrsHuPSiDPosA==} + '@vue/compiler-core@3.5.18': + resolution: {integrity: sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==} - '@vue/compiler-dom@3.5.17': - resolution: {integrity: sha512-+2UgfLKoaNLhgfhV5Ihnk6wB4ljyW1/7wUIog2puUqajiC29Lp5R/IKDdkebh9jTbTogTbsgB+OY9cEWzG95JQ==} + '@vue/compiler-dom@3.5.18': + resolution: {integrity: sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==} - '@vue/compiler-sfc@3.5.17': - resolution: {integrity: sha512-rQQxbRJMgTqwRugtjw0cnyQv9cP4/4BxWfTdRBkqsTfLOHWykLzbOc3C4GGzAmdMDxhzU/1Ija5bTjMVrddqww==} + '@vue/compiler-sfc@3.5.18': + resolution: {integrity: sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA==} - '@vue/compiler-ssr@3.5.17': - resolution: {integrity: sha512-hkDbA0Q20ZzGgpj5uZjb9rBzQtIHLS78mMilwrlpWk2Ep37DYntUz0PonQ6kr113vfOEdM+zTBuJDaceNIW0tQ==} + '@vue/compiler-ssr@3.5.18': + resolution: {integrity: sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g==} '@vue/devtools-api@7.7.7': resolution: {integrity: sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==} @@ -1083,22 +1079,22 @@ packages: '@vue/devtools-shared@7.7.7': resolution: {integrity: sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==} - '@vue/reactivity@3.5.17': - resolution: {integrity: sha512-l/rmw2STIscWi7SNJp708FK4Kofs97zc/5aEPQh4bOsReD/8ICuBcEmS7KGwDj5ODQLYWVN2lNibKJL1z5b+Lw==} + '@vue/reactivity@3.5.18': + resolution: {integrity: sha512-x0vPO5Imw+3sChLM5Y+B6G1zPjwdOri9e8V21NnTnlEvkxatHEH5B5KEAJcjuzQ7BsjGrKtfzuQ5eQwXh8HXBg==} - '@vue/runtime-core@3.5.17': - resolution: {integrity: sha512-QQLXa20dHg1R0ri4bjKeGFKEkJA7MMBxrKo2G+gJikmumRS7PTD4BOU9FKrDQWMKowz7frJJGqBffYMgQYS96Q==} + '@vue/runtime-core@3.5.18': + resolution: {integrity: sha512-DUpHa1HpeOQEt6+3nheUfqVXRog2kivkXHUhoqJiKR33SO4x+a5uNOMkV487WPerQkL0vUuRvq/7JhRgLW3S+w==} - '@vue/runtime-dom@3.5.17': - resolution: {integrity: sha512-8El0M60TcwZ1QMz4/os2MdlQECgGoVHPuLnQBU3m9h3gdNRW9xRmI8iLS4t/22OQlOE6aJvNNlBiCzPHur4H9g==} + '@vue/runtime-dom@3.5.18': + resolution: {integrity: sha512-YwDj71iV05j4RnzZnZtGaXwPoUWeRsqinblgVJwR8XTXYZ9D5PbahHQgsbmzUvCWNF6x7siQ89HgnX5eWkr3mw==} - '@vue/server-renderer@3.5.17': - resolution: {integrity: sha512-BOHhm8HalujY6lmC3DbqF6uXN/K00uWiEeF22LfEsm9Q93XeJ/plHTepGwf6tqFcF7GA5oGSSAAUock3VvzaCA==} + '@vue/server-renderer@3.5.18': + resolution: {integrity: sha512-PvIHLUoWgSbDG7zLHqSqaCoZvHi6NNmfVFOqO+OnwvqMz/tqQr3FuGWS8ufluNddk7ZLBJYMrjcw1c6XzR12mA==} peerDependencies: - vue: 3.5.17 + vue: 3.5.18 - '@vue/shared@3.5.17': - resolution: {integrity: sha512-CabR+UN630VnsJO/jHWYBC1YVXyMq94KKp6iF5MQgZJs5I8cmjw6oVMO1oDbtBkENSHSSn/UadWlW/OAgdmKrg==} + '@vue/shared@3.5.18': + resolution: {integrity: sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==} '@vueuse/core@12.8.2': resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==} @@ -1163,8 +1159,8 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - algoliasearch@5.32.0: - resolution: {integrity: sha512-84xBncKNPBK8Ae89F65+SyVcOihrIbm/3N7to+GpRBHEUXGjA3ydWTMpcRW6jmFzkBQ/eqYy/y+J+NBpJWYjBg==} + algoliasearch@5.35.0: + resolution: {integrity: sha512-Y+moNhsqgLmvJdgTsO4GZNgsaDWv8AOGAaPeIeHKlDn/XunoAqYbA+XNpBd1dW8GOXAUDyxC9Rxc7AV4kpFcIg==} engines: {node: '>= 14.0.0'} ansi-regex@5.0.1: @@ -1190,8 +1186,8 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - ast-v8-to-istanbul@0.3.3: - resolution: {integrity: sha512-MuXMrSLVVoA6sYN/6Hke18vMzrT4TZNbZIj/hvh0fnYFpO+/kFXcLIaiPwXXWaQUPg4yJD8fj+lfJ7/1EBconw==} + ast-v8-to-istanbul@0.3.4: + resolution: {integrity: sha512-cxrAnZNLBnQwBPByK4CeDaw5sWZtMilJE/Q3iDA0aamgaIVNDF9T6K2/8DfYDZEejZ2jNnDrG9m8MY72HFd0KA==} autoprefixer@10.4.21: resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} @@ -1203,8 +1199,8 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - birpc@2.4.0: - resolution: {integrity: sha512-5IdNxTyhXHv2UlgnPHQ0h+5ypVmkrYHzL8QT+DwFZ//2N/oNV8Ch+BCRmTJ3x6/z9Axo/cXYBc9eprsUVK/Jsg==} + birpc@2.5.0: + resolution: {integrity: sha512-VSWO/W6nNQdyP520F1mhf+Lc2f8pjGQOtoHHm7Ze8Go1kX7akpVIrtTa0fn+HB0QJEDVacl6aO08YE0PgXfdnQ==} boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -1228,8 +1224,8 @@ packages: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} - c12@3.0.4: - resolution: {integrity: sha512-t5FaZTYbbCtvxuZq9xxIruYydrAGsJ+8UdP0pZzMiK2xl/gNiSOy0OxhLzHUEEb0m1QXYqfzfvyIFEmz/g9lqg==} + c12@3.2.0: + resolution: {integrity: sha512-ixkEtbYafL56E6HiFuonMm1ZjoKtIo7TH68/uiEq4DAwv9NcUX2nJ95F8TrbMeNjqIkZpruo3ojXQJ+MGG5gcQ==} peerDependencies: magicast: ^0.3.5 peerDependenciesMeta: @@ -1247,8 +1243,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001727: - resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==} + caniuse-lite@1.0.30001731: + resolution: {integrity: sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -1295,9 +1291,9 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} comment-parser@1.4.1: resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} @@ -1343,8 +1339,8 @@ packages: resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} css-what@6.2.2: @@ -1356,8 +1352,8 @@ packages: engines: {node: '>=4'} hasBin: true - cssnano-preset-default@7.0.7: - resolution: {integrity: sha512-jW6CG/7PNB6MufOrlovs1TvBTEVmhY45yz+bd0h6nw3h6d+1e+/TX+0fflZ+LzvZombbT5f+KC063w9VoHeHow==} + cssnano-preset-default@7.0.8: + resolution: {integrity: sha512-d+3R2qwrUV3g4LEMOjnndognKirBZISylDZAF/TPeCWVjEwlXS2e4eN4ICkoobRe7pD3H6lltinKVyS1AJhdjQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -1368,8 +1364,8 @@ packages: peerDependencies: postcss: ^8.4.32 - cssnano@7.0.7: - resolution: {integrity: sha512-evKu7yiDIF7oS+EIpwFlMF730ijRyLFaM2o5cTxRGJR9OKHKkc+qP443ZEVR9kZG0syaAJJCPJyfv5pbrxlSng==} + cssnano@7.1.0: + resolution: {integrity: sha512-Pu3rlKkd0ZtlCUzBrKL1Z4YmhKppjC1H9jo7u1o4qaKqyhvixFgu5qLyNIAOjSTg9DjVPtUqdROq2EfpVMEe+w==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -1439,15 +1435,15 @@ packages: domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - dotenv@16.6.1: - resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} + dotenv@17.2.1: + resolution: {integrity: sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==} engines: {node: '>=12'} eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.180: - resolution: {integrity: sha512-ED+GEyEh3kYMwt2faNmgMB0b8O5qtATGgR4RmRsIp4T6p7B8vdMbIedYndnvZfsaXvSzegtpfqRMDNCjjiSduA==} + electron-to-chromium@1.5.195: + resolution: {integrity: sha512-URclP0iIaDUzqcAyV1v2PgduJ9N0IdXmWsnPzPfelvBmjmZzEy6xJcjb1cXj+TbYqXgtLrjHEoaSIdTYhw4ezg==} emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -1470,8 +1466,8 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.25.6: - resolution: {integrity: sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==} + esbuild@0.25.8: + resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} engines: {node: '>=18'} hasBin: true @@ -1517,8 +1513,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.30.1: - resolution: {integrity: sha512-zmxXPNMOXmwm9E0yQLi5uqXHs7uq2UIiqEKo3Gq+3fwo1XrJ+hijAZImyF7hclW3E6oHz43Yk3RP8at6OTKflQ==} + eslint@9.32.0: + resolution: {integrity: sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -1763,8 +1759,8 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + jiti@2.5.1: + resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} hasBin: true js-tokens@4.0.0: @@ -1823,8 +1819,8 @@ packages: lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - loupe@3.1.4: - resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==} + loupe@3.2.0: + resolution: {integrity: sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==} lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -1852,8 +1848,8 @@ packages: mdn-data@2.0.28: resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -1938,16 +1934,16 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - napi-postinstall@0.3.0: - resolution: {integrity: sha512-M7NqKyhODKV1gRLdkwE7pDsZP2/SC2a2vHkOYh9MCpKMbWVfyVfUw5MaH83Fv6XMjxr5jryUp3IDDL9rlxsTeA==} + napi-postinstall@0.3.2: + resolution: {integrity: sha512-tWVJxJHmBWLy69PvO96TZMZDrzmw5KeiZBz3RHmiM2XZ9grBJ2WgMAFVVg25nqp3ZjTFUs2Ftw1JhscL3Teliw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} hasBin: true natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - node-fetch-native@1.6.6: - resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} @@ -1959,8 +1955,8 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nypm@0.6.0: - resolution: {integrity: sha512-mn8wBFV9G9+UFHIrq+pZ2r2zL4aPau/by3kJb3cM7+5tQHMt6HGQB8FDIeKFYp8o0D2pnH6nVsO88N4AmUxIWg==} + nypm@0.6.1: + resolution: {integrity: sha512-hlacBiRiv1k9hZFiphPUkfSQ/ZfQzZDzC+8z0wL3lvDAOUu/2NnChkKuMoMjNur/9OpKuz2QsIeiPVN0xM5Q0w==} engines: {node: ^14.16.0 || >=16.10.0} hasBin: true @@ -1973,8 +1969,8 @@ packages: oniguruma-to-es@3.1.1: resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==} - open@10.1.2: - resolution: {integrity: sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==} + open@10.2.0: + resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} engines: {node: '>=18'} optionator@0.9.4: @@ -2031,8 +2027,8 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} pkg-types@1.3.1: @@ -2047,14 +2043,14 @@ packages: peerDependencies: postcss: ^8.4.38 - postcss-colormin@7.0.3: - resolution: {integrity: sha512-xZxQcSyIVZbSsl1vjoqZAcMYYdnJsIyG8OvqShuuqf12S88qQboxxEy0ohNCOLwVPXTU+hFHvJPACRL2B5ohTA==} + postcss-colormin@7.0.4: + resolution: {integrity: sha512-ziQuVzQZBROpKpfeDwmrG+Vvlr0YWmY/ZAk99XD+mGEBuEojoFekL41NCsdhyNUtZI7DPOoIWIR7vQQK9xwluw==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 - postcss-convert-values@7.0.5: - resolution: {integrity: sha512-0VFhH8nElpIs3uXKnVtotDJJNX0OGYSZmdt4XfSfvOMrFw1jKfpwpZxfC4iN73CTM/MWakDEmsHQXkISYj4BXw==} + postcss-convert-values@7.0.6: + resolution: {integrity: sha512-MD/eb39Mr60hvgrqpXsgbiqluawYg/8K4nKsqRsuDX9f+xN1j6awZCUv/5tLH8ak3vYp/EMXwdcnXvfZYiejCQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -2089,8 +2085,8 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-merge-rules@7.0.5: - resolution: {integrity: sha512-ZonhuSwEaWA3+xYbOdJoEReKIBs5eDiBVLAGpYZpNFPzXZcEE5VKR7/qBEQvTZpiwjqhhqEQ+ax5O3VShBj9Wg==} + postcss-merge-rules@7.0.6: + resolution: {integrity: sha512-2jIPT4Tzs8K87tvgCpSukRQ2jjd+hH6Bb8rEEOUDmmhOeTcqDg5fEFK8uKIu+Pvc3//sm3Uu6FRqfyv7YF7+BQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -2107,8 +2103,8 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-minify-params@7.0.3: - resolution: {integrity: sha512-vUKV2+f5mtjewYieanLX0xemxIp1t0W0H/D11u+kQV/MWdygOO7xPMkbK+r9P6Lhms8MgzKARF/g5OPXhb8tgg==} + postcss-minify-params@7.0.4: + resolution: {integrity: sha512-3OqqUddfH8c2e7M35W6zIwv7jssM/3miF9cbCSb1iJiWvtguQjlxZGIHK9JRmc8XAKmE2PFGtHSM7g/VcW97sw==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -2161,8 +2157,8 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-normalize-unicode@7.0.3: - resolution: {integrity: sha512-EcoA29LvG3F+EpOh03iqu+tJY3uYYKzArqKJHxDhUYLa2u58aqGq16K6/AOsXD9yqLN8O6y9mmePKN5cx6krOw==} + postcss-normalize-unicode@7.0.4: + resolution: {integrity: sha512-LvIURTi1sQoZqj8mEIE8R15yvM+OhbR1avynMtI9bUzj5gGKR/gfZFd8O7VMj0QgJaIFzxDwxGl/ASMYAkqO8g==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -2185,8 +2181,8 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-reduce-initial@7.0.3: - resolution: {integrity: sha512-RFvkZaqiWtGMlVjlUHpaxGqEL27lgt+Q2Ixjf83CRAzqdo+TsDyGPtJUbPx2MuYIJ+sCQc2TrOvRnhcXQfgIVA==} + postcss-reduce-initial@7.0.4: + resolution: {integrity: sha512-rdIC9IlMBn7zJo6puim58Xd++0HdbvHeHaPgXsimMfG1ijC5A9ULvNLSE0rUKVJOvNMcwewW4Ga21ngyJjY/+Q==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -2201,8 +2197,8 @@ packages: resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} engines: {node: '>=4'} - postcss-svgo@7.0.2: - resolution: {integrity: sha512-5Dzy66JlnRM6pkdOTF8+cGsB1fnERTE8Nc+Eed++fOWo1hdsBptCsbG8UuJkgtZt75bRtMJIrPeZmtfANixdFA==} + postcss-svgo@7.1.0: + resolution: {integrity: sha512-KnAlfmhtoLz6IuU3Sij2ycusNs4jPW+QoFE5kuuUOK8awR6tMxZQrs5Ey3BUz7nFCzT3eqyFgqkyrHiaU2xx3w==} engines: {node: ^18.12.0 || ^20.9.0 || >= 18} peerDependencies: postcss: ^8.4.32 @@ -2220,16 +2216,16 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} - preact@10.26.9: - resolution: {integrity: sha512-SSjF9vcnF27mJK1XyFMNJzFd5u3pQiATFqoaDy03XuN00u4ziveVVEGt5RKJrDR8MHE/wJo9Nnad56RLzS2RMA==} + preact@10.27.0: + resolution: {integrity: sha512-/DTYoB6mwwgPytiqQTh/7SFRL98ZdiD8Sk8zIUVOxtwq4oWcwrcd1uno9fE/zZmUaUrFNYzbH14CPebOz9tZQw==} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - pretty-bytes@6.1.1: - resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} - engines: {node: ^14.13.1 || >=16.0.0} + pretty-bytes@7.0.0: + resolution: {integrity: sha512-U5otLYPR3L0SVjHGrkEUx5mf7MxV2ceXeE7VwWPk+hyzC5drNohsOGNPDZqxCqyX1lkbEN4kl1LiI8QFd7r0ZA==} + engines: {node: '>=20'} property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} @@ -2290,8 +2286,8 @@ packages: rollup: ^3.29.4 || ^4 typescript: ^4.5 || ^5.0 - rollup@4.44.2: - resolution: {integrity: sha512-PVoapzTwSEcelaWGth3uR66u7ZRo6qhPHc0f2uRO9fX6XDVNrIiGYS0Pj9+R8yIIYSD/mCx2b16Ws9itljKSPg==} + rollup@4.46.2: + resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2302,6 +2298,9 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + scule@1.3.0: resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} @@ -2378,8 +2377,8 @@ packages: strip-literal@3.0.0: resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} - stylehacks@7.0.5: - resolution: {integrity: sha512-5kNb7V37BNf0Q3w+1pxfa+oiNPS++/b4Jil9e/kPDgrk1zjEd6uR7SZeJiYaLYH6RRSC1XX2/37OTeU/4FvuIA==} + stylehacks@7.0.6: + resolution: {integrity: sha512-iitguKivmsueOmTO0wmxURXBP8uqOO+zikLGZ7Mm9e/94R4w5T999Js2taS/KBOnQ/wdC3jN3vNSrkGDrlnqQg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -2396,9 +2395,9 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svgo@3.3.2: - resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} - engines: {node: '>=14.0.0'} + svgo@4.0.0: + resolution: {integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==} + engines: {node: '>=16'} hasBin: true tabbable@6.2.0: @@ -2453,8 +2452,8 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + typescript@5.9.2: + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} engines: {node: '>=14.17'} hasBin: true @@ -2464,17 +2463,17 @@ packages: ufo@1.6.1: resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} - unbuild@3.5.0: - resolution: {integrity: sha512-DPFttsiADnHRb/K+yJ9r9jdn6JyXlsmdT0S12VFC14DFSJD+cxBnHq+v0INmqqPVPxOoUjvJFYUVIb02rWnVeA==} + unbuild@3.6.0: + resolution: {integrity: sha512-vWwKMo2bZS9jbMWO7n51nQvKCRUM3WmONA6+k4z0Ttfkkhh6q1DV/JhKkd58d61eeN9UoTGechlAxXvm11sghw==} hasBin: true peerDependencies: - typescript: ^5.7.3 + typescript: ^5.8.3 peerDependenciesMeta: typescript: optional: true - undici-types@7.8.0: - resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} + undici-types@7.10.0: + resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} @@ -2491,8 +2490,8 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - unrs-resolver@1.11.0: - resolution: {integrity: sha512-uw3hCGO/RdAEAb4zgJ3C/v6KIAFFOtBoxR86b2Ejc5TnH7HrhTWJR2o0A9ullC3eWMegKQCw/arQ/JivywQzkg==} + unrs-resolver@1.11.1: + resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} untyped@2.0.0: resolution: {integrity: sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==} @@ -2510,8 +2509,8 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} @@ -2552,8 +2551,8 @@ packages: terser: optional: true - vite@7.0.3: - resolution: {integrity: sha512-y2L5oJZF7bj4c0jgGYgBNSdIu+5HF+m68rn2cQXFbGoShdhV1phX9rbnxy9YXj82aS8MMsCLAAFkRxZeWdldrQ==} + vite@7.0.6: + resolution: {integrity: sha512-MHFiOENNBd+Bd9uvc8GEsIzdkn1JxMmEeYX35tI3fv0sJBUTfW5tQsoaOwuY4KhBI09A3dUJ/DXf2yxPVPUceg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -2598,8 +2597,8 @@ packages: markdown-it: '>=14' vite: '>=3' - vitepress@1.6.3: - resolution: {integrity: sha512-fCkfdOk8yRZT8GD9BFqusW3+GggWYZ/rYncOfmgcDtP3ualNHCAg+Robxp2/6xfH1WwPHtGpPwv7mbA3qomtBw==} + vitepress@1.6.4: + resolution: {integrity: sha512-+2ym1/+0VVrbhNyRoFFesVvBvHAVMZMK0rw60E3X/5349M1GuVdKeazuksqopEdvkKwKGs21Q729jX81/bkBJg==} hasBin: true peerDependencies: markdown-it-mathjax3: ^4 @@ -2638,8 +2637,8 @@ packages: jsdom: optional: true - vue@3.5.17: - resolution: {integrity: sha512-LbHV3xPN9BeljML+Xctq4lbz2lVHCR6DtbpTf5XIO6gugpXUN49j2QQPcMj086r9+AkJ0FfUT8xjulKKBkkr9g==} + vue@3.5.18: + resolution: {integrity: sha512-7W4Y4ZbMiQ3SEo+m9lnoNpV9xG7QVMLa+/0RFwwiAVkeYoyGXqWE85jabU4pllJNUzqfLShJ5YLptewhCWUgNA==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -2668,6 +2667,10 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} + wsl-utils@0.1.0: + resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} + engines: {node: '>=18'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -2677,110 +2680,117 @@ packages: snapshots: - '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)(search-insights@2.17.3)': + '@algolia/abtesting@1.1.0': + dependencies: + '@algolia/client-common': 5.35.0 + '@algolia/requester-browser-xhr': 5.35.0 + '@algolia/requester-fetch': 5.35.0 + '@algolia/requester-node-http': 5.35.0 + + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)(search-insights@2.17.3)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)': + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0) - '@algolia/client-search': 5.32.0 - algoliasearch: 5.32.0 + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0) + '@algolia/client-search': 5.35.0 + algoliasearch: 5.35.0 - '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)': + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)': dependencies: - '@algolia/client-search': 5.32.0 - algoliasearch: 5.32.0 + '@algolia/client-search': 5.35.0 + algoliasearch: 5.35.0 - '@algolia/client-abtesting@5.32.0': + '@algolia/client-abtesting@5.35.0': dependencies: - '@algolia/client-common': 5.32.0 - '@algolia/requester-browser-xhr': 5.32.0 - '@algolia/requester-fetch': 5.32.0 - '@algolia/requester-node-http': 5.32.0 + '@algolia/client-common': 5.35.0 + '@algolia/requester-browser-xhr': 5.35.0 + '@algolia/requester-fetch': 5.35.0 + '@algolia/requester-node-http': 5.35.0 - '@algolia/client-analytics@5.32.0': + '@algolia/client-analytics@5.35.0': dependencies: - '@algolia/client-common': 5.32.0 - '@algolia/requester-browser-xhr': 5.32.0 - '@algolia/requester-fetch': 5.32.0 - '@algolia/requester-node-http': 5.32.0 + '@algolia/client-common': 5.35.0 + '@algolia/requester-browser-xhr': 5.35.0 + '@algolia/requester-fetch': 5.35.0 + '@algolia/requester-node-http': 5.35.0 - '@algolia/client-common@5.32.0': {} + '@algolia/client-common@5.35.0': {} - '@algolia/client-insights@5.32.0': + '@algolia/client-insights@5.35.0': dependencies: - '@algolia/client-common': 5.32.0 - '@algolia/requester-browser-xhr': 5.32.0 - '@algolia/requester-fetch': 5.32.0 - '@algolia/requester-node-http': 5.32.0 + '@algolia/client-common': 5.35.0 + '@algolia/requester-browser-xhr': 5.35.0 + '@algolia/requester-fetch': 5.35.0 + '@algolia/requester-node-http': 5.35.0 - '@algolia/client-personalization@5.32.0': + '@algolia/client-personalization@5.35.0': dependencies: - '@algolia/client-common': 5.32.0 - '@algolia/requester-browser-xhr': 5.32.0 - '@algolia/requester-fetch': 5.32.0 - '@algolia/requester-node-http': 5.32.0 + '@algolia/client-common': 5.35.0 + '@algolia/requester-browser-xhr': 5.35.0 + '@algolia/requester-fetch': 5.35.0 + '@algolia/requester-node-http': 5.35.0 - '@algolia/client-query-suggestions@5.32.0': + '@algolia/client-query-suggestions@5.35.0': dependencies: - '@algolia/client-common': 5.32.0 - '@algolia/requester-browser-xhr': 5.32.0 - '@algolia/requester-fetch': 5.32.0 - '@algolia/requester-node-http': 5.32.0 + '@algolia/client-common': 5.35.0 + '@algolia/requester-browser-xhr': 5.35.0 + '@algolia/requester-fetch': 5.35.0 + '@algolia/requester-node-http': 5.35.0 - '@algolia/client-search@5.32.0': + '@algolia/client-search@5.35.0': dependencies: - '@algolia/client-common': 5.32.0 - '@algolia/requester-browser-xhr': 5.32.0 - '@algolia/requester-fetch': 5.32.0 - '@algolia/requester-node-http': 5.32.0 + '@algolia/client-common': 5.35.0 + '@algolia/requester-browser-xhr': 5.35.0 + '@algolia/requester-fetch': 5.35.0 + '@algolia/requester-node-http': 5.35.0 - '@algolia/ingestion@1.32.0': + '@algolia/ingestion@1.35.0': dependencies: - '@algolia/client-common': 5.32.0 - '@algolia/requester-browser-xhr': 5.32.0 - '@algolia/requester-fetch': 5.32.0 - '@algolia/requester-node-http': 5.32.0 + '@algolia/client-common': 5.35.0 + '@algolia/requester-browser-xhr': 5.35.0 + '@algolia/requester-fetch': 5.35.0 + '@algolia/requester-node-http': 5.35.0 - '@algolia/monitoring@1.32.0': + '@algolia/monitoring@1.35.0': dependencies: - '@algolia/client-common': 5.32.0 - '@algolia/requester-browser-xhr': 5.32.0 - '@algolia/requester-fetch': 5.32.0 - '@algolia/requester-node-http': 5.32.0 + '@algolia/client-common': 5.35.0 + '@algolia/requester-browser-xhr': 5.35.0 + '@algolia/requester-fetch': 5.35.0 + '@algolia/requester-node-http': 5.35.0 - '@algolia/recommend@5.32.0': + '@algolia/recommend@5.35.0': dependencies: - '@algolia/client-common': 5.32.0 - '@algolia/requester-browser-xhr': 5.32.0 - '@algolia/requester-fetch': 5.32.0 - '@algolia/requester-node-http': 5.32.0 + '@algolia/client-common': 5.35.0 + '@algolia/requester-browser-xhr': 5.35.0 + '@algolia/requester-fetch': 5.35.0 + '@algolia/requester-node-http': 5.35.0 - '@algolia/requester-browser-xhr@5.32.0': + '@algolia/requester-browser-xhr@5.35.0': dependencies: - '@algolia/client-common': 5.32.0 + '@algolia/client-common': 5.35.0 - '@algolia/requester-fetch@5.32.0': + '@algolia/requester-fetch@5.35.0': dependencies: - '@algolia/client-common': 5.32.0 + '@algolia/client-common': 5.35.0 - '@algolia/requester-node-http@5.32.0': + '@algolia/requester-node-http@5.35.0': dependencies: - '@algolia/client-common': 5.32.0 + '@algolia/client-common': 5.35.0 '@ampproject/remapping@2.3.0': dependencies: @@ -2807,9 +2817,9 @@ snapshots: '@babel/parser@7.28.0': dependencies: - '@babel/types': 7.28.0 + '@babel/types': 7.28.2 - '@babel/types@7.28.0': + '@babel/types@7.28.2': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 @@ -2818,10 +2828,10 @@ snapshots: '@docsearch/css@3.8.2': {} - '@docsearch/js@3.8.2(@algolia/client-search@5.32.0)(search-insights@2.17.3)': + '@docsearch/js@3.8.2(@algolia/client-search@5.35.0)(search-insights@2.17.3)': dependencies: - '@docsearch/react': 3.8.2(@algolia/client-search@5.32.0)(search-insights@2.17.3) - preact: 10.26.9 + '@docsearch/react': 3.8.2(@algolia/client-search@5.35.0)(search-insights@2.17.3) + preact: 10.27.0 transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -2829,29 +2839,29 @@ snapshots: - react-dom - search-insights - '@docsearch/react@3.8.2(@algolia/client-search@5.32.0)(search-insights@2.17.3)': + '@docsearch/react@3.8.2(@algolia/client-search@5.35.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.32.0)(algoliasearch@5.32.0) + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0) '@docsearch/css': 3.8.2 - algoliasearch: 5.32.0 + algoliasearch: 5.35.0 optionalDependencies: search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - '@emnapi/core@1.4.4': + '@emnapi/core@1.4.5': dependencies: - '@emnapi/wasi-threads': 1.0.3 + '@emnapi/wasi-threads': 1.0.4 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.4.4': + '@emnapi/runtime@1.4.5': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.0.3': + '@emnapi/wasi-threads@1.0.4': dependencies: tslib: 2.8.1 optional: true @@ -2859,160 +2869,160 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.25.6': + '@esbuild/aix-ppc64@0.25.8': optional: true '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.25.6': + '@esbuild/android-arm64@0.25.8': optional: true '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.25.6': + '@esbuild/android-arm@0.25.8': optional: true '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.25.6': + '@esbuild/android-x64@0.25.8': optional: true '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.25.6': + '@esbuild/darwin-arm64@0.25.8': optional: true '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.25.6': + '@esbuild/darwin-x64@0.25.8': optional: true '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.25.6': + '@esbuild/freebsd-arm64@0.25.8': optional: true '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.25.6': + '@esbuild/freebsd-x64@0.25.8': optional: true '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.25.6': + '@esbuild/linux-arm64@0.25.8': optional: true '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.25.6': + '@esbuild/linux-arm@0.25.8': optional: true '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.25.6': + '@esbuild/linux-ia32@0.25.8': optional: true '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.25.6': + '@esbuild/linux-loong64@0.25.8': optional: true '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.25.6': + '@esbuild/linux-mips64el@0.25.8': optional: true '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.25.6': + '@esbuild/linux-ppc64@0.25.8': optional: true '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.25.6': + '@esbuild/linux-riscv64@0.25.8': optional: true '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.25.6': + '@esbuild/linux-s390x@0.25.8': optional: true '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.25.6': + '@esbuild/linux-x64@0.25.8': optional: true - '@esbuild/netbsd-arm64@0.25.6': + '@esbuild/netbsd-arm64@0.25.8': optional: true '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.25.6': + '@esbuild/netbsd-x64@0.25.8': optional: true - '@esbuild/openbsd-arm64@0.25.6': + '@esbuild/openbsd-arm64@0.25.8': optional: true '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.25.6': + '@esbuild/openbsd-x64@0.25.8': optional: true - '@esbuild/openharmony-arm64@0.25.6': + '@esbuild/openharmony-arm64@0.25.8': optional: true '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.25.6': + '@esbuild/sunos-x64@0.25.8': optional: true '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.25.6': + '@esbuild/win32-arm64@0.25.8': optional: true '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.25.6': + '@esbuild/win32-ia32@0.25.8': optional: true '@esbuild/win32-x64@0.21.5': optional: true - '@esbuild/win32-x64@0.25.6': + '@esbuild/win32-x64@0.25.8': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.30.1(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0(jiti@2.5.1))': dependencies: - eslint: 9.30.1(jiti@2.4.2) + eslint: 9.32.0(jiti@2.5.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.3.1(eslint@9.30.1(jiti@2.4.2))': + '@eslint/compat@1.3.1(eslint@9.32.0(jiti@2.5.1))': optionalDependencies: - eslint: 9.30.1(jiti@2.4.2) + eslint: 9.32.0(jiti@2.5.1) '@eslint/config-array@0.21.0': dependencies: @@ -3024,10 +3034,6 @@ snapshots: '@eslint/config-helpers@0.3.0': {} - '@eslint/core@0.14.0': - dependencies: - '@types/json-schema': 7.0.15 - '@eslint/core@0.15.1': dependencies: '@types/json-schema': 7.0.15 @@ -3046,11 +3052,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.30.1': {} + '@eslint/js@9.32.0': {} '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.3.3': + '@eslint/plugin-kit@0.3.4': dependencies: '@eslint/core': 0.15.1 levn: 0.4.1 @@ -3068,15 +3074,15 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@iconify-json/logos@1.2.4': + '@iconify-json/logos@1.2.5': dependencies: '@iconify/types': 2.0.0 - '@iconify-json/simple-icons@1.2.42': + '@iconify-json/simple-icons@1.2.46': dependencies: '@iconify/types': 2.0.0 - '@iconify-json/vscode-icons@1.2.23': + '@iconify-json/vscode-icons@1.2.24': dependencies: '@iconify/types': 2.0.0 @@ -3126,11 +3132,11 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.4 - '@napi-rs/wasm-runtime@0.2.11': + '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@emnapi/core': 1.4.4 - '@emnapi/runtime': 1.4.4 - '@tybys/wasm-util': 0.9.0 + '@emnapi/core': 1.4.5 + '@emnapi/runtime': 1.4.5 + '@tybys/wasm-util': 0.10.0 optional: true '@nodelib/fs.scandir@2.1.5': @@ -3148,111 +3154,111 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@rollup/plugin-alias@5.1.1(rollup@4.44.2)': + '@rollup/plugin-alias@5.1.1(rollup@4.46.2)': optionalDependencies: - rollup: 4.44.2 + rollup: 4.46.2 - '@rollup/plugin-commonjs@28.0.6(rollup@4.44.2)': + '@rollup/plugin-commonjs@28.0.6(rollup@4.46.2)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.44.2) + '@rollup/pluginutils': 5.2.0(rollup@4.46.2) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.4.6(picomatch@4.0.2) + fdir: 6.4.6(picomatch@4.0.3) is-reference: 1.2.1 magic-string: 0.30.17 - picomatch: 4.0.2 + picomatch: 4.0.3 optionalDependencies: - rollup: 4.44.2 + rollup: 4.46.2 - '@rollup/plugin-json@6.1.0(rollup@4.44.2)': + '@rollup/plugin-json@6.1.0(rollup@4.46.2)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.44.2) + '@rollup/pluginutils': 5.2.0(rollup@4.46.2) optionalDependencies: - rollup: 4.44.2 + rollup: 4.46.2 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.44.2)': + '@rollup/plugin-node-resolve@16.0.1(rollup@4.46.2)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.44.2) + '@rollup/pluginutils': 5.2.0(rollup@4.46.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.44.2 + rollup: 4.46.2 - '@rollup/plugin-replace@6.0.2(rollup@4.44.2)': + '@rollup/plugin-replace@6.0.2(rollup@4.46.2)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.44.2) + '@rollup/pluginutils': 5.2.0(rollup@4.46.2) magic-string: 0.30.17 optionalDependencies: - rollup: 4.44.2 + rollup: 4.46.2 - '@rollup/pluginutils@5.2.0(rollup@4.44.2)': + '@rollup/pluginutils@5.2.0(rollup@4.46.2)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.2 + picomatch: 4.0.3 optionalDependencies: - rollup: 4.44.2 + rollup: 4.46.2 - '@rollup/rollup-android-arm-eabi@4.44.2': + '@rollup/rollup-android-arm-eabi@4.46.2': optional: true - '@rollup/rollup-android-arm64@4.44.2': + '@rollup/rollup-android-arm64@4.46.2': optional: true - '@rollup/rollup-darwin-arm64@4.44.2': + '@rollup/rollup-darwin-arm64@4.46.2': optional: true - '@rollup/rollup-darwin-x64@4.44.2': + '@rollup/rollup-darwin-x64@4.46.2': optional: true - '@rollup/rollup-freebsd-arm64@4.44.2': + '@rollup/rollup-freebsd-arm64@4.46.2': optional: true - '@rollup/rollup-freebsd-x64@4.44.2': + '@rollup/rollup-freebsd-x64@4.46.2': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.44.2': + '@rollup/rollup-linux-arm-gnueabihf@4.46.2': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.44.2': + '@rollup/rollup-linux-arm-musleabihf@4.46.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.44.2': + '@rollup/rollup-linux-arm64-gnu@4.46.2': optional: true - '@rollup/rollup-linux-arm64-musl@4.44.2': + '@rollup/rollup-linux-arm64-musl@4.46.2': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.44.2': + '@rollup/rollup-linux-loongarch64-gnu@4.46.2': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.44.2': + '@rollup/rollup-linux-ppc64-gnu@4.46.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.44.2': + '@rollup/rollup-linux-riscv64-gnu@4.46.2': optional: true - '@rollup/rollup-linux-riscv64-musl@4.44.2': + '@rollup/rollup-linux-riscv64-musl@4.46.2': optional: true - '@rollup/rollup-linux-s390x-gnu@4.44.2': + '@rollup/rollup-linux-s390x-gnu@4.46.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.44.2': + '@rollup/rollup-linux-x64-gnu@4.46.2': optional: true - '@rollup/rollup-linux-x64-musl@4.44.2': + '@rollup/rollup-linux-x64-musl@4.46.2': optional: true - '@rollup/rollup-win32-arm64-msvc@4.44.2': + '@rollup/rollup-win32-arm64-msvc@4.46.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.44.2': + '@rollup/rollup-win32-ia32-msvc@4.46.2': optional: true - '@rollup/rollup-win32-x64-msvc@4.44.2': + '@rollup/rollup-win32-x64-msvc@4.46.2': optional: true '@shikijs/core@2.5.0': @@ -3295,19 +3301,17 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} - '@stylistic/eslint-plugin@5.1.0(eslint@9.30.1(jiti@2.4.2))': + '@stylistic/eslint-plugin@5.2.2(eslint@9.32.0(jiti@2.5.1))': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2)) - '@typescript-eslint/types': 8.36.0 - eslint: 9.30.1(jiti@2.4.2) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) + '@typescript-eslint/types': 8.39.0 + eslint: 9.32.0(jiti@2.5.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 - picomatch: 4.0.2 + picomatch: 4.0.3 - '@trysound/sax@0.2.0': {} - - '@tybys/wasm-util@0.9.0': + '@tybys/wasm-util@0.10.0': dependencies: tslib: 2.8.1 optional: true @@ -3339,9 +3343,9 @@ snapshots: '@types/mdurl@2.0.0': {} - '@types/node@24.0.12': + '@types/node@24.2.0': dependencies: - undici-types: 7.8.0 + undici-types: 7.10.0 '@types/resolve@1.20.2': {} @@ -3349,169 +3353,170 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript-eslint/eslint-plugin@8.36.0(@typescript-eslint/parser@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.36.0 - '@typescript-eslint/type-utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.36.0 - eslint: 9.30.1(jiti@2.4.2) + '@typescript-eslint/parser': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.39.0 + '@typescript-eslint/type-utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.39.0 + eslint: 9.32.0(jiti@2.5.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.36.0 - '@typescript-eslint/types': 8.36.0 - '@typescript-eslint/typescript-estree': 8.36.0(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.36.0 + '@typescript-eslint/scope-manager': 8.39.0 + '@typescript-eslint/types': 8.39.0 + '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.39.0 debug: 4.4.1 - eslint: 9.30.1(jiti@2.4.2) - typescript: 5.8.3 + eslint: 9.32.0(jiti@2.5.1) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.36.0(typescript@5.8.3)': + '@typescript-eslint/project-service@8.39.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.36.0(typescript@5.8.3) - '@typescript-eslint/types': 8.36.0 + '@typescript-eslint/tsconfig-utils': 8.39.0(typescript@5.9.2) + '@typescript-eslint/types': 8.39.0 debug: 4.4.1 - typescript: 5.8.3 + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.36.0': + '@typescript-eslint/scope-manager@8.39.0': dependencies: - '@typescript-eslint/types': 8.36.0 - '@typescript-eslint/visitor-keys': 8.36.0 + '@typescript-eslint/types': 8.39.0 + '@typescript-eslint/visitor-keys': 8.39.0 - '@typescript-eslint/tsconfig-utils@8.36.0(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.39.0(typescript@5.9.2)': dependencies: - typescript: 5.8.3 + typescript: 5.9.2 - '@typescript-eslint/type-utils@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.36.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/types': 8.39.0 + '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) debug: 4.4.1 - eslint: 9.30.1(jiti@2.4.2) - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + eslint: 9.32.0(jiti@2.5.1) + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.36.0': {} + '@typescript-eslint/types@8.39.0': {} - '@typescript-eslint/typescript-estree@8.36.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.39.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/project-service': 8.36.0(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.36.0(typescript@5.8.3) - '@typescript-eslint/types': 8.36.0 - '@typescript-eslint/visitor-keys': 8.36.0 + '@typescript-eslint/project-service': 8.39.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.39.0(typescript@5.9.2) + '@typescript-eslint/types': 8.39.0 + '@typescript-eslint/visitor-keys': 8.39.0 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/utils@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.36.0 - '@typescript-eslint/types': 8.36.0 - '@typescript-eslint/typescript-estree': 8.36.0(typescript@5.8.3) - eslint: 9.30.1(jiti@2.4.2) - typescript: 5.8.3 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) + '@typescript-eslint/scope-manager': 8.39.0 + '@typescript-eslint/types': 8.39.0 + '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) + eslint: 9.32.0(jiti@2.5.1) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.36.0': + '@typescript-eslint/visitor-keys@8.39.0': dependencies: - '@typescript-eslint/types': 8.36.0 + '@typescript-eslint/types': 8.39.0 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} - '@unrs/resolver-binding-android-arm-eabi@1.11.0': + '@unrs/resolver-binding-android-arm-eabi@1.11.1': optional: true - '@unrs/resolver-binding-android-arm64@1.11.0': + '@unrs/resolver-binding-android-arm64@1.11.1': optional: true - '@unrs/resolver-binding-darwin-arm64@1.11.0': + '@unrs/resolver-binding-darwin-arm64@1.11.1': optional: true - '@unrs/resolver-binding-darwin-x64@1.11.0': + '@unrs/resolver-binding-darwin-x64@1.11.1': optional: true - '@unrs/resolver-binding-freebsd-x64@1.11.0': + '@unrs/resolver-binding-freebsd-x64@1.11.1': optional: true - '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.0': + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': optional: true - '@unrs/resolver-binding-linux-arm-musleabihf@1.11.0': + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': optional: true - '@unrs/resolver-binding-linux-arm64-gnu@1.11.0': + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': optional: true - '@unrs/resolver-binding-linux-arm64-musl@1.11.0': + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': optional: true - '@unrs/resolver-binding-linux-ppc64-gnu@1.11.0': + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': optional: true - '@unrs/resolver-binding-linux-riscv64-gnu@1.11.0': + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': optional: true - '@unrs/resolver-binding-linux-riscv64-musl@1.11.0': + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': optional: true - '@unrs/resolver-binding-linux-s390x-gnu@1.11.0': + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': optional: true - '@unrs/resolver-binding-linux-x64-gnu@1.11.0': + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': optional: true - '@unrs/resolver-binding-linux-x64-musl@1.11.0': + '@unrs/resolver-binding-linux-x64-musl@1.11.1': optional: true - '@unrs/resolver-binding-wasm32-wasi@1.11.0': + '@unrs/resolver-binding-wasm32-wasi@1.11.1': dependencies: - '@napi-rs/wasm-runtime': 0.2.11 + '@napi-rs/wasm-runtime': 0.2.12 optional: true - '@unrs/resolver-binding-win32-arm64-msvc@1.11.0': + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': optional: true - '@unrs/resolver-binding-win32-ia32-msvc@1.11.0': + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': optional: true - '@unrs/resolver-binding-win32-x64-msvc@1.11.0': + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@24.0.12))(vue@3.5.17(typescript@5.8.3))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@24.2.0))(vue@3.5.18(typescript@5.9.2))': dependencies: - vite: 5.4.19(@types/node@24.0.12) - vue: 3.5.17(typescript@5.8.3) + vite: 5.4.19(@types/node@24.2.0) + vue: 3.5.18(typescript@5.9.2) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.0.12)(jiti@2.4.2))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.2.0)(jiti@2.5.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 - ast-v8-to-istanbul: 0.3.3 + ast-v8-to-istanbul: 0.3.4 debug: 4.4.1 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 @@ -3522,7 +3527,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.0.12)(jiti@2.4.2) + vitest: 3.2.4(@types/node@24.2.0)(jiti@2.5.1) transitivePeerDependencies: - supports-color @@ -3534,13 +3539,13 @@ snapshots: chai: 5.2.1 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.0.3(@types/node@24.0.12)(jiti@2.4.2))': + '@vitest/mocker@3.2.4(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 7.0.3(@types/node@24.0.12)(jiti@2.4.2) + vite: 7.0.6(@types/node@24.2.0)(jiti@2.5.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -3565,38 +3570,38 @@ snapshots: '@vitest/utils@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 - loupe: 3.1.4 + loupe: 3.2.0 tinyrainbow: 2.0.0 - '@vue/compiler-core@3.5.17': + '@vue/compiler-core@3.5.18': dependencies: '@babel/parser': 7.28.0 - '@vue/shared': 3.5.17 + '@vue/shared': 3.5.18 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.17': + '@vue/compiler-dom@3.5.18': dependencies: - '@vue/compiler-core': 3.5.17 - '@vue/shared': 3.5.17 + '@vue/compiler-core': 3.5.18 + '@vue/shared': 3.5.18 - '@vue/compiler-sfc@3.5.17': + '@vue/compiler-sfc@3.5.18': dependencies: '@babel/parser': 7.28.0 - '@vue/compiler-core': 3.5.17 - '@vue/compiler-dom': 3.5.17 - '@vue/compiler-ssr': 3.5.17 - '@vue/shared': 3.5.17 + '@vue/compiler-core': 3.5.18 + '@vue/compiler-dom': 3.5.18 + '@vue/compiler-ssr': 3.5.18 + '@vue/shared': 3.5.18 estree-walker: 2.0.2 magic-string: 0.30.17 postcss: 8.5.6 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.17': + '@vue/compiler-ssr@3.5.18': dependencies: - '@vue/compiler-dom': 3.5.17 - '@vue/shared': 3.5.17 + '@vue/compiler-dom': 3.5.18 + '@vue/shared': 3.5.18 '@vue/devtools-api@7.7.7': dependencies: @@ -3605,7 +3610,7 @@ snapshots: '@vue/devtools-kit@7.7.7': dependencies: '@vue/devtools-shared': 7.7.7 - birpc: 2.4.0 + birpc: 2.5.0 hookable: 5.5.3 mitt: 3.0.1 perfect-debounce: 1.0.0 @@ -3616,44 +3621,44 @@ snapshots: dependencies: rfdc: 1.4.1 - '@vue/reactivity@3.5.17': + '@vue/reactivity@3.5.18': dependencies: - '@vue/shared': 3.5.17 + '@vue/shared': 3.5.18 - '@vue/runtime-core@3.5.17': + '@vue/runtime-core@3.5.18': dependencies: - '@vue/reactivity': 3.5.17 - '@vue/shared': 3.5.17 + '@vue/reactivity': 3.5.18 + '@vue/shared': 3.5.18 - '@vue/runtime-dom@3.5.17': + '@vue/runtime-dom@3.5.18': dependencies: - '@vue/reactivity': 3.5.17 - '@vue/runtime-core': 3.5.17 - '@vue/shared': 3.5.17 + '@vue/reactivity': 3.5.18 + '@vue/runtime-core': 3.5.18 + '@vue/shared': 3.5.18 csstype: 3.1.3 - '@vue/server-renderer@3.5.17(vue@3.5.17(typescript@5.8.3))': + '@vue/server-renderer@3.5.18(vue@3.5.18(typescript@5.9.2))': dependencies: - '@vue/compiler-ssr': 3.5.17 - '@vue/shared': 3.5.17 - vue: 3.5.17(typescript@5.8.3) + '@vue/compiler-ssr': 3.5.18 + '@vue/shared': 3.5.18 + vue: 3.5.18(typescript@5.9.2) - '@vue/shared@3.5.17': {} + '@vue/shared@3.5.18': {} - '@vueuse/core@12.8.2(typescript@5.8.3)': + '@vueuse/core@12.8.2(typescript@5.9.2)': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 12.8.2 - '@vueuse/shared': 12.8.2(typescript@5.8.3) - vue: 3.5.17(typescript@5.8.3) + '@vueuse/shared': 12.8.2(typescript@5.9.2) + vue: 3.5.18(typescript@5.9.2) transitivePeerDependencies: - typescript - '@vueuse/integrations@12.8.2(focus-trap@7.6.5)(typescript@5.8.3)': + '@vueuse/integrations@12.8.2(focus-trap@7.6.5)(typescript@5.9.2)': dependencies: - '@vueuse/core': 12.8.2(typescript@5.8.3) - '@vueuse/shared': 12.8.2(typescript@5.8.3) - vue: 3.5.17(typescript@5.8.3) + '@vueuse/core': 12.8.2(typescript@5.9.2) + '@vueuse/shared': 12.8.2(typescript@5.9.2) + vue: 3.5.18(typescript@5.9.2) optionalDependencies: focus-trap: 7.6.5 transitivePeerDependencies: @@ -3661,9 +3666,9 @@ snapshots: '@vueuse/metadata@12.8.2': {} - '@vueuse/shared@12.8.2(typescript@5.8.3)': + '@vueuse/shared@12.8.2(typescript@5.9.2)': dependencies: - vue: 3.5.17(typescript@5.8.3) + vue: 3.5.18(typescript@5.9.2) transitivePeerDependencies: - typescript @@ -3680,21 +3685,22 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - algoliasearch@5.32.0: - dependencies: - '@algolia/client-abtesting': 5.32.0 - '@algolia/client-analytics': 5.32.0 - '@algolia/client-common': 5.32.0 - '@algolia/client-insights': 5.32.0 - '@algolia/client-personalization': 5.32.0 - '@algolia/client-query-suggestions': 5.32.0 - '@algolia/client-search': 5.32.0 - '@algolia/ingestion': 1.32.0 - '@algolia/monitoring': 1.32.0 - '@algolia/recommend': 5.32.0 - '@algolia/requester-browser-xhr': 5.32.0 - '@algolia/requester-fetch': 5.32.0 - '@algolia/requester-node-http': 5.32.0 + algoliasearch@5.35.0: + dependencies: + '@algolia/abtesting': 1.1.0 + '@algolia/client-abtesting': 5.35.0 + '@algolia/client-analytics': 5.35.0 + '@algolia/client-common': 5.35.0 + '@algolia/client-insights': 5.35.0 + '@algolia/client-personalization': 5.35.0 + '@algolia/client-query-suggestions': 5.35.0 + '@algolia/client-search': 5.35.0 + '@algolia/ingestion': 1.35.0 + '@algolia/monitoring': 1.35.0 + '@algolia/recommend': 5.35.0 + '@algolia/requester-browser-xhr': 5.35.0 + '@algolia/requester-fetch': 5.35.0 + '@algolia/requester-node-http': 5.35.0 ansi-regex@5.0.1: {} @@ -3710,7 +3716,7 @@ snapshots: assertion-error@2.0.1: {} - ast-v8-to-istanbul@0.3.3: + ast-v8-to-istanbul@0.3.4: dependencies: '@jridgewell/trace-mapping': 0.3.29 estree-walker: 3.0.3 @@ -3719,7 +3725,7 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: browserslist: 4.25.1 - caniuse-lite: 1.0.30001727 + caniuse-lite: 1.0.30001731 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -3728,7 +3734,7 @@ snapshots: balanced-match@1.0.2: {} - birpc@2.4.0: {} + birpc@2.5.0: {} boolbase@1.0.0: {} @@ -3747,8 +3753,8 @@ snapshots: browserslist@4.25.1: dependencies: - caniuse-lite: 1.0.30001727 - electron-to-chromium: 1.5.180 + caniuse-lite: 1.0.30001731 + electron-to-chromium: 1.5.195 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.1) @@ -3756,15 +3762,15 @@ snapshots: dependencies: run-applescript: 7.0.0 - c12@3.0.4(magicast@0.3.5): + c12@3.2.0(magicast@0.3.5): dependencies: chokidar: 4.0.3 confbox: 0.2.2 defu: 6.1.4 - dotenv: 16.6.1 + dotenv: 17.2.1 exsolve: 1.0.7 giget: 2.0.0 - jiti: 2.4.2 + jiti: 2.5.1 ohash: 2.0.11 pathe: 2.0.3 perfect-debounce: 1.0.0 @@ -3780,11 +3786,11 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.25.1 - caniuse-lite: 1.0.30001727 + caniuse-lite: 1.0.30001731 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001727: {} + caniuse-lite@1.0.30001731: {} ccount@2.0.1: {} @@ -3793,7 +3799,7 @@ snapshots: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.1.4 + loupe: 3.2.0 pathval: 2.0.1 chalk@4.1.2: @@ -3803,14 +3809,14 @@ snapshots: changelogen@0.6.2(magicast@0.3.5): dependencies: - c12: 3.0.4(magicast@0.3.5) + c12: 3.2.0(magicast@0.3.5) confbox: 0.2.2 consola: 3.4.2 convert-gitmoji: 0.1.5 mri: 1.2.0 - node-fetch-native: 1.6.6 + node-fetch-native: 1.6.7 ofetch: 1.4.1 - open: 10.1.2 + open: 10.2.0 pathe: 2.0.3 pkg-types: 2.2.0 scule: 1.3.0 @@ -3843,7 +3849,7 @@ snapshots: comma-separated-tokens@2.0.3: {} - commander@7.2.0: {} + commander@11.1.0: {} comment-parser@1.4.1: {} @@ -3886,33 +3892,33 @@ snapshots: mdn-data: 2.0.28 source-map-js: 1.2.1 - css-tree@2.3.1: + css-tree@3.1.0: dependencies: - mdn-data: 2.0.30 + mdn-data: 2.12.2 source-map-js: 1.2.1 css-what@6.2.2: {} cssesc@3.0.0: {} - cssnano-preset-default@7.0.7(postcss@8.5.6): + cssnano-preset-default@7.0.8(postcss@8.5.6): dependencies: browserslist: 4.25.1 css-declaration-sorter: 7.2.0(postcss@8.5.6) cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 postcss-calc: 10.1.1(postcss@8.5.6) - postcss-colormin: 7.0.3(postcss@8.5.6) - postcss-convert-values: 7.0.5(postcss@8.5.6) + postcss-colormin: 7.0.4(postcss@8.5.6) + postcss-convert-values: 7.0.6(postcss@8.5.6) postcss-discard-comments: 7.0.4(postcss@8.5.6) postcss-discard-duplicates: 7.0.2(postcss@8.5.6) postcss-discard-empty: 7.0.1(postcss@8.5.6) postcss-discard-overridden: 7.0.1(postcss@8.5.6) postcss-merge-longhand: 7.0.5(postcss@8.5.6) - postcss-merge-rules: 7.0.5(postcss@8.5.6) + postcss-merge-rules: 7.0.6(postcss@8.5.6) postcss-minify-font-values: 7.0.1(postcss@8.5.6) postcss-minify-gradients: 7.0.1(postcss@8.5.6) - postcss-minify-params: 7.0.3(postcss@8.5.6) + postcss-minify-params: 7.0.4(postcss@8.5.6) postcss-minify-selectors: 7.0.5(postcss@8.5.6) postcss-normalize-charset: 7.0.1(postcss@8.5.6) postcss-normalize-display-values: 7.0.1(postcss@8.5.6) @@ -3920,22 +3926,22 @@ snapshots: postcss-normalize-repeat-style: 7.0.1(postcss@8.5.6) postcss-normalize-string: 7.0.1(postcss@8.5.6) postcss-normalize-timing-functions: 7.0.1(postcss@8.5.6) - postcss-normalize-unicode: 7.0.3(postcss@8.5.6) + postcss-normalize-unicode: 7.0.4(postcss@8.5.6) postcss-normalize-url: 7.0.1(postcss@8.5.6) postcss-normalize-whitespace: 7.0.1(postcss@8.5.6) postcss-ordered-values: 7.0.2(postcss@8.5.6) - postcss-reduce-initial: 7.0.3(postcss@8.5.6) + postcss-reduce-initial: 7.0.4(postcss@8.5.6) postcss-reduce-transforms: 7.0.1(postcss@8.5.6) - postcss-svgo: 7.0.2(postcss@8.5.6) + postcss-svgo: 7.1.0(postcss@8.5.6) postcss-unique-selectors: 7.0.4(postcss@8.5.6) cssnano-utils@5.0.1(postcss@8.5.6): dependencies: postcss: 8.5.6 - cssnano@7.0.7(postcss@8.5.6): + cssnano@7.1.0(postcss@8.5.6): dependencies: - cssnano-preset-default: 7.0.7(postcss@8.5.6) + cssnano-preset-default: 7.0.8(postcss@8.5.6) lilconfig: 3.1.3 postcss: 8.5.6 @@ -3992,11 +3998,11 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 - dotenv@16.6.1: {} + dotenv@17.2.1: {} eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.180: {} + electron-to-chromium@1.5.195: {} emoji-regex-xs@1.0.0: {} @@ -4034,60 +4040,60 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.25.6: + esbuild@0.25.8: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.6 - '@esbuild/android-arm': 0.25.6 - '@esbuild/android-arm64': 0.25.6 - '@esbuild/android-x64': 0.25.6 - '@esbuild/darwin-arm64': 0.25.6 - '@esbuild/darwin-x64': 0.25.6 - '@esbuild/freebsd-arm64': 0.25.6 - '@esbuild/freebsd-x64': 0.25.6 - '@esbuild/linux-arm': 0.25.6 - '@esbuild/linux-arm64': 0.25.6 - '@esbuild/linux-ia32': 0.25.6 - '@esbuild/linux-loong64': 0.25.6 - '@esbuild/linux-mips64el': 0.25.6 - '@esbuild/linux-ppc64': 0.25.6 - '@esbuild/linux-riscv64': 0.25.6 - '@esbuild/linux-s390x': 0.25.6 - '@esbuild/linux-x64': 0.25.6 - '@esbuild/netbsd-arm64': 0.25.6 - '@esbuild/netbsd-x64': 0.25.6 - '@esbuild/openbsd-arm64': 0.25.6 - '@esbuild/openbsd-x64': 0.25.6 - '@esbuild/openharmony-arm64': 0.25.6 - '@esbuild/sunos-x64': 0.25.6 - '@esbuild/win32-arm64': 0.25.6 - '@esbuild/win32-ia32': 0.25.6 - '@esbuild/win32-x64': 0.25.6 + '@esbuild/aix-ppc64': 0.25.8 + '@esbuild/android-arm': 0.25.8 + '@esbuild/android-arm64': 0.25.8 + '@esbuild/android-x64': 0.25.8 + '@esbuild/darwin-arm64': 0.25.8 + '@esbuild/darwin-x64': 0.25.8 + '@esbuild/freebsd-arm64': 0.25.8 + '@esbuild/freebsd-x64': 0.25.8 + '@esbuild/linux-arm': 0.25.8 + '@esbuild/linux-arm64': 0.25.8 + '@esbuild/linux-ia32': 0.25.8 + '@esbuild/linux-loong64': 0.25.8 + '@esbuild/linux-mips64el': 0.25.8 + '@esbuild/linux-ppc64': 0.25.8 + '@esbuild/linux-riscv64': 0.25.8 + '@esbuild/linux-s390x': 0.25.8 + '@esbuild/linux-x64': 0.25.8 + '@esbuild/netbsd-arm64': 0.25.8 + '@esbuild/netbsd-x64': 0.25.8 + '@esbuild/openbsd-arm64': 0.25.8 + '@esbuild/openbsd-x64': 0.25.8 + '@esbuild/openharmony-arm64': 0.25.8 + '@esbuild/sunos-x64': 0.25.8 + '@esbuild/win32-arm64': 0.25.8 + '@esbuild/win32-ia32': 0.25.8 + '@esbuild/win32-x64': 0.25.8 escalade@3.2.0: {} escape-string-regexp@4.0.0: {} - eslint-import-context@0.1.9(unrs-resolver@1.11.0): + eslint-import-context@0.1.9(unrs-resolver@1.11.1): dependencies: get-tsconfig: 4.10.1 stable-hash-x: 0.2.0 optionalDependencies: - unrs-resolver: 1.11.0 + unrs-resolver: 1.11.1 - eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2)): + eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1)): dependencies: - '@typescript-eslint/types': 8.36.0 + '@typescript-eslint/types': 8.39.0 comment-parser: 1.4.1 debug: 4.4.1 - eslint: 9.30.1(jiti@2.4.2) - eslint-import-context: 0.1.9(unrs-resolver@1.11.0) + eslint: 9.32.0(jiti@2.5.1) + eslint-import-context: 0.1.9(unrs-resolver@1.11.1) is-glob: 4.0.3 minimatch: 10.0.3 semver: 7.7.2 stable-hash-x: 0.2.0 - unrs-resolver: 1.11.0 + unrs-resolver: 1.11.1 optionalDependencies: - '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) transitivePeerDependencies: - supports-color @@ -4100,16 +4106,16 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.30.1(jiti@2.4.2): + eslint@9.32.0(jiti@2.5.1): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.0 - '@eslint/core': 0.14.0 + '@eslint/core': 0.15.1 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.30.1 - '@eslint/plugin-kit': 0.3.3 + '@eslint/js': 9.32.0 + '@eslint/plugin-kit': 0.3.4 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -4138,7 +4144,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.4.2 + jiti: 2.5.1 transitivePeerDependencies: - supports-color @@ -4188,9 +4194,9 @@ snapshots: dependencies: reusify: 1.1.0 - fdir@6.4.6(picomatch@4.0.2): + fdir@6.4.6(picomatch@4.0.3): optionalDependencies: - picomatch: 4.0.2 + picomatch: 4.0.3 file-entry-cache@8.0.0: dependencies: @@ -4209,7 +4215,7 @@ snapshots: dependencies: magic-string: 0.30.17 mlly: 1.7.4 - rollup: 4.44.2 + rollup: 4.46.2 flat-cache@4.0.1: dependencies: @@ -4243,8 +4249,8 @@ snapshots: citty: 0.1.6 consola: 3.4.2 defu: 6.1.4 - node-fetch-native: 1.6.6 - nypm: 0.6.0 + node-fetch-native: 1.6.7 + nypm: 0.6.1 pathe: 2.0.3 glob-parent@5.1.2: @@ -4374,7 +4380,7 @@ snapshots: jiti@1.21.7: {} - jiti@2.4.2: {} + jiti@2.5.1: {} js-tokens@4.0.0: optional: true @@ -4426,7 +4432,7 @@ snapshots: lodash.uniq@4.5.0: {} - loupe@3.1.4: {} + loupe@3.2.0: {} lru-cache@10.4.3: {} @@ -4437,7 +4443,7 @@ snapshots: magicast@0.3.5: dependencies: '@babel/parser': 7.28.0 - '@babel/types': 7.28.0 + '@babel/types': 7.28.2 source-map-js: 1.2.1 make-dir@4.0.0: @@ -4469,7 +4475,7 @@ snapshots: mdn-data@2.0.28: {} - mdn-data@2.0.30: {} + mdn-data@2.12.2: {} mdurl@2.0.0: {} @@ -4515,13 +4521,13 @@ snapshots: mitt@3.0.1: {} - mkdist@2.3.0(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)): + mkdist@2.3.0(typescript@5.9.2)(vue@3.5.18(typescript@5.9.2)): dependencies: autoprefixer: 10.4.21(postcss@8.5.6) citty: 0.1.6 - cssnano: 7.0.7(postcss@8.5.6) + cssnano: 7.1.0(postcss@8.5.6) defu: 6.1.4 - esbuild: 0.25.6 + esbuild: 0.25.8 jiti: 1.21.7 mlly: 1.7.4 pathe: 2.0.3 @@ -4531,8 +4537,8 @@ snapshots: semver: 7.7.2 tinyglobby: 0.2.14 optionalDependencies: - typescript: 5.8.3 - vue: 3.5.17(typescript@5.8.3) + typescript: 5.9.2 + vue: 3.5.18(typescript@5.9.2) mlly@1.7.4: dependencies: @@ -4547,11 +4553,11 @@ snapshots: nanoid@3.3.11: {} - napi-postinstall@0.3.0: {} + napi-postinstall@0.3.2: {} natural-compare@1.4.0: {} - node-fetch-native@1.6.6: {} + node-fetch-native@1.6.7: {} node-releases@2.0.19: {} @@ -4561,18 +4567,18 @@ snapshots: dependencies: boolbase: 1.0.0 - nypm@0.6.0: + nypm@0.6.1: dependencies: citty: 0.1.6 consola: 3.4.2 pathe: 2.0.3 pkg-types: 2.2.0 - tinyexec: 0.3.2 + tinyexec: 1.0.1 ofetch@1.4.1: dependencies: destr: 2.0.5 - node-fetch-native: 1.6.6 + node-fetch-native: 1.6.7 ufo: 1.6.1 ohash@2.0.11: {} @@ -4583,12 +4589,12 @@ snapshots: regex: 6.0.1 regex-recursion: 6.0.2 - open@10.1.2: + open@10.2.0: dependencies: default-browser: 5.2.1 define-lazy-prop: 3.0.0 is-inside-container: 1.0.0 - is-wsl: 3.1.0 + wsl-utils: 0.1.0 optionator@0.9.4: dependencies: @@ -4636,7 +4642,7 @@ snapshots: picomatch@2.3.1: {} - picomatch@4.0.2: {} + picomatch@4.0.3: {} pkg-types@1.3.1: dependencies: @@ -4656,7 +4662,7 @@ snapshots: postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.3(postcss@8.5.6): + postcss-colormin@7.0.4(postcss@8.5.6): dependencies: browserslist: 4.25.1 caniuse-api: 3.0.0 @@ -4664,7 +4670,7 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.5(postcss@8.5.6): + postcss-convert-values@7.0.6(postcss@8.5.6): dependencies: browserslist: 4.25.1 postcss: 8.5.6 @@ -4691,9 +4697,9 @@ snapshots: dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 - stylehacks: 7.0.5(postcss@8.5.6) + stylehacks: 7.0.6(postcss@8.5.6) - postcss-merge-rules@7.0.5(postcss@8.5.6): + postcss-merge-rules@7.0.6(postcss@8.5.6): dependencies: browserslist: 4.25.1 caniuse-api: 3.0.0 @@ -4713,7 +4719,7 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.3(postcss@8.5.6): + postcss-minify-params@7.0.4(postcss@8.5.6): dependencies: browserslist: 4.25.1 cssnano-utils: 5.0.1(postcss@8.5.6) @@ -4760,7 +4766,7 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.3(postcss@8.5.6): + postcss-normalize-unicode@7.0.4(postcss@8.5.6): dependencies: browserslist: 4.25.1 postcss: 8.5.6 @@ -4782,7 +4788,7 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-reduce-initial@7.0.3(postcss@8.5.6): + postcss-reduce-initial@7.0.4(postcss@8.5.6): dependencies: browserslist: 4.25.1 caniuse-api: 3.0.0 @@ -4798,11 +4804,11 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@7.0.2(postcss@8.5.6): + postcss-svgo@7.1.0(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 - svgo: 3.3.2 + svgo: 4.0.0 postcss-unique-selectors@7.0.4(postcss@8.5.6): dependencies: @@ -4817,11 +4823,11 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - preact@10.26.9: {} + preact@10.27.0: {} prelude-ls@1.2.1: {} - pretty-bytes@6.1.1: {} + pretty-bytes@7.0.0: {} property-information@7.1.0: {} @@ -4864,38 +4870,38 @@ snapshots: rfdc@1.4.1: {} - rollup-plugin-dts@6.2.1(rollup@4.44.2)(typescript@5.8.3): + rollup-plugin-dts@6.2.1(rollup@4.46.2)(typescript@5.9.2): dependencies: magic-string: 0.30.17 - rollup: 4.44.2 - typescript: 5.8.3 + rollup: 4.46.2 + typescript: 5.9.2 optionalDependencies: '@babel/code-frame': 7.27.1 - rollup@4.44.2: + rollup@4.46.2: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.44.2 - '@rollup/rollup-android-arm64': 4.44.2 - '@rollup/rollup-darwin-arm64': 4.44.2 - '@rollup/rollup-darwin-x64': 4.44.2 - '@rollup/rollup-freebsd-arm64': 4.44.2 - '@rollup/rollup-freebsd-x64': 4.44.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.44.2 - '@rollup/rollup-linux-arm-musleabihf': 4.44.2 - '@rollup/rollup-linux-arm64-gnu': 4.44.2 - '@rollup/rollup-linux-arm64-musl': 4.44.2 - '@rollup/rollup-linux-loongarch64-gnu': 4.44.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.44.2 - '@rollup/rollup-linux-riscv64-gnu': 4.44.2 - '@rollup/rollup-linux-riscv64-musl': 4.44.2 - '@rollup/rollup-linux-s390x-gnu': 4.44.2 - '@rollup/rollup-linux-x64-gnu': 4.44.2 - '@rollup/rollup-linux-x64-musl': 4.44.2 - '@rollup/rollup-win32-arm64-msvc': 4.44.2 - '@rollup/rollup-win32-ia32-msvc': 4.44.2 - '@rollup/rollup-win32-x64-msvc': 4.44.2 + '@rollup/rollup-android-arm-eabi': 4.46.2 + '@rollup/rollup-android-arm64': 4.46.2 + '@rollup/rollup-darwin-arm64': 4.46.2 + '@rollup/rollup-darwin-x64': 4.46.2 + '@rollup/rollup-freebsd-arm64': 4.46.2 + '@rollup/rollup-freebsd-x64': 4.46.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.46.2 + '@rollup/rollup-linux-arm-musleabihf': 4.46.2 + '@rollup/rollup-linux-arm64-gnu': 4.46.2 + '@rollup/rollup-linux-arm64-musl': 4.46.2 + '@rollup/rollup-linux-loongarch64-gnu': 4.46.2 + '@rollup/rollup-linux-ppc64-gnu': 4.46.2 + '@rollup/rollup-linux-riscv64-gnu': 4.46.2 + '@rollup/rollup-linux-riscv64-musl': 4.46.2 + '@rollup/rollup-linux-s390x-gnu': 4.46.2 + '@rollup/rollup-linux-x64-gnu': 4.46.2 + '@rollup/rollup-linux-x64-musl': 4.46.2 + '@rollup/rollup-win32-arm64-msvc': 4.46.2 + '@rollup/rollup-win32-ia32-msvc': 4.46.2 + '@rollup/rollup-win32-x64-msvc': 4.46.2 fsevents: 2.3.3 run-applescript@7.0.0: {} @@ -4904,6 +4910,8 @@ snapshots: dependencies: queue-microtask: 1.2.3 + sax@1.4.1: {} + scule@1.3.0: {} search-insights@2.17.3: {} @@ -4974,7 +4982,7 @@ snapshots: dependencies: js-tokens: 9.0.1 - stylehacks@7.0.5(postcss@8.5.6): + stylehacks@7.0.6(postcss@8.5.6): dependencies: browserslist: 4.25.1 postcss: 8.5.6 @@ -4990,15 +4998,15 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svgo@3.3.2: + svgo@4.0.0: dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 + commander: 11.1.0 css-select: 5.2.2 - css-tree: 2.3.1 + css-tree: 3.1.0 css-what: 6.2.2 csso: 5.0.5 picocolors: 1.1.1 + sax: 1.4.1 tabbable@6.2.0: {} @@ -5016,8 +5024,8 @@ snapshots: tinyglobby@0.2.14: dependencies: - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 + fdir: 6.4.6(picomatch@4.0.3) + picomatch: 4.0.3 tinypool@1.1.1: {} @@ -5031,9 +5039,9 @@ snapshots: trim-lines@3.0.1: {} - ts-api-utils@2.1.0(typescript@5.8.3): + ts-api-utils@2.1.0(typescript@5.9.2): dependencies: - typescript: 5.8.3 + typescript: 5.9.2 tslib@2.8.1: optional: true @@ -5042,47 +5050,47 @@ snapshots: dependencies: prelude-ls: 1.2.1 - typescript@5.8.3: {} + typescript@5.9.2: {} uc.micro@2.1.0: {} ufo@1.6.1: {} - unbuild@3.5.0(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)): + unbuild@3.6.0(typescript@5.9.2)(vue@3.5.18(typescript@5.9.2)): dependencies: - '@rollup/plugin-alias': 5.1.1(rollup@4.44.2) - '@rollup/plugin-commonjs': 28.0.6(rollup@4.44.2) - '@rollup/plugin-json': 6.1.0(rollup@4.44.2) - '@rollup/plugin-node-resolve': 16.0.1(rollup@4.44.2) - '@rollup/plugin-replace': 6.0.2(rollup@4.44.2) - '@rollup/pluginutils': 5.2.0(rollup@4.44.2) + '@rollup/plugin-alias': 5.1.1(rollup@4.46.2) + '@rollup/plugin-commonjs': 28.0.6(rollup@4.46.2) + '@rollup/plugin-json': 6.1.0(rollup@4.46.2) + '@rollup/plugin-node-resolve': 16.0.1(rollup@4.46.2) + '@rollup/plugin-replace': 6.0.2(rollup@4.46.2) + '@rollup/pluginutils': 5.2.0(rollup@4.46.2) citty: 0.1.6 consola: 3.4.2 defu: 6.1.4 - esbuild: 0.25.6 + esbuild: 0.25.8 fix-dts-default-cjs-exports: 1.0.1 hookable: 5.5.3 - jiti: 2.4.2 + jiti: 2.5.1 magic-string: 0.30.17 - mkdist: 2.3.0(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)) + mkdist: 2.3.0(typescript@5.9.2)(vue@3.5.18(typescript@5.9.2)) mlly: 1.7.4 pathe: 2.0.3 pkg-types: 2.2.0 - pretty-bytes: 6.1.1 - rollup: 4.44.2 - rollup-plugin-dts: 6.2.1(rollup@4.44.2)(typescript@5.8.3) + pretty-bytes: 7.0.0 + rollup: 4.46.2 + rollup-plugin-dts: 6.2.1(rollup@4.46.2)(typescript@5.9.2) scule: 1.3.0 tinyglobby: 0.2.14 untyped: 2.0.0 optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.2 transitivePeerDependencies: - sass - vue - vue-sfc-transformer - vue-tsc - undici-types@7.8.0: {} + undici-types@7.10.0: {} unist-util-is@6.0.0: dependencies: @@ -5107,35 +5115,35 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - unrs-resolver@1.11.0: + unrs-resolver@1.11.1: dependencies: - napi-postinstall: 0.3.0 + napi-postinstall: 0.3.2 optionalDependencies: - '@unrs/resolver-binding-android-arm-eabi': 1.11.0 - '@unrs/resolver-binding-android-arm64': 1.11.0 - '@unrs/resolver-binding-darwin-arm64': 1.11.0 - '@unrs/resolver-binding-darwin-x64': 1.11.0 - '@unrs/resolver-binding-freebsd-x64': 1.11.0 - '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.0 - '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.0 - '@unrs/resolver-binding-linux-arm64-gnu': 1.11.0 - '@unrs/resolver-binding-linux-arm64-musl': 1.11.0 - '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.0 - '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.0 - '@unrs/resolver-binding-linux-riscv64-musl': 1.11.0 - '@unrs/resolver-binding-linux-s390x-gnu': 1.11.0 - '@unrs/resolver-binding-linux-x64-gnu': 1.11.0 - '@unrs/resolver-binding-linux-x64-musl': 1.11.0 - '@unrs/resolver-binding-wasm32-wasi': 1.11.0 - '@unrs/resolver-binding-win32-arm64-msvc': 1.11.0 - '@unrs/resolver-binding-win32-ia32-msvc': 1.11.0 - '@unrs/resolver-binding-win32-x64-msvc': 1.11.0 + '@unrs/resolver-binding-android-arm-eabi': 1.11.1 + '@unrs/resolver-binding-android-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-x64': 1.11.1 + '@unrs/resolver-binding-freebsd-x64': 1.11.1 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 + '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-musl': 1.11.1 + '@unrs/resolver-binding-wasm32-wasi': 1.11.1 + '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 + '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 + '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 untyped@2.0.0: dependencies: citty: 0.1.6 defu: 6.1.4 - jiti: 2.4.2 + jiti: 2.5.1 knitwork: 1.2.0 scule: 1.3.0 @@ -5151,7 +5159,7 @@ snapshots: util-deprecate@1.0.2: {} - vfile-message@4.0.2: + vfile-message@4.0.3: dependencies: '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 @@ -5159,15 +5167,15 @@ snapshots: vfile@6.0.3: dependencies: '@types/unist': 3.0.3 - vfile-message: 4.0.2 + vfile-message: 4.0.3 - vite-node@3.2.4(@types/node@24.0.12)(jiti@2.4.2): + vite-node@3.2.4(@types/node@24.2.0)(jiti@2.5.1): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.0.3(@types/node@24.0.12)(jiti@2.4.2) + vite: 7.0.6(@types/node@24.2.0)(jiti@2.5.1) transitivePeerDependencies: - '@types/node' - jiti @@ -5182,58 +5190,58 @@ snapshots: - tsx - yaml - vite@5.4.19(@types/node@24.0.12): + vite@5.4.19(@types/node@24.2.0): dependencies: esbuild: 0.21.5 postcss: 8.5.6 - rollup: 4.44.2 + rollup: 4.46.2 optionalDependencies: - '@types/node': 24.0.12 + '@types/node': 24.2.0 fsevents: 2.3.3 - vite@7.0.3(@types/node@24.0.12)(jiti@2.4.2): + vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1): dependencies: - esbuild: 0.25.6 - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 + esbuild: 0.25.8 + fdir: 6.4.6(picomatch@4.0.3) + picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.44.2 + rollup: 4.46.2 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 24.0.12 + '@types/node': 24.2.0 fsevents: 2.3.3 - jiti: 2.4.2 + jiti: 2.5.1 - vitepress-plugin-group-icons@1.6.1(markdown-it@14.1.0)(vite@7.0.3(@types/node@24.0.12)(jiti@2.4.2)): + vitepress-plugin-group-icons@1.6.1(markdown-it@14.1.0)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)): dependencies: - '@iconify-json/logos': 1.2.4 - '@iconify-json/vscode-icons': 1.2.23 + '@iconify-json/logos': 1.2.5 + '@iconify-json/vscode-icons': 1.2.24 '@iconify/utils': 2.3.0 markdown-it: 14.1.0 - vite: 7.0.3(@types/node@24.0.12)(jiti@2.4.2) + vite: 7.0.6(@types/node@24.2.0)(jiti@2.5.1) transitivePeerDependencies: - supports-color - vitepress@1.6.3(@algolia/client-search@5.32.0)(@types/node@24.0.12)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.8.3): + vitepress@1.6.4(@algolia/client-search@5.35.0)(@types/node@24.2.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.2): dependencies: '@docsearch/css': 3.8.2 - '@docsearch/js': 3.8.2(@algolia/client-search@5.32.0)(search-insights@2.17.3) - '@iconify-json/simple-icons': 1.2.42 + '@docsearch/js': 3.8.2(@algolia/client-search@5.35.0)(search-insights@2.17.3) + '@iconify-json/simple-icons': 1.2.46 '@shikijs/core': 2.5.0 '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.4(vite@5.4.19(@types/node@24.0.12))(vue@3.5.17(typescript@5.8.3)) + '@vitejs/plugin-vue': 5.2.4(vite@5.4.19(@types/node@24.2.0))(vue@3.5.18(typescript@5.9.2)) '@vue/devtools-api': 7.7.7 - '@vue/shared': 3.5.17 - '@vueuse/core': 12.8.2(typescript@5.8.3) - '@vueuse/integrations': 12.8.2(focus-trap@7.6.5)(typescript@5.8.3) + '@vue/shared': 3.5.18 + '@vueuse/core': 12.8.2(typescript@5.9.2) + '@vueuse/integrations': 12.8.2(focus-trap@7.6.5)(typescript@5.9.2) focus-trap: 7.6.5 mark.js: 8.11.1 minisearch: 7.1.2 shiki: 2.5.0 - vite: 5.4.19(@types/node@24.0.12) - vue: 3.5.17(typescript@5.8.3) + vite: 5.4.19(@types/node@24.2.0) + vue: 3.5.18(typescript@5.9.2) optionalDependencies: postcss: 8.5.6 transitivePeerDependencies: @@ -5263,11 +5271,11 @@ snapshots: - typescript - universal-cookie - vitest@3.2.4(@types/node@24.0.12)(jiti@2.4.2): + vitest@3.2.4(@types/node@24.2.0)(jiti@2.5.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.0.3(@types/node@24.0.12)(jiti@2.4.2)) + '@vitest/mocker': 3.2.4(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -5278,18 +5286,18 @@ snapshots: expect-type: 1.2.2 magic-string: 0.30.17 pathe: 2.0.3 - picomatch: 4.0.2 + picomatch: 4.0.3 std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.0.3(@types/node@24.0.12)(jiti@2.4.2) - vite-node: 3.2.4(@types/node@24.0.12)(jiti@2.4.2) + vite: 7.0.6(@types/node@24.2.0)(jiti@2.5.1) + vite-node: 3.2.4(@types/node@24.2.0)(jiti@2.5.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.0.12 + '@types/node': 24.2.0 transitivePeerDependencies: - jiti - less @@ -5304,15 +5312,15 @@ snapshots: - tsx - yaml - vue@3.5.17(typescript@5.8.3): + vue@3.5.18(typescript@5.9.2): dependencies: - '@vue/compiler-dom': 3.5.17 - '@vue/compiler-sfc': 3.5.17 - '@vue/runtime-dom': 3.5.17 - '@vue/server-renderer': 3.5.17(vue@3.5.17(typescript@5.8.3)) - '@vue/shared': 3.5.17 + '@vue/compiler-dom': 3.5.18 + '@vue/compiler-sfc': 3.5.18 + '@vue/runtime-dom': 3.5.18 + '@vue/server-renderer': 3.5.18(vue@3.5.18(typescript@5.9.2)) + '@vue/shared': 3.5.18 optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.2 which@2.0.2: dependencies: @@ -5337,6 +5345,10 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.0 + wsl-utils@0.1.0: + dependencies: + is-wsl: 3.1.0 + yocto-queue@0.1.0: {} zwitch@2.0.4: {} From 964752b7c6c01f898c52287bdf04faa2db7398cb Mon Sep 17 00:00:00 2001 From: Yizack Rangel Date: Tue, 12 Aug 2025 01:55:33 +0200 Subject: [PATCH 03/13] ci: update to `actions/checkout@v5` --- .github/workflows/autofix.yml | 2 +- .github/workflows/ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml index 6cccd63..363b01b 100644 --- a/.github/workflows/autofix.yml +++ b/.github/workflows/autofix.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: corepack enable - uses: actions/setup-node@v4 with: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8949618..f2d754e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,7 +29,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: corepack enable - uses: actions/setup-node@v4 with: @@ -46,7 +46,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: corepack enable - uses: actions/setup-node@v4 with: From 45c386ade51ca292d6932d295254ef3e964cab6d Mon Sep 17 00:00:00 2001 From: Yizack Rangel Date: Tue, 12 Aug 2025 01:56:03 +0200 Subject: [PATCH 04/13] ci: update `autofix-ci` --- .github/workflows/autofix.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml index 363b01b..53597db 100644 --- a/.github/workflows/autofix.yml +++ b/.github/workflows/autofix.yml @@ -26,4 +26,4 @@ jobs: run: pnpm lint:fix - name: ⚙️ Auto-fix - uses: autofix-ci/action@551dded8c6cc8a1054039c8bc0b8b48c51dfc6ef + uses: autofix-ci/action@635ffb0c9798bd160680f18fd73371e355b85f27 From 7e0b60710d17607e21c6da5275d6b5507c55dc4e Mon Sep 17 00:00:00 2001 From: Yizack Rangel Date: Tue, 12 Aug 2025 01:56:15 +0200 Subject: [PATCH 05/13] chore(deps): update deps --- package.json | 14 +- pnpm-lock.yaml | 388 ++++++++++++++++++++++++------------------------- 2 files changed, 201 insertions(+), 201 deletions(-) diff --git a/package.json b/package.json index f5c0f9b..9b4d85b 100644 --- a/package.json +++ b/package.json @@ -55,21 +55,21 @@ "ofetch": "^1.4.1" }, "devDependencies": { - "@eslint/compat": "^1.3.1", - "@stylistic/eslint-plugin": "^5.2.2", - "@types/node": "^24.2.0", - "@typescript-eslint/eslint-plugin": "^8.39.0", - "@typescript-eslint/parser": "^8.39.0", + "@eslint/compat": "^1.3.2", + "@stylistic/eslint-plugin": "^5.2.3", + "@types/node": "^24.2.1", + "@typescript-eslint/eslint-plugin": "^8.39.1", + "@typescript-eslint/parser": "^8.39.1", "@vitest/coverage-v8": "^3.2.4", "changelogen": "^0.6.2", - "eslint": "^9.32.0", + "eslint": "^9.33.0", "eslint-plugin-import-x": "^4.16.1", "jiti": "^2.5.1", "scule": "^1.3.0", "typescript": "^5.9.2", "unbuild": "^3.6.0", "vitepress": "^1.6.4", - "vitepress-plugin-group-icons": "^1.6.1", + "vitepress-plugin-group-icons": "^1.6.2", "vitest": "^3.2.4" }, "packageManager": "pnpm@10.14.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 880d18b..a606c05 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,32 +13,32 @@ importers: version: 1.4.1 devDependencies: '@eslint/compat': - specifier: ^1.3.1 - version: 1.3.1(eslint@9.32.0(jiti@2.5.1)) + specifier: ^1.3.2 + version: 1.3.2(eslint@9.33.0(jiti@2.5.1)) '@stylistic/eslint-plugin': - specifier: ^5.2.2 - version: 5.2.2(eslint@9.32.0(jiti@2.5.1)) + specifier: ^5.2.3 + version: 5.2.3(eslint@9.33.0(jiti@2.5.1)) '@types/node': - specifier: ^24.2.0 - version: 24.2.0 + specifier: ^24.2.1 + version: 24.2.1 '@typescript-eslint/eslint-plugin': - specifier: ^8.39.0 - version: 8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) + specifier: ^8.39.1 + version: 8.39.1(@typescript-eslint/parser@8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/parser': - specifier: ^8.39.0 - version: 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) + specifier: ^8.39.1 + version: 8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) '@vitest/coverage-v8': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@24.2.0)(jiti@2.5.1)) + version: 3.2.4(vitest@3.2.4(@types/node@24.2.1)(jiti@2.5.1)) changelogen: specifier: ^0.6.2 version: 0.6.2(magicast@0.3.5) eslint: - specifier: ^9.32.0 - version: 9.32.0(jiti@2.5.1) + specifier: ^9.33.0 + version: 9.33.0(jiti@2.5.1) eslint-plugin-import-x: specifier: ^4.16.1 - version: 4.16.1(@typescript-eslint/utils@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1)) + version: 4.16.1(@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1)) jiti: specifier: ^2.5.1 version: 2.5.1 @@ -53,13 +53,13 @@ importers: version: 3.6.0(typescript@5.9.2)(vue@3.5.18(typescript@5.9.2)) vitepress: specifier: ^1.6.4 - version: 1.6.4(@algolia/client-search@5.35.0)(@types/node@24.2.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.2) + version: 1.6.4(@algolia/client-search@5.35.0)(@types/node@24.2.1)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.2) vitepress-plugin-group-icons: - specifier: ^1.6.1 - version: 1.6.1(markdown-it@14.1.0)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)) + specifier: ^1.6.2 + version: 1.6.2(markdown-it@14.1.0)(vite@7.1.1(@types/node@24.2.1)(jiti@2.5.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@24.2.0)(jiti@2.5.1) + version: 3.2.4(@types/node@24.2.1)(jiti@2.5.1) packages: @@ -146,8 +146,8 @@ packages: '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} - '@antfu/utils@8.1.1': - resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} + '@antfu/utils@9.2.0': + resolution: {integrity: sha512-Oq1d9BGZakE/FyoEtcNeSwM7MpDO2vUBi11RWBZXf75zPsbUVWmUs03EqkRFrcgbXyKTas0BdZWC1wcuSoqSAw==} '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} @@ -510,8 +510,8 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/compat@1.3.1': - resolution: {integrity: sha512-k8MHony59I5EPic6EQTCNOuPoVBnoYXkP+20xvwFjN7t0qI3ImyvyBgg+hIVPwC8JaxVjjUZld+cLfBLFDLucg==} + '@eslint/compat@1.3.2': + resolution: {integrity: sha512-jRNwzTbd6p2Rw4sZ1CgWRS8YMtqG15YyZf7zvb6gY2rB2u6n+2Z+ELW0GtL0fQgyl0pr4Y/BzBfng/BdsereRA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.40 || 9 @@ -523,28 +523,28 @@ packages: resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.3.0': - resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==} + '@eslint/config-helpers@0.3.1': + resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.15.1': - resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==} + '@eslint/core@0.15.2': + resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.32.0': - resolution: {integrity: sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==} + '@eslint/js@9.33.0': + resolution: {integrity: sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.3.4': - resolution: {integrity: sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==} + '@eslint/plugin-kit@0.3.5': + resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@humanfs/core@0.19.1': @@ -567,20 +567,20 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@iconify-json/logos@1.2.5': - resolution: {integrity: sha512-WR8+9kFwx1tIR+hWpKYC+rpVkAuzHyaVxZRfhGGIjqCfgbodK7rS4+OZhktdKtZKKcdmhpLZKvlmRm4IA4dKRg==} + '@iconify-json/logos@1.2.9': + resolution: {integrity: sha512-G6VCdFnwZcrT6Eveq3m43oJfLw/CX8plwFcE+2jgv3fiGB64pTmnU7Yd1MNZ/eA+/Re2iEDhuCfSNOWTHwwK8w==} - '@iconify-json/simple-icons@1.2.46': - resolution: {integrity: sha512-MJfKQDhOMQD5Fc8PcTtCdFX0oBf/nKVfp69ScdEKIXW0JXELX5V2Ld45EsjShi8aJ6DNhdDtSDZvKuDnkDiKnw==} + '@iconify-json/simple-icons@1.2.47': + resolution: {integrity: sha512-wa/2O7G4sBmwSEWWLh5C+HeY00lVOoWYRKJOYQtk7lAbQrHUReD1ijiGOyTynV1YavxtNueL1CBA1UZmYJfOrQ==} - '@iconify-json/vscode-icons@1.2.24': - resolution: {integrity: sha512-iWWsflaDjX8l9JM9m5OrUtC49fuLveoXud7tVobRRyrDpI5ixdM9yfH20dC9R8aW+qpfPFPi6oC3n1noPsp8gA==} + '@iconify-json/vscode-icons@1.2.29': + resolution: {integrity: sha512-ByqO3YPYs0n7hakQ/ZUXltJQnYibeOv41H1AdciOs7Pmba5/OsKKK1/oOjcBmvXrYuENO+IvIzORYkl6sFXgqA==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - '@iconify/utils@2.3.0': - resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==} + '@iconify/utils@3.0.1': + resolution: {integrity: sha512-A78CUEnFGX8I/WlILxJCuIJXloL0j/OJ9PSchPAfCargEIKmUBWvvEMmKWB5oONwiUqlNt+5eRufdkLxeHIWYw==} '@isaacs/balanced-match@4.0.1': resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} @@ -808,8 +808,8 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - '@stylistic/eslint-plugin@5.2.2': - resolution: {integrity: sha512-bE2DUjruqXlHYP3Q2Gpqiuj2bHq7/88FnuaS0FjeGGLCy+X6a07bGVuwtiOYnPSLHR6jmx5Bwdv+j7l8H+G97A==} + '@stylistic/eslint-plugin@5.2.3': + resolution: {integrity: sha512-oY7GVkJGVMI5benlBDCaRrSC1qPasafyv5dOBLLv5MTilMGnErKhO6ziEfodDDIZbo5QxPUNW360VudJOFODMw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=9.0.0' @@ -844,8 +844,8 @@ packages: '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} - '@types/node@24.2.0': - resolution: {integrity: sha512-3xyG3pMCq3oYCNg7/ZP+E1ooTaGB4cG8JWRsqqOYQdbWNY4zbaV0Ennrd7stjiJEFZCaybcIgpTjJWHRfBSIDw==} + '@types/node@24.2.1': + resolution: {integrity: sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -856,63 +856,63 @@ packages: '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} - '@typescript-eslint/eslint-plugin@8.39.0': - resolution: {integrity: sha512-bhEz6OZeUR+O/6yx9Jk6ohX6H9JSFTaiY0v9/PuKT3oGK0rn0jNplLmyFUGV+a9gfYnVNwGDwS/UkLIuXNb2Rw==} + '@typescript-eslint/eslint-plugin@8.39.1': + resolution: {integrity: sha512-yYegZ5n3Yr6eOcqgj2nJH8cH/ZZgF+l0YIdKILSDjYFRjgYQMgv/lRjV5Z7Up04b9VYUondt8EPMqg7kTWgJ2g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.39.0 + '@typescript-eslint/parser': ^8.39.1 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.39.0': - resolution: {integrity: sha512-g3WpVQHngx0aLXn6kfIYCZxM6rRJlWzEkVpqEFLT3SgEDsp9cpCbxxgwnE504q4H+ruSDh/VGS6nqZIDynP+vg==} + '@typescript-eslint/parser@8.39.1': + resolution: {integrity: sha512-pUXGCuHnnKw6PyYq93lLRiZm3vjuslIy7tus1lIQTYVK9bL8XBgJnCWm8a0KcTtHC84Yya1Q6rtll+duSMj0dg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.39.0': - resolution: {integrity: sha512-CTzJqaSq30V/Z2Og9jogzZt8lJRR5TKlAdXmWgdu4hgcC9Kww5flQ+xFvMxIBWVNdxJO7OifgdOK4PokMIWPew==} + '@typescript-eslint/project-service@8.39.1': + resolution: {integrity: sha512-8fZxek3ONTwBu9ptw5nCKqZOSkXshZB7uAxuFF0J/wTMkKydjXCzqqga7MlFMpHi9DoG4BadhmTkITBcg8Aybw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.39.0': - resolution: {integrity: sha512-8QOzff9UKxOh6npZQ/4FQu4mjdOCGSdO3p44ww0hk8Vu+IGbg0tB/H1LcTARRDzGCC8pDGbh2rissBuuoPgH8A==} + '@typescript-eslint/scope-manager@8.39.1': + resolution: {integrity: sha512-RkBKGBrjgskFGWuyUGz/EtD8AF/GW49S21J8dvMzpJitOF1slLEbbHnNEtAHtnDAnx8qDEdRrULRnWVx27wGBw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.39.0': - resolution: {integrity: sha512-Fd3/QjmFV2sKmvv3Mrj8r6N8CryYiCS8Wdb/6/rgOXAWGcFuc+VkQuG28uk/4kVNVZBQuuDHEDUpo/pQ32zsIQ==} + '@typescript-eslint/tsconfig-utils@8.39.1': + resolution: {integrity: sha512-ePUPGVtTMR8XMU2Hee8kD0Pu4NDE1CN9Q1sxGSGd/mbOtGZDM7pnhXNJnzW63zk/q+Z54zVzj44HtwXln5CvHA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.39.0': - resolution: {integrity: sha512-6B3z0c1DXVT2vYA9+z9axjtc09rqKUPRmijD5m9iv8iQpHBRYRMBcgxSiKTZKm6FwWw1/cI4v6em35OsKCiN5Q==} + '@typescript-eslint/type-utils@8.39.1': + resolution: {integrity: sha512-gu9/ahyatyAdQbKeHnhT4R+y3YLtqqHyvkfDxaBYk97EcbfChSJXyaJnIL3ygUv7OuZatePHmQvuH5ru0lnVeA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.39.0': - resolution: {integrity: sha512-ArDdaOllnCj3yn/lzKn9s0pBQYmmyme/v1HbGIGB0GB/knFI3fWMHloC+oYTJW46tVbYnGKTMDK4ah1sC2v0Kg==} + '@typescript-eslint/types@8.39.1': + resolution: {integrity: sha512-7sPDKQQp+S11laqTrhHqeAbsCfMkwJMrV7oTDvtDds4mEofJYir414bYKUEb8YPUm9QL3U+8f6L6YExSoAGdQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.39.0': - resolution: {integrity: sha512-ndWdiflRMvfIgQRpckQQLiB5qAKQ7w++V4LlCHwp62eym1HLB/kw7D9f2e8ytONls/jt89TEasgvb+VwnRprsw==} + '@typescript-eslint/typescript-estree@8.39.1': + resolution: {integrity: sha512-EKkpcPuIux48dddVDXyQBlKdeTPMmALqBUbEk38McWv0qVEZwOpVJBi7ugK5qVNgeuYjGNQxrrnoM/5+TI/BPw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.39.0': - resolution: {integrity: sha512-4GVSvNA0Vx1Ktwvf4sFE+exxJ3QGUorQG1/A5mRfRNZtkBT2xrA/BCO2H0eALx/PnvCS6/vmYwRdDA41EoffkQ==} + '@typescript-eslint/utils@8.39.1': + resolution: {integrity: sha512-VF5tZ2XnUSTuiqZFXCZfZs1cgkdd3O/sSYmdo2EpSyDlC86UM/8YytTmKnehOW3TGAlivqTDT6bS87B/GQ/jyg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.39.0': - resolution: {integrity: sha512-ldgiJ+VAhQCfIjeOgu8Kj5nSxds0ktPOSO9p4+0VDH2R2pLvQraaM5Oen2d7NxzMCm+Sn/vJT+mv2H5u6b/3fA==} + '@typescript-eslint/visitor-keys@8.39.1': + resolution: {integrity: sha512-W8FQi6kEh2e8zVhQ0eeRnxdvIoOkAp/CPAahcNio6nO9dsIwb9b34z90KOlheoyuVf6LSOEdjlkxSkapNEc+4A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -1215,8 +1215,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.25.1: - resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} + browserslist@4.25.2: + resolution: {integrity: sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1243,8 +1243,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001731: - resolution: {integrity: sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==} + caniuse-lite@1.0.30001734: + resolution: {integrity: sha512-uhE1Ye5vgqju6OI71HTQqcBCZrvHugk0MjLak7Q+HfoBgoq5Bi+5YnwjP4fjDgrtYr/l8MVRBvzz9dPD4KyK0A==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -1442,8 +1442,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.195: - resolution: {integrity: sha512-URclP0iIaDUzqcAyV1v2PgduJ9N0IdXmWsnPzPfelvBmjmZzEy6xJcjb1cXj+TbYqXgtLrjHEoaSIdTYhw4ezg==} + electron-to-chromium@1.5.200: + resolution: {integrity: sha512-rFCxROw7aOe4uPTfIAx+rXv9cEcGx+buAF4npnhtTqCJk5KDFRnh3+KYj7rdVh6lsFt5/aPs+Irj9rZ33WMA7w==} emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -1513,8 +1513,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.32.0: - resolution: {integrity: sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==} + eslint@9.33.0: + resolution: {integrity: sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -1934,8 +1934,8 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - napi-postinstall@0.3.2: - resolution: {integrity: sha512-tWVJxJHmBWLy69PvO96TZMZDrzmw5KeiZBz3RHmiM2XZ9grBJ2WgMAFVVg25nqp3ZjTFUs2Ftw1JhscL3Teliw==} + napi-postinstall@0.3.3: + resolution: {integrity: sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} hasBin: true @@ -2551,8 +2551,8 @@ packages: terser: optional: true - vite@7.0.6: - resolution: {integrity: sha512-MHFiOENNBd+Bd9uvc8GEsIzdkn1JxMmEeYX35tI3fv0sJBUTfW5tQsoaOwuY4KhBI09A3dUJ/DXf2yxPVPUceg==} + vite@7.1.1: + resolution: {integrity: sha512-yJ+Mp7OyV+4S+afWo+QyoL9jFWD11QFH0i5i7JypnfTcA1rmgxCbiA8WwAICDEtZ1Z1hzrVhN8R8rGTqkTY8ZQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -2591,8 +2591,8 @@ packages: yaml: optional: true - vitepress-plugin-group-icons@1.6.1: - resolution: {integrity: sha512-eoFlFAhAy/yTZDbaIgA/nMbjVYXkf8pz8rr75MN2VCw7yH60I3cw6bW5EuwddAeafZtBqbo8OsEGU7TIWFiAjg==} + vitepress-plugin-group-icons@1.6.2: + resolution: {integrity: sha512-soDdxP/OnDJqcAFT+ilrZ08Em1xVQXDF5gM+iHVTOmA0kJ5baaglckkjAX90MuPmcBszbJah1XTHRxkkIj7gMQ==} peerDependencies: markdown-it: '>=14' vite: '>=3' @@ -2802,7 +2802,7 @@ snapshots: package-manager-detector: 1.3.0 tinyexec: 1.0.1 - '@antfu/utils@8.1.1': {} + '@antfu/utils@9.2.0': {} '@babel/code-frame@7.27.1': dependencies: @@ -3013,16 +3013,16 @@ snapshots: '@esbuild/win32-x64@0.25.8': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0(jiti@2.5.1))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.33.0(jiti@2.5.1))': dependencies: - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.33.0(jiti@2.5.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.3.1(eslint@9.32.0(jiti@2.5.1))': + '@eslint/compat@1.3.2(eslint@9.33.0(jiti@2.5.1))': optionalDependencies: - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.33.0(jiti@2.5.1) '@eslint/config-array@0.21.0': dependencies: @@ -3032,9 +3032,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.3.0': {} + '@eslint/config-helpers@0.3.1': {} - '@eslint/core@0.15.1': + '@eslint/core@0.15.2': dependencies: '@types/json-schema': 7.0.15 @@ -3052,13 +3052,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.32.0': {} + '@eslint/js@9.33.0': {} '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.3.4': + '@eslint/plugin-kit@0.3.5': dependencies: - '@eslint/core': 0.15.1 + '@eslint/core': 0.15.2 levn: 0.4.1 '@humanfs/core@0.19.1': {} @@ -3074,24 +3074,24 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@iconify-json/logos@1.2.5': + '@iconify-json/logos@1.2.9': dependencies: '@iconify/types': 2.0.0 - '@iconify-json/simple-icons@1.2.46': + '@iconify-json/simple-icons@1.2.47': dependencies: '@iconify/types': 2.0.0 - '@iconify-json/vscode-icons@1.2.24': + '@iconify-json/vscode-icons@1.2.29': dependencies: '@iconify/types': 2.0.0 '@iconify/types@2.0.0': {} - '@iconify/utils@2.3.0': + '@iconify/utils@3.0.1': dependencies: '@antfu/install-pkg': 1.1.0 - '@antfu/utils': 8.1.1 + '@antfu/utils': 9.2.0 '@iconify/types': 2.0.0 debug: 4.4.1 globals: 15.15.0 @@ -3301,11 +3301,11 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} - '@stylistic/eslint-plugin@5.2.2(eslint@9.32.0(jiti@2.5.1))': + '@stylistic/eslint-plugin@5.2.3(eslint@9.33.0(jiti@2.5.1))': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) - '@typescript-eslint/types': 8.39.0 - eslint: 9.32.0(jiti@2.5.1) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.5.1)) + '@typescript-eslint/types': 8.39.1 + eslint: 9.33.0(jiti@2.5.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -3343,7 +3343,7 @@ snapshots: '@types/mdurl@2.0.0': {} - '@types/node@24.2.0': + '@types/node@24.2.1': dependencies: undici-types: 7.10.0 @@ -3353,15 +3353,15 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.39.1(@typescript-eslint/parser@8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.39.0 - '@typescript-eslint/type-utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.39.0 - eslint: 9.32.0(jiti@2.5.1) + '@typescript-eslint/parser': 8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.39.1 + '@typescript-eslint/type-utils': 8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.39.1 + eslint: 9.33.0(jiti@2.5.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -3370,56 +3370,56 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/parser@8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.39.0 - '@typescript-eslint/types': 8.39.0 - '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.39.0 + '@typescript-eslint/scope-manager': 8.39.1 + '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.39.1 debug: 4.4.1 - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.33.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.39.0(typescript@5.9.2)': + '@typescript-eslint/project-service@8.39.1(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.39.0(typescript@5.9.2) - '@typescript-eslint/types': 8.39.0 + '@typescript-eslint/tsconfig-utils': 8.39.1(typescript@5.9.2) + '@typescript-eslint/types': 8.39.1 debug: 4.4.1 typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.39.0': + '@typescript-eslint/scope-manager@8.39.1': dependencies: - '@typescript-eslint/types': 8.39.0 - '@typescript-eslint/visitor-keys': 8.39.0 + '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/visitor-keys': 8.39.1 - '@typescript-eslint/tsconfig-utils@8.39.0(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.39.1(typescript@5.9.2)': dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.39.0 - '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) debug: 4.4.1 - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.33.0(jiti@2.5.1) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.39.0': {} + '@typescript-eslint/types@8.39.1': {} - '@typescript-eslint/typescript-estree@8.39.0(typescript@5.9.2)': + '@typescript-eslint/typescript-estree@8.39.1(typescript@5.9.2)': dependencies: - '@typescript-eslint/project-service': 8.39.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.39.0(typescript@5.9.2) - '@typescript-eslint/types': 8.39.0 - '@typescript-eslint/visitor-keys': 8.39.0 + '@typescript-eslint/project-service': 8.39.1(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.39.1(typescript@5.9.2) + '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/visitor-keys': 8.39.1 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -3430,20 +3430,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) - '@typescript-eslint/scope-manager': 8.39.0 - '@typescript-eslint/types': 8.39.0 - '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) - eslint: 9.32.0(jiti@2.5.1) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.5.1)) + '@typescript-eslint/scope-manager': 8.39.1 + '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.9.2) + eslint: 9.33.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.39.0': + '@typescript-eslint/visitor-keys@8.39.1': dependencies: - '@typescript-eslint/types': 8.39.0 + '@typescript-eslint/types': 8.39.1 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} @@ -3507,12 +3507,12 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@24.2.0))(vue@3.5.18(typescript@5.9.2))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@24.2.1))(vue@3.5.18(typescript@5.9.2))': dependencies: - vite: 5.4.19(@types/node@24.2.0) + vite: 5.4.19(@types/node@24.2.1) vue: 3.5.18(typescript@5.9.2) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.2.0)(jiti@2.5.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.2.1)(jiti@2.5.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -3527,7 +3527,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.2.0)(jiti@2.5.1) + vitest: 3.2.4(@types/node@24.2.1)(jiti@2.5.1) transitivePeerDependencies: - supports-color @@ -3539,13 +3539,13 @@ snapshots: chai: 5.2.1 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1))': + '@vitest/mocker@3.2.4(vite@7.1.1(@types/node@24.2.1)(jiti@2.5.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 7.0.6(@types/node@24.2.0)(jiti@2.5.1) + vite: 7.1.1(@types/node@24.2.1)(jiti@2.5.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -3724,8 +3724,8 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: - browserslist: 4.25.1 - caniuse-lite: 1.0.30001731 + browserslist: 4.25.2 + caniuse-lite: 1.0.30001734 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -3751,12 +3751,12 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.25.1: + browserslist@4.25.2: dependencies: - caniuse-lite: 1.0.30001731 - electron-to-chromium: 1.5.195 + caniuse-lite: 1.0.30001734 + electron-to-chromium: 1.5.200 node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.1) + update-browserslist-db: 1.1.3(browserslist@4.25.2) bundle-name@4.1.0: dependencies: @@ -3785,12 +3785,12 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.25.1 - caniuse-lite: 1.0.30001731 + browserslist: 4.25.2 + caniuse-lite: 1.0.30001734 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001731: {} + caniuse-lite@1.0.30001734: {} ccount@2.0.1: {} @@ -3903,7 +3903,7 @@ snapshots: cssnano-preset-default@7.0.8(postcss@8.5.6): dependencies: - browserslist: 4.25.1 + browserslist: 4.25.2 css-declaration-sorter: 7.2.0(postcss@8.5.6) cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 @@ -4002,7 +4002,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.195: {} + electron-to-chromium@1.5.200: {} emoji-regex-xs@1.0.0: {} @@ -4080,12 +4080,12 @@ snapshots: optionalDependencies: unrs-resolver: 1.11.1 - eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1)): + eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1)): dependencies: - '@typescript-eslint/types': 8.39.0 + '@typescript-eslint/types': 8.39.1 comment-parser: 1.4.1 debug: 4.4.1 - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.33.0(jiti@2.5.1) eslint-import-context: 0.1.9(unrs-resolver@1.11.1) is-glob: 4.0.3 minimatch: 10.0.3 @@ -4093,7 +4093,7 @@ snapshots: stable-hash-x: 0.2.0 unrs-resolver: 1.11.1 optionalDependencies: - '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) transitivePeerDependencies: - supports-color @@ -4106,16 +4106,16 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.32.0(jiti@2.5.1): + eslint@9.33.0(jiti@2.5.1): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.5.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 - '@eslint/config-helpers': 0.3.0 - '@eslint/core': 0.15.1 + '@eslint/config-helpers': 0.3.1 + '@eslint/core': 0.15.2 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.32.0 - '@eslint/plugin-kit': 0.3.4 + '@eslint/js': 9.33.0 + '@eslint/plugin-kit': 0.3.5 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -4553,7 +4553,7 @@ snapshots: nanoid@3.3.11: {} - napi-postinstall@0.3.2: {} + napi-postinstall@0.3.3: {} natural-compare@1.4.0: {} @@ -4664,7 +4664,7 @@ snapshots: postcss-colormin@7.0.4(postcss@8.5.6): dependencies: - browserslist: 4.25.1 + browserslist: 4.25.2 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.5.6 @@ -4672,7 +4672,7 @@ snapshots: postcss-convert-values@7.0.6(postcss@8.5.6): dependencies: - browserslist: 4.25.1 + browserslist: 4.25.2 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -4701,7 +4701,7 @@ snapshots: postcss-merge-rules@7.0.6(postcss@8.5.6): dependencies: - browserslist: 4.25.1 + browserslist: 4.25.2 caniuse-api: 3.0.0 cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 @@ -4721,7 +4721,7 @@ snapshots: postcss-minify-params@7.0.4(postcss@8.5.6): dependencies: - browserslist: 4.25.1 + browserslist: 4.25.2 cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -4768,7 +4768,7 @@ snapshots: postcss-normalize-unicode@7.0.4(postcss@8.5.6): dependencies: - browserslist: 4.25.1 + browserslist: 4.25.2 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -4790,7 +4790,7 @@ snapshots: postcss-reduce-initial@7.0.4(postcss@8.5.6): dependencies: - browserslist: 4.25.1 + browserslist: 4.25.2 caniuse-api: 3.0.0 postcss: 8.5.6 @@ -4984,7 +4984,7 @@ snapshots: stylehacks@7.0.6(postcss@8.5.6): dependencies: - browserslist: 4.25.1 + browserslist: 4.25.2 postcss: 8.5.6 postcss-selector-parser: 7.1.0 @@ -5117,7 +5117,7 @@ snapshots: unrs-resolver@1.11.1: dependencies: - napi-postinstall: 0.3.2 + napi-postinstall: 0.3.3 optionalDependencies: '@unrs/resolver-binding-android-arm-eabi': 1.11.1 '@unrs/resolver-binding-android-arm64': 1.11.1 @@ -5147,9 +5147,9 @@ snapshots: knitwork: 1.2.0 scule: 1.3.0 - update-browserslist-db@1.1.3(browserslist@4.25.1): + update-browserslist-db@1.1.3(browserslist@4.25.2): dependencies: - browserslist: 4.25.1 + browserslist: 4.25.2 escalade: 3.2.0 picocolors: 1.1.1 @@ -5169,13 +5169,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-node@3.2.4(@types/node@24.2.0)(jiti@2.5.1): + vite-node@3.2.4(@types/node@24.2.1)(jiti@2.5.1): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.0.6(@types/node@24.2.0)(jiti@2.5.1) + vite: 7.1.1(@types/node@24.2.1)(jiti@2.5.1) transitivePeerDependencies: - '@types/node' - jiti @@ -5190,16 +5190,16 @@ snapshots: - tsx - yaml - vite@5.4.19(@types/node@24.2.0): + vite@5.4.19(@types/node@24.2.1): dependencies: esbuild: 0.21.5 postcss: 8.5.6 rollup: 4.46.2 optionalDependencies: - '@types/node': 24.2.0 + '@types/node': 24.2.1 fsevents: 2.3.3 - vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1): + vite@7.1.1(@types/node@24.2.1)(jiti@2.5.1): dependencies: esbuild: 0.25.8 fdir: 6.4.6(picomatch@4.0.3) @@ -5208,30 +5208,30 @@ snapshots: rollup: 4.46.2 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 24.2.0 + '@types/node': 24.2.1 fsevents: 2.3.3 jiti: 2.5.1 - vitepress-plugin-group-icons@1.6.1(markdown-it@14.1.0)(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)): + vitepress-plugin-group-icons@1.6.2(markdown-it@14.1.0)(vite@7.1.1(@types/node@24.2.1)(jiti@2.5.1)): dependencies: - '@iconify-json/logos': 1.2.5 - '@iconify-json/vscode-icons': 1.2.24 - '@iconify/utils': 2.3.0 + '@iconify-json/logos': 1.2.9 + '@iconify-json/vscode-icons': 1.2.29 + '@iconify/utils': 3.0.1 markdown-it: 14.1.0 - vite: 7.0.6(@types/node@24.2.0)(jiti@2.5.1) + vite: 7.1.1(@types/node@24.2.1)(jiti@2.5.1) transitivePeerDependencies: - supports-color - vitepress@1.6.4(@algolia/client-search@5.35.0)(@types/node@24.2.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.2): + vitepress@1.6.4(@algolia/client-search@5.35.0)(@types/node@24.2.1)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.2): dependencies: '@docsearch/css': 3.8.2 '@docsearch/js': 3.8.2(@algolia/client-search@5.35.0)(search-insights@2.17.3) - '@iconify-json/simple-icons': 1.2.46 + '@iconify-json/simple-icons': 1.2.47 '@shikijs/core': 2.5.0 '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.4(vite@5.4.19(@types/node@24.2.0))(vue@3.5.18(typescript@5.9.2)) + '@vitejs/plugin-vue': 5.2.4(vite@5.4.19(@types/node@24.2.1))(vue@3.5.18(typescript@5.9.2)) '@vue/devtools-api': 7.7.7 '@vue/shared': 3.5.18 '@vueuse/core': 12.8.2(typescript@5.9.2) @@ -5240,7 +5240,7 @@ snapshots: mark.js: 8.11.1 minisearch: 7.1.2 shiki: 2.5.0 - vite: 5.4.19(@types/node@24.2.0) + vite: 5.4.19(@types/node@24.2.1) vue: 3.5.18(typescript@5.9.2) optionalDependencies: postcss: 8.5.6 @@ -5271,11 +5271,11 @@ snapshots: - typescript - universal-cookie - vitest@3.2.4(@types/node@24.2.0)(jiti@2.5.1): + vitest@3.2.4(@types/node@24.2.1)(jiti@2.5.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.0.6(@types/node@24.2.0)(jiti@2.5.1)) + '@vitest/mocker': 3.2.4(vite@7.1.1(@types/node@24.2.1)(jiti@2.5.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -5293,11 +5293,11 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.0.6(@types/node@24.2.0)(jiti@2.5.1) - vite-node: 3.2.4(@types/node@24.2.0)(jiti@2.5.1) + vite: 7.1.1(@types/node@24.2.1)(jiti@2.5.1) + vite-node: 3.2.4(@types/node@24.2.1)(jiti@2.5.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.2.0 + '@types/node': 24.2.1 transitivePeerDependencies: - jiti - less From ac9055eada1d00f1b68ba05a4ea04750da004d28 Mon Sep 17 00:00:00 2001 From: Yizack Rangel Date: Tue, 12 Aug 2025 01:58:09 +0200 Subject: [PATCH 06/13] chore(lint): add `function-call-spacing` stylistic rule --- eslint.config.ts | 1 + test/sub-accounts.test.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/eslint.config.ts b/eslint.config.ts index 8196b5c..9370c1b 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -60,6 +60,7 @@ export default defineConfig([ "@stylistic/no-multiple-empty-lines": ["error", { max: 1 }], "@stylistic/quote-props": ["error", "consistent-as-needed"], "@stylistic/arrow-parens": ["error", "as-needed", { requireForBlockBody: true }], + "@stylistic/function-call-spacing": ["error", "never"], "@typescript-eslint/no-explicit-any": "error", "@typescript-eslint/consistent-type-imports": "error" } diff --git a/test/sub-accounts.test.ts b/test/sub-accounts.test.ts index 7418677..9b2aeca 100644 --- a/test/sub-accounts.test.ts +++ b/test/sub-accounts.test.ts @@ -317,7 +317,7 @@ describe("activate", () => { expect(mockClient.post).not.toHaveBeenCalled(); }); - it ("should contain error on api response error", async () => { + it("should contain error on api response error", async () => { const mockClient = { post: vi.fn().mockImplementationOnce(async (url, { onResponse }) => { onResponse({ response: { status: ErrorCode.Forbidden } }); From 56d1fa7c7036d4420e29bb12c1b11805ebc9e54d Mon Sep 17 00:00:00 2001 From: Yizack Rangel Date: Tue, 2 Sep 2025 15:52:17 +0200 Subject: [PATCH 07/13] chore(deps): update deps --- package.json | 16 +- pnpm-lock.yaml | 1408 ++++++++++++++++++++++++------------------------ 2 files changed, 717 insertions(+), 707 deletions(-) diff --git a/package.json b/package.json index 9b4d85b..1c9e0db 100644 --- a/package.json +++ b/package.json @@ -56,21 +56,21 @@ }, "devDependencies": { "@eslint/compat": "^1.3.2", - "@stylistic/eslint-plugin": "^5.2.3", - "@types/node": "^24.2.1", - "@typescript-eslint/eslint-plugin": "^8.39.1", - "@typescript-eslint/parser": "^8.39.1", + "@stylistic/eslint-plugin": "^5.3.1", + "@types/node": "^24.3.0", + "@typescript-eslint/eslint-plugin": "^8.42.0", + "@typescript-eslint/parser": "^8.42.0", "@vitest/coverage-v8": "^3.2.4", "changelogen": "^0.6.2", - "eslint": "^9.33.0", + "eslint": "^9.34.0", "eslint-plugin-import-x": "^4.16.1", "jiti": "^2.5.1", "scule": "^1.3.0", "typescript": "^5.9.2", - "unbuild": "^3.6.0", + "unbuild": "^3.6.1", "vitepress": "^1.6.4", - "vitepress-plugin-group-icons": "^1.6.2", + "vitepress-plugin-group-icons": "^1.6.3", "vitest": "^3.2.4" }, - "packageManager": "pnpm@10.14.0" + "packageManager": "pnpm@10.15.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a606c05..04e9ee3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,31 +14,31 @@ importers: devDependencies: '@eslint/compat': specifier: ^1.3.2 - version: 1.3.2(eslint@9.33.0(jiti@2.5.1)) + version: 1.3.2(eslint@9.34.0(jiti@2.5.1)) '@stylistic/eslint-plugin': - specifier: ^5.2.3 - version: 5.2.3(eslint@9.33.0(jiti@2.5.1)) + specifier: ^5.3.1 + version: 5.3.1(eslint@9.34.0(jiti@2.5.1)) '@types/node': - specifier: ^24.2.1 - version: 24.2.1 + specifier: ^24.3.0 + version: 24.3.0 '@typescript-eslint/eslint-plugin': - specifier: ^8.39.1 - version: 8.39.1(@typescript-eslint/parser@8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) + specifier: ^8.42.0 + version: 8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/parser': - specifier: ^8.39.1 - version: 8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) + specifier: ^8.42.0 + version: 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) '@vitest/coverage-v8': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@24.2.1)(jiti@2.5.1)) + version: 3.2.4(vitest@3.2.4(@types/node@24.3.0)(jiti@2.5.1)) changelogen: specifier: ^0.6.2 version: 0.6.2(magicast@0.3.5) eslint: - specifier: ^9.33.0 - version: 9.33.0(jiti@2.5.1) + specifier: ^9.34.0 + version: 9.34.0(jiti@2.5.1) eslint-plugin-import-x: specifier: ^4.16.1 - version: 4.16.1(@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1)) + version: 4.16.1(@typescript-eslint/utils@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)) jiti: specifier: ^2.5.1 version: 2.5.1 @@ -49,22 +49,22 @@ importers: specifier: ^5.9.2 version: 5.9.2 unbuild: - specifier: ^3.6.0 - version: 3.6.0(typescript@5.9.2)(vue@3.5.18(typescript@5.9.2)) + specifier: ^3.6.1 + version: 3.6.1(typescript@5.9.2)(vue@3.5.21(typescript@5.9.2)) vitepress: specifier: ^1.6.4 - version: 1.6.4(@algolia/client-search@5.35.0)(@types/node@24.2.1)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.2) + version: 1.6.4(@algolia/client-search@5.36.0)(@types/node@24.3.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.2) vitepress-plugin-group-icons: - specifier: ^1.6.2 - version: 1.6.2(markdown-it@14.1.0)(vite@7.1.1(@types/node@24.2.1)(jiti@2.5.1)) + specifier: ^1.6.3 + version: 1.6.3(markdown-it@14.1.0)(vite@7.1.4(@types/node@24.3.0)(jiti@2.5.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@24.2.1)(jiti@2.5.1) + version: 3.2.4(@types/node@24.3.0)(jiti@2.5.1) packages: - '@algolia/abtesting@1.1.0': - resolution: {integrity: sha512-sEyWjw28a/9iluA37KLGu8vjxEIlb60uxznfTUmXImy7H5NvbpSO6yYgmgH5KiD7j+zTUUihiST0jEP12IoXow==} + '@algolia/abtesting@1.2.0': + resolution: {integrity: sha512-Z6Liq7US5CpdHExZLfPMBPxQHHUObV587kGvCLniLr1UTx0fGFIeGNWd005WIqQXqEda9GyAi7T2e7DUupVv0g==} engines: {node: '>= 14.0.0'} '@algolia/autocomplete-core@1.17.7': @@ -87,56 +87,56 @@ packages: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/client-abtesting@5.35.0': - resolution: {integrity: sha512-uUdHxbfHdoppDVflCHMxRlj49/IllPwwQ2cQ8DLC4LXr3kY96AHBpW0dMyi6ygkn2MtFCc6BxXCzr668ZRhLBQ==} + '@algolia/client-abtesting@5.36.0': + resolution: {integrity: sha512-uGr57O1UqDDeZHYXr1VnUomtdgQMxb6fS8yC/LXCMOn5ucN4k6FlcCRqXQnUyiiFZNG/rVK3zpRiyomq4JWXdQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.35.0': - resolution: {integrity: sha512-SunAgwa9CamLcRCPnPHx1V2uxdQwJGqb1crYrRWktWUdld0+B2KyakNEeVn5lln4VyeNtW17Ia7V7qBWyM/Skw==} + '@algolia/client-analytics@5.36.0': + resolution: {integrity: sha512-/zrf0NMxcvBBQ4r9lIqM7rMt7oI7gY7bZ+bNcgpZAQMvzXbKJVla3MqKGuPC/bfOthKvAcAr0mCZ8/7GwBmkVw==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.35.0': - resolution: {integrity: sha512-ipE0IuvHu/bg7TjT2s+187kz/E3h5ssfTtjpg1LbWMgxlgiaZIgTTbyynM7NfpSJSKsgQvCQxWjGUO51WSCu7w==} + '@algolia/client-common@5.36.0': + resolution: {integrity: sha512-fDsg9w6xXWQyNkm/VfiWF2D9wnpTPv0fRVei7lWtz7cXJewhOmP1kKE2GaDTI4QDxVxgDkoPJ1+3UVMIzTcjjQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.35.0': - resolution: {integrity: sha512-UNbCXcBpqtzUucxExwTSfAe8gknAJ485NfPN6o1ziHm6nnxx97piIbcBQ3edw823Tej2Wxu1C0xBY06KgeZ7gA==} + '@algolia/client-insights@5.36.0': + resolution: {integrity: sha512-x6ZICyIN3BZjja47lqlMLG+AZwfx9wrYWttd6Daxp+wX/fFGxha6gdqxeoi5J44BmFqK8CUU4u8vpwHqGOCl4g==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.35.0': - resolution: {integrity: sha512-/KWjttZ6UCStt4QnWoDAJ12cKlQ+fkpMtyPmBgSS2WThJQdSV/4UWcqCUqGH7YLbwlj3JjNirCu3Y7uRTClxvA==} + '@algolia/client-personalization@5.36.0': + resolution: {integrity: sha512-gnH9VHrC+/9OuaumbgxNXzzEq1AY2j3tm00ymNXNz35T7RQ2AK/x4T5b2UnjOUJejuXaSJ88gFyPk3nM5OhJZQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.35.0': - resolution: {integrity: sha512-8oCuJCFf/71IYyvQQC+iu4kgViTODbXDk3m7yMctEncRSRV+u2RtDVlpGGfPlJQOrAY7OONwJlSHkmbbm2Kp/w==} + '@algolia/client-query-suggestions@5.36.0': + resolution: {integrity: sha512-GkWIS+cAMoxsNPHEp3j7iywO9JJMVHVCWHzPPHFXIe0iNIOfsnZy5MqC1T9sifjqoU9b0GGbzzdxB3TEdwfiFA==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.35.0': - resolution: {integrity: sha512-FfmdHTrXhIduWyyuko1YTcGLuicVbhUyRjO3HbXE4aP655yKZgdTIfMhZ/V5VY9bHuxv/fGEh3Od1Lvv2ODNTg==} + '@algolia/client-search@5.36.0': + resolution: {integrity: sha512-MLx32nSeDSNxfx28IfvwfHEfeo3AYe9JgEj0rLeYtJGmt0W30K6tCNokxhWGUUKrggQTH6H1lnohWsoj2OC2bw==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.35.0': - resolution: {integrity: sha512-gPzACem9IL1Co8mM1LKMhzn1aSJmp+Vp434An4C0OBY4uEJRcqsLN3uLBlY+bYvFg8C8ImwM9YRiKczJXRk0XA==} + '@algolia/ingestion@1.36.0': + resolution: {integrity: sha512-6zmlPLCsyzShOsfs1G1uqxwLTojte3NLyukwyUmJFfa46DSq3wkIOE9hFtqAoV951dXp4sZd2KCFYJmgRjcYbA==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.35.0': - resolution: {integrity: sha512-w9MGFLB6ashI8BGcQoVt7iLgDIJNCn4OIu0Q0giE3M2ItNrssvb8C0xuwJQyTy1OFZnemG0EB1OvXhIHOvQwWw==} + '@algolia/monitoring@1.36.0': + resolution: {integrity: sha512-SjJeDqlzAKJiWhquqfDWLEu5X/PIM+5KvUH65c4LBvt8T+USOVJbijtzA9UHZ1eUIfFSDBmbzEH0YvlS6Di2mg==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.35.0': - resolution: {integrity: sha512-AhrVgaaXAb8Ue0u2nuRWwugt0dL5UmRgS9LXe0Hhz493a8KFeZVUE56RGIV3hAa6tHzmAV7eIoqcWTQvxzlJeQ==} + '@algolia/recommend@5.36.0': + resolution: {integrity: sha512-FalJm3h9fwoZZpkkMpA0r4Grcvjk32FzmC4CXvlpyF/gBvu6pXE01yygjJBU20zGVLGsXU+Ad8nYPf+oGD7Zkg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.35.0': - resolution: {integrity: sha512-diY415KLJZ6x1Kbwl9u96Jsz0OstE3asjXtJ9pmk1d+5gPuQ5jQyEsgC+WmEXzlec3iuVszm8AzNYYaqw6B+Zw==} + '@algolia/requester-browser-xhr@5.36.0': + resolution: {integrity: sha512-weE9SImWIDmQrfGLb1pSPEfP3mioKQ84GaQRpUmjFxlxG/4nW2bSsmkV+kNp1s+iomL2gnxFknSmcQuuAy+kPA==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.35.0': - resolution: {integrity: sha512-uydqnSmpAjrgo8bqhE9N1wgcB98psTRRQXcjc4izwMB7yRl9C8uuAQ/5YqRj04U0mMQ+fdu2fcNF6m9+Z1BzDQ==} + '@algolia/requester-fetch@5.36.0': + resolution: {integrity: sha512-zGPI2sgzvOwCHTVMmDvc301iirOKCtJ+Egh+HQB/+DG0zTGUT1DpdwQVT25A7Yin/twnO8CkFpI/S+74FVYNjg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.35.0': - resolution: {integrity: sha512-RgLX78ojYOrThJHrIiPzT4HW3yfQa0D7K+MQ81rhxqaNyNBu4F1r+72LNHYH/Z+y9I1Mrjrd/c/Ue5zfDgAEjQ==} + '@algolia/requester-node-http@5.36.0': + resolution: {integrity: sha512-dNbBGE/O6VG/6vFhv3CFm5za4rubAVrhQf/ef0YWiDqPMmalPxGEzIijw4xV1mU1JmX2ffyp/x8Kdtz24sDkOQ==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': @@ -161,8 +161,8 @@ packages: resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.0': - resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} + '@babel/parser@7.28.3': + resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==} engines: {node: '>=6.0.0'} hasBin: true @@ -197,14 +197,14 @@ packages: search-insights: optional: true - '@emnapi/core@1.4.5': - resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} + '@emnapi/core@1.5.0': + resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} - '@emnapi/runtime@1.4.5': - resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} + '@emnapi/runtime@1.5.0': + resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} - '@emnapi/wasi-threads@1.0.4': - resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==} + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} @@ -212,8 +212,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.8': - resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} + '@esbuild/aix-ppc64@0.25.9': + resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -224,8 +224,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.8': - resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==} + '@esbuild/android-arm64@0.25.9': + resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -236,8 +236,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.8': - resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==} + '@esbuild/android-arm@0.25.9': + resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -248,8 +248,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.8': - resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==} + '@esbuild/android-x64@0.25.9': + resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -260,8 +260,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.8': - resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==} + '@esbuild/darwin-arm64@0.25.9': + resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -272,8 +272,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.8': - resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==} + '@esbuild/darwin-x64@0.25.9': + resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -284,8 +284,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.8': - resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==} + '@esbuild/freebsd-arm64@0.25.9': + resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -296,8 +296,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.8': - resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==} + '@esbuild/freebsd-x64@0.25.9': + resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -308,8 +308,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.8': - resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==} + '@esbuild/linux-arm64@0.25.9': + resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -320,8 +320,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.8': - resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==} + '@esbuild/linux-arm@0.25.9': + resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -332,8 +332,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.8': - resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==} + '@esbuild/linux-ia32@0.25.9': + resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -344,8 +344,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.8': - resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==} + '@esbuild/linux-loong64@0.25.9': + resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -356,8 +356,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.8': - resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==} + '@esbuild/linux-mips64el@0.25.9': + resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -368,8 +368,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.8': - resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==} + '@esbuild/linux-ppc64@0.25.9': + resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -380,8 +380,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.8': - resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==} + '@esbuild/linux-riscv64@0.25.9': + resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -392,8 +392,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.8': - resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==} + '@esbuild/linux-s390x@0.25.9': + resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -404,14 +404,14 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.8': - resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==} + '@esbuild/linux-x64@0.25.9': + resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.8': - resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==} + '@esbuild/netbsd-arm64@0.25.9': + resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -422,14 +422,14 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.8': - resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==} + '@esbuild/netbsd-x64@0.25.9': + resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.8': - resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==} + '@esbuild/openbsd-arm64@0.25.9': + resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -440,14 +440,14 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.8': - resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==} + '@esbuild/openbsd-x64@0.25.9': + resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.8': - resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==} + '@esbuild/openharmony-arm64@0.25.9': + resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -458,8 +458,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.8': - resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==} + '@esbuild/sunos-x64@0.25.9': + resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -470,8 +470,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.8': - resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==} + '@esbuild/win32-arm64@0.25.9': + resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -482,8 +482,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.8': - resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==} + '@esbuild/win32-ia32@0.25.9': + resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -494,8 +494,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.8': - resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==} + '@esbuild/win32-x64@0.25.9': + resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -535,8 +535,8 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.33.0': - resolution: {integrity: sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==} + '@eslint/js@9.34.0': + resolution: {integrity: sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': @@ -570,11 +570,11 @@ packages: '@iconify-json/logos@1.2.9': resolution: {integrity: sha512-G6VCdFnwZcrT6Eveq3m43oJfLw/CX8plwFcE+2jgv3fiGB64pTmnU7Yd1MNZ/eA+/Re2iEDhuCfSNOWTHwwK8w==} - '@iconify-json/simple-icons@1.2.47': - resolution: {integrity: sha512-wa/2O7G4sBmwSEWWLh5C+HeY00lVOoWYRKJOYQtk7lAbQrHUReD1ijiGOyTynV1YavxtNueL1CBA1UZmYJfOrQ==} + '@iconify-json/simple-icons@1.2.50': + resolution: {integrity: sha512-Z2ggRwKYEBB9eYAEi4NqEgIzyLhu0Buh4+KGzMPD6+xG7mk52wZJwLT/glDPtfslV503VtJbqzWqBUGkCMKOFA==} - '@iconify-json/vscode-icons@1.2.29': - resolution: {integrity: sha512-ByqO3YPYs0n7hakQ/ZUXltJQnYibeOv41H1AdciOs7Pmba5/OsKKK1/oOjcBmvXrYuENO+IvIzORYkl6sFXgqA==} + '@iconify-json/vscode-icons@1.2.30': + resolution: {integrity: sha512-dlTOc8w4a8/QNumZzMve+APJa6xQVXPZwo8qBk/MaYfY42NPrQT83QXkbTWKDkuEu/xgHPXvKZZBL7Yy12vYQw==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -598,18 +598,18 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - '@jridgewell/gen-mapping@0.3.12': - resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.4': - resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/trace-mapping@0.3.29': - resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + '@jridgewell/trace-mapping@0.3.30': + resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==} '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} @@ -684,103 +684,108 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.46.2': - resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==} + '@rollup/rollup-android-arm-eabi@4.50.0': + resolution: {integrity: sha512-lVgpeQyy4fWN5QYebtW4buT/4kn4p4IJ+kDNB4uYNT5b8c8DLJDg6titg20NIg7E8RWwdWZORW6vUFfrLyG3KQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.46.2': - resolution: {integrity: sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==} + '@rollup/rollup-android-arm64@4.50.0': + resolution: {integrity: sha512-2O73dR4Dc9bp+wSYhviP6sDziurB5/HCym7xILKifWdE9UsOe2FtNcM+I4xZjKrfLJnq5UR8k9riB87gauiQtw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.46.2': - resolution: {integrity: sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==} + '@rollup/rollup-darwin-arm64@4.50.0': + resolution: {integrity: sha512-vwSXQN8T4sKf1RHr1F0s98Pf8UPz7pS6P3LG9NSmuw0TVh7EmaE+5Ny7hJOZ0M2yuTctEsHHRTMi2wuHkdS6Hg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.46.2': - resolution: {integrity: sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==} + '@rollup/rollup-darwin-x64@4.50.0': + resolution: {integrity: sha512-cQp/WG8HE7BCGyFVuzUg0FNmupxC+EPZEwWu2FCGGw5WDT1o2/YlENbm5e9SMvfDFR6FRhVCBePLqj0o8MN7Vw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.46.2': - resolution: {integrity: sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==} + '@rollup/rollup-freebsd-arm64@4.50.0': + resolution: {integrity: sha512-UR1uTJFU/p801DvvBbtDD7z9mQL8J80xB0bR7DqW7UGQHRm/OaKzp4is7sQSdbt2pjjSS72eAtRh43hNduTnnQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.46.2': - resolution: {integrity: sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==} + '@rollup/rollup-freebsd-x64@4.50.0': + resolution: {integrity: sha512-G/DKyS6PK0dD0+VEzH/6n/hWDNPDZSMBmqsElWnCRGrYOb2jC0VSupp7UAHHQ4+QILwkxSMaYIbQ72dktp8pKA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.46.2': - resolution: {integrity: sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==} + '@rollup/rollup-linux-arm-gnueabihf@4.50.0': + resolution: {integrity: sha512-u72Mzc6jyJwKjJbZZcIYmd9bumJu7KNmHYdue43vT1rXPm2rITwmPWF0mmPzLm9/vJWxIRbao/jrQmxTO0Sm9w==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.46.2': - resolution: {integrity: sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==} + '@rollup/rollup-linux-arm-musleabihf@4.50.0': + resolution: {integrity: sha512-S4UefYdV0tnynDJV1mdkNawp0E5Qm2MtSs330IyHgaccOFrwqsvgigUD29uT+B/70PDY1eQ3t40+xf6wIvXJyg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.46.2': - resolution: {integrity: sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==} + '@rollup/rollup-linux-arm64-gnu@4.50.0': + resolution: {integrity: sha512-1EhkSvUQXJsIhk4msxP5nNAUWoB4MFDHhtc4gAYvnqoHlaL9V3F37pNHabndawsfy/Tp7BPiy/aSa6XBYbaD1g==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.46.2': - resolution: {integrity: sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==} + '@rollup/rollup-linux-arm64-musl@4.50.0': + resolution: {integrity: sha512-EtBDIZuDtVg75xIPIK1l5vCXNNCIRM0OBPUG+tbApDuJAy9mKago6QxX+tfMzbCI6tXEhMuZuN1+CU8iDW+0UQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.46.2': - resolution: {integrity: sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==} + '@rollup/rollup-linux-loongarch64-gnu@4.50.0': + resolution: {integrity: sha512-BGYSwJdMP0hT5CCmljuSNx7+k+0upweM2M4YGfFBjnFSZMHOLYR0gEEj/dxyYJ6Zc6AiSeaBY8dWOa11GF/ppQ==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.46.2': - resolution: {integrity: sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==} + '@rollup/rollup-linux-ppc64-gnu@4.50.0': + resolution: {integrity: sha512-I1gSMzkVe1KzAxKAroCJL30hA4DqSi+wGc5gviD0y3IL/VkvcnAqwBf4RHXHyvH66YVHxpKO8ojrgc4SrWAnLg==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.46.2': - resolution: {integrity: sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==} + '@rollup/rollup-linux-riscv64-gnu@4.50.0': + resolution: {integrity: sha512-bSbWlY3jZo7molh4tc5dKfeSxkqnf48UsLqYbUhnkdnfgZjgufLS/NTA8PcP/dnvct5CCdNkABJ56CbclMRYCA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.46.2': - resolution: {integrity: sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==} + '@rollup/rollup-linux-riscv64-musl@4.50.0': + resolution: {integrity: sha512-LSXSGumSURzEQLT2e4sFqFOv3LWZsEF8FK7AAv9zHZNDdMnUPYH3t8ZlaeYYZyTXnsob3htwTKeWtBIkPV27iQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.46.2': - resolution: {integrity: sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==} + '@rollup/rollup-linux-s390x-gnu@4.50.0': + resolution: {integrity: sha512-CxRKyakfDrsLXiCyucVfVWVoaPA4oFSpPpDwlMcDFQvrv3XY6KEzMtMZrA+e/goC8xxp2WSOxHQubP8fPmmjOQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.46.2': - resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==} + '@rollup/rollup-linux-x64-gnu@4.50.0': + resolution: {integrity: sha512-8PrJJA7/VU8ToHVEPu14FzuSAqVKyo5gg/J8xUerMbyNkWkO9j2ExBho/68RnJsMGNJq4zH114iAttgm7BZVkA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.46.2': - resolution: {integrity: sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==} + '@rollup/rollup-linux-x64-musl@4.50.0': + resolution: {integrity: sha512-SkE6YQp+CzpyOrbw7Oc4MgXFvTw2UIBElvAvLCo230pyxOLmYwRPwZ/L5lBe/VW/qT1ZgND9wJfOsdy0XptRvw==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.46.2': - resolution: {integrity: sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==} + '@rollup/rollup-openharmony-arm64@4.50.0': + resolution: {integrity: sha512-PZkNLPfvXeIOgJWA804zjSFH7fARBBCpCXxgkGDRjjAhRLOR8o0IGS01ykh5GYfod4c2yiiREuDM8iZ+pVsT+Q==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.50.0': + resolution: {integrity: sha512-q7cIIdFvWQoaCbLDUyUc8YfR3Jh2xx3unO8Dn6/TTogKjfwrax9SyfmGGK6cQhKtjePI7jRfd7iRYcxYs93esg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.46.2': - resolution: {integrity: sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==} + '@rollup/rollup-win32-ia32-msvc@4.50.0': + resolution: {integrity: sha512-XzNOVg/YnDOmFdDKcxxK410PrcbcqZkBmz+0FicpW5jtjKQxcW1BZJEQOF0NJa6JO7CZhett8GEtRN/wYLYJuw==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.46.2': - resolution: {integrity: sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==} + '@rollup/rollup-win32-x64-msvc@4.50.0': + resolution: {integrity: sha512-xMmiWRR8sp72Zqwjgtf3QbZfF1wdh8X2ABu3EaozvZcyHJeU0r+XAnXdKgs4cCAp6ORoYoCygipYP1mjmbjrsg==} cpu: [x64] os: [win32] @@ -808,8 +813,8 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - '@stylistic/eslint-plugin@5.2.3': - resolution: {integrity: sha512-oY7GVkJGVMI5benlBDCaRrSC1qPasafyv5dOBLLv5MTilMGnErKhO6ziEfodDDIZbo5QxPUNW360VudJOFODMw==} + '@stylistic/eslint-plugin@5.3.1': + resolution: {integrity: sha512-Ykums1VYonM0TgkD0VteVq9mrlO2FhF48MDJnPyv3MktIB2ydtuhlO0AfWm7xnW1kyf5bjOqA6xc7JjviuVTxg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=9.0.0' @@ -844,8 +849,8 @@ packages: '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} - '@types/node@24.2.1': - resolution: {integrity: sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ==} + '@types/node@24.3.0': + resolution: {integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -856,63 +861,63 @@ packages: '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} - '@typescript-eslint/eslint-plugin@8.39.1': - resolution: {integrity: sha512-yYegZ5n3Yr6eOcqgj2nJH8cH/ZZgF+l0YIdKILSDjYFRjgYQMgv/lRjV5Z7Up04b9VYUondt8EPMqg7kTWgJ2g==} + '@typescript-eslint/eslint-plugin@8.42.0': + resolution: {integrity: sha512-Aq2dPqsQkxHOLfb2OPv43RnIvfj05nw8v/6n3B2NABIPpHnjQnaLo9QGMTvml+tv4korl/Cjfrb/BYhoL8UUTQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.39.1 + '@typescript-eslint/parser': ^8.42.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.39.1': - resolution: {integrity: sha512-pUXGCuHnnKw6PyYq93lLRiZm3vjuslIy7tus1lIQTYVK9bL8XBgJnCWm8a0KcTtHC84Yya1Q6rtll+duSMj0dg==} + '@typescript-eslint/parser@8.42.0': + resolution: {integrity: sha512-r1XG74QgShUgXph1BYseJ+KZd17bKQib/yF3SR+demvytiRXrwd12Blnz5eYGm8tXaeRdd4x88MlfwldHoudGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.39.1': - resolution: {integrity: sha512-8fZxek3ONTwBu9ptw5nCKqZOSkXshZB7uAxuFF0J/wTMkKydjXCzqqga7MlFMpHi9DoG4BadhmTkITBcg8Aybw==} + '@typescript-eslint/project-service@8.42.0': + resolution: {integrity: sha512-vfVpLHAhbPjilrabtOSNcUDmBboQNrJUiNAGoImkZKnMjs2TIcWG33s4Ds0wY3/50aZmTMqJa6PiwkwezaAklg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.39.1': - resolution: {integrity: sha512-RkBKGBrjgskFGWuyUGz/EtD8AF/GW49S21J8dvMzpJitOF1slLEbbHnNEtAHtnDAnx8qDEdRrULRnWVx27wGBw==} + '@typescript-eslint/scope-manager@8.42.0': + resolution: {integrity: sha512-51+x9o78NBAVgQzOPd17DkNTnIzJ8T/O2dmMBLoK9qbY0Gm52XJcdJcCl18ExBMiHo6jPMErUQWUv5RLE51zJw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.39.1': - resolution: {integrity: sha512-ePUPGVtTMR8XMU2Hee8kD0Pu4NDE1CN9Q1sxGSGd/mbOtGZDM7pnhXNJnzW63zk/q+Z54zVzj44HtwXln5CvHA==} + '@typescript-eslint/tsconfig-utils@8.42.0': + resolution: {integrity: sha512-kHeFUOdwAJfUmYKjR3CLgZSglGHjbNTi1H8sTYRYV2xX6eNz4RyJ2LIgsDLKf8Yi0/GL1WZAC/DgZBeBft8QAQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.39.1': - resolution: {integrity: sha512-gu9/ahyatyAdQbKeHnhT4R+y3YLtqqHyvkfDxaBYk97EcbfChSJXyaJnIL3ygUv7OuZatePHmQvuH5ru0lnVeA==} + '@typescript-eslint/type-utils@8.42.0': + resolution: {integrity: sha512-9KChw92sbPTYVFw3JLRH1ockhyR3zqqn9lQXol3/YbI6jVxzWoGcT3AsAW0mu1MY0gYtsXnUGV/AKpkAj5tVlQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.39.1': - resolution: {integrity: sha512-7sPDKQQp+S11laqTrhHqeAbsCfMkwJMrV7oTDvtDds4mEofJYir414bYKUEb8YPUm9QL3U+8f6L6YExSoAGdQw==} + '@typescript-eslint/types@8.42.0': + resolution: {integrity: sha512-LdtAWMiFmbRLNP7JNeY0SqEtJvGMYSzfiWBSmx+VSZ1CH+1zyl8Mmw1TT39OrtsRvIYShjJWzTDMPWZJCpwBlw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.39.1': - resolution: {integrity: sha512-EKkpcPuIux48dddVDXyQBlKdeTPMmALqBUbEk38McWv0qVEZwOpVJBi7ugK5qVNgeuYjGNQxrrnoM/5+TI/BPw==} + '@typescript-eslint/typescript-estree@8.42.0': + resolution: {integrity: sha512-ku/uYtT4QXY8sl9EDJETD27o3Ewdi72hcXg1ah/kkUgBvAYHLwj2ofswFFNXS+FL5G+AGkxBtvGt8pFBHKlHsQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.39.1': - resolution: {integrity: sha512-VF5tZ2XnUSTuiqZFXCZfZs1cgkdd3O/sSYmdo2EpSyDlC86UM/8YytTmKnehOW3TGAlivqTDT6bS87B/GQ/jyg==} + '@typescript-eslint/utils@8.42.0': + resolution: {integrity: sha512-JnIzu7H3RH5BrKC4NoZqRfmjqCIS1u3hGZltDYJgkVdqAezl4L9d1ZLw+36huCujtSBSAirGINF/S4UxOcR+/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.39.1': - resolution: {integrity: sha512-W8FQi6kEh2e8zVhQ0eeRnxdvIoOkAp/CPAahcNio6nO9dsIwb9b34z90KOlheoyuVf6LSOEdjlkxSkapNEc+4A==} + '@typescript-eslint/visitor-keys@8.42.0': + resolution: {integrity: sha512-3WbiuzoEowaEn8RSnhJBrxSwX8ULYE9CXaPepS2C2W3NSA5NNIvBaslpBSBElPq0UGr0xVJlXFWOAKIkyylydQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -1058,17 +1063,17 @@ packages: '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} - '@vue/compiler-core@3.5.18': - resolution: {integrity: sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==} + '@vue/compiler-core@3.5.21': + resolution: {integrity: sha512-8i+LZ0vf6ZgII5Z9XmUvrCyEzocvWT+TeR2VBUVlzIH6Tyv57E20mPZ1bCS+tbejgUgmjrEh7q/0F0bibskAmw==} - '@vue/compiler-dom@3.5.18': - resolution: {integrity: sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==} + '@vue/compiler-dom@3.5.21': + resolution: {integrity: sha512-jNtbu/u97wiyEBJlJ9kmdw7tAr5Vy0Aj5CgQmo+6pxWNQhXZDPsRr1UWPN4v3Zf82s2H3kF51IbzZ4jMWAgPlQ==} - '@vue/compiler-sfc@3.5.18': - resolution: {integrity: sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA==} + '@vue/compiler-sfc@3.5.21': + resolution: {integrity: sha512-SXlyk6I5eUGBd2v8Ie7tF6ADHE9kCR6mBEuPyH1nUZ0h6Xx6nZI29i12sJKQmzbDyr2tUHMhhTt51Z6blbkTTQ==} - '@vue/compiler-ssr@3.5.18': - resolution: {integrity: sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g==} + '@vue/compiler-ssr@3.5.21': + resolution: {integrity: sha512-vKQ5olH5edFZdf5ZrlEgSO1j1DMA4u23TVK5XR1uMhvwnYvVdDF0nHXJUblL/GvzlShQbjhZZ2uvYmDlAbgo9w==} '@vue/devtools-api@7.7.7': resolution: {integrity: sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==} @@ -1079,22 +1084,22 @@ packages: '@vue/devtools-shared@7.7.7': resolution: {integrity: sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==} - '@vue/reactivity@3.5.18': - resolution: {integrity: sha512-x0vPO5Imw+3sChLM5Y+B6G1zPjwdOri9e8V21NnTnlEvkxatHEH5B5KEAJcjuzQ7BsjGrKtfzuQ5eQwXh8HXBg==} + '@vue/reactivity@3.5.21': + resolution: {integrity: sha512-3ah7sa+Cwr9iiYEERt9JfZKPw4A2UlbY8RbbnH2mGCE8NwHkhmlZt2VsH0oDA3P08X3jJd29ohBDtX+TbD9AsA==} - '@vue/runtime-core@3.5.18': - resolution: {integrity: sha512-DUpHa1HpeOQEt6+3nheUfqVXRog2kivkXHUhoqJiKR33SO4x+a5uNOMkV487WPerQkL0vUuRvq/7JhRgLW3S+w==} + '@vue/runtime-core@3.5.21': + resolution: {integrity: sha512-+DplQlRS4MXfIf9gfD1BOJpk5RSyGgGXD/R+cumhe8jdjUcq/qlxDawQlSI8hCKupBlvM+3eS1se5xW+SuNAwA==} - '@vue/runtime-dom@3.5.18': - resolution: {integrity: sha512-YwDj71iV05j4RnzZnZtGaXwPoUWeRsqinblgVJwR8XTXYZ9D5PbahHQgsbmzUvCWNF6x7siQ89HgnX5eWkr3mw==} + '@vue/runtime-dom@3.5.21': + resolution: {integrity: sha512-3M2DZsOFwM5qI15wrMmNF5RJe1+ARijt2HM3TbzBbPSuBHOQpoidE+Pa+XEaVN+czbHf81ETRoG1ltztP2em8w==} - '@vue/server-renderer@3.5.18': - resolution: {integrity: sha512-PvIHLUoWgSbDG7zLHqSqaCoZvHi6NNmfVFOqO+OnwvqMz/tqQr3FuGWS8ufluNddk7ZLBJYMrjcw1c6XzR12mA==} + '@vue/server-renderer@3.5.21': + resolution: {integrity: sha512-qr8AqgD3DJPJcGvLcJKQo2tAc8OnXRcfxhOJCPF+fcfn5bBGz7VCcO7t+qETOPxpWK1mgysXvVT/j+xWaHeMWA==} peerDependencies: - vue: 3.5.18 + vue: 3.5.21 - '@vue/shared@3.5.18': - resolution: {integrity: sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==} + '@vue/shared@3.5.21': + resolution: {integrity: sha512-+2k1EQpnYuVuu3N7atWyG3/xoFWIVJZq4Mz8XNOdScFI0etES75fbny/oU4lKWk/577P1zmg0ioYvpGEDZ3DLw==} '@vueuse/core@12.8.2': resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==} @@ -1159,16 +1164,16 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - algoliasearch@5.35.0: - resolution: {integrity: sha512-Y+moNhsqgLmvJdgTsO4GZNgsaDWv8AOGAaPeIeHKlDn/XunoAqYbA+XNpBd1dW8GOXAUDyxC9Rxc7AV4kpFcIg==} + algoliasearch@5.36.0: + resolution: {integrity: sha512-FpwQ+p4x4RIsWnPj2z9idOC70T90ga7Oeh8BURSFKpqp5lITRsgkIj/bwYj2bY5xbyD7uBuP9AZRnM5EV20WOw==} engines: {node: '>= 14.0.0'} ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + ansi-regex@6.2.0: + resolution: {integrity: sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==} engines: {node: '>=12'} ansi-styles@4.3.0: @@ -1186,8 +1191,8 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - ast-v8-to-istanbul@0.3.4: - resolution: {integrity: sha512-cxrAnZNLBnQwBPByK4CeDaw5sWZtMilJE/Q3iDA0aamgaIVNDF9T6K2/8DfYDZEejZ2jNnDrG9m8MY72HFd0KA==} + ast-v8-to-istanbul@0.3.5: + resolution: {integrity: sha512-9SdXjNheSiE8bALAQCQQuT6fgQaoxJh7IRYrRGZ8/9nv8WhJeC1aXAwN8TbaOssGOukUvyvnkgD9+Yuykvl1aA==} autoprefixer@10.4.21: resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} @@ -1215,8 +1220,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.25.2: - resolution: {integrity: sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA==} + browserslist@4.25.4: + resolution: {integrity: sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1243,14 +1248,14 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001734: - resolution: {integrity: sha512-uhE1Ye5vgqju6OI71HTQqcBCZrvHugk0MjLak7Q+HfoBgoq5Bi+5YnwjP4fjDgrtYr/l8MVRBvzz9dPD4KyK0A==} + caniuse-lite@1.0.30001739: + resolution: {integrity: sha512-y+j60d6ulelrNSwpPyrHdl+9mJnQzHBr08xm48Qno0nSk4h3Qojh+ziv2qE6rXf4k3tadF4o1J/1tAbVm1NtnA==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@5.2.1: - resolution: {integrity: sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==} + chai@5.3.3: + resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} engines: {node: '>=18'} chalk@4.1.2: @@ -1352,8 +1357,8 @@ packages: engines: {node: '>=4'} hasBin: true - cssnano-preset-default@7.0.8: - resolution: {integrity: sha512-d+3R2qwrUV3g4LEMOjnndognKirBZISylDZAF/TPeCWVjEwlXS2e4eN4ICkoobRe7pD3H6lltinKVyS1AJhdjQ==} + cssnano-preset-default@7.0.9: + resolution: {integrity: sha512-tCD6AAFgYBOVpMBX41KjbvRh9c2uUjLXRyV7KHSIrwHiq5Z9o0TFfUCoM3TwVrRsRteN3sVXGNvjVNxYzkpTsA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -1364,8 +1369,8 @@ packages: peerDependencies: postcss: ^8.4.32 - cssnano@7.1.0: - resolution: {integrity: sha512-Pu3rlKkd0ZtlCUzBrKL1Z4YmhKppjC1H9jo7u1o4qaKqyhvixFgu5qLyNIAOjSTg9DjVPtUqdROq2EfpVMEe+w==} + cssnano@7.1.1: + resolution: {integrity: sha512-fm4D8ti0dQmFPeF8DXSAA//btEmqCOgAc/9Oa3C1LW94h5usNrJEfrON7b4FkPZgnDEn6OUs5NdxiJZmAtGOpQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -1442,8 +1447,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.200: - resolution: {integrity: sha512-rFCxROw7aOe4uPTfIAx+rXv9cEcGx+buAF4npnhtTqCJk5KDFRnh3+KYj7rdVh6lsFt5/aPs+Irj9rZ33WMA7w==} + electron-to-chromium@1.5.212: + resolution: {integrity: sha512-gE7ErIzSW+d8jALWMcOIgf+IB6lpfsg6NwOhPVwKzDtN2qcBix47vlin4yzSregYDxTCXOUqAZjVY/Z3naS7ww==} emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -1466,8 +1471,8 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.25.8: - resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} + esbuild@0.25.9: + resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==} engines: {node: '>=18'} hasBin: true @@ -1513,8 +1518,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.33.0: - resolution: {integrity: sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==} + eslint@9.34.0: + resolution: {integrity: sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -1572,8 +1577,9 @@ packages: fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - fdir@6.4.6: - resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -1748,8 +1754,8 @@ packages: resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} engines: {node: '>=10'} - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} jackspeak@3.4.3: @@ -1802,8 +1808,8 @@ packages: linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - local-pkg@1.1.1: - resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==} + local-pkg@1.1.2: + resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} engines: {node: '>=14'} locate-path@6.0.0: @@ -1819,14 +1825,14 @@ packages: lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - loupe@3.2.0: - resolution: {integrity: sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==} + loupe@3.2.1: + resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + magic-string@0.30.18: + resolution: {integrity: sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==} magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} @@ -1919,8 +1925,8 @@ packages: vue-tsc: optional: true - mlly@1.7.4: - resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} @@ -2034,8 +2040,8 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - pkg-types@2.2.0: - resolution: {integrity: sha512-2SM/GZGAEkPp3KWORxQZns4M+WSeXbC2HEvmOIJe3Cmiv6ieAJvdVhDldtHqM5J1Y7MrR1XhkBT/rMlhh9FdqQ==} + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} postcss-calc@10.1.1: resolution: {integrity: sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==} @@ -2049,8 +2055,8 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-convert-values@7.0.6: - resolution: {integrity: sha512-MD/eb39Mr60hvgrqpXsgbiqluawYg/8K4nKsqRsuDX9f+xN1j6awZCUv/5tLH8ak3vYp/EMXwdcnXvfZYiejCQ==} + postcss-convert-values@7.0.7: + resolution: {integrity: sha512-HR9DZLN04Xbe6xugRH6lS4ZQH2zm/bFh/ZyRkpedZozhvh+awAfbA0P36InO4fZfDhvYfNJeNvlTf1sjwGbw/A==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -2216,15 +2222,15 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} - preact@10.27.0: - resolution: {integrity: sha512-/DTYoB6mwwgPytiqQTh/7SFRL98ZdiD8Sk8zIUVOxtwq4oWcwrcd1uno9fE/zZmUaUrFNYzbH14CPebOz9tZQw==} + preact@10.27.1: + resolution: {integrity: sha512-V79raXEWch/rbqoNc7nT9E4ep7lu+mI3+sBmfRD4i1M73R3WLYcCtdI0ibxGVf4eQL8ZIz2nFacqEC+rmnOORQ==} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - pretty-bytes@7.0.0: - resolution: {integrity: sha512-U5otLYPR3L0SVjHGrkEUx5mf7MxV2ceXeE7VwWPk+hyzC5drNohsOGNPDZqxCqyX1lkbEN4kl1LiI8QFd7r0ZA==} + pretty-bytes@7.0.1: + resolution: {integrity: sha512-285/jRCYIbMGDciDdrw0KPNC4LKEEwz/bwErcYNxSJOi4CpGUuLpb9gQpg3XJP0XYj9ldSRluXxih4lX2YN8Xw==} engines: {node: '>=20'} property-information@7.1.0: @@ -2238,8 +2244,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - quansync@0.2.10: - resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -2279,15 +2285,15 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rollup-plugin-dts@6.2.1: - resolution: {integrity: sha512-sR3CxYUl7i2CHa0O7bA45mCrgADyAQ0tVtGSqi3yvH28M+eg1+g5d7kQ9hLvEz5dorK3XVsH5L2jwHLQf72DzA==} + rollup-plugin-dts@6.2.3: + resolution: {integrity: sha512-UgnEsfciXSPpASuOelix7m4DrmyQgiaWBnvI0TM4GxuDh5FkqW8E5hu57bCxXB90VvR1WNfLV80yEDN18UogSA==} engines: {node: '>=16'} peerDependencies: rollup: ^3.29.4 || ^4 typescript: ^4.5 || ^5.0 - rollup@4.46.2: - resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==} + rollup@4.50.0: + resolution: {integrity: sha512-/Zl4D8zPifNmyGzJS+3kVoyXeDeT/GrsJM94sACNg9RtUE0hrHa1bNPtRSrfHTMH5HjRzce6K7rlTh3Khiw+pw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2463,11 +2469,11 @@ packages: ufo@1.6.1: resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} - unbuild@3.6.0: - resolution: {integrity: sha512-vWwKMo2bZS9jbMWO7n51nQvKCRUM3WmONA6+k4z0Ttfkkhh6q1DV/JhKkd58d61eeN9UoTGechlAxXvm11sghw==} + unbuild@3.6.1: + resolution: {integrity: sha512-+U5CdtrdjfWkZhuO4N9l5UhyiccoeMEXIc2Lbs30Haxb+tRwB3VwB8AoZRxlAzORXunenSo+j6lh45jx+xkKgg==} hasBin: true peerDependencies: - typescript: ^5.8.3 + typescript: ^5.9.2 peerDependenciesMeta: typescript: optional: true @@ -2551,8 +2557,8 @@ packages: terser: optional: true - vite@7.1.1: - resolution: {integrity: sha512-yJ+Mp7OyV+4S+afWo+QyoL9jFWD11QFH0i5i7JypnfTcA1rmgxCbiA8WwAICDEtZ1Z1hzrVhN8R8rGTqkTY8ZQ==} + vite@7.1.4: + resolution: {integrity: sha512-X5QFK4SGynAeeIt+A7ZWnApdUyHYm+pzv/8/A57LqSGcI88U6R6ipOs3uCesdc6yl7nl+zNO0t8LmqAdXcQihw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -2591,8 +2597,8 @@ packages: yaml: optional: true - vitepress-plugin-group-icons@1.6.2: - resolution: {integrity: sha512-soDdxP/OnDJqcAFT+ilrZ08Em1xVQXDF5gM+iHVTOmA0kJ5baaglckkjAX90MuPmcBszbJah1XTHRxkkIj7gMQ==} + vitepress-plugin-group-icons@1.6.3: + resolution: {integrity: sha512-bvPD4lhraLJw3rPtLhUIVsOvNfnHnF+F1LH7BKHekEzeZ4uqdTdqnwEyaT580AoKjjT6/F8En6hVJj7takPKDA==} peerDependencies: markdown-it: '>=14' vite: '>=3' @@ -2637,8 +2643,8 @@ packages: jsdom: optional: true - vue@3.5.18: - resolution: {integrity: sha512-7W4Y4ZbMiQ3SEo+m9lnoNpV9xG7QVMLa+/0RFwwiAVkeYoyGXqWE85jabU4pllJNUzqfLShJ5YLptewhCWUgNA==} + vue@3.5.21: + resolution: {integrity: sha512-xxf9rum9KtOdwdRkiApWL+9hZEMWE90FHh8yS1+KJAiWYh+iGWV1FquPjoO9VUHQ+VIhsCXNNyZ5Sf4++RVZBA==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -2680,122 +2686,122 @@ packages: snapshots: - '@algolia/abtesting@1.1.0': + '@algolia/abtesting@1.2.0': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.36.0 + '@algolia/requester-browser-xhr': 5.36.0 + '@algolia/requester-fetch': 5.36.0 + '@algolia/requester-node-http': 5.36.0 - '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3)': + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)': + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0) - '@algolia/client-search': 5.35.0 - algoliasearch: 5.35.0 + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0) + '@algolia/client-search': 5.36.0 + algoliasearch: 5.36.0 - '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)': + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0)': dependencies: - '@algolia/client-search': 5.35.0 - algoliasearch: 5.35.0 + '@algolia/client-search': 5.36.0 + algoliasearch: 5.36.0 - '@algolia/client-abtesting@5.35.0': + '@algolia/client-abtesting@5.36.0': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.36.0 + '@algolia/requester-browser-xhr': 5.36.0 + '@algolia/requester-fetch': 5.36.0 + '@algolia/requester-node-http': 5.36.0 - '@algolia/client-analytics@5.35.0': + '@algolia/client-analytics@5.36.0': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.36.0 + '@algolia/requester-browser-xhr': 5.36.0 + '@algolia/requester-fetch': 5.36.0 + '@algolia/requester-node-http': 5.36.0 - '@algolia/client-common@5.35.0': {} + '@algolia/client-common@5.36.0': {} - '@algolia/client-insights@5.35.0': + '@algolia/client-insights@5.36.0': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.36.0 + '@algolia/requester-browser-xhr': 5.36.0 + '@algolia/requester-fetch': 5.36.0 + '@algolia/requester-node-http': 5.36.0 - '@algolia/client-personalization@5.35.0': + '@algolia/client-personalization@5.36.0': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.36.0 + '@algolia/requester-browser-xhr': 5.36.0 + '@algolia/requester-fetch': 5.36.0 + '@algolia/requester-node-http': 5.36.0 - '@algolia/client-query-suggestions@5.35.0': + '@algolia/client-query-suggestions@5.36.0': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.36.0 + '@algolia/requester-browser-xhr': 5.36.0 + '@algolia/requester-fetch': 5.36.0 + '@algolia/requester-node-http': 5.36.0 - '@algolia/client-search@5.35.0': + '@algolia/client-search@5.36.0': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.36.0 + '@algolia/requester-browser-xhr': 5.36.0 + '@algolia/requester-fetch': 5.36.0 + '@algolia/requester-node-http': 5.36.0 - '@algolia/ingestion@1.35.0': + '@algolia/ingestion@1.36.0': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.36.0 + '@algolia/requester-browser-xhr': 5.36.0 + '@algolia/requester-fetch': 5.36.0 + '@algolia/requester-node-http': 5.36.0 - '@algolia/monitoring@1.35.0': + '@algolia/monitoring@1.36.0': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.36.0 + '@algolia/requester-browser-xhr': 5.36.0 + '@algolia/requester-fetch': 5.36.0 + '@algolia/requester-node-http': 5.36.0 - '@algolia/recommend@5.35.0': + '@algolia/recommend@5.36.0': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.36.0 + '@algolia/requester-browser-xhr': 5.36.0 + '@algolia/requester-fetch': 5.36.0 + '@algolia/requester-node-http': 5.36.0 - '@algolia/requester-browser-xhr@5.35.0': + '@algolia/requester-browser-xhr@5.36.0': dependencies: - '@algolia/client-common': 5.35.0 + '@algolia/client-common': 5.36.0 - '@algolia/requester-fetch@5.35.0': + '@algolia/requester-fetch@5.36.0': dependencies: - '@algolia/client-common': 5.35.0 + '@algolia/client-common': 5.36.0 - '@algolia/requester-node-http@5.35.0': + '@algolia/requester-node-http@5.36.0': dependencies: - '@algolia/client-common': 5.35.0 + '@algolia/client-common': 5.36.0 '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.30 '@antfu/install-pkg@1.1.0': dependencies: @@ -2815,7 +2821,7 @@ snapshots: '@babel/helper-validator-identifier@7.27.1': {} - '@babel/parser@7.28.0': + '@babel/parser@7.28.3': dependencies: '@babel/types': 7.28.2 @@ -2828,10 +2834,10 @@ snapshots: '@docsearch/css@3.8.2': {} - '@docsearch/js@3.8.2(@algolia/client-search@5.35.0)(search-insights@2.17.3)': + '@docsearch/js@3.8.2(@algolia/client-search@5.36.0)(search-insights@2.17.3)': dependencies: - '@docsearch/react': 3.8.2(@algolia/client-search@5.35.0)(search-insights@2.17.3) - preact: 10.27.0 + '@docsearch/react': 3.8.2(@algolia/client-search@5.36.0)(search-insights@2.17.3) + preact: 10.27.1 transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -2839,29 +2845,29 @@ snapshots: - react-dom - search-insights - '@docsearch/react@3.8.2(@algolia/client-search@5.35.0)(search-insights@2.17.3)': + '@docsearch/react@3.8.2(@algolia/client-search@5.36.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0) + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0) '@docsearch/css': 3.8.2 - algoliasearch: 5.35.0 + algoliasearch: 5.36.0 optionalDependencies: search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - '@emnapi/core@1.4.5': + '@emnapi/core@1.5.0': dependencies: - '@emnapi/wasi-threads': 1.0.4 + '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.4.5': + '@emnapi/runtime@1.5.0': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.0.4': + '@emnapi/wasi-threads@1.1.0': dependencies: tslib: 2.8.1 optional: true @@ -2869,160 +2875,160 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.25.8': + '@esbuild/aix-ppc64@0.25.9': optional: true '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.25.8': + '@esbuild/android-arm64@0.25.9': optional: true '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.25.8': + '@esbuild/android-arm@0.25.9': optional: true '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.25.8': + '@esbuild/android-x64@0.25.9': optional: true '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.25.8': + '@esbuild/darwin-arm64@0.25.9': optional: true '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.25.8': + '@esbuild/darwin-x64@0.25.9': optional: true '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.25.8': + '@esbuild/freebsd-arm64@0.25.9': optional: true '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.25.8': + '@esbuild/freebsd-x64@0.25.9': optional: true '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.25.8': + '@esbuild/linux-arm64@0.25.9': optional: true '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.25.8': + '@esbuild/linux-arm@0.25.9': optional: true '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.25.8': + '@esbuild/linux-ia32@0.25.9': optional: true '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.25.8': + '@esbuild/linux-loong64@0.25.9': optional: true '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.25.8': + '@esbuild/linux-mips64el@0.25.9': optional: true '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.25.8': + '@esbuild/linux-ppc64@0.25.9': optional: true '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.25.8': + '@esbuild/linux-riscv64@0.25.9': optional: true '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.25.8': + '@esbuild/linux-s390x@0.25.9': optional: true '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.25.8': + '@esbuild/linux-x64@0.25.9': optional: true - '@esbuild/netbsd-arm64@0.25.8': + '@esbuild/netbsd-arm64@0.25.9': optional: true '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.25.8': + '@esbuild/netbsd-x64@0.25.9': optional: true - '@esbuild/openbsd-arm64@0.25.8': + '@esbuild/openbsd-arm64@0.25.9': optional: true '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.25.8': + '@esbuild/openbsd-x64@0.25.9': optional: true - '@esbuild/openharmony-arm64@0.25.8': + '@esbuild/openharmony-arm64@0.25.9': optional: true '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.25.8': + '@esbuild/sunos-x64@0.25.9': optional: true '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.25.8': + '@esbuild/win32-arm64@0.25.9': optional: true '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.25.8': + '@esbuild/win32-ia32@0.25.9': optional: true '@esbuild/win32-x64@0.21.5': optional: true - '@esbuild/win32-x64@0.25.8': + '@esbuild/win32-x64@0.25.9': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.33.0(jiti@2.5.1))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.34.0(jiti@2.5.1))': dependencies: - eslint: 9.33.0(jiti@2.5.1) + eslint: 9.34.0(jiti@2.5.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.3.2(eslint@9.33.0(jiti@2.5.1))': + '@eslint/compat@1.3.2(eslint@9.34.0(jiti@2.5.1))': optionalDependencies: - eslint: 9.33.0(jiti@2.5.1) + eslint: 9.34.0(jiti@2.5.1) '@eslint/config-array@0.21.0': dependencies: @@ -3052,7 +3058,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.33.0': {} + '@eslint/js@9.34.0': {} '@eslint/object-schema@2.1.6': {} @@ -3078,11 +3084,11 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify-json/simple-icons@1.2.47': + '@iconify-json/simple-icons@1.2.50': dependencies: '@iconify/types': 2.0.0 - '@iconify-json/vscode-icons@1.2.29': + '@iconify-json/vscode-icons@1.2.30': dependencies: '@iconify/types': 2.0.0 @@ -3096,8 +3102,8 @@ snapshots: debug: 4.4.1 globals: 15.15.0 kolorist: 1.8.0 - local-pkg: 1.1.1 - mlly: 1.7.4 + local-pkg: 1.1.2 + mlly: 1.8.0 transitivePeerDependencies: - supports-color @@ -3118,24 +3124,24 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@jridgewell/gen-mapping@0.3.12': + '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.30 '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/sourcemap-codec@1.5.4': {} + '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/trace-mapping@0.3.29': + '@jridgewell/trace-mapping@0.3.30': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@emnapi/core': 1.4.5 - '@emnapi/runtime': 1.4.5 + '@emnapi/core': 1.5.0 + '@emnapi/runtime': 1.5.0 '@tybys/wasm-util': 0.10.0 optional: true @@ -3154,111 +3160,114 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@rollup/plugin-alias@5.1.1(rollup@4.46.2)': + '@rollup/plugin-alias@5.1.1(rollup@4.50.0)': optionalDependencies: - rollup: 4.46.2 + rollup: 4.50.0 - '@rollup/plugin-commonjs@28.0.6(rollup@4.46.2)': + '@rollup/plugin-commonjs@28.0.6(rollup@4.50.0)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.46.2) + '@rollup/pluginutils': 5.2.0(rollup@4.50.0) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.4.6(picomatch@4.0.3) + fdir: 6.5.0(picomatch@4.0.3) is-reference: 1.2.1 - magic-string: 0.30.17 + magic-string: 0.30.18 picomatch: 4.0.3 optionalDependencies: - rollup: 4.46.2 + rollup: 4.50.0 - '@rollup/plugin-json@6.1.0(rollup@4.46.2)': + '@rollup/plugin-json@6.1.0(rollup@4.50.0)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.46.2) + '@rollup/pluginutils': 5.2.0(rollup@4.50.0) optionalDependencies: - rollup: 4.46.2 + rollup: 4.50.0 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.46.2)': + '@rollup/plugin-node-resolve@16.0.1(rollup@4.50.0)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.46.2) + '@rollup/pluginutils': 5.2.0(rollup@4.50.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.46.2 + rollup: 4.50.0 - '@rollup/plugin-replace@6.0.2(rollup@4.46.2)': + '@rollup/plugin-replace@6.0.2(rollup@4.50.0)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.46.2) - magic-string: 0.30.17 + '@rollup/pluginutils': 5.2.0(rollup@4.50.0) + magic-string: 0.30.18 optionalDependencies: - rollup: 4.46.2 + rollup: 4.50.0 - '@rollup/pluginutils@5.2.0(rollup@4.46.2)': + '@rollup/pluginutils@5.2.0(rollup@4.50.0)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.46.2 + rollup: 4.50.0 + + '@rollup/rollup-android-arm-eabi@4.50.0': + optional: true - '@rollup/rollup-android-arm-eabi@4.46.2': + '@rollup/rollup-android-arm64@4.50.0': optional: true - '@rollup/rollup-android-arm64@4.46.2': + '@rollup/rollup-darwin-arm64@4.50.0': optional: true - '@rollup/rollup-darwin-arm64@4.46.2': + '@rollup/rollup-darwin-x64@4.50.0': optional: true - '@rollup/rollup-darwin-x64@4.46.2': + '@rollup/rollup-freebsd-arm64@4.50.0': optional: true - '@rollup/rollup-freebsd-arm64@4.46.2': + '@rollup/rollup-freebsd-x64@4.50.0': optional: true - '@rollup/rollup-freebsd-x64@4.46.2': + '@rollup/rollup-linux-arm-gnueabihf@4.50.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.46.2': + '@rollup/rollup-linux-arm-musleabihf@4.50.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.46.2': + '@rollup/rollup-linux-arm64-gnu@4.50.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.46.2': + '@rollup/rollup-linux-arm64-musl@4.50.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.46.2': + '@rollup/rollup-linux-loongarch64-gnu@4.50.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.46.2': + '@rollup/rollup-linux-ppc64-gnu@4.50.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.46.2': + '@rollup/rollup-linux-riscv64-gnu@4.50.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.46.2': + '@rollup/rollup-linux-riscv64-musl@4.50.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.46.2': + '@rollup/rollup-linux-s390x-gnu@4.50.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.46.2': + '@rollup/rollup-linux-x64-gnu@4.50.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.46.2': + '@rollup/rollup-linux-x64-musl@4.50.0': optional: true - '@rollup/rollup-linux-x64-musl@4.46.2': + '@rollup/rollup-openharmony-arm64@4.50.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.46.2': + '@rollup/rollup-win32-arm64-msvc@4.50.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.46.2': + '@rollup/rollup-win32-ia32-msvc@4.50.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.46.2': + '@rollup/rollup-win32-x64-msvc@4.50.0': optional: true '@shikijs/core@2.5.0': @@ -3301,11 +3310,11 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} - '@stylistic/eslint-plugin@5.2.3(eslint@9.33.0(jiti@2.5.1))': + '@stylistic/eslint-plugin@5.3.1(eslint@9.34.0(jiti@2.5.1))': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.5.1)) - '@typescript-eslint/types': 8.39.1 - eslint: 9.33.0(jiti@2.5.1) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1)) + '@typescript-eslint/types': 8.42.0 + eslint: 9.34.0(jiti@2.5.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -3343,7 +3352,7 @@ snapshots: '@types/mdurl@2.0.0': {} - '@types/node@24.2.1': + '@types/node@24.3.0': dependencies: undici-types: 7.10.0 @@ -3353,15 +3362,15 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript-eslint/eslint-plugin@8.39.1(@typescript-eslint/parser@8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.39.1 - '@typescript-eslint/type-utils': 8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.39.1 - eslint: 9.33.0(jiti@2.5.1) + '@typescript-eslint/parser': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.42.0 + '@typescript-eslint/type-utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.42.0 + eslint: 9.34.0(jiti@2.5.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -3370,56 +3379,56 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.39.1 - '@typescript-eslint/types': 8.39.1 - '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.39.1 + '@typescript-eslint/scope-manager': 8.42.0 + '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.42.0 debug: 4.4.1 - eslint: 9.33.0(jiti@2.5.1) + eslint: 9.34.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.39.1(typescript@5.9.2)': + '@typescript-eslint/project-service@8.42.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.39.1(typescript@5.9.2) - '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2) + '@typescript-eslint/types': 8.42.0 debug: 4.4.1 typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.39.1': + '@typescript-eslint/scope-manager@8.42.0': dependencies: - '@typescript-eslint/types': 8.39.1 - '@typescript-eslint/visitor-keys': 8.39.1 + '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/visitor-keys': 8.42.0 - '@typescript-eslint/tsconfig-utils@8.39.1(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.42.0(typescript@5.9.2)': dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.39.1 - '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.9.2) - '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) debug: 4.4.1 - eslint: 9.33.0(jiti@2.5.1) + eslint: 9.34.0(jiti@2.5.1) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.39.1': {} + '@typescript-eslint/types@8.42.0': {} - '@typescript-eslint/typescript-estree@8.39.1(typescript@5.9.2)': + '@typescript-eslint/typescript-estree@8.42.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/project-service': 8.39.1(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.39.1(typescript@5.9.2) - '@typescript-eslint/types': 8.39.1 - '@typescript-eslint/visitor-keys': 8.39.1 + '@typescript-eslint/project-service': 8.42.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2) + '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/visitor-keys': 8.42.0 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -3430,20 +3439,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/utils@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.5.1)) - '@typescript-eslint/scope-manager': 8.39.1 - '@typescript-eslint/types': 8.39.1 - '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.9.2) - eslint: 9.33.0(jiti@2.5.1) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1)) + '@typescript-eslint/scope-manager': 8.42.0 + '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) + eslint: 9.34.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.39.1': + '@typescript-eslint/visitor-keys@8.42.0': dependencies: - '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/types': 8.42.0 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} @@ -3507,27 +3516,27 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@24.2.1))(vue@3.5.18(typescript@5.9.2))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@24.3.0))(vue@3.5.21(typescript@5.9.2))': dependencies: - vite: 5.4.19(@types/node@24.2.1) - vue: 3.5.18(typescript@5.9.2) + vite: 5.4.19(@types/node@24.3.0) + vue: 3.5.21(typescript@5.9.2) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.2.1)(jiti@2.5.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.3.0)(jiti@2.5.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 - ast-v8-to-istanbul: 0.3.4 + ast-v8-to-istanbul: 0.3.5 debug: 4.4.1 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 - magic-string: 0.30.17 + istanbul-reports: 3.2.0 + magic-string: 0.30.18 magicast: 0.3.5 std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.2.1)(jiti@2.5.1) + vitest: 3.2.4(@types/node@24.3.0)(jiti@2.5.1) transitivePeerDependencies: - supports-color @@ -3536,16 +3545,16 @@ snapshots: '@types/chai': 5.2.2 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 - chai: 5.2.1 + chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.1(@types/node@24.2.1)(jiti@2.5.1))': + '@vitest/mocker@3.2.4(vite@7.1.4(@types/node@24.3.0)(jiti@2.5.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 - magic-string: 0.30.17 + magic-string: 0.30.18 optionalDependencies: - vite: 7.1.1(@types/node@24.2.1)(jiti@2.5.1) + vite: 7.1.4(@types/node@24.3.0)(jiti@2.5.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -3560,7 +3569,7 @@ snapshots: '@vitest/snapshot@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 - magic-string: 0.30.17 + magic-string: 0.30.18 pathe: 2.0.3 '@vitest/spy@3.2.4': @@ -3570,38 +3579,38 @@ snapshots: '@vitest/utils@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 - loupe: 3.2.0 + loupe: 3.2.1 tinyrainbow: 2.0.0 - '@vue/compiler-core@3.5.18': + '@vue/compiler-core@3.5.21': dependencies: - '@babel/parser': 7.28.0 - '@vue/shared': 3.5.18 + '@babel/parser': 7.28.3 + '@vue/shared': 3.5.21 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.18': + '@vue/compiler-dom@3.5.21': dependencies: - '@vue/compiler-core': 3.5.18 - '@vue/shared': 3.5.18 + '@vue/compiler-core': 3.5.21 + '@vue/shared': 3.5.21 - '@vue/compiler-sfc@3.5.18': + '@vue/compiler-sfc@3.5.21': dependencies: - '@babel/parser': 7.28.0 - '@vue/compiler-core': 3.5.18 - '@vue/compiler-dom': 3.5.18 - '@vue/compiler-ssr': 3.5.18 - '@vue/shared': 3.5.18 + '@babel/parser': 7.28.3 + '@vue/compiler-core': 3.5.21 + '@vue/compiler-dom': 3.5.21 + '@vue/compiler-ssr': 3.5.21 + '@vue/shared': 3.5.21 estree-walker: 2.0.2 - magic-string: 0.30.17 + magic-string: 0.30.18 postcss: 8.5.6 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.18': + '@vue/compiler-ssr@3.5.21': dependencies: - '@vue/compiler-dom': 3.5.18 - '@vue/shared': 3.5.18 + '@vue/compiler-dom': 3.5.21 + '@vue/shared': 3.5.21 '@vue/devtools-api@7.7.7': dependencies: @@ -3621,36 +3630,36 @@ snapshots: dependencies: rfdc: 1.4.1 - '@vue/reactivity@3.5.18': + '@vue/reactivity@3.5.21': dependencies: - '@vue/shared': 3.5.18 + '@vue/shared': 3.5.21 - '@vue/runtime-core@3.5.18': + '@vue/runtime-core@3.5.21': dependencies: - '@vue/reactivity': 3.5.18 - '@vue/shared': 3.5.18 + '@vue/reactivity': 3.5.21 + '@vue/shared': 3.5.21 - '@vue/runtime-dom@3.5.18': + '@vue/runtime-dom@3.5.21': dependencies: - '@vue/reactivity': 3.5.18 - '@vue/runtime-core': 3.5.18 - '@vue/shared': 3.5.18 + '@vue/reactivity': 3.5.21 + '@vue/runtime-core': 3.5.21 + '@vue/shared': 3.5.21 csstype: 3.1.3 - '@vue/server-renderer@3.5.18(vue@3.5.18(typescript@5.9.2))': + '@vue/server-renderer@3.5.21(vue@3.5.21(typescript@5.9.2))': dependencies: - '@vue/compiler-ssr': 3.5.18 - '@vue/shared': 3.5.18 - vue: 3.5.18(typescript@5.9.2) + '@vue/compiler-ssr': 3.5.21 + '@vue/shared': 3.5.21 + vue: 3.5.21(typescript@5.9.2) - '@vue/shared@3.5.18': {} + '@vue/shared@3.5.21': {} '@vueuse/core@12.8.2(typescript@5.9.2)': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 12.8.2 '@vueuse/shared': 12.8.2(typescript@5.9.2) - vue: 3.5.18(typescript@5.9.2) + vue: 3.5.21(typescript@5.9.2) transitivePeerDependencies: - typescript @@ -3658,7 +3667,7 @@ snapshots: dependencies: '@vueuse/core': 12.8.2(typescript@5.9.2) '@vueuse/shared': 12.8.2(typescript@5.9.2) - vue: 3.5.18(typescript@5.9.2) + vue: 3.5.21(typescript@5.9.2) optionalDependencies: focus-trap: 7.6.5 transitivePeerDependencies: @@ -3668,7 +3677,7 @@ snapshots: '@vueuse/shared@12.8.2(typescript@5.9.2)': dependencies: - vue: 3.5.18(typescript@5.9.2) + vue: 3.5.21(typescript@5.9.2) transitivePeerDependencies: - typescript @@ -3685,26 +3694,26 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - algoliasearch@5.35.0: - dependencies: - '@algolia/abtesting': 1.1.0 - '@algolia/client-abtesting': 5.35.0 - '@algolia/client-analytics': 5.35.0 - '@algolia/client-common': 5.35.0 - '@algolia/client-insights': 5.35.0 - '@algolia/client-personalization': 5.35.0 - '@algolia/client-query-suggestions': 5.35.0 - '@algolia/client-search': 5.35.0 - '@algolia/ingestion': 1.35.0 - '@algolia/monitoring': 1.35.0 - '@algolia/recommend': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + algoliasearch@5.36.0: + dependencies: + '@algolia/abtesting': 1.2.0 + '@algolia/client-abtesting': 5.36.0 + '@algolia/client-analytics': 5.36.0 + '@algolia/client-common': 5.36.0 + '@algolia/client-insights': 5.36.0 + '@algolia/client-personalization': 5.36.0 + '@algolia/client-query-suggestions': 5.36.0 + '@algolia/client-search': 5.36.0 + '@algolia/ingestion': 1.36.0 + '@algolia/monitoring': 1.36.0 + '@algolia/recommend': 5.36.0 + '@algolia/requester-browser-xhr': 5.36.0 + '@algolia/requester-fetch': 5.36.0 + '@algolia/requester-node-http': 5.36.0 ansi-regex@5.0.1: {} - ansi-regex@6.1.0: {} + ansi-regex@6.2.0: {} ansi-styles@4.3.0: dependencies: @@ -3716,16 +3725,16 @@ snapshots: assertion-error@2.0.1: {} - ast-v8-to-istanbul@0.3.4: + ast-v8-to-istanbul@0.3.5: dependencies: - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/trace-mapping': 0.3.30 estree-walker: 3.0.3 js-tokens: 9.0.1 autoprefixer@10.4.21(postcss@8.5.6): dependencies: - browserslist: 4.25.2 - caniuse-lite: 1.0.30001734 + browserslist: 4.25.4 + caniuse-lite: 1.0.30001739 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -3751,12 +3760,12 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.25.2: + browserslist@4.25.4: dependencies: - caniuse-lite: 1.0.30001734 - electron-to-chromium: 1.5.200 + caniuse-lite: 1.0.30001739 + electron-to-chromium: 1.5.212 node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.2) + update-browserslist-db: 1.1.3(browserslist@4.25.4) bundle-name@4.1.0: dependencies: @@ -3774,7 +3783,7 @@ snapshots: ohash: 2.0.11 pathe: 2.0.3 perfect-debounce: 1.0.0 - pkg-types: 2.2.0 + pkg-types: 2.3.0 rc9: 2.1.2 optionalDependencies: magicast: 0.3.5 @@ -3785,21 +3794,21 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.25.2 - caniuse-lite: 1.0.30001734 + browserslist: 4.25.4 + caniuse-lite: 1.0.30001739 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001734: {} + caniuse-lite@1.0.30001739: {} ccount@2.0.1: {} - chai@5.2.1: + chai@5.3.3: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.2.0 + loupe: 3.2.1 pathval: 2.0.1 chalk@4.1.2: @@ -3818,7 +3827,7 @@ snapshots: ofetch: 1.4.1 open: 10.2.0 pathe: 2.0.3 - pkg-types: 2.2.0 + pkg-types: 2.3.0 scule: 1.3.0 semver: 7.7.2 std-env: 3.9.0 @@ -3901,15 +3910,15 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-default@7.0.8(postcss@8.5.6): + cssnano-preset-default@7.0.9(postcss@8.5.6): dependencies: - browserslist: 4.25.2 + browserslist: 4.25.4 css-declaration-sorter: 7.2.0(postcss@8.5.6) cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 postcss-calc: 10.1.1(postcss@8.5.6) postcss-colormin: 7.0.4(postcss@8.5.6) - postcss-convert-values: 7.0.6(postcss@8.5.6) + postcss-convert-values: 7.0.7(postcss@8.5.6) postcss-discard-comments: 7.0.4(postcss@8.5.6) postcss-discard-duplicates: 7.0.2(postcss@8.5.6) postcss-discard-empty: 7.0.1(postcss@8.5.6) @@ -3939,9 +3948,9 @@ snapshots: dependencies: postcss: 8.5.6 - cssnano@7.1.0(postcss@8.5.6): + cssnano@7.1.1(postcss@8.5.6): dependencies: - cssnano-preset-default: 7.0.8(postcss@8.5.6) + cssnano-preset-default: 7.0.9(postcss@8.5.6) lilconfig: 3.1.3 postcss: 8.5.6 @@ -4002,7 +4011,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.200: {} + electron-to-chromium@1.5.212: {} emoji-regex-xs@1.0.0: {} @@ -4040,34 +4049,34 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.25.8: + esbuild@0.25.9: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.8 - '@esbuild/android-arm': 0.25.8 - '@esbuild/android-arm64': 0.25.8 - '@esbuild/android-x64': 0.25.8 - '@esbuild/darwin-arm64': 0.25.8 - '@esbuild/darwin-x64': 0.25.8 - '@esbuild/freebsd-arm64': 0.25.8 - '@esbuild/freebsd-x64': 0.25.8 - '@esbuild/linux-arm': 0.25.8 - '@esbuild/linux-arm64': 0.25.8 - '@esbuild/linux-ia32': 0.25.8 - '@esbuild/linux-loong64': 0.25.8 - '@esbuild/linux-mips64el': 0.25.8 - '@esbuild/linux-ppc64': 0.25.8 - '@esbuild/linux-riscv64': 0.25.8 - '@esbuild/linux-s390x': 0.25.8 - '@esbuild/linux-x64': 0.25.8 - '@esbuild/netbsd-arm64': 0.25.8 - '@esbuild/netbsd-x64': 0.25.8 - '@esbuild/openbsd-arm64': 0.25.8 - '@esbuild/openbsd-x64': 0.25.8 - '@esbuild/openharmony-arm64': 0.25.8 - '@esbuild/sunos-x64': 0.25.8 - '@esbuild/win32-arm64': 0.25.8 - '@esbuild/win32-ia32': 0.25.8 - '@esbuild/win32-x64': 0.25.8 + '@esbuild/aix-ppc64': 0.25.9 + '@esbuild/android-arm': 0.25.9 + '@esbuild/android-arm64': 0.25.9 + '@esbuild/android-x64': 0.25.9 + '@esbuild/darwin-arm64': 0.25.9 + '@esbuild/darwin-x64': 0.25.9 + '@esbuild/freebsd-arm64': 0.25.9 + '@esbuild/freebsd-x64': 0.25.9 + '@esbuild/linux-arm': 0.25.9 + '@esbuild/linux-arm64': 0.25.9 + '@esbuild/linux-ia32': 0.25.9 + '@esbuild/linux-loong64': 0.25.9 + '@esbuild/linux-mips64el': 0.25.9 + '@esbuild/linux-ppc64': 0.25.9 + '@esbuild/linux-riscv64': 0.25.9 + '@esbuild/linux-s390x': 0.25.9 + '@esbuild/linux-x64': 0.25.9 + '@esbuild/netbsd-arm64': 0.25.9 + '@esbuild/netbsd-x64': 0.25.9 + '@esbuild/openbsd-arm64': 0.25.9 + '@esbuild/openbsd-x64': 0.25.9 + '@esbuild/openharmony-arm64': 0.25.9 + '@esbuild/sunos-x64': 0.25.9 + '@esbuild/win32-arm64': 0.25.9 + '@esbuild/win32-ia32': 0.25.9 + '@esbuild/win32-x64': 0.25.9 escalade@3.2.0: {} @@ -4080,12 +4089,12 @@ snapshots: optionalDependencies: unrs-resolver: 1.11.1 - eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1)): + eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)): dependencies: - '@typescript-eslint/types': 8.39.1 + '@typescript-eslint/types': 8.42.0 comment-parser: 1.4.1 debug: 4.4.1 - eslint: 9.33.0(jiti@2.5.1) + eslint: 9.34.0(jiti@2.5.1) eslint-import-context: 0.1.9(unrs-resolver@1.11.1) is-glob: 4.0.3 minimatch: 10.0.3 @@ -4093,7 +4102,7 @@ snapshots: stable-hash-x: 0.2.0 unrs-resolver: 1.11.1 optionalDependencies: - '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) transitivePeerDependencies: - supports-color @@ -4106,15 +4115,15 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.33.0(jiti@2.5.1): + eslint@9.34.0(jiti@2.5.1): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.1 '@eslint/core': 0.15.2 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.33.0 + '@eslint/js': 9.34.0 '@eslint/plugin-kit': 0.3.5 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 @@ -4194,7 +4203,7 @@ snapshots: dependencies: reusify: 1.1.0 - fdir@6.4.6(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -4213,9 +4222,9 @@ snapshots: fix-dts-default-cjs-exports@1.0.1: dependencies: - magic-string: 0.30.17 - mlly: 1.7.4 - rollup: 4.46.2 + magic-string: 0.30.18 + mlly: 1.8.0 + rollup: 4.50.0 flat-cache@4.0.1: dependencies: @@ -4361,13 +4370,13 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/trace-mapping': 0.3.30 debug: 4.4.1 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color - istanbul-reports@3.1.7: + istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 @@ -4416,11 +4425,11 @@ snapshots: dependencies: uc.micro: 2.1.0 - local-pkg@1.1.1: + local-pkg@1.1.2: dependencies: - mlly: 1.7.4 - pkg-types: 2.2.0 - quansync: 0.2.10 + mlly: 1.8.0 + pkg-types: 2.3.0 + quansync: 0.2.11 locate-path@6.0.0: dependencies: @@ -4432,17 +4441,17 @@ snapshots: lodash.uniq@4.5.0: {} - loupe@3.2.0: {} + loupe@3.2.1: {} lru-cache@10.4.3: {} - magic-string@0.30.17: + magic-string@0.30.18: dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 magicast@0.3.5: dependencies: - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.3 '@babel/types': 7.28.2 source-map-js: 1.2.1 @@ -4521,26 +4530,26 @@ snapshots: mitt@3.0.1: {} - mkdist@2.3.0(typescript@5.9.2)(vue@3.5.18(typescript@5.9.2)): + mkdist@2.3.0(typescript@5.9.2)(vue@3.5.21(typescript@5.9.2)): dependencies: autoprefixer: 10.4.21(postcss@8.5.6) citty: 0.1.6 - cssnano: 7.1.0(postcss@8.5.6) + cssnano: 7.1.1(postcss@8.5.6) defu: 6.1.4 - esbuild: 0.25.8 + esbuild: 0.25.9 jiti: 1.21.7 - mlly: 1.7.4 + mlly: 1.8.0 pathe: 2.0.3 - pkg-types: 2.2.0 + pkg-types: 2.3.0 postcss: 8.5.6 postcss-nested: 7.0.2(postcss@8.5.6) semver: 7.7.2 tinyglobby: 0.2.14 optionalDependencies: typescript: 5.9.2 - vue: 3.5.18(typescript@5.9.2) + vue: 3.5.21(typescript@5.9.2) - mlly@1.7.4: + mlly@1.8.0: dependencies: acorn: 8.15.0 pathe: 2.0.3 @@ -4572,7 +4581,7 @@ snapshots: citty: 0.1.6 consola: 3.4.2 pathe: 2.0.3 - pkg-types: 2.2.0 + pkg-types: 2.3.0 tinyexec: 1.0.1 ofetch@1.4.1: @@ -4647,10 +4656,10 @@ snapshots: pkg-types@1.3.1: dependencies: confbox: 0.1.8 - mlly: 1.7.4 + mlly: 1.8.0 pathe: 2.0.3 - pkg-types@2.2.0: + pkg-types@2.3.0: dependencies: confbox: 0.2.2 exsolve: 1.0.7 @@ -4664,15 +4673,15 @@ snapshots: postcss-colormin@7.0.4(postcss@8.5.6): dependencies: - browserslist: 4.25.2 + browserslist: 4.25.4 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.6(postcss@8.5.6): + postcss-convert-values@7.0.7(postcss@8.5.6): dependencies: - browserslist: 4.25.2 + browserslist: 4.25.4 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -4701,7 +4710,7 @@ snapshots: postcss-merge-rules@7.0.6(postcss@8.5.6): dependencies: - browserslist: 4.25.2 + browserslist: 4.25.4 caniuse-api: 3.0.0 cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 @@ -4721,7 +4730,7 @@ snapshots: postcss-minify-params@7.0.4(postcss@8.5.6): dependencies: - browserslist: 4.25.2 + browserslist: 4.25.4 cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -4768,7 +4777,7 @@ snapshots: postcss-normalize-unicode@7.0.4(postcss@8.5.6): dependencies: - browserslist: 4.25.2 + browserslist: 4.25.4 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -4790,7 +4799,7 @@ snapshots: postcss-reduce-initial@7.0.4(postcss@8.5.6): dependencies: - browserslist: 4.25.2 + browserslist: 4.25.4 caniuse-api: 3.0.0 postcss: 8.5.6 @@ -4823,11 +4832,11 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - preact@10.27.0: {} + preact@10.27.1: {} prelude-ls@1.2.1: {} - pretty-bytes@7.0.0: {} + pretty-bytes@7.0.1: {} property-information@7.1.0: {} @@ -4835,7 +4844,7 @@ snapshots: punycode@2.3.1: {} - quansync@0.2.10: {} + quansync@0.2.11: {} queue-microtask@1.2.3: {} @@ -4870,38 +4879,39 @@ snapshots: rfdc@1.4.1: {} - rollup-plugin-dts@6.2.1(rollup@4.46.2)(typescript@5.9.2): + rollup-plugin-dts@6.2.3(rollup@4.50.0)(typescript@5.9.2): dependencies: - magic-string: 0.30.17 - rollup: 4.46.2 + magic-string: 0.30.18 + rollup: 4.50.0 typescript: 5.9.2 optionalDependencies: '@babel/code-frame': 7.27.1 - rollup@4.46.2: + rollup@4.50.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.46.2 - '@rollup/rollup-android-arm64': 4.46.2 - '@rollup/rollup-darwin-arm64': 4.46.2 - '@rollup/rollup-darwin-x64': 4.46.2 - '@rollup/rollup-freebsd-arm64': 4.46.2 - '@rollup/rollup-freebsd-x64': 4.46.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.46.2 - '@rollup/rollup-linux-arm-musleabihf': 4.46.2 - '@rollup/rollup-linux-arm64-gnu': 4.46.2 - '@rollup/rollup-linux-arm64-musl': 4.46.2 - '@rollup/rollup-linux-loongarch64-gnu': 4.46.2 - '@rollup/rollup-linux-ppc64-gnu': 4.46.2 - '@rollup/rollup-linux-riscv64-gnu': 4.46.2 - '@rollup/rollup-linux-riscv64-musl': 4.46.2 - '@rollup/rollup-linux-s390x-gnu': 4.46.2 - '@rollup/rollup-linux-x64-gnu': 4.46.2 - '@rollup/rollup-linux-x64-musl': 4.46.2 - '@rollup/rollup-win32-arm64-msvc': 4.46.2 - '@rollup/rollup-win32-ia32-msvc': 4.46.2 - '@rollup/rollup-win32-x64-msvc': 4.46.2 + '@rollup/rollup-android-arm-eabi': 4.50.0 + '@rollup/rollup-android-arm64': 4.50.0 + '@rollup/rollup-darwin-arm64': 4.50.0 + '@rollup/rollup-darwin-x64': 4.50.0 + '@rollup/rollup-freebsd-arm64': 4.50.0 + '@rollup/rollup-freebsd-x64': 4.50.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.50.0 + '@rollup/rollup-linux-arm-musleabihf': 4.50.0 + '@rollup/rollup-linux-arm64-gnu': 4.50.0 + '@rollup/rollup-linux-arm64-musl': 4.50.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.50.0 + '@rollup/rollup-linux-ppc64-gnu': 4.50.0 + '@rollup/rollup-linux-riscv64-gnu': 4.50.0 + '@rollup/rollup-linux-riscv64-musl': 4.50.0 + '@rollup/rollup-linux-s390x-gnu': 4.50.0 + '@rollup/rollup-linux-x64-gnu': 4.50.0 + '@rollup/rollup-linux-x64-musl': 4.50.0 + '@rollup/rollup-openharmony-arm64': 4.50.0 + '@rollup/rollup-win32-arm64-msvc': 4.50.0 + '@rollup/rollup-win32-ia32-msvc': 4.50.0 + '@rollup/rollup-win32-x64-msvc': 4.50.0 fsevents: 2.3.3 run-applescript@7.0.0: {} @@ -4974,7 +4984,7 @@ snapshots: strip-ansi@7.1.0: dependencies: - ansi-regex: 6.1.0 + ansi-regex: 6.2.0 strip-json-comments@3.1.1: {} @@ -4984,7 +4994,7 @@ snapshots: stylehacks@7.0.6(postcss@8.5.6): dependencies: - browserslist: 4.25.2 + browserslist: 4.25.4 postcss: 8.5.6 postcss-selector-parser: 7.1.0 @@ -5024,7 +5034,7 @@ snapshots: tinyglobby@0.2.14: dependencies: - fdir: 6.4.6(picomatch@4.0.3) + fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 tinypool@1.1.1: {} @@ -5056,29 +5066,29 @@ snapshots: ufo@1.6.1: {} - unbuild@3.6.0(typescript@5.9.2)(vue@3.5.18(typescript@5.9.2)): + unbuild@3.6.1(typescript@5.9.2)(vue@3.5.21(typescript@5.9.2)): dependencies: - '@rollup/plugin-alias': 5.1.1(rollup@4.46.2) - '@rollup/plugin-commonjs': 28.0.6(rollup@4.46.2) - '@rollup/plugin-json': 6.1.0(rollup@4.46.2) - '@rollup/plugin-node-resolve': 16.0.1(rollup@4.46.2) - '@rollup/plugin-replace': 6.0.2(rollup@4.46.2) - '@rollup/pluginutils': 5.2.0(rollup@4.46.2) + '@rollup/plugin-alias': 5.1.1(rollup@4.50.0) + '@rollup/plugin-commonjs': 28.0.6(rollup@4.50.0) + '@rollup/plugin-json': 6.1.0(rollup@4.50.0) + '@rollup/plugin-node-resolve': 16.0.1(rollup@4.50.0) + '@rollup/plugin-replace': 6.0.2(rollup@4.50.0) + '@rollup/pluginutils': 5.2.0(rollup@4.50.0) citty: 0.1.6 consola: 3.4.2 defu: 6.1.4 - esbuild: 0.25.8 + esbuild: 0.25.9 fix-dts-default-cjs-exports: 1.0.1 hookable: 5.5.3 jiti: 2.5.1 - magic-string: 0.30.17 - mkdist: 2.3.0(typescript@5.9.2)(vue@3.5.18(typescript@5.9.2)) - mlly: 1.7.4 + magic-string: 0.30.18 + mkdist: 2.3.0(typescript@5.9.2)(vue@3.5.21(typescript@5.9.2)) + mlly: 1.8.0 pathe: 2.0.3 - pkg-types: 2.2.0 - pretty-bytes: 7.0.0 - rollup: 4.46.2 - rollup-plugin-dts: 6.2.1(rollup@4.46.2)(typescript@5.9.2) + pkg-types: 2.3.0 + pretty-bytes: 7.0.1 + rollup: 4.50.0 + rollup-plugin-dts: 6.2.3(rollup@4.50.0)(typescript@5.9.2) scule: 1.3.0 tinyglobby: 0.2.14 untyped: 2.0.0 @@ -5147,9 +5157,9 @@ snapshots: knitwork: 1.2.0 scule: 1.3.0 - update-browserslist-db@1.1.3(browserslist@4.25.2): + update-browserslist-db@1.1.3(browserslist@4.25.4): dependencies: - browserslist: 4.25.2 + browserslist: 4.25.4 escalade: 3.2.0 picocolors: 1.1.1 @@ -5169,13 +5179,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-node@3.2.4(@types/node@24.2.1)(jiti@2.5.1): + vite-node@3.2.4(@types/node@24.3.0)(jiti@2.5.1): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.1(@types/node@24.2.1)(jiti@2.5.1) + vite: 7.1.4(@types/node@24.3.0)(jiti@2.5.1) transitivePeerDependencies: - '@types/node' - jiti @@ -5190,58 +5200,58 @@ snapshots: - tsx - yaml - vite@5.4.19(@types/node@24.2.1): + vite@5.4.19(@types/node@24.3.0): dependencies: esbuild: 0.21.5 postcss: 8.5.6 - rollup: 4.46.2 + rollup: 4.50.0 optionalDependencies: - '@types/node': 24.2.1 + '@types/node': 24.3.0 fsevents: 2.3.3 - vite@7.1.1(@types/node@24.2.1)(jiti@2.5.1): + vite@7.1.4(@types/node@24.3.0)(jiti@2.5.1): dependencies: - esbuild: 0.25.8 - fdir: 6.4.6(picomatch@4.0.3) + esbuild: 0.25.9 + fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.46.2 + rollup: 4.50.0 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 24.2.1 + '@types/node': 24.3.0 fsevents: 2.3.3 jiti: 2.5.1 - vitepress-plugin-group-icons@1.6.2(markdown-it@14.1.0)(vite@7.1.1(@types/node@24.2.1)(jiti@2.5.1)): + vitepress-plugin-group-icons@1.6.3(markdown-it@14.1.0)(vite@7.1.4(@types/node@24.3.0)(jiti@2.5.1)): dependencies: '@iconify-json/logos': 1.2.9 - '@iconify-json/vscode-icons': 1.2.29 + '@iconify-json/vscode-icons': 1.2.30 '@iconify/utils': 3.0.1 markdown-it: 14.1.0 - vite: 7.1.1(@types/node@24.2.1)(jiti@2.5.1) + vite: 7.1.4(@types/node@24.3.0)(jiti@2.5.1) transitivePeerDependencies: - supports-color - vitepress@1.6.4(@algolia/client-search@5.35.0)(@types/node@24.2.1)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.2): + vitepress@1.6.4(@algolia/client-search@5.36.0)(@types/node@24.3.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.2): dependencies: '@docsearch/css': 3.8.2 - '@docsearch/js': 3.8.2(@algolia/client-search@5.35.0)(search-insights@2.17.3) - '@iconify-json/simple-icons': 1.2.47 + '@docsearch/js': 3.8.2(@algolia/client-search@5.36.0)(search-insights@2.17.3) + '@iconify-json/simple-icons': 1.2.50 '@shikijs/core': 2.5.0 '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.4(vite@5.4.19(@types/node@24.2.1))(vue@3.5.18(typescript@5.9.2)) + '@vitejs/plugin-vue': 5.2.4(vite@5.4.19(@types/node@24.3.0))(vue@3.5.21(typescript@5.9.2)) '@vue/devtools-api': 7.7.7 - '@vue/shared': 3.5.18 + '@vue/shared': 3.5.21 '@vueuse/core': 12.8.2(typescript@5.9.2) '@vueuse/integrations': 12.8.2(focus-trap@7.6.5)(typescript@5.9.2) focus-trap: 7.6.5 mark.js: 8.11.1 minisearch: 7.1.2 shiki: 2.5.0 - vite: 5.4.19(@types/node@24.2.1) - vue: 3.5.18(typescript@5.9.2) + vite: 5.4.19(@types/node@24.3.0) + vue: 3.5.21(typescript@5.9.2) optionalDependencies: postcss: 8.5.6 transitivePeerDependencies: @@ -5271,20 +5281,20 @@ snapshots: - typescript - universal-cookie - vitest@3.2.4(@types/node@24.2.1)(jiti@2.5.1): + vitest@3.2.4(@types/node@24.3.0)(jiti@2.5.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.1(@types/node@24.2.1)(jiti@2.5.1)) + '@vitest/mocker': 3.2.4(vite@7.1.4(@types/node@24.3.0)(jiti@2.5.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 - chai: 5.2.1 + chai: 5.3.3 debug: 4.4.1 expect-type: 1.2.2 - magic-string: 0.30.17 + magic-string: 0.30.18 pathe: 2.0.3 picomatch: 4.0.3 std-env: 3.9.0 @@ -5293,11 +5303,11 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.1(@types/node@24.2.1)(jiti@2.5.1) - vite-node: 3.2.4(@types/node@24.2.1)(jiti@2.5.1) + vite: 7.1.4(@types/node@24.3.0)(jiti@2.5.1) + vite-node: 3.2.4(@types/node@24.3.0)(jiti@2.5.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.2.1 + '@types/node': 24.3.0 transitivePeerDependencies: - jiti - less @@ -5312,13 +5322,13 @@ snapshots: - tsx - yaml - vue@3.5.18(typescript@5.9.2): + vue@3.5.21(typescript@5.9.2): dependencies: - '@vue/compiler-dom': 3.5.18 - '@vue/compiler-sfc': 3.5.18 - '@vue/runtime-dom': 3.5.18 - '@vue/server-renderer': 3.5.18(vue@3.5.18(typescript@5.9.2)) - '@vue/shared': 3.5.18 + '@vue/compiler-dom': 3.5.21 + '@vue/compiler-sfc': 3.5.21 + '@vue/runtime-dom': 3.5.21 + '@vue/server-renderer': 3.5.21(vue@3.5.21(typescript@5.9.2)) + '@vue/shared': 3.5.21 optionalDependencies: typescript: 5.9.2 From 7880e36aed850e2e6af36d937116531aa492b0aa Mon Sep 17 00:00:00 2001 From: Yizack Rangel Date: Fri, 12 Sep 2025 07:26:57 +0200 Subject: [PATCH 08/13] docs: update new endpoints list and add links --- README.md | 92 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 54 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 5308e4d..700fe07 100644 --- a/README.md +++ b/README.md @@ -71,53 +71,69 @@ Already implemented features are marked with a checkmark. Please open an issue i ### [Email API](https://docs.mailchannels.net/email-api/api-reference/email-api) - 📧 Emails - - ✅ Send an Email - - ✅ DKIM, SPF & Domain Lockdown Check + - ✅ [Send an Email](https://docs.mailchannels.net/email-api/api-reference/send-an-email) + - ✅ [DKIM, SPF & Domain Lockdown Check](https://docs.mailchannels.net/email-api/api-reference/dkim-spf-domain-lockdown-check) - 📢 Webhooks - - ✅ Enroll for Webhook Notifications - - ✅ Retrieve Customer Webhooks - - ✅ Delete Customer Webhooks - - ✅ Retrieve Webhook Signing Key + - ✅ [Enroll for Webhook Notifications](https://docs.mailchannels.net/email-api/api-reference/enroll-for-webhook-notifications) + - ✅ [Retrieve Customer Webhooks](https://docs.mailchannels.net/email-api/api-reference/retrieve-customer-webhooks) + - ✅ [Delete Customer Webhooks](https://docs.mailchannels.net/email-api/api-reference/delete-customer-webhooks) + - ✅ [Retrieve Webhook Signing Key](https://docs.mailchannels.net/email-api/api-reference/retrieve-webhook-signing-key) + - 🚧 [Validate Enrolled Webhook](https://docs.mailchannels.net/email-api/api-reference/validate-enrolled-webhook) - 🪪 Sub-accounts - - ✅ Create Sub-account - - ✅ Retrieve Sub-accounts - - ✅ Delete Sub-account - - ✅ Suspend Sub-account - - ✅ Activate Sub-account - - ✅ Create Sub-account API Key - - ✅ Delete Sub-account API Key - - ✅ Retrieve Sub-account API Keys - - ✅ Create Sub-account SMTP password - - ✅ Delete Sub-account SMTP password - - ✅ Retrieve Sub-account SMTP Passwords + - ✅ [Create Sub-account](https://docs.mailchannels.net/email-api/api-reference/create-sub-account) + - ✅ [Retrieve Sub-accounts](https://docs.mailchannels.net/email-api/api-reference/retrieve-sub-accounts) + - ✅ [Delete Sub-account](https://docs.mailchannels.net/email-api/api-reference/delete-sub-account) + - ✅ [Suspend Sub-account](https://docs.mailchannels.net/email-api/api-reference/suspend-sub-account) + - ✅ [Activate Sub-account](https://docs.mailchannels.net/email-api/api-reference/activate-sub-account) + - ✅ [Create Sub-account API Key](https://docs.mailchannels.net/email-api/api-reference/create-sub-account-api-key) + - ✅ [Delete Sub-account API Key](https://docs.mailchannels.net/email-api/api-reference/delete-sub-account-api-key) + - ✅ [Retrieve Sub-account API Keys](https://docs.mailchannels.net/email-api/api-reference/retrieve-sub-account-api-keys) + - ✅ [Create Sub-account SMTP Password](https://docs.mailchannels.net/email-api/api-reference/create-sub-account-smtp-password) + - ✅ [Delete Sub-account SMTP Password](https://docs.mailchannels.net/email-api/api-reference/delete-sub-account-smtp-password) + - ✅ [Retrieve Sub-account SMTP Passwords](https://docs.mailchannels.net/email-api/api-reference/retrieve-sub-account-smtp-passwords) + - 🚧 [Retrieve Sub-account Limit](https://docs.mailchannels.net/email-api/api-reference/retrieve-sub-account-limit) + - 🚧 [Set Sub-account Limit](https://docs.mailchannels.net/email-api/api-reference/set-sub-account-limit) + - 🚧 [Delete Sub-account Limit](https://docs.mailchannels.net/email-api/api-reference/delete-sub-account-limit) + - 🚧 [Retrieve Sub-account Usage Stats](https://docs.mailchannels.net/email-api/api-reference/retrieve-sub-account-usage-stats) +- 📊 Metrics & Stats + - 🚧 [Retrieve Engagement Metrics](https://docs.mailchannels.net/email-api/api-reference/retrieve-engagement-metrics) + - 🚧 [Retrieve Performance Metrics](https://docs.mailchannels.net/email-api/api-reference/retrieve-performance-metrics) + - 🚧 [Retrieve Recipient Behaviour Metrics](https://docs.mailchannels.net/email-api/api-reference/retrieve-recipient-behaviour-metrics) + - 🚧 [Retrieve Usage Stats](https://docs.mailchannels.net/email-api/api-reference/retrieve-usage-stats) + - 🚧 [Retrieve Volume Metrics](https://docs.mailchannels.net/email-api/api-reference/retrieve-volume-metrics) +- 📵 Suppressions + - 🚧 [Create Suppression Entries](https://docs.mailchannels.net/email-api/api-reference/create-suppression-entries) + - 🚧 [Delete Suppression Entry](https://docs.mailchannels.net/email-api/api-reference/delete-suppression-entry) + - 🚧 [Retrieve Suppression List](https://docs.mailchannels.net/email-api/api-reference/retrieve-suppression-list) ### [Inbound API](https://docs.mailchannels.net/inbound-api/API-reference/inbound-api) - 🌐 Domains - - ✅ Provision domain - - ✅ Remove domain - - ✅ List domains - - ✅ Bulk provision domains - - ✅ Add domain list entry - - ✅ Get domain list entries - - ✅ Delete domain list entry - - ✅ Create login link - - ✅ Set downstream address - - ✅ Fetch downstream addresses - - ✅ Update API key + - ✅ [Provision domain](https://docs.mailchannels.net/inbound-api/API-reference/provision-domain) + - ✅ [Remove domain](https://docs.mailchannels.net/inbound-api/API-reference/remove-domain) + - ✅ [List domains](https://docs.mailchannels.net/inbound-api/API-reference/list-domains) + - ✅ [Bulk provision domains](https://docs.mailchannels.net/inbound-api/API-reference/bulk-provision-domains) + - ✅ [Add domain list entry](https://docs.mailchannels.net/inbound-api/API-reference/add-domain-list-entry) + - ✅ [Get domain list entries](https://docs.mailchannels.net/inbound-api/API-reference/get-domain-list-entries) + - ✅ [Delete domain list entry](https://docs.mailchannels.net/inbound-api/API-reference/delete-domain-list-entry) + - ✅ [Create login link](https://docs.mailchannels.net/inbound-api/API-reference/create-login-link) + - 🚧 [Bulk create login links](https://docs.mailchannels.net/inbound-api/API-reference/bulk-create-login-links) + - ✅ [Set downstream address](https://docs.mailchannels.net/inbound-api/API-reference/set-downstream-address) + - ✅ [Fetch downstream addresses](https://docs.mailchannels.net/inbound-api/API-reference/fetch-downstream-addresses) + - ✅ [Update API key](https://docs.mailchannels.net/inbound-api/API-reference/update-api-key) - 📋 Lists - - ✅ Add item to customer list - - ✅ Delete item from customer list - - ✅ Get customer list entries + - ✅ [Add item to customer list](https://docs.mailchannels.net/inbound-api/API-reference/add-item-to-customer-list) + - ✅ [Delete item from customer list](https://docs.mailchannels.net/inbound-api/API-reference/delete-item-from-customer-list) + - ✅ [Get customer list entries](https://docs.mailchannels.net/inbound-api/API-reference/get-customer-list-entries) - 📥 Users - - ✅ Create a recipient - - ✅ Add item to recipient list - - ✅ Get recipient list entries - - ✅ Delete item from recipient list + - ✅ [Create a recipient](https://docs.mailchannels.net/inbound-api/API-reference/create-a-recipient) + - ✅ [Add item to recipient list](https://docs.mailchannels.net/inbound-api/API-reference/add-item-to-recipient-list) + - ✅ [Get recipient list entries](https://docs.mailchannels.net/inbound-api/API-reference/get-recipient-list-entries) + - ✅ [Delete item from recipient list](https://docs.mailchannels.net/inbound-api/API-reference/delete-item-from-recipient-list) - ⚙️ Service - - ✅ Retrieve the condition of the service - - ✅ Submit a false negative or false positive report - - ✅ Get a list of your subscriptions to MailChannels Inbound + - ✅ [Retrieve the condition of the service](https://docs.mailchannels.net/inbound-api/API-reference/retrieve-the-condition-of-the-service) + - ✅ [Submit a false negative or false positive report](https://docs.mailchannels.net/inbound-api/API-reference/submit-a-false-negative-or-false-positive-report) + - ✅ [Get a list of your subscriptions to MailChannels Inbound](https://docs.mailchannels.net/inbound-api/API-reference/get-a-list-of-your-subscriptions-to-mail-channels-inbound) ## 💻 Development From 14a755a81001305ad3df77c7fb65105626499a67 Mon Sep 17 00:00:00 2001 From: Yizack Rangel Date: Sat, 13 Sep 2025 15:30:19 +0200 Subject: [PATCH 09/13] fix(domains): add missing returning type in `addListEntry` --- src/modules/domains.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/domains.ts b/src/modules/domains.ts index ba733fe..a3dfdf6 100644 --- a/src/modules/domains.ts +++ b/src/modules/domains.ts @@ -187,7 +187,7 @@ export class Domains { * }) * ``` */ - async addListEntry (domain: string, options: ListEntryOptions) { + async addListEntry (domain: string, options: ListEntryOptions): Promise { const { listName, item } = options; const data: ListEntryResponse = { entry: null, error: null }; From ffed7a9cae575e52cb5b8c02adc0dceef2bca1e0 Mon Sep 17 00:00:00 2001 From: Yizack Rangel Date: Sat, 13 Sep 2025 16:10:12 +0200 Subject: [PATCH 10/13] test: error prop must be truthy on error --- test/domains.test.ts | 22 +++++++++++----------- test/emails.test.ts | 4 ++-- test/lists.test.ts | 6 +++--- test/service.test.ts | 6 +++--- test/sub-accounts.test.ts | 22 +++++++++++----------- test/users.test.ts | 8 ++++---- test/webhooks.test.ts | 8 ++++---- 7 files changed, 38 insertions(+), 38 deletions(-) diff --git a/test/domains.test.ts b/test/domains.test.ts index f482d86..68e0c36 100644 --- a/test/domains.test.ts +++ b/test/domains.test.ts @@ -113,7 +113,7 @@ describe("provision", () => { const domains = new Domains(mockClient); const { data, error } = await domains.provision(fake.provision); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(data).toBeNull(); expect(mockClient.post).toHaveBeenCalled(); }); @@ -175,7 +175,7 @@ describe("bulkProvision", () => { { domain: fake.provision.domain } ]); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(results).toBeNull(); expect(mockClient.post).toHaveBeenCalled(); }); @@ -231,7 +231,7 @@ describe("list", () => { const domains = new Domains(mockClient); const { domains: domainsList, error } = await domains.list(); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(domainsList).toEqual([]); expect(mockClient.get).toHaveBeenCalled(); }); @@ -275,7 +275,7 @@ describe("delete", () => { const domains = new Domains(mockClient); const { success, error } = await domains.delete(fake.provision.domain); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(success).toBe(false); expect(mockClient.delete).toHaveBeenCalled(); }); @@ -336,7 +336,7 @@ describe("addListEntry", () => { const domains = new Domains(mockClient); const { entry, error } = await domains.addListEntry(fake.provision.domain, fake.addListEntry.options); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(entry).toBeNull(); expect(mockClient.post).toHaveBeenCalled(); }); @@ -397,7 +397,7 @@ describe("listEntries", () => { const domains = new Domains(mockClient); const { entries, error } = await domains.listEntries(fake.provision.domain, fake.addListEntry.options.listName); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(entries).toEqual([]); expect(mockClient.get).toHaveBeenCalled(); }); @@ -455,7 +455,7 @@ describe("deleteListEntry", () => { const domains = new Domains(mockClient); const { success, error } = await domains.deleteListEntry(fake.provision.domain, fake.addListEntry.options); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(success).toBe(false); expect(mockClient.delete).toHaveBeenCalled(); }); @@ -498,7 +498,7 @@ describe("createLoginLink", () => { const domains = new Domains(mockClient); const { link, error } = await domains.createLoginLink(fake.provision.domain); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(link).toBeNull(); expect(mockClient.get).toHaveBeenCalled(); }); @@ -557,7 +557,7 @@ describe("setDownstreamAddress", () => { const domains = new Domains(mockClient); const { success, error } = await domains.setDownstreamAddress(fake.provision.domain, fake.listDownstreamAddresses.records); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(success).toBe(false); expect(mockClient.put).toHaveBeenCalled(); }); @@ -626,7 +626,7 @@ describe("listDownstreamAddresses", () => { const domains = new Domains(mockClient); const { records, error } = await domains.listDownstreamAddresses(fake.provision.domain); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(records).toEqual([]); expect(mockClient.get).toHaveBeenCalled(); }); @@ -683,7 +683,7 @@ describe("updateApiKey", () => { const domains = new Domains(mockClient); const { success, error } = await domains.updateApiKey(fake.provision.domain, "new-api-key"); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(success).toBe(false); expect(mockClient.put).toHaveBeenCalled(); }); diff --git a/test/emails.test.ts b/test/emails.test.ts index f801b6f..4e75b25 100644 --- a/test/emails.test.ts +++ b/test/emails.test.ts @@ -125,7 +125,7 @@ describe("send", () => { const emails = new Emails(mockClient); const { success, error } = await emails.send(fake.send.options); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(success).toBe(false); expect(mockClient.post).toHaveBeenCalled(); }); @@ -156,7 +156,7 @@ describe("checkDomain", () => { const emails = new Emails(mockClient); const { results, error } = await emails.checkDomain(fake.checkDomain.options); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(results).toBeNull(); expect(mockClient.post).toHaveBeenCalled(); }); diff --git a/test/lists.test.ts b/test/lists.test.ts index 680bd12..8380bc5 100644 --- a/test/lists.test.ts +++ b/test/lists.test.ts @@ -61,7 +61,7 @@ describe("addListEntry", () => { const lists = new Lists(mockClient); const { entry, error } = await lists.addListEntry(fake.addListEntry.options); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(entry).toBeNull(); expect(mockClient.post).toHaveBeenCalled(); }); @@ -109,7 +109,7 @@ describe("listEntries", () => { const lists = new Lists(mockClient); const { entries, error } = await lists.listEntries(fake.addListEntry.options.listName); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(entries).toEqual([]); expect(mockClient.get).toHaveBeenCalled(); }); @@ -154,7 +154,7 @@ describe("deleteListEntry", () => { const lists = new Lists(mockClient); const { success, error } = await lists.deleteListEntry(fake.addListEntry.options); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(success).toBe(false); expect(mockClient.delete).toHaveBeenCalled(); }); diff --git a/test/service.test.ts b/test/service.test.ts index 1ae4a3d..8a67a67 100644 --- a/test/service.test.ts +++ b/test/service.test.ts @@ -43,7 +43,7 @@ describe("status", () => { const { success, error } = await service.status(); expect(success).toBe(false); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(mockClient.get).toHaveBeenCalled(); }); }); @@ -72,7 +72,7 @@ describe("subscriptions", () => { const service = new Service(mockClient); const { subscriptions, error } = await service.subscriptions(); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(subscriptions).toEqual([]); expect(mockClient.get).toHaveBeenCalled(); }); @@ -104,7 +104,7 @@ describe("report", () => { const { success, error } = await service.report(fake.report); expect(success).toBe(false); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(mockClient.post).toHaveBeenCalled(); }); }); diff --git a/test/sub-accounts.test.ts b/test/sub-accounts.test.ts index 9b2aeca..850b462 100644 --- a/test/sub-accounts.test.ts +++ b/test/sub-accounts.test.ts @@ -127,7 +127,7 @@ describe("create", () => { const subAccounts = new SubAccounts(mockClient); const { account, error } = await subAccounts.create(fake.create.validHandle); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(account).toBeNull(); expect(mockClient.post).toHaveBeenCalled(); }); @@ -195,7 +195,7 @@ describe("list", () => { const subAccounts = new SubAccounts(mockClient); const { accounts, error } = await subAccounts.list(); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(accounts).toEqual([]); expect(mockClient.get).toHaveBeenCalled(); }); @@ -239,7 +239,7 @@ describe("delete", () => { const subAccounts = new SubAccounts(mockClient); const { success, error } = await subAccounts.delete(fake.create.validHandle); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(success).toBe(false); expect(mockClient.delete).toHaveBeenCalled(); }); @@ -283,7 +283,7 @@ describe("suspend", () => { const subAccounts = new SubAccounts(mockClient); const { success, error } = await subAccounts.suspend(fake.create.validHandle); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(success).toBe(false); expect(mockClient.post).toHaveBeenCalled(); }); @@ -327,7 +327,7 @@ describe("activate", () => { const subAccounts = new SubAccounts(mockClient); const { success, error } = await subAccounts.activate(fake.create.validHandle); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(success).toBe(false); expect(mockClient.post).toHaveBeenCalled(); }); @@ -370,7 +370,7 @@ describe("createApiKey", () => { const subAccounts = new SubAccounts(mockClient); const { key, error } = await subAccounts.createApiKey(fake.create.validHandle); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(key).toBeNull(); expect(mockClient.post).toHaveBeenCalled(); }); @@ -414,7 +414,7 @@ describe("listApiKeys", () => { const subAccounts = new SubAccounts(mockClient); const { keys, error } = await subAccounts.listApiKeys(fake.create.validHandle); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(keys).toEqual([]); expect(mockClient.get).toHaveBeenCalled(); }); @@ -458,7 +458,7 @@ describe("deleteApiKey", () => { const subAccounts = new SubAccounts(mockClient); const { success, error } = await subAccounts.deleteApiKey(fake.create.validHandle, 1); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(success).toBe(false); expect(mockClient.delete).toHaveBeenCalled(); }); @@ -501,7 +501,7 @@ describe("createSmtpPassword", () => { const subAccounts = new SubAccounts(mockClient); const { password, error } = await subAccounts.createSmtpPassword(fake.create.validHandle); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(password).toBeNull(); expect(mockClient.post).toHaveBeenCalled(); }); @@ -544,7 +544,7 @@ describe("listSmtpPasswords", () => { const subAccounts = new SubAccounts(mockClient); const { passwords, error } = await subAccounts.listSmtpPasswords(fake.create.validHandle); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(passwords).toEqual([]); expect(mockClient.get).toHaveBeenCalled(); }); @@ -588,7 +588,7 @@ describe("deleteSmtpPassword", () => { const subAccounts = new SubAccounts(mockClient); const { success, error } = await subAccounts.deleteSmtpPassword(fake.create.validHandle, 1); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(success).toBe(false); expect(mockClient.delete).toHaveBeenCalled(); }); diff --git a/test/users.test.ts b/test/users.test.ts index 929d9c5..5ff23d0 100644 --- a/test/users.test.ts +++ b/test/users.test.ts @@ -82,7 +82,7 @@ describe("create", () => { const users = new Users(mockClient); const { user, error } = await users.create(fake.create.email); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(user).toBeNull(); expect(mockClient.put).toHaveBeenCalled(); }); @@ -143,7 +143,7 @@ describe("addListEntry", () => { const users = new Users(mockClient); const { entry, error } = await users.addListEntry(fake.create.email, fake.addListEntry.options); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(entry).toBeNull(); expect(mockClient.post).toHaveBeenCalled(); }); @@ -204,7 +204,7 @@ describe("listEntries", () => { const users = new Users(mockClient); const { entries, error } = await users.listEntries(fake.create.email, fake.addListEntry.options.listName); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(entries).toEqual([]); expect(mockClient.get).toHaveBeenCalled(); }); @@ -262,7 +262,7 @@ describe("deleteListEntry", () => { const users = new Users(mockClient); const { success, error } = await users.deleteListEntry(fake.create.email, fake.addListEntry.options); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(success).toBe(false); expect(mockClient.delete).toHaveBeenCalled(); }); diff --git a/test/webhooks.test.ts b/test/webhooks.test.ts index 3108bf5..4cad540 100644 --- a/test/webhooks.test.ts +++ b/test/webhooks.test.ts @@ -59,7 +59,7 @@ describe("enroll", () => { const webhooks = new Webhooks(mockClient); const { success, error } = await webhooks.enroll(fake.enroll.endpoint); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(success).toBe(false); expect(mockClient.post).toHaveBeenCalled(); }); @@ -89,7 +89,7 @@ describe("list", () => { const webhooks = new Webhooks(mockClient); const { webhooks: webhooksList, error } = await webhooks.list(); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(webhooksList).toEqual([]); expect(mockClient.get).toHaveBeenCalled(); }); @@ -120,7 +120,7 @@ describe("delete", () => { const webhooks = new Webhooks(mockClient); const { success, error } = await webhooks.delete(); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(success).toBe(false); expect(mockClient.delete).toHaveBeenCalled(); }); @@ -149,7 +149,7 @@ describe("getSigningKey", () => { const webhooks = new Webhooks(mockClient); const { key, error } = await webhooks.getSigningKey(fake.signingKey.id); - expect(error).toBeDefined(); + expect(error).toBeTruthy(); expect(key).toBeNull(); expect(mockClient.get).toHaveBeenCalled(); }); From 4844a1d1605768e51fb68849df41b13a929483ca Mon Sep 17 00:00:00 2001 From: Yizack Rangel Date: Sun, 14 Sep 2025 23:54:39 +0200 Subject: [PATCH 11/13] chore(deps): update deps --- package.json | 10 +- pnpm-lock.yaml | 1015 ++++++++++++++++++++++++------------------------ 2 files changed, 513 insertions(+), 512 deletions(-) diff --git a/package.json b/package.json index 1c9e0db..5e814dd 100644 --- a/package.json +++ b/package.json @@ -57,12 +57,12 @@ "devDependencies": { "@eslint/compat": "^1.3.2", "@stylistic/eslint-plugin": "^5.3.1", - "@types/node": "^24.3.0", - "@typescript-eslint/eslint-plugin": "^8.42.0", - "@typescript-eslint/parser": "^8.42.0", + "@types/node": "^24.4.0", + "@typescript-eslint/eslint-plugin": "^8.43.0", + "@typescript-eslint/parser": "^8.43.0", "@vitest/coverage-v8": "^3.2.4", "changelogen": "^0.6.2", - "eslint": "^9.34.0", + "eslint": "^9.35.0", "eslint-plugin-import-x": "^4.16.1", "jiti": "^2.5.1", "scule": "^1.3.0", @@ -72,5 +72,5 @@ "vitepress-plugin-group-icons": "^1.6.3", "vitest": "^3.2.4" }, - "packageManager": "pnpm@10.15.1" + "packageManager": "pnpm@10.16.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 04e9ee3..9acb2ca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,31 +14,31 @@ importers: devDependencies: '@eslint/compat': specifier: ^1.3.2 - version: 1.3.2(eslint@9.34.0(jiti@2.5.1)) + version: 1.3.2(eslint@9.35.0(jiti@2.5.1)) '@stylistic/eslint-plugin': specifier: ^5.3.1 - version: 5.3.1(eslint@9.34.0(jiti@2.5.1)) + version: 5.3.1(eslint@9.35.0(jiti@2.5.1)) '@types/node': - specifier: ^24.3.0 - version: 24.3.0 + specifier: ^24.4.0 + version: 24.4.0 '@typescript-eslint/eslint-plugin': - specifier: ^8.42.0 - version: 8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + specifier: ^8.43.0 + version: 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/parser': - specifier: ^8.42.0 - version: 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + specifier: ^8.43.0 + version: 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) '@vitest/coverage-v8': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@24.3.0)(jiti@2.5.1)) + version: 3.2.4(vitest@3.2.4(@types/node@24.4.0)(jiti@2.5.1)) changelogen: specifier: ^0.6.2 version: 0.6.2(magicast@0.3.5) eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@2.5.1) + specifier: ^9.35.0 + version: 9.35.0(jiti@2.5.1) eslint-plugin-import-x: specifier: ^4.16.1 - version: 4.16.1(@typescript-eslint/utils@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)) + version: 4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1)) jiti: specifier: ^2.5.1 version: 2.5.1 @@ -53,18 +53,18 @@ importers: version: 3.6.1(typescript@5.9.2)(vue@3.5.21(typescript@5.9.2)) vitepress: specifier: ^1.6.4 - version: 1.6.4(@algolia/client-search@5.36.0)(@types/node@24.3.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.2) + version: 1.6.4(@algolia/client-search@5.37.0)(@types/node@24.4.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.2) vitepress-plugin-group-icons: specifier: ^1.6.3 - version: 1.6.3(markdown-it@14.1.0)(vite@7.1.4(@types/node@24.3.0)(jiti@2.5.1)) + version: 1.6.3(markdown-it@14.1.0)(vite@7.1.5(@types/node@24.4.0)(jiti@2.5.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@24.3.0)(jiti@2.5.1) + version: 3.2.4(@types/node@24.4.0)(jiti@2.5.1) packages: - '@algolia/abtesting@1.2.0': - resolution: {integrity: sha512-Z6Liq7US5CpdHExZLfPMBPxQHHUObV587kGvCLniLr1UTx0fGFIeGNWd005WIqQXqEda9GyAi7T2e7DUupVv0g==} + '@algolia/abtesting@1.3.0': + resolution: {integrity: sha512-KqPVLdVNfoJzX5BKNGM9bsW8saHeyax8kmPFXul5gejrSPN3qss7PgsFH5mMem7oR8tvjvNkia97ljEYPYCN8Q==} engines: {node: '>= 14.0.0'} '@algolia/autocomplete-core@1.17.7': @@ -87,56 +87,56 @@ packages: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/client-abtesting@5.36.0': - resolution: {integrity: sha512-uGr57O1UqDDeZHYXr1VnUomtdgQMxb6fS8yC/LXCMOn5ucN4k6FlcCRqXQnUyiiFZNG/rVK3zpRiyomq4JWXdQ==} + '@algolia/client-abtesting@5.37.0': + resolution: {integrity: sha512-Dp2Zq+x9qQFnuiQhVe91EeaaPxWBhzwQ6QnznZQnH9C1/ei3dvtmAFfFeaTxM6FzfJXDLvVnaQagTYFTQz3R5g==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.36.0': - resolution: {integrity: sha512-/zrf0NMxcvBBQ4r9lIqM7rMt7oI7gY7bZ+bNcgpZAQMvzXbKJVla3MqKGuPC/bfOthKvAcAr0mCZ8/7GwBmkVw==} + '@algolia/client-analytics@5.37.0': + resolution: {integrity: sha512-wyXODDOluKogTuZxRII6mtqhAq4+qUR3zIUJEKTiHLe8HMZFxfUEI4NO2qSu04noXZHbv/sRVdQQqzKh12SZuQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.36.0': - resolution: {integrity: sha512-fDsg9w6xXWQyNkm/VfiWF2D9wnpTPv0fRVei7lWtz7cXJewhOmP1kKE2GaDTI4QDxVxgDkoPJ1+3UVMIzTcjjQ==} + '@algolia/client-common@5.37.0': + resolution: {integrity: sha512-GylIFlPvLy9OMgFG8JkonIagv3zF+Dx3H401Uo2KpmfMVBBJiGfAb9oYfXtplpRMZnZPxF5FnkWaI/NpVJMC+g==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.36.0': - resolution: {integrity: sha512-x6ZICyIN3BZjja47lqlMLG+AZwfx9wrYWttd6Daxp+wX/fFGxha6gdqxeoi5J44BmFqK8CUU4u8vpwHqGOCl4g==} + '@algolia/client-insights@5.37.0': + resolution: {integrity: sha512-T63afO2O69XHKw2+F7mfRoIbmXWGzgpZxgOFAdP3fR4laid7pWBt20P4eJ+Zn23wXS5kC9P2K7Bo3+rVjqnYiw==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.36.0': - resolution: {integrity: sha512-gnH9VHrC+/9OuaumbgxNXzzEq1AY2j3tm00ymNXNz35T7RQ2AK/x4T5b2UnjOUJejuXaSJ88gFyPk3nM5OhJZQ==} + '@algolia/client-personalization@5.37.0': + resolution: {integrity: sha512-1zOIXM98O9zD8bYDCJiUJRC/qNUydGHK/zRK+WbLXrW1SqLFRXECsKZa5KoG166+o5q5upk96qguOtE8FTXDWQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.36.0': - resolution: {integrity: sha512-GkWIS+cAMoxsNPHEp3j7iywO9JJMVHVCWHzPPHFXIe0iNIOfsnZy5MqC1T9sifjqoU9b0GGbzzdxB3TEdwfiFA==} + '@algolia/client-query-suggestions@5.37.0': + resolution: {integrity: sha512-31Nr2xOLBCYVal+OMZn1rp1H4lPs1914Tfr3a34wU/nsWJ+TB3vWjfkUUuuYhWoWBEArwuRzt3YNLn0F/KRVkg==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.36.0': - resolution: {integrity: sha512-MLx32nSeDSNxfx28IfvwfHEfeo3AYe9JgEj0rLeYtJGmt0W30K6tCNokxhWGUUKrggQTH6H1lnohWsoj2OC2bw==} + '@algolia/client-search@5.37.0': + resolution: {integrity: sha512-DAFVUvEg+u7jUs6BZiVz9zdaUebYULPiQ4LM2R4n8Nujzyj7BZzGr2DCd85ip4p/cx7nAZWKM8pLcGtkTRTdsg==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.36.0': - resolution: {integrity: sha512-6zmlPLCsyzShOsfs1G1uqxwLTojte3NLyukwyUmJFfa46DSq3wkIOE9hFtqAoV951dXp4sZd2KCFYJmgRjcYbA==} + '@algolia/ingestion@1.37.0': + resolution: {integrity: sha512-pkCepBRRdcdd7dTLbFddnu886NyyxmhgqiRcHHaDunvX03Ij4WzvouWrQq7B7iYBjkMQrLS8wQqSP0REfA4W8g==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.36.0': - resolution: {integrity: sha512-SjJeDqlzAKJiWhquqfDWLEu5X/PIM+5KvUH65c4LBvt8T+USOVJbijtzA9UHZ1eUIfFSDBmbzEH0YvlS6Di2mg==} + '@algolia/monitoring@1.37.0': + resolution: {integrity: sha512-fNw7pVdyZAAQQCJf1cc/ih4fwrRdQSgKwgor4gchsI/Q/ss9inmC6bl/69jvoRSzgZS9BX4elwHKdo0EfTli3w==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.36.0': - resolution: {integrity: sha512-FalJm3h9fwoZZpkkMpA0r4Grcvjk32FzmC4CXvlpyF/gBvu6pXE01yygjJBU20zGVLGsXU+Ad8nYPf+oGD7Zkg==} + '@algolia/recommend@5.37.0': + resolution: {integrity: sha512-U+FL5gzN2ldx3TYfQO5OAta2TBuIdabEdFwD5UVfWPsZE5nvOKkc/6BBqP54Z/adW/34c5ZrvvZhlhNTZujJXQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.36.0': - resolution: {integrity: sha512-weE9SImWIDmQrfGLb1pSPEfP3mioKQ84GaQRpUmjFxlxG/4nW2bSsmkV+kNp1s+iomL2gnxFknSmcQuuAy+kPA==} + '@algolia/requester-browser-xhr@5.37.0': + resolution: {integrity: sha512-Ao8GZo8WgWFABrU7iq+JAftXV0t+UcOtCDL4mzHHZ+rQeTTf1TZssr4d0vIuoqkVNnKt9iyZ7T4lQff4ydcTrw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.36.0': - resolution: {integrity: sha512-zGPI2sgzvOwCHTVMmDvc301iirOKCtJ+Egh+HQB/+DG0zTGUT1DpdwQVT25A7Yin/twnO8CkFpI/S+74FVYNjg==} + '@algolia/requester-fetch@5.37.0': + resolution: {integrity: sha512-H7OJOXrFg5dLcGJ22uxx8eiFId0aB9b0UBhoOi4SMSuDBe6vjJJ/LeZyY25zPaSvkXNBN3vAM+ad6M0h6ha3AA==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.36.0': - resolution: {integrity: sha512-dNbBGE/O6VG/6vFhv3CFm5za4rubAVrhQf/ef0YWiDqPMmalPxGEzIijw4xV1mU1JmX2ffyp/x8Kdtz24sDkOQ==} + '@algolia/requester-node-http@5.37.0': + resolution: {integrity: sha512-npZ9aeag4SGTx677eqPL3rkSPlQrnzx/8wNrl1P7GpWq9w/eTmRbOq+wKrJ2r78idlY0MMgmY/mld2tq6dc44g==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': @@ -161,13 +161,13 @@ packages: resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.3': - resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==} + '@babel/parser@7.28.4': + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/types@7.28.2': - resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} + '@babel/types@7.28.4': + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@1.0.2': @@ -500,8 +500,8 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.7.0': - resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + '@eslint-community/eslint-utils@4.9.0': + resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -535,8 +535,8 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.34.0': - resolution: {integrity: sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==} + '@eslint/js@9.35.0': + resolution: {integrity: sha512-30iXE9whjlILfWobBkNerJo+TXYsgVM5ERQwMcMKCHckHflCmf7wXDAHlARoWnh0s1U72WqlbeyE7iAcCzuCPw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': @@ -551,18 +551,14 @@ packages: resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - '@humanwhocodes/retry@0.4.3': resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} @@ -570,8 +566,8 @@ packages: '@iconify-json/logos@1.2.9': resolution: {integrity: sha512-G6VCdFnwZcrT6Eveq3m43oJfLw/CX8plwFcE+2jgv3fiGB64pTmnU7Yd1MNZ/eA+/Re2iEDhuCfSNOWTHwwK8w==} - '@iconify-json/simple-icons@1.2.50': - resolution: {integrity: sha512-Z2ggRwKYEBB9eYAEi4NqEgIzyLhu0Buh4+KGzMPD6+xG7mk52wZJwLT/glDPtfslV503VtJbqzWqBUGkCMKOFA==} + '@iconify-json/simple-icons@1.2.52': + resolution: {integrity: sha512-c41YOMzBhl3hp58WJLxT+Qq3UhBd8GZAMkbS8ddlCuIGLW0COGe2YSfOA2+poA8/bxLhUQODRNjAy3KhiAOtzA==} '@iconify-json/vscode-icons@1.2.30': resolution: {integrity: sha512-dlTOc8w4a8/QNumZzMve+APJa6xQVXPZwo8qBk/MaYfY42NPrQT83QXkbTWKDkuEu/xgHPXvKZZBL7Yy12vYQw==} @@ -608,8 +604,8 @@ packages: '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/trace-mapping@0.3.30': - resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} @@ -675,8 +671,8 @@ packages: rollup: optional: true - '@rollup/pluginutils@5.2.0': - resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -684,108 +680,108 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.50.0': - resolution: {integrity: sha512-lVgpeQyy4fWN5QYebtW4buT/4kn4p4IJ+kDNB4uYNT5b8c8DLJDg6titg20NIg7E8RWwdWZORW6vUFfrLyG3KQ==} + '@rollup/rollup-android-arm-eabi@4.50.1': + resolution: {integrity: sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.50.0': - resolution: {integrity: sha512-2O73dR4Dc9bp+wSYhviP6sDziurB5/HCym7xILKifWdE9UsOe2FtNcM+I4xZjKrfLJnq5UR8k9riB87gauiQtw==} + '@rollup/rollup-android-arm64@4.50.1': + resolution: {integrity: sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.50.0': - resolution: {integrity: sha512-vwSXQN8T4sKf1RHr1F0s98Pf8UPz7pS6P3LG9NSmuw0TVh7EmaE+5Ny7hJOZ0M2yuTctEsHHRTMi2wuHkdS6Hg==} + '@rollup/rollup-darwin-arm64@4.50.1': + resolution: {integrity: sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.50.0': - resolution: {integrity: sha512-cQp/WG8HE7BCGyFVuzUg0FNmupxC+EPZEwWu2FCGGw5WDT1o2/YlENbm5e9SMvfDFR6FRhVCBePLqj0o8MN7Vw==} + '@rollup/rollup-darwin-x64@4.50.1': + resolution: {integrity: sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.50.0': - resolution: {integrity: sha512-UR1uTJFU/p801DvvBbtDD7z9mQL8J80xB0bR7DqW7UGQHRm/OaKzp4is7sQSdbt2pjjSS72eAtRh43hNduTnnQ==} + '@rollup/rollup-freebsd-arm64@4.50.1': + resolution: {integrity: sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.50.0': - resolution: {integrity: sha512-G/DKyS6PK0dD0+VEzH/6n/hWDNPDZSMBmqsElWnCRGrYOb2jC0VSupp7UAHHQ4+QILwkxSMaYIbQ72dktp8pKA==} + '@rollup/rollup-freebsd-x64@4.50.1': + resolution: {integrity: sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.50.0': - resolution: {integrity: sha512-u72Mzc6jyJwKjJbZZcIYmd9bumJu7KNmHYdue43vT1rXPm2rITwmPWF0mmPzLm9/vJWxIRbao/jrQmxTO0Sm9w==} + '@rollup/rollup-linux-arm-gnueabihf@4.50.1': + resolution: {integrity: sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.50.0': - resolution: {integrity: sha512-S4UefYdV0tnynDJV1mdkNawp0E5Qm2MtSs330IyHgaccOFrwqsvgigUD29uT+B/70PDY1eQ3t40+xf6wIvXJyg==} + '@rollup/rollup-linux-arm-musleabihf@4.50.1': + resolution: {integrity: sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.50.0': - resolution: {integrity: sha512-1EhkSvUQXJsIhk4msxP5nNAUWoB4MFDHhtc4gAYvnqoHlaL9V3F37pNHabndawsfy/Tp7BPiy/aSa6XBYbaD1g==} + '@rollup/rollup-linux-arm64-gnu@4.50.1': + resolution: {integrity: sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.50.0': - resolution: {integrity: sha512-EtBDIZuDtVg75xIPIK1l5vCXNNCIRM0OBPUG+tbApDuJAy9mKago6QxX+tfMzbCI6tXEhMuZuN1+CU8iDW+0UQ==} + '@rollup/rollup-linux-arm64-musl@4.50.1': + resolution: {integrity: sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.50.0': - resolution: {integrity: sha512-BGYSwJdMP0hT5CCmljuSNx7+k+0upweM2M4YGfFBjnFSZMHOLYR0gEEj/dxyYJ6Zc6AiSeaBY8dWOa11GF/ppQ==} + '@rollup/rollup-linux-loongarch64-gnu@4.50.1': + resolution: {integrity: sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.50.0': - resolution: {integrity: sha512-I1gSMzkVe1KzAxKAroCJL30hA4DqSi+wGc5gviD0y3IL/VkvcnAqwBf4RHXHyvH66YVHxpKO8ojrgc4SrWAnLg==} + '@rollup/rollup-linux-ppc64-gnu@4.50.1': + resolution: {integrity: sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.50.0': - resolution: {integrity: sha512-bSbWlY3jZo7molh4tc5dKfeSxkqnf48UsLqYbUhnkdnfgZjgufLS/NTA8PcP/dnvct5CCdNkABJ56CbclMRYCA==} + '@rollup/rollup-linux-riscv64-gnu@4.50.1': + resolution: {integrity: sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.50.0': - resolution: {integrity: sha512-LSXSGumSURzEQLT2e4sFqFOv3LWZsEF8FK7AAv9zHZNDdMnUPYH3t8ZlaeYYZyTXnsob3htwTKeWtBIkPV27iQ==} + '@rollup/rollup-linux-riscv64-musl@4.50.1': + resolution: {integrity: sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.50.0': - resolution: {integrity: sha512-CxRKyakfDrsLXiCyucVfVWVoaPA4oFSpPpDwlMcDFQvrv3XY6KEzMtMZrA+e/goC8xxp2WSOxHQubP8fPmmjOQ==} + '@rollup/rollup-linux-s390x-gnu@4.50.1': + resolution: {integrity: sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.50.0': - resolution: {integrity: sha512-8PrJJA7/VU8ToHVEPu14FzuSAqVKyo5gg/J8xUerMbyNkWkO9j2ExBho/68RnJsMGNJq4zH114iAttgm7BZVkA==} + '@rollup/rollup-linux-x64-gnu@4.50.1': + resolution: {integrity: sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.50.0': - resolution: {integrity: sha512-SkE6YQp+CzpyOrbw7Oc4MgXFvTw2UIBElvAvLCo230pyxOLmYwRPwZ/L5lBe/VW/qT1ZgND9wJfOsdy0XptRvw==} + '@rollup/rollup-linux-x64-musl@4.50.1': + resolution: {integrity: sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.50.0': - resolution: {integrity: sha512-PZkNLPfvXeIOgJWA804zjSFH7fARBBCpCXxgkGDRjjAhRLOR8o0IGS01ykh5GYfod4c2yiiREuDM8iZ+pVsT+Q==} + '@rollup/rollup-openharmony-arm64@4.50.1': + resolution: {integrity: sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.50.0': - resolution: {integrity: sha512-q7cIIdFvWQoaCbLDUyUc8YfR3Jh2xx3unO8Dn6/TTogKjfwrax9SyfmGGK6cQhKtjePI7jRfd7iRYcxYs93esg==} + '@rollup/rollup-win32-arm64-msvc@4.50.1': + resolution: {integrity: sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.50.0': - resolution: {integrity: sha512-XzNOVg/YnDOmFdDKcxxK410PrcbcqZkBmz+0FicpW5jtjKQxcW1BZJEQOF0NJa6JO7CZhett8GEtRN/wYLYJuw==} + '@rollup/rollup-win32-ia32-msvc@4.50.1': + resolution: {integrity: sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.50.0': - resolution: {integrity: sha512-xMmiWRR8sp72Zqwjgtf3QbZfF1wdh8X2ABu3EaozvZcyHJeU0r+XAnXdKgs4cCAp6ORoYoCygipYP1mjmbjrsg==} + '@rollup/rollup-win32-x64-msvc@4.50.1': + resolution: {integrity: sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==} cpu: [x64] os: [win32] @@ -819,8 +815,8 @@ packages: peerDependencies: eslint: '>=9.0.0' - '@tybys/wasm-util@0.10.0': - resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} '@types/chai@5.2.2': resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} @@ -849,8 +845,8 @@ packages: '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} - '@types/node@24.3.0': - resolution: {integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==} + '@types/node@24.4.0': + resolution: {integrity: sha512-gUuVEAK4/u6F9wRLznPUU4WGUacSEBDPoC2TrBkw3GAnOLHBL45QdfHOXp1kJ4ypBGLxTOB+t7NJLpKoC3gznQ==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -861,63 +857,63 @@ packages: '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} - '@typescript-eslint/eslint-plugin@8.42.0': - resolution: {integrity: sha512-Aq2dPqsQkxHOLfb2OPv43RnIvfj05nw8v/6n3B2NABIPpHnjQnaLo9QGMTvml+tv4korl/Cjfrb/BYhoL8UUTQ==} + '@typescript-eslint/eslint-plugin@8.43.0': + resolution: {integrity: sha512-8tg+gt7ENL7KewsKMKDHXR1vm8tt9eMxjJBYINf6swonlWgkYn5NwyIgXpbbDxTNU5DgpDFfj95prcTq2clIQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.42.0 + '@typescript-eslint/parser': ^8.43.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.42.0': - resolution: {integrity: sha512-r1XG74QgShUgXph1BYseJ+KZd17bKQib/yF3SR+demvytiRXrwd12Blnz5eYGm8tXaeRdd4x88MlfwldHoudGg==} + '@typescript-eslint/parser@8.43.0': + resolution: {integrity: sha512-B7RIQiTsCBBmY+yW4+ILd6mF5h1FUwJsVvpqkrgpszYifetQ2Ke+Z4u6aZh0CblkUGIdR59iYVyXqqZGkZ3aBw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.42.0': - resolution: {integrity: sha512-vfVpLHAhbPjilrabtOSNcUDmBboQNrJUiNAGoImkZKnMjs2TIcWG33s4Ds0wY3/50aZmTMqJa6PiwkwezaAklg==} + '@typescript-eslint/project-service@8.43.0': + resolution: {integrity: sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.42.0': - resolution: {integrity: sha512-51+x9o78NBAVgQzOPd17DkNTnIzJ8T/O2dmMBLoK9qbY0Gm52XJcdJcCl18ExBMiHo6jPMErUQWUv5RLE51zJw==} + '@typescript-eslint/scope-manager@8.43.0': + resolution: {integrity: sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.42.0': - resolution: {integrity: sha512-kHeFUOdwAJfUmYKjR3CLgZSglGHjbNTi1H8sTYRYV2xX6eNz4RyJ2LIgsDLKf8Yi0/GL1WZAC/DgZBeBft8QAQ==} + '@typescript-eslint/tsconfig-utils@8.43.0': + resolution: {integrity: sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.42.0': - resolution: {integrity: sha512-9KChw92sbPTYVFw3JLRH1ockhyR3zqqn9lQXol3/YbI6jVxzWoGcT3AsAW0mu1MY0gYtsXnUGV/AKpkAj5tVlQ==} + '@typescript-eslint/type-utils@8.43.0': + resolution: {integrity: sha512-qaH1uLBpBuBBuRf8c1mLJ6swOfzCXryhKND04Igr4pckzSEW9JX5Aw9AgW00kwfjWJF0kk0ps9ExKTfvXfw4Qg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.42.0': - resolution: {integrity: sha512-LdtAWMiFmbRLNP7JNeY0SqEtJvGMYSzfiWBSmx+VSZ1CH+1zyl8Mmw1TT39OrtsRvIYShjJWzTDMPWZJCpwBlw==} + '@typescript-eslint/types@8.43.0': + resolution: {integrity: sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.42.0': - resolution: {integrity: sha512-ku/uYtT4QXY8sl9EDJETD27o3Ewdi72hcXg1ah/kkUgBvAYHLwj2ofswFFNXS+FL5G+AGkxBtvGt8pFBHKlHsQ==} + '@typescript-eslint/typescript-estree@8.43.0': + resolution: {integrity: sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.42.0': - resolution: {integrity: sha512-JnIzu7H3RH5BrKC4NoZqRfmjqCIS1u3hGZltDYJgkVdqAezl4L9d1ZLw+36huCujtSBSAirGINF/S4UxOcR+/g==} + '@typescript-eslint/utils@8.43.0': + resolution: {integrity: sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.42.0': - resolution: {integrity: sha512-3WbiuzoEowaEn8RSnhJBrxSwX8ULYE9CXaPepS2C2W3NSA5NNIvBaslpBSBElPq0UGr0xVJlXFWOAKIkyylydQ==} + '@typescript-eslint/visitor-keys@8.43.0': + resolution: {integrity: sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -1164,24 +1160,24 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - algoliasearch@5.36.0: - resolution: {integrity: sha512-FpwQ+p4x4RIsWnPj2z9idOC70T90ga7Oeh8BURSFKpqp5lITRsgkIj/bwYj2bY5xbyD7uBuP9AZRnM5EV20WOw==} + algoliasearch@5.37.0: + resolution: {integrity: sha512-y7gau/ZOQDqoInTQp0IwTOjkrHc4Aq4R8JgpmCleFwiLl+PbN2DMWoDUWZnrK8AhNJwT++dn28Bt4NZYNLAmuA==} engines: {node: '>= 14.0.0'} ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.2.0: - resolution: {integrity: sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} argparse@2.0.1: @@ -1204,6 +1200,10 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + baseline-browser-mapping@2.8.3: + resolution: {integrity: sha512-mcE+Wr2CAhHNWxXN/DdTI+n4gsPc5QpXpWnyCQWiQYIYZX+ZMJ8juXZgjRa/0/YPJo/NSsgW15/YgmI4nbysYw==} + hasBin: true + birpc@2.5.0: resolution: {integrity: sha512-VSWO/W6nNQdyP520F1mhf+Lc2f8pjGQOtoHHm7Ze8Go1kX7akpVIrtTa0fn+HB0QJEDVacl6aO08YE0PgXfdnQ==} @@ -1220,8 +1220,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.25.4: - resolution: {integrity: sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==} + browserslist@4.26.0: + resolution: {integrity: sha512-P9go2WrP9FiPwLv3zqRD/Uoxo0RSHjzFCiQz7d4vbmwNqQFo9T9WCeP/Qn5EbcKQY6DBbkxEXNcpJOmncNrb7A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1248,8 +1248,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001739: - resolution: {integrity: sha512-y+j60d6ulelrNSwpPyrHdl+9mJnQzHBr08xm48Qno0nSk4h3Qojh+ziv2qE6rXf4k3tadF4o1J/1tAbVm1NtnA==} + caniuse-lite@1.0.30001741: + resolution: {integrity: sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -1382,8 +1382,8 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - debug@4.4.1: - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -1440,15 +1440,15 @@ packages: domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - dotenv@17.2.1: - resolution: {integrity: sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==} + dotenv@17.2.2: + resolution: {integrity: sha512-Sf2LSQP+bOlhKWWyhFsn0UsfdK/kCWRv1iuA2gXAwt3dyNabr6QSj00I2V10pidqz69soatm9ZwZvpQMTIOd5Q==} engines: {node: '>=12'} eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.212: - resolution: {integrity: sha512-gE7ErIzSW+d8jALWMcOIgf+IB6lpfsg6NwOhPVwKzDtN2qcBix47vlin4yzSregYDxTCXOUqAZjVY/Z3naS7ww==} + electron-to-chromium@1.5.218: + resolution: {integrity: sha512-uwwdN0TUHs8u6iRgN8vKeWZMRll4gBkz+QMqdS7DDe49uiK68/UX92lFb61oiFPrpYZNeZIqa4bA7O6Aiasnzg==} emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -1518,8 +1518,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.34.0: - resolution: {integrity: sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==} + eslint@9.35.0: + resolution: {integrity: sha512-QePbBFMJFjgmlE+cXAlbHZbHpdFVS2E/6vzCy7aKlebddvl1vadiC4JFV5u/wqTkNUwEV8WrQi257jf5f06hrg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -1831,8 +1831,8 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - magic-string@0.30.18: - resolution: {integrity: sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==} + magic-string@0.30.19: + resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} @@ -1904,15 +1904,15 @@ packages: mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - mkdist@2.3.0: - resolution: {integrity: sha512-thkRk+pHdudjdZT3FJpPZ2+pncI6mGlH/B+KBVddlZj4MrFGW41sRIv1wZawZUHU8v7cttGaj+5nx8P+dG664A==} + mkdist@2.4.1: + resolution: {integrity: sha512-Ezk0gi04GJBkqMfsksICU5Rjoemc4biIekwgrONWVPor2EO/N9nBgN6MZXAf7Yw4mDDhrNyKbdETaHNevfumKg==} hasBin: true peerDependencies: - sass: ^1.85.0 - typescript: '>=5.7.3' - vue: ^3.5.13 + sass: ^1.92.1 + typescript: '>=5.9.2' + vue: ^3.5.21 vue-sfc-transformer: ^0.1.1 - vue-tsc: ^1.8.27 || ^2.0.21 + vue-tsc: ^1.8.27 || ^2.0.21 || ^3.0.0 peerDependenciesMeta: sass: optional: true @@ -1951,8 +1951,8 @@ packages: node-fetch-native@1.6.7: resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + node-releases@2.0.21: + resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} normalize-range@0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} @@ -2222,8 +2222,8 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} - preact@10.27.1: - resolution: {integrity: sha512-V79raXEWch/rbqoNc7nT9E4ep7lu+mI3+sBmfRD4i1M73R3WLYcCtdI0ibxGVf4eQL8ZIz2nFacqEC+rmnOORQ==} + preact@10.27.2: + resolution: {integrity: sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -2292,13 +2292,13 @@ packages: rollup: ^3.29.4 || ^4 typescript: ^4.5 || ^5.0 - rollup@4.50.0: - resolution: {integrity: sha512-/Zl4D8zPifNmyGzJS+3kVoyXeDeT/GrsJM94sACNg9RtUE0hrHa1bNPtRSrfHTMH5HjRzce6K7rlTh3Khiw+pw==} + rollup@4.50.1: + resolution: {integrity: sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - run-applescript@7.0.0: - resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} engines: {node: '>=18'} run-parallel@1.2.0: @@ -2372,8 +2372,8 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} strip-json-comments@3.1.1: @@ -2422,8 +2422,8 @@ packages: tinyexec@1.0.1: resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} - tinyglobby@0.2.14: - resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} tinypool@1.1.1: @@ -2478,8 +2478,8 @@ packages: typescript: optional: true - undici-types@7.10.0: - resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} + undici-types@7.11.0: + resolution: {integrity: sha512-kt1ZriHTi7MU+Z/r9DOdAI3ONdaR3M3csEaRc6ewa4f4dTvX4cQCbJ4NkEn0ohE4hHtq85+PhPSTY+pO/1PwgA==} unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} @@ -2526,8 +2526,8 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@5.4.19: - resolution: {integrity: sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==} + vite@5.4.20: + resolution: {integrity: sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -2557,8 +2557,8 @@ packages: terser: optional: true - vite@7.1.4: - resolution: {integrity: sha512-X5QFK4SGynAeeIt+A7ZWnApdUyHYm+pzv/8/A57LqSGcI88U6R6ipOs3uCesdc6yl7nl+zNO0t8LmqAdXcQihw==} + vite@7.1.5: + resolution: {integrity: sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -2686,122 +2686,122 @@ packages: snapshots: - '@algolia/abtesting@1.2.0': + '@algolia/abtesting@1.3.0': dependencies: - '@algolia/client-common': 5.36.0 - '@algolia/requester-browser-xhr': 5.36.0 - '@algolia/requester-fetch': 5.36.0 - '@algolia/requester-node-http': 5.36.0 + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 - '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0)(search-insights@2.17.3)': + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.37.0)(algoliasearch@5.37.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.37.0)(algoliasearch@5.37.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.37.0)(algoliasearch@5.37.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0)(search-insights@2.17.3)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.37.0)(algoliasearch@5.37.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.37.0)(algoliasearch@5.37.0) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0)': + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.37.0)(algoliasearch@5.37.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0) - '@algolia/client-search': 5.36.0 - algoliasearch: 5.36.0 + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.37.0)(algoliasearch@5.37.0) + '@algolia/client-search': 5.37.0 + algoliasearch: 5.37.0 - '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0)': + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.37.0)(algoliasearch@5.37.0)': dependencies: - '@algolia/client-search': 5.36.0 - algoliasearch: 5.36.0 + '@algolia/client-search': 5.37.0 + algoliasearch: 5.37.0 - '@algolia/client-abtesting@5.36.0': + '@algolia/client-abtesting@5.37.0': dependencies: - '@algolia/client-common': 5.36.0 - '@algolia/requester-browser-xhr': 5.36.0 - '@algolia/requester-fetch': 5.36.0 - '@algolia/requester-node-http': 5.36.0 + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 - '@algolia/client-analytics@5.36.0': + '@algolia/client-analytics@5.37.0': dependencies: - '@algolia/client-common': 5.36.0 - '@algolia/requester-browser-xhr': 5.36.0 - '@algolia/requester-fetch': 5.36.0 - '@algolia/requester-node-http': 5.36.0 + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 - '@algolia/client-common@5.36.0': {} + '@algolia/client-common@5.37.0': {} - '@algolia/client-insights@5.36.0': + '@algolia/client-insights@5.37.0': dependencies: - '@algolia/client-common': 5.36.0 - '@algolia/requester-browser-xhr': 5.36.0 - '@algolia/requester-fetch': 5.36.0 - '@algolia/requester-node-http': 5.36.0 + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 - '@algolia/client-personalization@5.36.0': + '@algolia/client-personalization@5.37.0': dependencies: - '@algolia/client-common': 5.36.0 - '@algolia/requester-browser-xhr': 5.36.0 - '@algolia/requester-fetch': 5.36.0 - '@algolia/requester-node-http': 5.36.0 + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 - '@algolia/client-query-suggestions@5.36.0': + '@algolia/client-query-suggestions@5.37.0': dependencies: - '@algolia/client-common': 5.36.0 - '@algolia/requester-browser-xhr': 5.36.0 - '@algolia/requester-fetch': 5.36.0 - '@algolia/requester-node-http': 5.36.0 + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 - '@algolia/client-search@5.36.0': + '@algolia/client-search@5.37.0': dependencies: - '@algolia/client-common': 5.36.0 - '@algolia/requester-browser-xhr': 5.36.0 - '@algolia/requester-fetch': 5.36.0 - '@algolia/requester-node-http': 5.36.0 + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 - '@algolia/ingestion@1.36.0': + '@algolia/ingestion@1.37.0': dependencies: - '@algolia/client-common': 5.36.0 - '@algolia/requester-browser-xhr': 5.36.0 - '@algolia/requester-fetch': 5.36.0 - '@algolia/requester-node-http': 5.36.0 + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 - '@algolia/monitoring@1.36.0': + '@algolia/monitoring@1.37.0': dependencies: - '@algolia/client-common': 5.36.0 - '@algolia/requester-browser-xhr': 5.36.0 - '@algolia/requester-fetch': 5.36.0 - '@algolia/requester-node-http': 5.36.0 + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 - '@algolia/recommend@5.36.0': + '@algolia/recommend@5.37.0': dependencies: - '@algolia/client-common': 5.36.0 - '@algolia/requester-browser-xhr': 5.36.0 - '@algolia/requester-fetch': 5.36.0 - '@algolia/requester-node-http': 5.36.0 + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 - '@algolia/requester-browser-xhr@5.36.0': + '@algolia/requester-browser-xhr@5.37.0': dependencies: - '@algolia/client-common': 5.36.0 + '@algolia/client-common': 5.37.0 - '@algolia/requester-fetch@5.36.0': + '@algolia/requester-fetch@5.37.0': dependencies: - '@algolia/client-common': 5.36.0 + '@algolia/client-common': 5.37.0 - '@algolia/requester-node-http@5.36.0': + '@algolia/requester-node-http@5.37.0': dependencies: - '@algolia/client-common': 5.36.0 + '@algolia/client-common': 5.37.0 '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 '@antfu/install-pkg@1.1.0': dependencies: @@ -2821,11 +2821,11 @@ snapshots: '@babel/helper-validator-identifier@7.27.1': {} - '@babel/parser@7.28.3': + '@babel/parser@7.28.4': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 - '@babel/types@7.28.2': + '@babel/types@7.28.4': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 @@ -2834,10 +2834,10 @@ snapshots: '@docsearch/css@3.8.2': {} - '@docsearch/js@3.8.2(@algolia/client-search@5.36.0)(search-insights@2.17.3)': + '@docsearch/js@3.8.2(@algolia/client-search@5.37.0)(search-insights@2.17.3)': dependencies: - '@docsearch/react': 3.8.2(@algolia/client-search@5.36.0)(search-insights@2.17.3) - preact: 10.27.1 + '@docsearch/react': 3.8.2(@algolia/client-search@5.37.0)(search-insights@2.17.3) + preact: 10.27.2 transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -2845,12 +2845,12 @@ snapshots: - react-dom - search-insights - '@docsearch/react@3.8.2(@algolia/client-search@5.36.0)(search-insights@2.17.3)': + '@docsearch/react@3.8.2(@algolia/client-search@5.37.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.36.0)(algoliasearch@5.36.0) + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.37.0)(algoliasearch@5.37.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.37.0)(algoliasearch@5.37.0) '@docsearch/css': 3.8.2 - algoliasearch: 5.36.0 + algoliasearch: 5.37.0 optionalDependencies: search-insights: 2.17.3 transitivePeerDependencies: @@ -3019,21 +3019,21 @@ snapshots: '@esbuild/win32-x64@0.25.9': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.34.0(jiti@2.5.1))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.35.0(jiti@2.5.1))': dependencies: - eslint: 9.34.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.5.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.3.2(eslint@9.34.0(jiti@2.5.1))': + '@eslint/compat@1.3.2(eslint@9.35.0(jiti@2.5.1))': optionalDependencies: - eslint: 9.34.0(jiti@2.5.1) + eslint: 9.35.0(jiti@2.5.1) '@eslint/config-array@0.21.0': dependencies: '@eslint/object-schema': 2.1.6 - debug: 4.4.1 + debug: 4.4.3 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -3047,7 +3047,7 @@ snapshots: '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 - debug: 4.4.1 + debug: 4.4.3 espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 @@ -3058,7 +3058,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.34.0': {} + '@eslint/js@9.35.0': {} '@eslint/object-schema@2.1.6': {} @@ -3069,22 +3069,20 @@ snapshots: '@humanfs/core@0.19.1': {} - '@humanfs/node@0.16.6': + '@humanfs/node@0.16.7': dependencies: '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/retry': 0.4.3 '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/retry@0.3.1': {} - '@humanwhocodes/retry@0.4.3': {} '@iconify-json/logos@1.2.9': dependencies: '@iconify/types': 2.0.0 - '@iconify-json/simple-icons@1.2.50': + '@iconify-json/simple-icons@1.2.52': dependencies: '@iconify/types': 2.0.0 @@ -3099,7 +3097,7 @@ snapshots: '@antfu/install-pkg': 1.1.0 '@antfu/utils': 9.2.0 '@iconify/types': 2.0.0 - debug: 4.4.1 + debug: 4.4.3 globals: 15.15.0 kolorist: 1.8.0 local-pkg: 1.1.2 @@ -3117,7 +3115,7 @@ snapshots: dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 @@ -3127,13 +3125,13 @@ snapshots: '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/trace-mapping@0.3.30': + '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 @@ -3142,7 +3140,7 @@ snapshots: dependencies: '@emnapi/core': 1.5.0 '@emnapi/runtime': 1.5.0 - '@tybys/wasm-util': 0.10.0 + '@tybys/wasm-util': 0.10.1 optional: true '@nodelib/fs.scandir@2.1.5': @@ -3160,114 +3158,114 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@rollup/plugin-alias@5.1.1(rollup@4.50.0)': + '@rollup/plugin-alias@5.1.1(rollup@4.50.1)': optionalDependencies: - rollup: 4.50.0 + rollup: 4.50.1 - '@rollup/plugin-commonjs@28.0.6(rollup@4.50.0)': + '@rollup/plugin-commonjs@28.0.6(rollup@4.50.1)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.50.0) + '@rollup/pluginutils': 5.3.0(rollup@4.50.1) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.3) is-reference: 1.2.1 - magic-string: 0.30.18 + magic-string: 0.30.19 picomatch: 4.0.3 optionalDependencies: - rollup: 4.50.0 + rollup: 4.50.1 - '@rollup/plugin-json@6.1.0(rollup@4.50.0)': + '@rollup/plugin-json@6.1.0(rollup@4.50.1)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.50.0) + '@rollup/pluginutils': 5.3.0(rollup@4.50.1) optionalDependencies: - rollup: 4.50.0 + rollup: 4.50.1 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.50.0)': + '@rollup/plugin-node-resolve@16.0.1(rollup@4.50.1)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.50.0) + '@rollup/pluginutils': 5.3.0(rollup@4.50.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.50.0 + rollup: 4.50.1 - '@rollup/plugin-replace@6.0.2(rollup@4.50.0)': + '@rollup/plugin-replace@6.0.2(rollup@4.50.1)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.50.0) - magic-string: 0.30.18 + '@rollup/pluginutils': 5.3.0(rollup@4.50.1) + magic-string: 0.30.19 optionalDependencies: - rollup: 4.50.0 + rollup: 4.50.1 - '@rollup/pluginutils@5.2.0(rollup@4.50.0)': + '@rollup/pluginutils@5.3.0(rollup@4.50.1)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.50.0 + rollup: 4.50.1 - '@rollup/rollup-android-arm-eabi@4.50.0': + '@rollup/rollup-android-arm-eabi@4.50.1': optional: true - '@rollup/rollup-android-arm64@4.50.0': + '@rollup/rollup-android-arm64@4.50.1': optional: true - '@rollup/rollup-darwin-arm64@4.50.0': + '@rollup/rollup-darwin-arm64@4.50.1': optional: true - '@rollup/rollup-darwin-x64@4.50.0': + '@rollup/rollup-darwin-x64@4.50.1': optional: true - '@rollup/rollup-freebsd-arm64@4.50.0': + '@rollup/rollup-freebsd-arm64@4.50.1': optional: true - '@rollup/rollup-freebsd-x64@4.50.0': + '@rollup/rollup-freebsd-x64@4.50.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.50.0': + '@rollup/rollup-linux-arm-gnueabihf@4.50.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.50.0': + '@rollup/rollup-linux-arm-musleabihf@4.50.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.50.0': + '@rollup/rollup-linux-arm64-gnu@4.50.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.50.0': + '@rollup/rollup-linux-arm64-musl@4.50.1': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.50.0': + '@rollup/rollup-linux-loongarch64-gnu@4.50.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.50.0': + '@rollup/rollup-linux-ppc64-gnu@4.50.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.50.0': + '@rollup/rollup-linux-riscv64-gnu@4.50.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.50.0': + '@rollup/rollup-linux-riscv64-musl@4.50.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.50.0': + '@rollup/rollup-linux-s390x-gnu@4.50.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.50.0': + '@rollup/rollup-linux-x64-gnu@4.50.1': optional: true - '@rollup/rollup-linux-x64-musl@4.50.0': + '@rollup/rollup-linux-x64-musl@4.50.1': optional: true - '@rollup/rollup-openharmony-arm64@4.50.0': + '@rollup/rollup-openharmony-arm64@4.50.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.50.0': + '@rollup/rollup-win32-arm64-msvc@4.50.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.50.0': + '@rollup/rollup-win32-ia32-msvc@4.50.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.50.0': + '@rollup/rollup-win32-x64-msvc@4.50.1': optional: true '@shikijs/core@2.5.0': @@ -3310,17 +3308,17 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} - '@stylistic/eslint-plugin@5.3.1(eslint@9.34.0(jiti@2.5.1))': + '@stylistic/eslint-plugin@5.3.1(eslint@9.35.0(jiti@2.5.1))': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1)) - '@typescript-eslint/types': 8.42.0 - eslint: 9.34.0(jiti@2.5.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.5.1)) + '@typescript-eslint/types': 8.43.0 + eslint: 9.35.0(jiti@2.5.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 picomatch: 4.0.3 - '@tybys/wasm-util@0.10.0': + '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 optional: true @@ -3352,9 +3350,9 @@ snapshots: '@types/mdurl@2.0.0': {} - '@types/node@24.3.0': + '@types/node@24.4.0': dependencies: - undici-types: 7.10.0 + undici-types: 7.11.0 '@types/resolve@1.20.2': {} @@ -3362,15 +3360,15 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript-eslint/eslint-plugin@8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.42.0 - '@typescript-eslint/type-utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.42.0 - eslint: 9.34.0(jiti@2.5.1) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.43.0 + '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.43.0 + eslint: 9.35.0(jiti@2.5.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -3379,57 +3377,57 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.42.0 - '@typescript-eslint/types': 8.42.0 - '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.42.0 - debug: 4.4.1 - eslint: 9.34.0(jiti@2.5.1) + '@typescript-eslint/scope-manager': 8.43.0 + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.43.0 + debug: 4.4.3 + eslint: 9.35.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.42.0(typescript@5.9.2)': + '@typescript-eslint/project-service@8.43.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2) - '@typescript-eslint/types': 8.42.0 - debug: 4.4.1 + '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) + '@typescript-eslint/types': 8.43.0 + debug: 4.4.3 typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.42.0': + '@typescript-eslint/scope-manager@8.43.0': dependencies: - '@typescript-eslint/types': 8.42.0 - '@typescript-eslint/visitor-keys': 8.42.0 + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/visitor-keys': 8.43.0 - '@typescript-eslint/tsconfig-utils@8.42.0(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.43.0(typescript@5.9.2)': dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.42.0 - '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) - debug: 4.4.1 - eslint: 9.34.0(jiti@2.5.1) + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + debug: 4.4.3 + eslint: 9.35.0(jiti@2.5.1) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.42.0': {} + '@typescript-eslint/types@8.43.0': {} - '@typescript-eslint/typescript-estree@8.42.0(typescript@5.9.2)': + '@typescript-eslint/typescript-estree@8.43.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/project-service': 8.42.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2) - '@typescript-eslint/types': 8.42.0 - '@typescript-eslint/visitor-keys': 8.42.0 - debug: 4.4.1 + '@typescript-eslint/project-service': 8.43.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/visitor-keys': 8.43.0 + debug: 4.4.3 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -3439,20 +3437,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1)) - '@typescript-eslint/scope-manager': 8.42.0 - '@typescript-eslint/types': 8.42.0 - '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) - eslint: 9.34.0(jiti@2.5.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.5.1)) + '@typescript-eslint/scope-manager': 8.43.0 + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + eslint: 9.35.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.42.0': + '@typescript-eslint/visitor-keys@8.43.0': dependencies: - '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/types': 8.43.0 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} @@ -3516,27 +3514,27 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@24.3.0))(vue@3.5.21(typescript@5.9.2))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.20(@types/node@24.4.0))(vue@3.5.21(typescript@5.9.2))': dependencies: - vite: 5.4.19(@types/node@24.3.0) + vite: 5.4.20(@types/node@24.4.0) vue: 3.5.21(typescript@5.9.2) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.3.0)(jiti@2.5.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.4.0)(jiti@2.5.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 ast-v8-to-istanbul: 0.3.5 - debug: 4.4.1 + debug: 4.4.3 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.2.0 - magic-string: 0.30.18 + magic-string: 0.30.19 magicast: 0.3.5 std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.3.0)(jiti@2.5.1) + vitest: 3.2.4(@types/node@24.4.0)(jiti@2.5.1) transitivePeerDependencies: - supports-color @@ -3548,13 +3546,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.4(@types/node@24.3.0)(jiti@2.5.1))': + '@vitest/mocker@3.2.4(vite@7.1.5(@types/node@24.4.0)(jiti@2.5.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 - magic-string: 0.30.18 + magic-string: 0.30.19 optionalDependencies: - vite: 7.1.4(@types/node@24.3.0)(jiti@2.5.1) + vite: 7.1.5(@types/node@24.4.0)(jiti@2.5.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -3569,7 +3567,7 @@ snapshots: '@vitest/snapshot@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 - magic-string: 0.30.18 + magic-string: 0.30.19 pathe: 2.0.3 '@vitest/spy@3.2.4': @@ -3584,7 +3582,7 @@ snapshots: '@vue/compiler-core@3.5.21': dependencies: - '@babel/parser': 7.28.3 + '@babel/parser': 7.28.4 '@vue/shared': 3.5.21 entities: 4.5.0 estree-walker: 2.0.2 @@ -3597,13 +3595,13 @@ snapshots: '@vue/compiler-sfc@3.5.21': dependencies: - '@babel/parser': 7.28.3 + '@babel/parser': 7.28.4 '@vue/compiler-core': 3.5.21 '@vue/compiler-dom': 3.5.21 '@vue/compiler-ssr': 3.5.21 '@vue/shared': 3.5.21 estree-walker: 2.0.2 - magic-string: 0.30.18 + magic-string: 0.30.19 postcss: 8.5.6 source-map-js: 1.2.1 @@ -3694,32 +3692,32 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - algoliasearch@5.36.0: - dependencies: - '@algolia/abtesting': 1.2.0 - '@algolia/client-abtesting': 5.36.0 - '@algolia/client-analytics': 5.36.0 - '@algolia/client-common': 5.36.0 - '@algolia/client-insights': 5.36.0 - '@algolia/client-personalization': 5.36.0 - '@algolia/client-query-suggestions': 5.36.0 - '@algolia/client-search': 5.36.0 - '@algolia/ingestion': 1.36.0 - '@algolia/monitoring': 1.36.0 - '@algolia/recommend': 5.36.0 - '@algolia/requester-browser-xhr': 5.36.0 - '@algolia/requester-fetch': 5.36.0 - '@algolia/requester-node-http': 5.36.0 + algoliasearch@5.37.0: + dependencies: + '@algolia/abtesting': 1.3.0 + '@algolia/client-abtesting': 5.37.0 + '@algolia/client-analytics': 5.37.0 + '@algolia/client-common': 5.37.0 + '@algolia/client-insights': 5.37.0 + '@algolia/client-personalization': 5.37.0 + '@algolia/client-query-suggestions': 5.37.0 + '@algolia/client-search': 5.37.0 + '@algolia/ingestion': 1.37.0 + '@algolia/monitoring': 1.37.0 + '@algolia/recommend': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 ansi-regex@5.0.1: {} - ansi-regex@6.2.0: {} + ansi-regex@6.2.2: {} ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - ansi-styles@6.2.1: {} + ansi-styles@6.2.3: {} argparse@2.0.1: {} @@ -3727,14 +3725,14 @@ snapshots: ast-v8-to-istanbul@0.3.5: dependencies: - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 js-tokens: 9.0.1 autoprefixer@10.4.21(postcss@8.5.6): dependencies: - browserslist: 4.25.4 - caniuse-lite: 1.0.30001739 + browserslist: 4.26.0 + caniuse-lite: 1.0.30001741 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -3743,6 +3741,8 @@ snapshots: balanced-match@1.0.2: {} + baseline-browser-mapping@2.8.3: {} + birpc@2.5.0: {} boolbase@1.0.0: {} @@ -3760,23 +3760,24 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.25.4: + browserslist@4.26.0: dependencies: - caniuse-lite: 1.0.30001739 - electron-to-chromium: 1.5.212 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.4) + baseline-browser-mapping: 2.8.3 + caniuse-lite: 1.0.30001741 + electron-to-chromium: 1.5.218 + node-releases: 2.0.21 + update-browserslist-db: 1.1.3(browserslist@4.26.0) bundle-name@4.1.0: dependencies: - run-applescript: 7.0.0 + run-applescript: 7.1.0 c12@3.2.0(magicast@0.3.5): dependencies: chokidar: 4.0.3 confbox: 0.2.2 defu: 6.1.4 - dotenv: 17.2.1 + dotenv: 17.2.2 exsolve: 1.0.7 giget: 2.0.0 jiti: 2.5.1 @@ -3794,12 +3795,12 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.25.4 - caniuse-lite: 1.0.30001739 + browserslist: 4.26.0 + caniuse-lite: 1.0.30001741 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001739: {} + caniuse-lite@1.0.30001741: {} ccount@2.0.1: {} @@ -3912,7 +3913,7 @@ snapshots: cssnano-preset-default@7.0.9(postcss@8.5.6): dependencies: - browserslist: 4.25.4 + browserslist: 4.26.0 css-declaration-sorter: 7.2.0(postcss@8.5.6) cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 @@ -3960,7 +3961,7 @@ snapshots: csstype@3.1.3: {} - debug@4.4.1: + debug@4.4.3: dependencies: ms: 2.1.3 @@ -4007,11 +4008,11 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 - dotenv@17.2.1: {} + dotenv@17.2.2: {} eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.212: {} + electron-to-chromium@1.5.218: {} emoji-regex-xs@1.0.0: {} @@ -4089,12 +4090,12 @@ snapshots: optionalDependencies: unrs-resolver: 1.11.1 - eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1)): + eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1)): dependencies: - '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/types': 8.43.0 comment-parser: 1.4.1 - debug: 4.4.1 - eslint: 9.34.0(jiti@2.5.1) + debug: 4.4.3 + eslint: 9.35.0(jiti@2.5.1) eslint-import-context: 0.1.9(unrs-resolver@1.11.1) is-glob: 4.0.3 minimatch: 10.0.3 @@ -4102,7 +4103,7 @@ snapshots: stable-hash-x: 0.2.0 unrs-resolver: 1.11.1 optionalDependencies: - '@typescript-eslint/utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) transitivePeerDependencies: - supports-color @@ -4115,17 +4116,17 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.34.0(jiti@2.5.1): + eslint@9.35.0(jiti@2.5.1): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.5.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.1 '@eslint/core': 0.15.2 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.34.0 + '@eslint/js': 9.35.0 '@eslint/plugin-kit': 0.3.5 - '@humanfs/node': 0.16.6 + '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 @@ -4133,7 +4134,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.1 + debug: 4.4.3 escape-string-regexp: 4.0.0 eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -4222,9 +4223,9 @@ snapshots: fix-dts-default-cjs-exports@1.0.1: dependencies: - magic-string: 0.30.18 + magic-string: 0.30.19 mlly: 1.8.0 - rollup: 4.50.0 + rollup: 4.50.1 flat-cache@4.0.1: dependencies: @@ -4370,8 +4371,8 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: - '@jridgewell/trace-mapping': 0.3.30 - debug: 4.4.1 + '@jridgewell/trace-mapping': 0.3.31 + debug: 4.4.3 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -4445,14 +4446,14 @@ snapshots: lru-cache@10.4.3: {} - magic-string@0.30.18: + magic-string@0.30.19: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 magicast@0.3.5: dependencies: - '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 source-map-js: 1.2.1 make-dir@4.0.0: @@ -4530,7 +4531,7 @@ snapshots: mitt@3.0.1: {} - mkdist@2.3.0(typescript@5.9.2)(vue@3.5.21(typescript@5.9.2)): + mkdist@2.4.1(typescript@5.9.2)(vue@3.5.21(typescript@5.9.2)): dependencies: autoprefixer: 10.4.21(postcss@8.5.6) citty: 0.1.6 @@ -4544,7 +4545,7 @@ snapshots: postcss: 8.5.6 postcss-nested: 7.0.2(postcss@8.5.6) semver: 7.7.2 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 optionalDependencies: typescript: 5.9.2 vue: 3.5.21(typescript@5.9.2) @@ -4568,7 +4569,7 @@ snapshots: node-fetch-native@1.6.7: {} - node-releases@2.0.19: {} + node-releases@2.0.21: {} normalize-range@0.1.2: {} @@ -4673,7 +4674,7 @@ snapshots: postcss-colormin@7.0.4(postcss@8.5.6): dependencies: - browserslist: 4.25.4 + browserslist: 4.26.0 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.5.6 @@ -4681,7 +4682,7 @@ snapshots: postcss-convert-values@7.0.7(postcss@8.5.6): dependencies: - browserslist: 4.25.4 + browserslist: 4.26.0 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -4710,7 +4711,7 @@ snapshots: postcss-merge-rules@7.0.6(postcss@8.5.6): dependencies: - browserslist: 4.25.4 + browserslist: 4.26.0 caniuse-api: 3.0.0 cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 @@ -4730,7 +4731,7 @@ snapshots: postcss-minify-params@7.0.4(postcss@8.5.6): dependencies: - browserslist: 4.25.4 + browserslist: 4.26.0 cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -4777,7 +4778,7 @@ snapshots: postcss-normalize-unicode@7.0.4(postcss@8.5.6): dependencies: - browserslist: 4.25.4 + browserslist: 4.26.0 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -4799,7 +4800,7 @@ snapshots: postcss-reduce-initial@7.0.4(postcss@8.5.6): dependencies: - browserslist: 4.25.4 + browserslist: 4.26.0 caniuse-api: 3.0.0 postcss: 8.5.6 @@ -4832,7 +4833,7 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - preact@10.27.1: {} + preact@10.27.2: {} prelude-ls@1.2.1: {} @@ -4879,42 +4880,42 @@ snapshots: rfdc@1.4.1: {} - rollup-plugin-dts@6.2.3(rollup@4.50.0)(typescript@5.9.2): + rollup-plugin-dts@6.2.3(rollup@4.50.1)(typescript@5.9.2): dependencies: - magic-string: 0.30.18 - rollup: 4.50.0 + magic-string: 0.30.19 + rollup: 4.50.1 typescript: 5.9.2 optionalDependencies: '@babel/code-frame': 7.27.1 - rollup@4.50.0: + rollup@4.50.1: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.50.0 - '@rollup/rollup-android-arm64': 4.50.0 - '@rollup/rollup-darwin-arm64': 4.50.0 - '@rollup/rollup-darwin-x64': 4.50.0 - '@rollup/rollup-freebsd-arm64': 4.50.0 - '@rollup/rollup-freebsd-x64': 4.50.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.50.0 - '@rollup/rollup-linux-arm-musleabihf': 4.50.0 - '@rollup/rollup-linux-arm64-gnu': 4.50.0 - '@rollup/rollup-linux-arm64-musl': 4.50.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.50.0 - '@rollup/rollup-linux-ppc64-gnu': 4.50.0 - '@rollup/rollup-linux-riscv64-gnu': 4.50.0 - '@rollup/rollup-linux-riscv64-musl': 4.50.0 - '@rollup/rollup-linux-s390x-gnu': 4.50.0 - '@rollup/rollup-linux-x64-gnu': 4.50.0 - '@rollup/rollup-linux-x64-musl': 4.50.0 - '@rollup/rollup-openharmony-arm64': 4.50.0 - '@rollup/rollup-win32-arm64-msvc': 4.50.0 - '@rollup/rollup-win32-ia32-msvc': 4.50.0 - '@rollup/rollup-win32-x64-msvc': 4.50.0 + '@rollup/rollup-android-arm-eabi': 4.50.1 + '@rollup/rollup-android-arm64': 4.50.1 + '@rollup/rollup-darwin-arm64': 4.50.1 + '@rollup/rollup-darwin-x64': 4.50.1 + '@rollup/rollup-freebsd-arm64': 4.50.1 + '@rollup/rollup-freebsd-x64': 4.50.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.50.1 + '@rollup/rollup-linux-arm-musleabihf': 4.50.1 + '@rollup/rollup-linux-arm64-gnu': 4.50.1 + '@rollup/rollup-linux-arm64-musl': 4.50.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.50.1 + '@rollup/rollup-linux-ppc64-gnu': 4.50.1 + '@rollup/rollup-linux-riscv64-gnu': 4.50.1 + '@rollup/rollup-linux-riscv64-musl': 4.50.1 + '@rollup/rollup-linux-s390x-gnu': 4.50.1 + '@rollup/rollup-linux-x64-gnu': 4.50.1 + '@rollup/rollup-linux-x64-musl': 4.50.1 + '@rollup/rollup-openharmony-arm64': 4.50.1 + '@rollup/rollup-win32-arm64-msvc': 4.50.1 + '@rollup/rollup-win32-ia32-msvc': 4.50.1 + '@rollup/rollup-win32-x64-msvc': 4.50.1 fsevents: 2.3.3 - run-applescript@7.0.0: {} + run-applescript@7.1.0: {} run-parallel@1.2.0: dependencies: @@ -4971,7 +4972,7 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 stringify-entities@4.0.4: dependencies: @@ -4982,9 +4983,9 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + strip-ansi@7.1.2: dependencies: - ansi-regex: 6.2.0 + ansi-regex: 6.2.2 strip-json-comments@3.1.1: {} @@ -4994,7 +4995,7 @@ snapshots: stylehacks@7.0.6(postcss@8.5.6): dependencies: - browserslist: 4.25.4 + browserslist: 4.26.0 postcss: 8.5.6 postcss-selector-parser: 7.1.0 @@ -5032,7 +5033,7 @@ snapshots: tinyexec@1.0.1: {} - tinyglobby@0.2.14: + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 @@ -5068,12 +5069,12 @@ snapshots: unbuild@3.6.1(typescript@5.9.2)(vue@3.5.21(typescript@5.9.2)): dependencies: - '@rollup/plugin-alias': 5.1.1(rollup@4.50.0) - '@rollup/plugin-commonjs': 28.0.6(rollup@4.50.0) - '@rollup/plugin-json': 6.1.0(rollup@4.50.0) - '@rollup/plugin-node-resolve': 16.0.1(rollup@4.50.0) - '@rollup/plugin-replace': 6.0.2(rollup@4.50.0) - '@rollup/pluginutils': 5.2.0(rollup@4.50.0) + '@rollup/plugin-alias': 5.1.1(rollup@4.50.1) + '@rollup/plugin-commonjs': 28.0.6(rollup@4.50.1) + '@rollup/plugin-json': 6.1.0(rollup@4.50.1) + '@rollup/plugin-node-resolve': 16.0.1(rollup@4.50.1) + '@rollup/plugin-replace': 6.0.2(rollup@4.50.1) + '@rollup/pluginutils': 5.3.0(rollup@4.50.1) citty: 0.1.6 consola: 3.4.2 defu: 6.1.4 @@ -5081,16 +5082,16 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 hookable: 5.5.3 jiti: 2.5.1 - magic-string: 0.30.18 - mkdist: 2.3.0(typescript@5.9.2)(vue@3.5.21(typescript@5.9.2)) + magic-string: 0.30.19 + mkdist: 2.4.1(typescript@5.9.2)(vue@3.5.21(typescript@5.9.2)) mlly: 1.8.0 pathe: 2.0.3 pkg-types: 2.3.0 pretty-bytes: 7.0.1 - rollup: 4.50.0 - rollup-plugin-dts: 6.2.3(rollup@4.50.0)(typescript@5.9.2) + rollup: 4.50.1 + rollup-plugin-dts: 6.2.3(rollup@4.50.1)(typescript@5.9.2) scule: 1.3.0 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 untyped: 2.0.0 optionalDependencies: typescript: 5.9.2 @@ -5100,7 +5101,7 @@ snapshots: - vue-sfc-transformer - vue-tsc - undici-types@7.10.0: {} + undici-types@7.11.0: {} unist-util-is@6.0.0: dependencies: @@ -5157,9 +5158,9 @@ snapshots: knitwork: 1.2.0 scule: 1.3.0 - update-browserslist-db@1.1.3(browserslist@4.25.4): + update-browserslist-db@1.1.3(browserslist@4.26.0): dependencies: - browserslist: 4.25.4 + browserslist: 4.26.0 escalade: 3.2.0 picocolors: 1.1.1 @@ -5179,13 +5180,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-node@3.2.4(@types/node@24.3.0)(jiti@2.5.1): + vite-node@3.2.4(@types/node@24.4.0)(jiti@2.5.1): dependencies: cac: 6.7.14 - debug: 4.4.1 + debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.4(@types/node@24.3.0)(jiti@2.5.1) + vite: 7.1.5(@types/node@24.4.0)(jiti@2.5.1) transitivePeerDependencies: - '@types/node' - jiti @@ -5200,48 +5201,48 @@ snapshots: - tsx - yaml - vite@5.4.19(@types/node@24.3.0): + vite@5.4.20(@types/node@24.4.0): dependencies: esbuild: 0.21.5 postcss: 8.5.6 - rollup: 4.50.0 + rollup: 4.50.1 optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 24.4.0 fsevents: 2.3.3 - vite@7.1.4(@types/node@24.3.0)(jiti@2.5.1): + vite@7.1.5(@types/node@24.4.0)(jiti@2.5.1): dependencies: esbuild: 0.25.9 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.50.0 - tinyglobby: 0.2.14 + rollup: 4.50.1 + tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 24.4.0 fsevents: 2.3.3 jiti: 2.5.1 - vitepress-plugin-group-icons@1.6.3(markdown-it@14.1.0)(vite@7.1.4(@types/node@24.3.0)(jiti@2.5.1)): + vitepress-plugin-group-icons@1.6.3(markdown-it@14.1.0)(vite@7.1.5(@types/node@24.4.0)(jiti@2.5.1)): dependencies: '@iconify-json/logos': 1.2.9 '@iconify-json/vscode-icons': 1.2.30 '@iconify/utils': 3.0.1 markdown-it: 14.1.0 - vite: 7.1.4(@types/node@24.3.0)(jiti@2.5.1) + vite: 7.1.5(@types/node@24.4.0)(jiti@2.5.1) transitivePeerDependencies: - supports-color - vitepress@1.6.4(@algolia/client-search@5.36.0)(@types/node@24.3.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.2): + vitepress@1.6.4(@algolia/client-search@5.37.0)(@types/node@24.4.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.2): dependencies: '@docsearch/css': 3.8.2 - '@docsearch/js': 3.8.2(@algolia/client-search@5.36.0)(search-insights@2.17.3) - '@iconify-json/simple-icons': 1.2.50 + '@docsearch/js': 3.8.2(@algolia/client-search@5.37.0)(search-insights@2.17.3) + '@iconify-json/simple-icons': 1.2.52 '@shikijs/core': 2.5.0 '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.4(vite@5.4.19(@types/node@24.3.0))(vue@3.5.21(typescript@5.9.2)) + '@vitejs/plugin-vue': 5.2.4(vite@5.4.20(@types/node@24.4.0))(vue@3.5.21(typescript@5.9.2)) '@vue/devtools-api': 7.7.7 '@vue/shared': 3.5.21 '@vueuse/core': 12.8.2(typescript@5.9.2) @@ -5250,7 +5251,7 @@ snapshots: mark.js: 8.11.1 minisearch: 7.1.2 shiki: 2.5.0 - vite: 5.4.19(@types/node@24.3.0) + vite: 5.4.20(@types/node@24.4.0) vue: 3.5.21(typescript@5.9.2) optionalDependencies: postcss: 8.5.6 @@ -5281,33 +5282,33 @@ snapshots: - typescript - universal-cookie - vitest@3.2.4(@types/node@24.3.0)(jiti@2.5.1): + vitest@3.2.4(@types/node@24.4.0)(jiti@2.5.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.4(@types/node@24.3.0)(jiti@2.5.1)) + '@vitest/mocker': 3.2.4(vite@7.1.5(@types/node@24.4.0)(jiti@2.5.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 chai: 5.3.3 - debug: 4.4.1 + debug: 4.4.3 expect-type: 1.2.2 - magic-string: 0.30.18 + magic-string: 0.30.19 pathe: 2.0.3 picomatch: 4.0.3 std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.4(@types/node@24.3.0)(jiti@2.5.1) - vite-node: 3.2.4(@types/node@24.3.0)(jiti@2.5.1) + vite: 7.1.5(@types/node@24.4.0)(jiti@2.5.1) + vite-node: 3.2.4(@types/node@24.4.0)(jiti@2.5.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 24.4.0 transitivePeerDependencies: - jiti - less @@ -5351,9 +5352,9 @@ snapshots: wrap-ansi@8.1.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 wsl-utils@0.1.0: dependencies: From be9b6e3b2fb0429a8267e6a4c40655e7eb20aab4 Mon Sep 17 00:00:00 2001 From: Yizack Rangel Date: Tue, 16 Sep 2025 14:26:57 +0200 Subject: [PATCH 12/13] feat!: update to mailchannels email api `0.11.0` (#1) * chore: init email api update * refactor: improve error message * feat(webhooks): add validate enrolled webhook method * test: add `getStatusError` tests * test(webhooks): add requestId error test * refactor(sub-accounts): create now requires a company name parameter Sub-account creation now requires a company name parameter, validated to be 3-128 characters. Documentation, types, implementation, and tests have been updated to support and verify this change. * chore: add missing period * feat(sub-accounts): add `getLimit` method * docs: update roadmap * feat(sub-accounts): add `setLimit` method * docs(sub-accounts): move important note to main title * feat(sub-accounts): add `deleteLimit` method * feat(sub-accounts): add `getUsage` method * chore: adjust * chore: remove mirror publish * chore(sub-accounts): add get usage playground file * feat: metrics module + `engagement` method * chore: update roadmap * refactor(types): add missing types + adjust types * docs: move metrics module after sub-accounts * docs: mention error handling * fix(sub-accounts): add missing export types * feat(metrics): add `performance` method * docs: update docs * docs: add performance to metrics sidebar list * docs(metrics): update options description * feat(metrics): add `recipientBehaviour` method * chore: lint spaces * feat(metrics): add `volume` method * chore: sort by modules * feat(metrics): add `usage` method * docs(service): add report example * docs(metrics): add usage to sidebar * chore: sort by modules * feat: add suppressions module * feat(emails): add send `campaignId` + `transactional` options * chore: add webhook max length * chore: remove the unnecessary empty line * chore: maintain suppression emoji consistency * chore: remove extra asterisk --- README.md | 32 +- docs/.vitepress/config.ts | 7 +- docs/.vitepress/{theme => }/navbar.ts | 2 +- docs/.vitepress/{theme => }/sidebar.ts | 31 +- docs/.vitepress/{theme => }/site.ts | 0 docs/guide.md | 10 + docs/index.md | 8 + docs/modules.md | 16 +- docs/modules/domains.md | 4 +- docs/modules/emails.md | 3 + docs/modules/metrics.md | 205 ++++++++++++ docs/modules/sub-accounts.md | 143 +++++++- docs/modules/suppressions.md | 155 +++++++++ docs/modules/webhooks.md | 37 ++- package.json | 3 +- playground/metrics/engagement.ts | 12 + playground/metrics/performance.ts | 12 + playground/metrics/recipient-behaviour.ts | 12 + playground/metrics/usage.ts | 12 + playground/metrics/volume.ts | 12 + playground/sub-accounts/create.ts | 2 +- playground/sub-accounts/delete-limit.ts | 12 + playground/sub-accounts/get-limit.ts | 12 + playground/sub-accounts/get-usage.ts | 12 + playground/sub-accounts/set-limit.ts | 14 + playground/suppressions/create.ts | 21 ++ playground/suppressions/delete.ts | 12 + playground/suppressions/list.ts | 12 + playground/webhooks/validate.ts | 12 + scripts/publish-mirrors.ts | 42 --- src/mailchannels.ts | 11 +- src/modules.ts | 10 +- src/modules/domains.ts | 4 +- src/modules/emails.ts | 4 +- src/modules/lists.ts | 4 +- src/modules/metrics.ts | 221 +++++++++++++ src/modules/service.ts | 7 + src/modules/sub-accounts.ts | 185 ++++++++++- src/modules/suppressions.ts | 138 ++++++++ src/modules/users.ts | 4 +- src/modules/webhooks.ts | 46 ++- src/types/emails/internal.d.ts | 3 +- src/types/emails/send.d.ts | 11 + src/types/index.d.ts | 11 +- .../{list-entry.d.ts => lists/entry.d.ts} | 0 src/types/lists/index.d.ts | 1 + src/types/{ => lists}/internal.d.ts | 0 src/types/metrics/engagement.d.ts | 21 ++ src/types/metrics/index.d.ts | 38 +++ src/types/metrics/internal.d.ts | 62 ++++ src/types/metrics/performance.d.ts | 34 ++ src/types/metrics/recipient-behaviour.d.ts | 29 ++ src/types/metrics/usage.d.ts | 19 ++ src/types/metrics/volume.d.ts | 34 ++ src/types/sub-accounts/create.d.ts | 4 + src/types/sub-accounts/index.d.ts | 2 + src/types/sub-accounts/internal.d.ts | 14 + src/types/sub-accounts/limit.d.ts | 8 + src/types/sub-accounts/usage.d.ts | 21 ++ src/types/suppressions/create.d.ts | 27 ++ src/types/suppressions/index.d.ts | 2 + src/types/suppressions/internal.d.ts | 30 ++ src/types/suppressions/list.d.ts | 49 +++ src/types/webhooks/index.d.ts | 1 + src/types/webhooks/internal.d.ts | 11 + src/types/webhooks/validate.d.ts | 33 ++ src/utils/errors.ts | 19 +- test/domains.test.ts | 2 +- test/lists.test.ts | 2 +- test/metrics.test.ts | 304 ++++++++++++++++++ test/sub-accounts.test.ts | 263 +++++++++++++-- test/suppressions.test.ts | 192 +++++++++++ test/users.test.ts | 4 +- test/utils.test.ts | 41 +++ test/webhooks.test.ts | 83 +++++ tsconfig.json | 8 +- 76 files changed, 2747 insertions(+), 137 deletions(-) rename docs/.vitepress/{theme => }/navbar.ts (84%) rename docs/.vitepress/{theme => }/sidebar.ts (76%) rename docs/.vitepress/{theme => }/site.ts (100%) create mode 100644 docs/modules/metrics.md create mode 100644 docs/modules/suppressions.md create mode 100644 playground/metrics/engagement.ts create mode 100644 playground/metrics/performance.ts create mode 100644 playground/metrics/recipient-behaviour.ts create mode 100644 playground/metrics/usage.ts create mode 100644 playground/metrics/volume.ts create mode 100644 playground/sub-accounts/delete-limit.ts create mode 100644 playground/sub-accounts/get-limit.ts create mode 100644 playground/sub-accounts/get-usage.ts create mode 100644 playground/sub-accounts/set-limit.ts create mode 100644 playground/suppressions/create.ts create mode 100644 playground/suppressions/delete.ts create mode 100644 playground/suppressions/list.ts create mode 100644 playground/webhooks/validate.ts delete mode 100644 scripts/publish-mirrors.ts create mode 100644 src/modules/metrics.ts create mode 100644 src/modules/suppressions.ts rename src/types/{list-entry.d.ts => lists/entry.d.ts} (100%) create mode 100644 src/types/lists/index.d.ts rename src/types/{ => lists}/internal.d.ts (100%) create mode 100644 src/types/metrics/engagement.d.ts create mode 100644 src/types/metrics/index.d.ts create mode 100644 src/types/metrics/internal.d.ts create mode 100644 src/types/metrics/performance.d.ts create mode 100644 src/types/metrics/recipient-behaviour.d.ts create mode 100644 src/types/metrics/usage.d.ts create mode 100644 src/types/metrics/volume.d.ts create mode 100644 src/types/sub-accounts/limit.d.ts create mode 100644 src/types/sub-accounts/usage.d.ts create mode 100644 src/types/suppressions/create.d.ts create mode 100644 src/types/suppressions/index.d.ts create mode 100644 src/types/suppressions/internal.d.ts create mode 100644 src/types/suppressions/list.d.ts create mode 100644 src/types/webhooks/internal.d.ts create mode 100644 src/types/webhooks/validate.d.ts create mode 100644 test/metrics.test.ts create mode 100644 test/suppressions.test.ts diff --git a/README.md b/README.md index 700fe07..0e0e15e 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ Already implemented features are marked with a checkmark. Please open an issue i - ✅ [Retrieve Customer Webhooks](https://docs.mailchannels.net/email-api/api-reference/retrieve-customer-webhooks) - ✅ [Delete Customer Webhooks](https://docs.mailchannels.net/email-api/api-reference/delete-customer-webhooks) - ✅ [Retrieve Webhook Signing Key](https://docs.mailchannels.net/email-api/api-reference/retrieve-webhook-signing-key) - - 🚧 [Validate Enrolled Webhook](https://docs.mailchannels.net/email-api/api-reference/validate-enrolled-webhook) + - ✅ [Validate Enrolled Webhook](https://docs.mailchannels.net/email-api/api-reference/validate-enrolled-webhook) - 🪪 Sub-accounts - ✅ [Create Sub-account](https://docs.mailchannels.net/email-api/api-reference/create-sub-account) - ✅ [Retrieve Sub-accounts](https://docs.mailchannels.net/email-api/api-reference/retrieve-sub-accounts) @@ -91,20 +91,20 @@ Already implemented features are marked with a checkmark. Please open an issue i - ✅ [Create Sub-account SMTP Password](https://docs.mailchannels.net/email-api/api-reference/create-sub-account-smtp-password) - ✅ [Delete Sub-account SMTP Password](https://docs.mailchannels.net/email-api/api-reference/delete-sub-account-smtp-password) - ✅ [Retrieve Sub-account SMTP Passwords](https://docs.mailchannels.net/email-api/api-reference/retrieve-sub-account-smtp-passwords) - - 🚧 [Retrieve Sub-account Limit](https://docs.mailchannels.net/email-api/api-reference/retrieve-sub-account-limit) - - 🚧 [Set Sub-account Limit](https://docs.mailchannels.net/email-api/api-reference/set-sub-account-limit) - - 🚧 [Delete Sub-account Limit](https://docs.mailchannels.net/email-api/api-reference/delete-sub-account-limit) - - 🚧 [Retrieve Sub-account Usage Stats](https://docs.mailchannels.net/email-api/api-reference/retrieve-sub-account-usage-stats) -- 📊 Metrics & Stats - - 🚧 [Retrieve Engagement Metrics](https://docs.mailchannels.net/email-api/api-reference/retrieve-engagement-metrics) - - 🚧 [Retrieve Performance Metrics](https://docs.mailchannels.net/email-api/api-reference/retrieve-performance-metrics) - - 🚧 [Retrieve Recipient Behaviour Metrics](https://docs.mailchannels.net/email-api/api-reference/retrieve-recipient-behaviour-metrics) - - 🚧 [Retrieve Usage Stats](https://docs.mailchannels.net/email-api/api-reference/retrieve-usage-stats) - - 🚧 [Retrieve Volume Metrics](https://docs.mailchannels.net/email-api/api-reference/retrieve-volume-metrics) -- 📵 Suppressions - - 🚧 [Create Suppression Entries](https://docs.mailchannels.net/email-api/api-reference/create-suppression-entries) - - 🚧 [Delete Suppression Entry](https://docs.mailchannels.net/email-api/api-reference/delete-suppression-entry) - - 🚧 [Retrieve Suppression List](https://docs.mailchannels.net/email-api/api-reference/retrieve-suppression-list) + - ✅ [Retrieve Sub-account Limit](https://docs.mailchannels.net/email-api/api-reference/retrieve-sub-account-limit) + - ✅ [Set Sub-account Limit](https://docs.mailchannels.net/email-api/api-reference/set-sub-account-limit) + - ✅ [Delete Sub-account Limit](https://docs.mailchannels.net/email-api/api-reference/delete-sub-account-limit) + - ✅ [Retrieve Sub-account Usage Stats](https://docs.mailchannels.net/email-api/api-reference/retrieve-sub-account-usage-stats) +- 📊 Metrics + - ✅ [Retrieve Engagement Metrics](https://docs.mailchannels.net/email-api/api-reference/retrieve-engagement-metrics) + - ✅ [Retrieve Performance Metrics](https://docs.mailchannels.net/email-api/api-reference/retrieve-performance-metrics) + - ✅ [Retrieve Recipient Behaviour Metrics](https://docs.mailchannels.net/email-api/api-reference/retrieve-recipient-behaviour-metrics) + - ✅ [Retrieve Usage Stats](https://docs.mailchannels.net/email-api/api-reference/retrieve-usage-stats) + - ✅ [Retrieve Volume Metrics](https://docs.mailchannels.net/email-api/api-reference/retrieve-volume-metrics) +- 🚫 Suppressions + - ✅ [Create Suppression Entries](https://docs.mailchannels.net/email-api/api-reference/create-suppression-entries) + - ✅ [Delete Suppression Entry](https://docs.mailchannels.net/email-api/api-reference/delete-suppression-entry) + - ✅ [Retrieve Suppression List](https://docs.mailchannels.net/email-api/api-reference/retrieve-suppression-list) ### [Inbound API](https://docs.mailchannels.net/inbound-api/API-reference/inbound-api) @@ -140,7 +140,7 @@ Already implemented features are marked with a checkmark. Please open an issue i
Local development - + ```sh # Install dependencies pnpm install diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index d1bed59..85d4e44 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -1,8 +1,8 @@ import { type HeadConfig, defineConfig } from "vitepress"; import { groupIconMdPlugin, groupIconVitePlugin } from "vitepress-plugin-group-icons"; -import { SITE } from "./theme/site"; -import sidebarConfig from "./theme/sidebar"; -import navbarConfig from "./theme/navbar"; +import { SITE } from "./site"; +import sidebarConfig from "./sidebar"; +import navbarConfig from "./navbar"; export default defineConfig({ title: SITE.name, @@ -51,6 +51,7 @@ export default defineConfig({ }, vite: { plugins: [ + // @ts-expect-error icon vite plugin groupIconVitePlugin() ] }, diff --git a/docs/.vitepress/theme/navbar.ts b/docs/.vitepress/navbar.ts similarity index 84% rename from docs/.vitepress/theme/navbar.ts rename to docs/.vitepress/navbar.ts index 6877bff..793d73e 100644 --- a/docs/.vitepress/theme/navbar.ts +++ b/docs/.vitepress/navbar.ts @@ -1,4 +1,4 @@ -import { version } from "../../../package.json"; +import { version } from "../../package.json"; export default [ { text: "Guide", link: "/guide" }, diff --git a/docs/.vitepress/theme/sidebar.ts b/docs/.vitepress/sidebar.ts similarity index 76% rename from docs/.vitepress/theme/sidebar.ts rename to docs/.vitepress/sidebar.ts index e4d4851..468a0cb 100644 --- a/docs/.vitepress/theme/sidebar.ts +++ b/docs/.vitepress/sidebar.ts @@ -35,7 +35,8 @@ export default [ { text: "Enroll for Webhook", link: "/modules/webhooks#enroll" }, { text: "List Webhooks", link: "/modules/webhooks#list" }, { text: "Delete Webhooks", link: "/modules/webhooks#delete" }, - { text: "Get Signing Key", link: "/modules/webhooks#signing-key" } + { text: "Get Signing Key", link: "/modules/webhooks#signing-key" }, + { text: "Validate Webhooks", link: "/modules/webhooks#validate" } ] }, { @@ -51,7 +52,33 @@ export default [ { text: "List API Keys", link: "/modules/sub-accounts#list-api-keys" }, { text: "Create SMTP Password", link: "/modules/sub-accounts#create-smtp-password" }, { text: "List SMTP Passwords", link: "/modules/sub-accounts#list-smtp-passwords" }, - { text: "Delete SMTP Password", link: "/modules/sub-accounts#delete-smtp-password" } + { text: "Delete SMTP Password", link: "/modules/sub-accounts#delete-smtp-password" }, + { text: "Get Limit", link: "/modules/sub-accounts#get-limit" }, + { text: "Set Limit", link: "/modules/sub-accounts#set-limit" }, + { text: "Delete Limit", link: "/modules/sub-accounts#delete-limit" }, + { text: "Get Usage", link: "/modules/sub-accounts#get-usage" } + ] + }, + { + text: "📊 Metrics", + collapsed: true, + link: "/modules/metrics", + items: [ + { text: "Engagement", link: "/modules/metrics#engagement" }, + { text: "Performance", link: "/modules/metrics#performance" }, + { text: "Recipient Behaviour", link: "/modules/metrics#recipient-behaviour" }, + { text: "Volume", link: "/modules/metrics#volume" }, + { text: "Usage", link: "/modules/metrics#usage" } + ] + }, + { + text: "🚫 Suppressions", + collapsed: true, + link: "/modules/suppressions", + items: [ + { text: "Create Suppression", link: "/modules/suppressions#create" }, + { text: "Delete Suppression", link: "/modules/suppressions#delete" }, + { text: "List Suppressions", link: "/modules/suppressions#list" } ] } ] diff --git a/docs/.vitepress/theme/site.ts b/docs/.vitepress/site.ts similarity index 100% rename from docs/.vitepress/theme/site.ts rename to docs/.vitepress/site.ts diff --git a/docs/guide.md b/docs/guide.md index e754d43..fe60fe4 100644 --- a/docs/guide.md +++ b/docs/guide.md @@ -62,3 +62,13 @@ const { success } = await emails.send({ ``` This method is useful when you only need to use a specific module from the library and want to reduce the bundle size. + +### Error handling + +All methods in this SDK return an object containing an `error` property besides the actual response data to avoid throwing exceptions. If the request was successful, the `error` property will be `null`. If there was an error, the `error` property will contain a `string` with the error message. + +```ts{1} +const { success, error } = await emails.send({ + // ... +}) +``` diff --git a/docs/index.md b/docs/index.md index 2499b4c..8beeb0c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -30,6 +30,14 @@ features: title: Sub-accounts module details: Manage sub-accounts link: /modules/sub-accounts + - icon: 📊 + title: Metrics module + details: Retrieve account metrics + link: /modules/metrics + - icon: 🚫 + title: Suppressions module + details: Manage account suppressions + link: /modules/suppressions - icon: 🌐 title: Domains module details: Manage Inbound domains diff --git a/docs/modules.md b/docs/modules.md index 48497ce..b0e9956 100644 --- a/docs/modules.md +++ b/docs/modules.md @@ -10,7 +10,7 @@ import { VPButton } from 'vitepress/theme-without-fonts' This is a list of modules available in the MailChannels SDK. -## Email API +## Email API Leverage the power, scale, and reputation of MailChannels to get your mission-critical emails delivered to the inbox reliably, using the same battle-tested infrastructure that today delivers email for more domains than anyone else. @@ -32,6 +32,18 @@ Leverage the power, scale, and reputation of MailChannels to get your mission-cr +### 📊 Metrics + + + + + +### 🚫 Suppressions + + + + + ## Inbound API A cloud-based spam filtering service that protects your users against spam, phishing, and malware. @@ -56,7 +68,7 @@ This API is limited to 100 queries per second, per customer. Queries that exceed -### ⚙️ Service +### ⚙️ Service diff --git a/docs/modules/domains.md b/docs/modules/domains.md index 36bfb4f..3021820 100644 --- a/docs/modules/domains.md +++ b/docs/modules/domains.md @@ -318,7 +318,7 @@ const { link } = await mailchannels.domains.createLoginLink("example.com") Sets the list of downstream addreses for the domain. > [!WARNING] -> This action deletes any existing downstream address for the domain before creating new ones. +> This action deletes any existing downstream address for the domain before creating new ones. ### Usage @@ -466,7 +466,7 @@ const { success } = await mailchannels.domains.updateApiKey('example.com', 'your <<< @/snippets/list-entries-response.ts **Downstream Addresses type declarations** - + <<< @/snippets/domains-downstream-address.ts <<< @/snippets/domains-list-downstream-addresses-options.ts <<< @/snippets/domains-list-downstream-addresses-response.ts diff --git a/docs/modules/emails.md b/docs/modules/emails.md index 125737e..e16f773 100644 --- a/docs/modules/emails.md +++ b/docs/modules/emails.md @@ -52,6 +52,7 @@ const { success } = await mailchannels.emails.send({ - `content`: The attachment data, encoded in base64 - `filename`: The name of the attachment file - `type`: The MIME type of the attachment + - `campaignId`: The campaign identifier. If specified, this ID will be included in all relevant webhooks. It can be up to 48 UTF-8 characters long and must not contain spaces. - `bcc`: The BCC recipients of the email. - `cc`: The CC recipients of the email. - `dkim`: The DKIM settings for the email. @@ -80,6 +81,8 @@ const { success } = await mailchannels.emails.send({ > > You can use the [`html-to-text`](https://www.npmjs.com/package/html-to-text) package to convert your HTML content to plain text. - `mustaches`: Data to be used if the email is a mustache template, key-value pairs of variables to set for template rendering. + - `transactional`: Mark these messages as transactional or non-transactional. In order for a message to be marked as non-transactional, it must have exactly one recipient per personalization, and it must be DKIM signed. 400 Bad Request will be returned if there are more than one recipient in any personalization for non-transactional messages. If a message is marked as non-transactional, it changes the sending process as follows: + List-Unsubscribe headers will be added. - `dryRun`: When set to `true`, the email will not be sent. Instead, the fully rendered message will be returned in the `data` property of the response. > [!TIP] > Use `dryRun` to test your email message before sending it. diff --git a/docs/modules/metrics.md b/docs/modules/metrics.md new file mode 100644 index 0000000..e8c3425 --- /dev/null +++ b/docs/modules/metrics.md @@ -0,0 +1,205 @@ +--- +outline: deep +--- + +# 📊 Metrics + + +This module allows you to retrieve metrics for messages sent from your account. + + +## Engagement + +Retrieve engagement metrics for messages sent from your account, including counts of open and click events. Supports optional filters for time range, and campaign ID. + +### Usage + +::: code-group +```ts [modular.ts] +import { MailChannelsClient } from 'mailchannels-sdk' +import { Metrics } from 'mailchannels-sdk/modules' + +const mailchannels = new MailChannelsClient('your-api-key') +const metrics = new Metrics(mailchannels) + +const { engagement } = await metrics.engagement() +``` + +```ts [full.ts] +import { MailChannels } from 'mailchannels-sdk' +const mailchannels = new MailChannels('your-api-key') + +const { engagement } = await mailchannels.metrics.engagement() +``` +::: + +### Params + +- `options`: Optional filter options. + - `startTime`: The beginning of the time range for retrieving message engagement metrics (inclusive). Formats: `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SSZ`. Defaults to one month ago if not provided. + - `endTime`: The end of the time range for retrieving message engagement metrics (exclusive). Formats: `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SSZ`. Defaults to the current time if not provided. + - `campaignId`: The ID of the campaign to filter metrics by. If not provided, metrics for all campaigns will be returned. + - `interval`: The interval for aggregating metrics data. Possible values are `hour`, `day`, `week`, and `month`. Defaults to `day`. + +## Performance + +Retrieve performance metrics for messages sent from your account, including counts of processed, delivered, hard-bounced events. Supports optional filters for time range, and campaign ID. + +### Usage + +::: code-group +```ts [modular.ts] +import { MailChannelsClient } from 'mailchannels-sdk' +import { Metrics } from 'mailchannels-sdk/modules' + +const mailchannels = new MailChannelsClient('your-api-key') +const metrics = new Metrics(mailchannels) + +const { performance } = await metrics.performance() +``` + +```ts [full.ts] +import { MailChannels } from 'mailchannels-sdk' +const mailchannels = new MailChannels('your-api-key') + +const { performance } = await mailchannels.metrics.performance() +``` +::: + +### Params + +- `options`: Optional filter options. + - `startTime`: The beginning of the time range for retrieving message performance metrics (inclusive). Formats: `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SSZ`. Defaults to one month ago if not provided. + - `endTime`: The end of the time range for retrieving message performance metrics (exclusive). Formats: `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SSZ`. Defaults to the current time if not provided. + - `campaignId`: The ID of the campaign to filter metrics by. If not provided, metrics for all campaigns will be returned. + - `interval`: The interval for aggregating metrics data. Possible values are `hour`, `day`, `week`, and `month`. Defaults to `day`. + +## Recipient Behaviour + +Retrieve recipient behaviour metrics for messages sent from your account, including counts of unsubscribed events. Supports optional filters for time range, and campaign ID. + +### Usage + +::: code-group +```ts [modular.ts] +import { MailChannelsClient } from 'mailchannels-sdk' +import { Metrics } from 'mailchannels-sdk/modules' + +const mailchannels = new MailChannelsClient('your-api-key') +const metrics = new Metrics(mailchannels) + +const { behaviour } = await metrics.recipientBehaviour() +``` + +```ts [full.ts] +import { MailChannels } from 'mailchannels-sdk' +const mailchannels = new MailChannels('your-api-key') + +const { behaviour } = await mailchannels.metrics.recipientBehaviour() +``` +::: + +### Params + +- `options`: Optional filter options. + - `startTime`: The beginning of the time range for retrieving recipient behaviour metrics (inclusive). Formats: `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SSZ`. Defaults to one month ago if not provided. + - `endTime`: The end of the time range for retrieving recipient behaviour metrics (exclusive). Formats: `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SSZ`. Defaults to the current time if not provided. + - `campaignId`: The ID of the campaign to filter metrics by. If not provided, metrics for all campaigns will be returned. + - `interval`: The interval for aggregating metrics data. Possible values are `hour`, `day`, `week`, and `month`. Defaults to `day`. + +## Volume + +Retrieve volume metrics for messages sent from your account, including counts of processed, delivered and dropped events. Supports optional filters for time range and campaign ID. + +### Usage + +::: code-group +```ts [modular.ts] +import { MailChannelsClient } from 'mailchannels-sdk' +import { Metrics } from 'mailchannels-sdk/modules' + +const mailchannels = new MailChannelsClient('your-api-key') +const metrics = new Metrics(mailchannels) + +const { volume } = await metrics.volume() +``` + +```ts [full.ts] +import { MailChannels } from 'mailchannels-sdk' +const mailchannels = new MailChannels('your-api-key') + +const { volume } = await mailchannels.metrics.volume() +``` +::: + +### Params + +- `options`: Optional filter options. + - `startTime`: The beginning of the time range for retrieving message volume metrics (inclusive). Formats: `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SSZ`. Defaults to one month ago if not provided. + - `endTime`: The end of the time range for retrieving message volume metrics (exclusive). Formats: `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SSZ`. Defaults to the current time if not provided. + - `campaignId`: The ID of the campaign to filter metrics by. If not provided, metrics for all campaigns will be returned. + - `interval`: The interval for aggregating metrics data. Possible values are `hour`, `day`, `week`, and `month`. Defaults to `day`. + +## Usage + +Retrieves usage statistics during the current billing period. + +### Usage + +::: code-group +```ts [modular.ts] +import { MailChannelsClient } from 'mailchannels-sdk' +import { Metrics } from 'mailchannels-sdk/modules' + +const mailchannels = new MailChannelsClient('your-api-key') +const metrics = new Metrics(mailchannels) + +const { usage } = await metrics.usage() +``` + +```ts [full.ts] +import { MailChannels } from 'mailchannels-sdk' +const mailchannels = new MailChannels('your-api-key') + +const { usage } = await mailchannels.metrics.usage() +``` +::: + +## Type declarations + +<<< @/snippets/metrics.ts + +
+ All type declarations + + <<< @/snippets/metrics-options.ts + <<< @/snippets/metrics-bucket.ts + + **Engagement type declarations** + + <<< @/snippets/metrics-engagement.ts + <<< @/snippets/metrics-engagement-response.ts + + **Performance type declarations** + + <<< @/snippets/metrics-performance.ts + <<< @/snippets/metrics-performance-response.ts + + **Recipient Behaviour type declarations** + + <<< @/snippets/metrics-recipient-behaviour.ts + <<< @/snippets/metrics-recipient-behaviour-response.ts + + **Volume type declarations** + + <<< @/snippets/metrics-volume.ts + <<< @/snippets/metrics-volume-response.ts + + **Usage type declarations** + + <<< @/snippets/metrics-usage-response.ts +
+ +## Source + +[Source](https://github.com/Yizack/mailchannels/tree/main/src/modules/metrics.ts) diff --git a/docs/modules/sub-accounts.md b/docs/modules/sub-accounts.md index 0d0ee11..92e19f2 100644 --- a/docs/modules/sub-accounts.md +++ b/docs/modules/sub-accounts.md @@ -4,6 +4,9 @@ Manage your sub-accounts associated with your MailChannels account. +> [!IMPORTANT] +> Sub-accounts are only available to parent accounts on 100K and higher plans. + ## Create Creates a new sub-account under the parent account. @@ -18,22 +21,25 @@ import { SubAccounts } from 'mailchannels-sdk/modules' const mailchannels = new MailChannelsClient('your-api-key') const subAccounts = new SubAccounts(mailchannels) -const { account } = await subAccounts.create('validhandle123') +const { account } = await subAccounts.create('My Company', 'validhandle123') ``` ```ts [full.ts] import { MailChannels } from 'mailchannels-sdk' const mailchannels = new MailChannels('your-api-key') -const { account } = await mailchannels.subAccounts.create('validhandle123') +const { account } = await mailchannels.subAccounts.create('My Company', 'validhandle123') ``` ::: ### Params +- `companyName`: The name of the company associated with the sub-account. + > [!TIP] + > This name is used for display purposes only and does not affect the functionality of the sub-account. The length must be between 3 and 128 characters. - `handle`: The handle of the sub-account to create. > [!TIP] - > Sub-account handle must match the pattern `[a-z0-9]{3,128}`. + > The length must be between 3 and 128 characters, and it may contain only lowercase letters and numbers. > > If no handle is provided, a random handle will be generated. @@ -333,6 +339,127 @@ const { key } = await mailchannels.subAccounts.deleteSmtpPassword('validhandle12 - `handle`: The handle of the sub-account for which the SMTP password should be deleted. - `id`: The ID of the SMTP password to delete. +## Get Limit + +Retrieves the limit of a specified sub-account. + +> [!TIP] +> A value of `-1` indicates that the sub-account inherits the parent account's limit, allowing the sub-account to utilize any remaining capacity within the parent account's allocation. + +### Usage + +::: code-group +```ts [modular.ts] +import { MailChannelsClient } from 'mailchannels-sdk' +import { SubAccounts } from 'mailchannels-sdk/modules' + +const mailchannels = new MailChannelsClient('your-api-key') +const subAccounts = new SubAccounts(mailchannels) + +const { limit } = await subAccounts.getLimit('validhandle123') +``` + +```ts [full.ts] +import { MailChannels } from 'mailchannels-sdk' +const mailchannels = new MailChannels('your-api-key') + +const { limit } = await mailchannels.subAccounts.getLimit('validhandle123') +``` +::: + +### Params + +- `handle`: The handle of the sub-account to retrieve the limit for. + +## Set Limit + +Sets the limit for the specified sub-account. + +### Usage +::: code-group +```ts [modular.ts] +import { MailChannelsClient } from 'mailchannels-sdk' +import { SubAccounts } from 'mailchannels-sdk/modules' + +const mailchannels = new MailChannelsClient('your-api-key') +const subAccounts = new SubAccounts(mailchannels) + +const { success } = await subAccounts.setLimit('validhandle123', { sends: 1000 }) +``` + +```ts [full.ts] +import { MailChannels } from 'mailchannels-sdk' +const mailchannels = new MailChannels('your-api-key') + +const { success } = await mailchannels.subAccounts.setLimit('validhandle123', { sends: 1000 }) +``` +::: + +### Params + +- `handle`: The handle of the sub-account to set the limit for. +- `limits`: The limits to set for the sub-account. + - `sends` + > [!TIP] + > The minimum allowed sends is `0`. + +## Delete Limit + +Deletes the limit for the specified sub-account. After a successful deletion, the specified sub-account will be limited to the parent account's limit. + +### Usage +::: code-group +```ts [modular.ts] +import { MailChannelsClient } from 'mailchannels-sdk' +import { SubAccounts } from 'mailchannels-sdk/modules' + +const mailchannels = new MailChannelsClient('your-api-key') +const subAccounts = new SubAccounts(mailchannels) + +const { success } = await subAccounts.deleteLimit('validhandle123') +``` + +```ts [full.ts] +import { MailChannels } from 'mailchannels-sdk' +const mailchannels = new MailChannels('your-api-key') + +const { success } = await mailchannels.subAccounts.deleteLimit('validhandle123') +``` +::: + +### Params + +- `handle`: The handle of the sub-account to delete the limit for. + +## Get Usage + +Retrieves usage statistics for the specified sub-account during the current billing period. + +### Usage + +::: code-group +```ts [modular.ts] +import { MailChannelsClient } from 'mailchannels-sdk' +import { SubAccounts } from 'mailchannels-sdk/modules' + +const mailchannels = new MailChannelsClient('your-api-key') +const subAccounts = new SubAccounts(mailchannels) + +const { usage } = await subAccounts.getUsage('validhandle123') +``` + +```ts [full.ts] +import { MailChannels } from 'mailchannels-sdk' +const mailchannels = new MailChannels('your-api-key') + +const { usage } = await mailchannels.subAccounts.getUsage('validhandle123') +``` +::: + +### Params + +- `handle`: The handle of the sub-account to query usage stats for. + ## Type declarations <<< @/snippets/sub-accounts.ts @@ -362,6 +489,16 @@ const { key } = await mailchannels.subAccounts.deleteSmtpPassword('validhandle12 <<< @/snippets/sub-accounts-smtp-password.ts <<< @/snippets/sub-accounts-create-smtp-password-response.ts <<< @/snippets/sub-accounts-list-smtp-password-response.ts + + **Limit type declaration** + + <<< @/snippets/sub-accounts-limit.ts + <<< @/snippets/sub-accounts-limit-response.ts + + **Usage type declarations** + + <<< @/snippets/sub-accounts-usage.ts + <<< @/snippets/sub-accounts-usage-response.ts
## Source diff --git a/docs/modules/suppressions.md b/docs/modules/suppressions.md new file mode 100644 index 0000000..1f875fb --- /dev/null +++ b/docs/modules/suppressions.md @@ -0,0 +1,155 @@ +--- +outline: deep +--- + +# 🚫 Suppressions + + +Manage your MailChannels account suppressions list. + + +## Create + +Creates suppression entries for the specified account. Parent accounts can create suppression entries for all associated sub-accounts. If `types` is not provided, it defaults to `non-transactional`. The operation is atomic, meaning all entries are successfully added or none are added if an error occurs. + +### Usage + +::: code-group +```ts [modular.ts] +import { MailChannelsClient } from 'mailchannels-sdk' +import { Suppressions } from 'mailchannels-sdk/modules' + +const mailchannels = new MailChannelsClient('your-api-key') +const suppressions = new Suppressions(mailchannels) + + +const { success } = await suppressions.create({ + addToSubAccounts: false, + entries: [ + { + notes: "test", + recipient: "name@example.com", + types: ["transactional"] + } + ] +}) +``` + +```ts [full.ts] +import { MailChannels } from 'mailchannels-sdk' +const mailchannels = new MailChannels('your-api-key') + +const { success } = await mailchannels.suppressions.create({ + addToSubAccounts: false, + entries: [ + { + notes: "test", + recipient: "name@example.com", + types: ["transactional"] + } + ] +}) +``` +::: + +### Params + +- `addToSubAccounts`: If true, the parent account creates suppression entries for all associated sub-accounts. This field is only applicable to parent accounts. Sub-accounts cannot create entries for other sub-accounts. +- `entries`: The total number of suppression entries to create, for the parent and/or its sub-accounts, must not exceed `1000`. + - `notes`: Optional. Must be less than `1024` characters. + - `recipient`: The email address to suppress. Must be a valid email address format and less than `255` characters. + - `types`: An array of types of suppression to apply to the recipient. If not provided, it defaults to `["non-transactional"]`. + > [!NOTE] + > Possible type values are: `transactional`, `non-transactional`. + +## Delete + +Deletes suppression entry associated with the account based on the specified recipient and source. + +### Usage +::: code-group +```ts [modular.ts] +import { MailChannelsClient } from 'mailchannels-sdk' +import { Suppressions } from 'mailchannels-sdk/modules' + +const mailchannels = new MailChannelsClient('your-api-key') +const suppressions = new Suppressions(mailchannels) + +const { success } = await suppressions.delete("name@example.com", "api") +``` + +```ts [full.ts] +import { MailChannels } from 'mailchannels-sdk' +const mailchannels = new MailChannels('your-api-key') + +const { success } = await mailchannels.suppressions.delete("name@example.com", "api") +``` +::: + +### Params + +- `recipient`: The email address of the suppression entry to delete. +- `source`: Optional. The source of the suppression entry to be deleted. If source is not provided, it defaults to `api`. If source is set to `all`, all suppression entries related to the specified recipient will be deleted. + > [!NOTE] + > Possible values are: `api`, `unsubscribe_link`, `list_unsubscribe`, `hard_bounce`, `spam_complaint`, `all` + +## List + +Retrieve suppression entries associated with the specified account. Supports filtering by recipient, source and creation date range. The response is paginated, with a default limit of `1000` entries per page and an offset of `0`. + +### Usage + +::: code-group +```ts [modular.ts] +import { MailChannelsClient } from 'mailchannels-sdk' +import { Suppressions } from 'mailchannels-sdk/modules' + +const mailchannels = new MailChannelsClient('your-api-key') +const suppressions = new Suppressions(mailchannels) + +const { suppressions: entries, total } = await suppressions.list() +``` + +```ts [full.ts] +import { MailChannels } from 'mailchannels-sdk' +const mailchannels = new MailChannels('your-api-key') + +const { suppressions: entries, total } = await mailchannels.suppressions.list() +``` +::: + +### Params + +- `options`: Optional filter options. + - `recipient`: The email address of the suppression entry to search for. If provided, the search will return the suppression entry associated with this recipient. If not provided, the search will return all suppression entries for the account. + - `source`: The source of the suppression entries to filter by. If not provided, suppression entries from all sources will be returned. + > [!NOTE] + > Possible values are: `api`, `unsubscribe_link`, `list_unsubscribe`, `hard_bounce`, `spam_complaint`. + - `startTime`: The date and/or time before which the suppression entries were created. Format: `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SSZ` + - `endTime`: The date and/or time after which the suppression entries were created. Format: `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SSZ` + - `limit`: The maximum number of suppression entries to return in the response. Default is `1000`. Maximum is `1000`. + - `offset`: The number of suppression entries to skip before starting to collect the result set. Default is `0`. + +## Type declarations + +<<< @/snippets/suppressions.ts + +
+ All type declarations + + **Create type declarations** + + <<< @/snippets/suppressions-types.ts + <<< @/snippets/suppressions-create-options.ts + + **List type declarations** + + <<< @/snippets/suppressions-source.ts + <<< @/snippets/suppressions-list-options.ts + <<< @/snippets/suppressions-list-entry.ts + <<< @/snippets/suppressions-list-response.ts +
+ +## Source + +[Source](https://github.com/Yizack/mailchannels/tree/main/src/modules/suppressions.ts) diff --git a/docs/modules/webhooks.md b/docs/modules/webhooks.md index 72241fb..b0b8b95 100644 --- a/docs/modules/webhooks.md +++ b/docs/modules/webhooks.md @@ -35,7 +35,7 @@ const { success } = await mailchannel.webhooks.enroll("https://example.com/api/w ### Params -- `endpoint`: The URL to receive the webhook notifications. +- `endpoint`: The URL to receive event notifications. Must be no longer than `8000` characters. ## List @@ -118,6 +118,37 @@ const { key } = await mailchannels.webhooks.getSigningKey('key-id'); > [!TIP] > The `keyId` can be found in the `signature-input` request header of the webhook notification. +## Validate + +Validates whether your enrolled webhook(s) respond with an HTTP `2xx` status code. Sends a test request to each webhook containing your customer handle, a hardcoded event type (`test`), a hardcoded sender email (`test@mailchannels.com`), a timestamp, a request ID (provided or generated), and an SMTP ID. The response includes the HTTP status code and body returned by each webhook. + +### Usage + +::: code-group +```ts [modular.ts] +import { MailChannelsClient } from 'mailchannels-sdk' +import { Webhooks } from 'mailchannels-sdk/modules' + +const mailchannels = new MailChannelsClient('your-api-key') +const webhooks = new Webhooks(mailchannels) + +const { allPassed, results } = await webhooks.validate('optional-request-id'); +``` + +```ts [full.ts] +import { MailChannels } from 'mailchannels-sdk' +const mailchannels = new MailChannels('your-api-key') + +const { allPassed, results } = await mailchannels.webhooks.validate('optional-request-id'); +``` +::: + +### Params + +- `requestId`: Optional identifier in the webhook payload. If not provided, a value will be automatically generated. + > [!NOTE] + > The request id must not exceed 28 characters. + ## Type declarations <<< @/snippets/webhooks.ts @@ -136,6 +167,10 @@ const { key } = await mailchannels.webhooks.getSigningKey('key-id'); **Signing Key type declarations** <<< @/snippets/webhooks-signing-key-response.ts + + **Validate type declarations** + + <<< @/snippets/webhooks-validate-response.ts ## Source diff --git a/package.json b/package.json index 5e814dd..3c18ece 100644 --- a/package.json +++ b/package.json @@ -39,8 +39,7 @@ ], "scripts": { "build": "unbuild", - "release": "npm run lint && npm run test && npm run build && changelogen --release && npm publish && npm run publish:mirrors && git push --follow-tags", - "publish:mirrors": "jiti scripts/publish-mirrors", + "release": "npm run lint && npm run test && npm run build && changelogen --release && npm publish && git push --follow-tags", "lint": "eslint", "lint:fix": "eslint --fix", "test": "vitest run --reporter=verbose --coverage", diff --git a/playground/metrics/engagement.ts b/playground/metrics/engagement.ts new file mode 100644 index 0000000..9237e2f --- /dev/null +++ b/playground/metrics/engagement.ts @@ -0,0 +1,12 @@ +import { MailChannels } from "../../src/mailchannels"; + +process.loadEnvFile(); + +const { + MAILCHANNELS_API_KEY: apiKey +} = process.env as Record; + +const mailchannels = new MailChannels(apiKey); +const { engagement, error } = await mailchannels.metrics.engagement(); + +console.info(JSON.stringify({ engagement, error }, null, 2)); diff --git a/playground/metrics/performance.ts b/playground/metrics/performance.ts new file mode 100644 index 0000000..4d1dfac --- /dev/null +++ b/playground/metrics/performance.ts @@ -0,0 +1,12 @@ +import { MailChannels } from "../../src/mailchannels"; + +process.loadEnvFile(); + +const { + MAILCHANNELS_API_KEY: apiKey +} = process.env as Record; + +const mailchannels = new MailChannels(apiKey); +const { performance, error } = await mailchannels.metrics.performance(); + +console.info(JSON.stringify({ performance, error }, null, 2)); diff --git a/playground/metrics/recipient-behaviour.ts b/playground/metrics/recipient-behaviour.ts new file mode 100644 index 0000000..3528c08 --- /dev/null +++ b/playground/metrics/recipient-behaviour.ts @@ -0,0 +1,12 @@ +import { MailChannels } from "../../src/mailchannels"; + +process.loadEnvFile(); + +const { + MAILCHANNELS_API_KEY: apiKey +} = process.env as Record; + +const mailchannels = new MailChannels(apiKey); +const { behaviour, error } = await mailchannels.metrics.recipientBehaviour(); + +console.info(JSON.stringify({ behaviour, error }, null, 2)); diff --git a/playground/metrics/usage.ts b/playground/metrics/usage.ts new file mode 100644 index 0000000..d03f6ba --- /dev/null +++ b/playground/metrics/usage.ts @@ -0,0 +1,12 @@ +import { MailChannels } from "../../src/mailchannels"; + +process.loadEnvFile(); + +const { + MAILCHANNELS_API_KEY: apiKey +} = process.env as Record; + +const mailchannels = new MailChannels(apiKey); +const { usage, error } = await mailchannels.metrics.usage(); + +console.info(JSON.stringify({ usage, error }, null, 2)); diff --git a/playground/metrics/volume.ts b/playground/metrics/volume.ts new file mode 100644 index 0000000..2e04ca9 --- /dev/null +++ b/playground/metrics/volume.ts @@ -0,0 +1,12 @@ +import { MailChannels } from "../../src/mailchannels"; + +process.loadEnvFile(); + +const { + MAILCHANNELS_API_KEY: apiKey +} = process.env as Record; + +const mailchannels = new MailChannels(apiKey); +const { volume, error } = await mailchannels.metrics.volume(); + +console.info(JSON.stringify({ volume, error }, null, 2)); diff --git a/playground/sub-accounts/create.ts b/playground/sub-accounts/create.ts index 2dddc9b..04d385a 100644 --- a/playground/sub-accounts/create.ts +++ b/playground/sub-accounts/create.ts @@ -7,6 +7,6 @@ const { } = process.env as Record; const mailchannels = new MailChannels(apiKey); -const { account, error } = await mailchannels.subAccounts.create("validhandle1234"); +const { account, error } = await mailchannels.subAccounts.create("My Company", "validhandle1234"); console.info(JSON.stringify({ account, error }, null, 2)); diff --git a/playground/sub-accounts/delete-limit.ts b/playground/sub-accounts/delete-limit.ts new file mode 100644 index 0000000..1e61288 --- /dev/null +++ b/playground/sub-accounts/delete-limit.ts @@ -0,0 +1,12 @@ +import { MailChannels } from "../../src/mailchannels"; + +process.loadEnvFile(); + +const { + MAILCHANNELS_API_KEY: apiKey +} = process.env as Record; + +const mailchannels = new MailChannels(apiKey); +const { success, error } = await mailchannels.subAccounts.deleteLimit("validhandle1234"); + +console.info(JSON.stringify({ success, error }, null, 2)); diff --git a/playground/sub-accounts/get-limit.ts b/playground/sub-accounts/get-limit.ts new file mode 100644 index 0000000..5dfb457 --- /dev/null +++ b/playground/sub-accounts/get-limit.ts @@ -0,0 +1,12 @@ +import { MailChannels } from "../../src/mailchannels"; + +process.loadEnvFile(); + +const { + MAILCHANNELS_API_KEY: apiKey +} = process.env as Record; + +const mailchannels = new MailChannels(apiKey); +const { limit, error } = await mailchannels.subAccounts.getLimit("validhandle1234"); + +console.info(JSON.stringify({ limit, error }, null, 2)); diff --git a/playground/sub-accounts/get-usage.ts b/playground/sub-accounts/get-usage.ts new file mode 100644 index 0000000..1661162 --- /dev/null +++ b/playground/sub-accounts/get-usage.ts @@ -0,0 +1,12 @@ +import { MailChannels } from "../../src/mailchannels"; + +process.loadEnvFile(); + +const { + MAILCHANNELS_API_KEY: apiKey +} = process.env as Record; + +const mailchannels = new MailChannels(apiKey); +const { usage, error } = await mailchannels.subAccounts.getUsage("validhandle1234"); + +console.info(JSON.stringify({ usage, error }, null, 2)); diff --git a/playground/sub-accounts/set-limit.ts b/playground/sub-accounts/set-limit.ts new file mode 100644 index 0000000..43c43e0 --- /dev/null +++ b/playground/sub-accounts/set-limit.ts @@ -0,0 +1,14 @@ +import { MailChannels } from "../../src/mailchannels"; + +process.loadEnvFile(); + +const { + MAILCHANNELS_API_KEY: apiKey +} = process.env as Record; + +const mailchannels = new MailChannels(apiKey); +const { success, error } = await mailchannels.subAccounts.setLimit("validhandle1234", { + sends: 1 +}); + +console.info(JSON.stringify({ success, error }, null, 2)); diff --git a/playground/suppressions/create.ts b/playground/suppressions/create.ts new file mode 100644 index 0000000..b341995 --- /dev/null +++ b/playground/suppressions/create.ts @@ -0,0 +1,21 @@ +import { MailChannels } from "../../src/mailchannels"; + +process.loadEnvFile(); + +const { + MAILCHANNELS_API_KEY: apiKey +} = process.env as Record; + +const mailchannels = new MailChannels(apiKey); +const { success, error } = await mailchannels.suppressions.create({ + addToSubAccounts: false, + entries: [ + { + notes: "test", + recipient: "name@example.com", + types: ["transactional"] + } + ] +}); + +console.info(JSON.stringify({ success, error }, null, 2)); diff --git a/playground/suppressions/delete.ts b/playground/suppressions/delete.ts new file mode 100644 index 0000000..bcd21f5 --- /dev/null +++ b/playground/suppressions/delete.ts @@ -0,0 +1,12 @@ +import { MailChannels } from "../../src/mailchannels"; + +process.loadEnvFile(); + +const { + MAILCHANNELS_API_KEY: apiKey +} = process.env as Record; + +const mailchannels = new MailChannels(apiKey); +const { success, error } = await mailchannels.suppressions.delete("name@example.com"); + +console.info(JSON.stringify({ success, error }, null, 2)); diff --git a/playground/suppressions/list.ts b/playground/suppressions/list.ts new file mode 100644 index 0000000..7a766e7 --- /dev/null +++ b/playground/suppressions/list.ts @@ -0,0 +1,12 @@ +import { MailChannels } from "../../src/mailchannels"; + +process.loadEnvFile(); + +const { + MAILCHANNELS_API_KEY: apiKey +} = process.env as Record; + +const mailchannels = new MailChannels(apiKey); +const { list, error } = await mailchannels.suppressions.list(); + +console.info(JSON.stringify({ list, error }, null, 2)); diff --git a/playground/webhooks/validate.ts b/playground/webhooks/validate.ts new file mode 100644 index 0000000..08c9d2c --- /dev/null +++ b/playground/webhooks/validate.ts @@ -0,0 +1,12 @@ +import { MailChannels } from "../../src/mailchannels"; + +process.loadEnvFile(); + +const { + MAILCHANNELS_API_KEY: apiKey +} = process.env as Record; + +const mailchannels = new MailChannels(apiKey); +const { allPassed, results, error } = await mailchannels.webhooks.validate(); + +console.info(JSON.stringify({ allPassed, results, error }, null, 2)); diff --git a/scripts/publish-mirrors.ts b/scripts/publish-mirrors.ts deleted file mode 100644 index 52ee72f..0000000 --- a/scripts/publish-mirrors.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { readFile, writeFile } from "node:fs/promises"; -import { execSync } from "node:child_process"; -import { join } from "path"; -import packageJSON from "../package.json"; - -const packageJsonPath = join(process.cwd(), "package.json"); -const readmePath = join(process.cwd(), "README.md"); - -const originalPackage = packageJSON; -const originalName = originalPackage.name; -const originalDescription = originalPackage.description; - -const originalReadme = await readFile(readmePath, "utf-8"); - -const mirrors = [ - "@yizack/mailchannels" -]; - -// Update package.json for each mirror -for (const mirror of mirrors) { - console.info(`Publishing mirror '${mirror}'...`); - - const mirrorPackage = { - ...originalPackage, - name: mirror, - description: `${originalDescription} (mirror for mailchannels-sdk)` - }; - - const mirrorReadme = originalReadme.replaceAll(originalName, mirror); - - await writeFile(packageJsonPath, JSON.stringify(mirrorPackage, null, 2)); - await writeFile(readmePath, mirrorReadme); - - execSync("npm publish", { stdio: "inherit" }); - console.info(`✅ Successfully published ${mirror}`); -} - -// Restore original package.json -await writeFile(packageJsonPath, JSON.stringify(originalPackage, null, 2) + "\n"); -await writeFile(readmePath, originalReadme); -console.info(`🔄 Restored original package.json for '${originalName}'`); -console.info("🚀 All packages published successfully!"); diff --git a/src/mailchannels.ts b/src/mailchannels.ts index aab9064..373ada8 100644 --- a/src/mailchannels.ts +++ b/src/mailchannels.ts @@ -1,17 +1,22 @@ import { MailChannelsClient } from "./client"; -import { Domains, Emails, Lists, Service, SubAccounts, Users, Webhooks } from "./modules"; +import { Domains, Emails, Lists, Metrics, Service, SubAccounts, Suppressions, Users, Webhooks } from "./modules"; export { MailChannelsClient }; export type * from "./types"; export class MailChannels extends MailChannelsClient { + // Modules: Email API readonly emails = new Emails(this); readonly webhooks = new Webhooks(this); readonly subAccounts = new SubAccounts(this); - readonly service = new Service(this); + readonly metrics = new Metrics(this); + readonly suppressions = new Suppressions(this); + + // Modules: Inbound API readonly domains = new Domains(this); - readonly users = new Users(this); readonly lists = new Lists(this); + readonly users = new Users(this); + readonly service = new Service(this); constructor (key: string) { super(key); diff --git a/src/modules.ts b/src/modules.ts index dbcb49e..b9d8646 100644 --- a/src/modules.ts +++ b/src/modules.ts @@ -1,9 +1,15 @@ +// Modules: Email API export { Emails } from "./modules/emails"; export { Webhooks } from "./modules/webhooks"; export { SubAccounts } from "./modules/sub-accounts"; -export { Service } from "./modules/service"; +export { Metrics } from "./modules/metrics"; +export { Suppressions } from "./modules/suppressions"; + +// Modules: Inbound API export { Domains } from "./modules/domains"; -export { Users } from "./modules/users"; export { Lists } from "./modules/lists"; +export { Users } from "./modules/users"; +export { Service } from "./modules/service"; +// Types export type * from "./types"; diff --git a/src/modules/domains.ts b/src/modules/domains.ts index a3dfdf6..3fc7ffd 100644 --- a/src/modules/domains.ts +++ b/src/modules/domains.ts @@ -1,13 +1,13 @@ import type { MailChannelsClient } from "../client"; import type { SuccessResponse } from "../types/success-response"; -import type { ListEntriesResponse, ListEntryOptions, ListEntryResponse, ListNames } from "../types/list-entry"; +import type { ListEntriesResponse, ListEntryOptions, ListEntryResponse, ListNames } from "../types/lists/entry"; import type { DomainsAddListEntryApiResponse, DomainsBulkProvisionApiResponse } from "../types/domains/internal"; import type { DomainsBulkProvisionOptions, DomainsBulkProvisionResponse, DomainsData, DomainsProvisionOptions, DomainsProvisionResponse } from "../types/domains/provision"; import type { DomainsListOptions, DomainsListResponse } from "../types/domains/list"; import type { DomainsCreateLoginLinkResponse } from "../types/domains/create-login-link"; import type { DomainsDownstreamAddress, DomainsListDownstreamAddressesOptions, DomainsListDownstreamAddressesResponse } from "../types/domains/downstream-addresses"; import { ErrorCode, getStatusError } from "../utils/errors"; -import type { ListEntryApiResponse } from "../types/internal"; +import type { ListEntryApiResponse } from "../types/lists/internal"; export class Domains { constructor (protected mailchannels: MailChannelsClient) {} diff --git a/src/modules/emails.ts b/src/modules/emails.ts index 109975d..6edd8d4 100644 --- a/src/modules/emails.ts +++ b/src/modules/emails.ts @@ -55,6 +55,7 @@ export class Emails { const payload: EmailsSendPayload = { attachments: options.attachments, + campaign_id: options.campaignId, personalizations: [{ bcc: parseArrayRecipients(bcc), cc: parseArrayRecipients(cc), @@ -71,7 +72,8 @@ export class Emails { tracking_settings: options.tracking ? { click_tracking: options.tracking.click ? { enable: options.tracking.click } : undefined, open_tracking: options.tracking.open ? { enable: options.tracking.open } : undefined - } : undefined + } : undefined, + transactional: options.transactional }; const response = await this.mailchannels.post<{ data: string[] }>("/tx/v1/send", { diff --git a/src/modules/lists.ts b/src/modules/lists.ts index 30c4666..c9d21b0 100644 --- a/src/modules/lists.ts +++ b/src/modules/lists.ts @@ -1,7 +1,7 @@ import type { MailChannelsClient } from "../client"; import type { SuccessResponse } from "../types/success-response"; -import type { ListEntriesResponse, ListEntryOptions, ListEntryResponse, ListNames } from "../types/list-entry"; -import type { ListEntryApiResponse } from "../types/internal"; +import type { ListEntriesResponse, ListEntryOptions, ListEntryResponse, ListNames } from "../types/lists/entry"; +import type { ListEntryApiResponse } from "../types/lists/internal"; import { getStatusError } from "../utils/errors"; export class Lists { diff --git a/src/modules/metrics.ts b/src/modules/metrics.ts new file mode 100644 index 0000000..192e56d --- /dev/null +++ b/src/modules/metrics.ts @@ -0,0 +1,221 @@ +import type { MailChannelsClient } from "../client"; +import { ErrorCode, getStatusError } from "../utils/errors"; +import type { MetricsEngagementApiResponse, MetricsPerformanceApiResponse, MetricsRecipientBehaviourApiResponse, MetricsUsageApiResponse, MetricsVolumeApiResponse } from "../types/metrics/internal"; +import type { MetricsOptions } from "../types/metrics"; +import type { MetricsEngagementResponse } from "../types/metrics/engagement"; +import type { MetricsPerformanceResponse } from "../types/metrics/performance"; +import type { MetricsRecipientBehaviourResponse } from "../types/metrics/recipient-behaviour"; +import type { MetricsVolumeResponse } from "../types/metrics/volume"; +import type { MetricsUsageResponse } from "../types/metrics/usage"; + +const mapBuckets = (arr: { count: number, period_start: string }[]) => { + return arr.map(({ count, period_start }) => ({ count, periodStart: period_start })); +}; + +export class Metrics { + constructor (protected mailchannels: MailChannelsClient) {} + + /** + * Retrieve engagement metrics for messages sent from your account, including counts of open and click events. Supports optional filters for time range, and campaign ID. + * @param options - Options to filter and customize the engagement metrics retrieval. + * @example + * ```ts + * const mailchannels = new MailChannels('your-api-key') + * const { engagement } = await mailchannels.metrics.engagement() + * ``` + */ + async engagement (options?: MetricsOptions): Promise { + const data: MetricsEngagementResponse = { engagement: null, error: null }; + + const response = await this.mailchannels.get("/tx/v1/metrics/engagement", { + query: { + start_time: options?.startTime, + end_time: options?.endTime, + campaign_id: options?.campaignId, + interval: options?.interval + }, + onResponseError: async ({ response }) => { + data.error = getStatusError(response, { + [ErrorCode.BadRequest]: "Bad Request." + }); + } + }).catch(() => null); + + if (!response) return data; + + data.engagement = { + buckets: { + click: mapBuckets(response.buckets.click), + clickTrackingDelivered: mapBuckets(response.buckets.click_tracking_delivered), + open: mapBuckets(response.buckets.open), + openTrackingDelivered: mapBuckets(response.buckets.open_tracking_delivered) + }, + click: response.click, + clickTrackingDelivered: response.click_tracking_delivered, + endTime: response.end_time, + open: response.open, + openTrackingDelivered: response.open_tracking_delivered, + startTime: response.start_time + }; + + return data; + } + + /** + * Retrieve performance metrics for messages sent from your account, including counts of processed, delivered, hard-bounced events. Supports optional filters for time range, and campaign ID. + * @param options - Options to filter and customize the performance metrics retrieval. + * @example + * ```ts + * const mailchannels = new MailChannels('your-api-key') + * const { performance } = await mailchannels.metrics.performance() + * ``` + */ + async performance (options?: MetricsOptions): Promise { + const data: MetricsPerformanceResponse = { performance: null, error: null }; + + const response = await this.mailchannels.get("/tx/v1/metrics/performance", { + query: { + start_time: options?.startTime, + end_time: options?.endTime, + campaign_id: options?.campaignId, + interval: options?.interval + }, + onResponseError: async ({ response }) => { + data.error = getStatusError(response, { + [ErrorCode.BadRequest]: "Bad Request." + }); + } + }).catch(() => null); + + if (!response) return data; + + data.performance = { + bounced: response.bounced, + buckets: { + bounced: mapBuckets(response.buckets.bounced), + delivered: mapBuckets(response.buckets.delivered), + processed: mapBuckets(response.buckets.processed) + }, + delivered: response.delivered, + endTime: response.end_time, + processed: response.processed, + startTime: response.start_time + }; + + return data; + } + + /** + * Retrieve recipient behaviour metrics for messages sent from your account, including counts of unsubscribed events. Supports optional filters for time range, and campaign ID. + * @param options - Options to filter and customize the recipient behaviour metrics retrieval. + * @example + * ```ts + * const mailchannels = new MailChannels('your-api-key') + * const { behaviour } = await mailchannels.metrics.recipientBehaviour() + * ``` + */ + async recipientBehaviour (options?: MetricsOptions): Promise { + const data: MetricsRecipientBehaviourResponse = { behaviour: null, error: null }; + + const response = await this.mailchannels.get("/tx/v1/metrics/recipient-behaviour", { + query: { + start_time: options?.startTime, + end_time: options?.endTime, + campaign_id: options?.campaignId, + interval: options?.interval + }, + onResponseError: async ({ response }) => { + data.error = getStatusError(response, { + [ErrorCode.BadRequest]: "Bad Request." + }); + } + }).catch(() => null); + + if (!response) return data; + + data.behaviour = { + buckets: { + unsubscribeDelivered: mapBuckets(response.buckets.unsubscribe_delivered), + unsubscribed: mapBuckets(response.buckets.unsubscribed) + }, + endTime: response.end_time, + startTime: response.start_time, + unsubscribeDelivered: response.unsubscribe_delivered, + unsubscribed: response.unsubscribed + }; + + return data; + } + + /** + * Retrieve volume metrics for messages sent from your account, including counts of processed, delivered and dropped events. Supports optional filters for time range and campaign ID. + * @param options - Options to filter and customize the volume metrics retrieval. + * @example + * ```ts + * const mailchannels = new MailChannels('your-api-key') + * const { volume } = await mailchannels.metrics.volume() + * ``` + */ + async volume (options?: MetricsOptions): Promise { + const data: MetricsVolumeResponse = { volume: null, error: null }; + + const response = await this.mailchannels.get("/tx/v1/metrics/volume", { + query: { + start_time: options?.startTime, + end_time: options?.endTime, + campaign_id: options?.campaignId, + interval: options?.interval + }, + onResponseError: async ({ response }) => { + data.error = getStatusError(response, { + [ErrorCode.BadRequest]: "Bad Request." + }); + } + }).catch(() => null); + + if (!response) return data; + + data.volume = { + buckets: { + delivered: mapBuckets(response.buckets.delivered), + dropped: mapBuckets(response.buckets.dropped), + processed: mapBuckets(response.buckets.processed) + }, + delivered: response.delivered, + dropped: response.dropped, + endTime: response.end_time, + processed: response.processed, + startTime: response.start_time + }; + + return data; + } + + /** + * Retrieves usage statistics during the current billing period. + * @example + * ```ts + * const mailchannels = new MailChannels('your-api-key') + * const { usage } = await mailchannels.metrics.usage() + * ``` + */ + async usage (): Promise { + const data: MetricsUsageResponse = { usage: null, error: null }; + + const response = await this.mailchannels.get("/tx/v1/usage", { + onResponseError: async ({ response }) => { + data.error = getStatusError(response); + } + }).catch(() => null); + + if (!response) return data; + + data.usage = { + endDate: response.period_end_date, + startDate: response.period_start_date, + total: response.total_usage + }; + + return data; + } +} diff --git a/src/modules/service.ts b/src/modules/service.ts index eeffa40..4bdd423 100644 --- a/src/modules/service.ts +++ b/src/modules/service.ts @@ -58,6 +58,13 @@ export class Service { /** * Submit a false negative or false positive report. * @param options - The report options + * @example + * ```ts + * const mailchannels = new MailChannels('your-api-key') + * const { success, error } = await mailchannels.service.report({ + * // ... + * }) + * ``` */ async report (options: ServiceReportOptions): Promise { const data: SuccessResponse = { success: false, error: null }; diff --git a/src/modules/sub-accounts.ts b/src/modules/sub-accounts.ts index 1fb597d..aca0646 100644 --- a/src/modules/sub-accounts.ts +++ b/src/modules/sub-accounts.ts @@ -1,38 +1,51 @@ import type { MailChannelsClient } from "../client"; import type { SuccessResponse } from "../types/success-response"; -import type { SubAccountsCreateSmtpPasswordApiResponse } from "../types/sub-accounts/internal"; -import type { SubAccountsAccount, SubAccountsCreateResponse } from "../types/sub-accounts/create"; +import type { SubAccountsCreateApiResponse, SubAccountsCreateSmtpPasswordApiResponse, SubAccountsListApiResponse, SubAccountsUsageApiResponse } from "../types/sub-accounts/internal"; +import type { SubAccountsCreateResponse } from "../types/sub-accounts/create"; import type { SubAccountsListOptions, SubAccountsListResponse } from "../types/sub-accounts/list"; import type { SubAccountsCreateApiKeyResponse, SubAccountsListApiKeyResponse } from "../types/sub-accounts/api-key"; import type { SubAccountsCreateSmtpPasswordResponse, SubAccountsListSmtpPasswordResponse } from "../types/sub-accounts/smtp-password"; +import type { SubAccountsLimit, SubAccountsLimitResponse } from "../types/sub-accounts/limit"; import { ErrorCode, getStatusError } from "../utils/errors"; +import type { SubAccountsUsageResponse } from "../types/sub-accounts/usage"; export class SubAccounts { + private static readonly COMPANY_PATTERN = /^.{3,128}$/; private static readonly HANDLE_PATTERN = /^[a-z0-9]{3,128}$/; constructor (protected mailchannels: MailChannelsClient) {} /** - * Creates a new sub-account under the parent account. Each sub-account must have a unique handle composed solely of lowercase alphanumeric characters. If no handle is provided, a random handle will be generated. - * @param handle - The handle of the sub-account to create. Sub-account handle must match the pattern `[a-z0-9]{3,128}`. + * Creates a new sub-account under the parent account. Each sub-account must have a unique handle composed solely of lowercase alphanumeric characters. If no handle is provided, a random handle will be generated. Note that Sub-accounts are only available to parent accounts on 100K and higher plans. + * @param companyName - The name of the company associated with the sub-account. This name is used for display purposes only and does not affect the functionality of the sub-account. The length must be between 3 and 128 characters. + * @param handle - A unique name for the sub-account to be created. The length must be between 3 and 128 characters, and it may contain only lowercase letters and numbers. If not provided, a random handle will be generated. * @example * ```ts * const mailchannels = new MailChannels('your-api-key') - * const { account } = await mailchannels.subAccounts.create('validhandle123') + * const { account } = await mailchannels.subAccounts.create('My Company', 'validhandle123') * ``` */ - async create (handle?: string): Promise { + async create (companyName: string, handle?: string): Promise { const data: SubAccountsCreateResponse = { account: null, error: null }; + const isValidCompany = SubAccounts.COMPANY_PATTERN.test(companyName); + if (!isValidCompany) { + data.error = "Invalid company name. Company name must be between 3 and 128 characters."; + return data; + } + if (handle) { const isValidHandle = SubAccounts.HANDLE_PATTERN.test(handle); if (!isValidHandle) { - data.error = "Invalid handle. Sub-account handle must match the pattern [a-z0-9]{3,128}"; + data.error = "Invalid handle. Sub-account handle must be between 3 and 128 characters and contain only lowercase letters and numbers."; return data; } } - const response = await this.mailchannels.post("/tx/v1/sub-account", { - body: handle ? { handle } : undefined, + const response = await this.mailchannels.post("/tx/v1/sub-account", { + body: { + company_name: companyName, + handle + }, onResponseError: ({ response }) => { data.error = getStatusError(response, { [ErrorCode.Forbidden]: "The parent account does not have permission to create sub-accounts.", @@ -41,7 +54,14 @@ export class SubAccounts { } }).catch(() => null); - data.account = response; + if (!response) return data; + + data.account = { + companyName: response.company_name, + enabled: response.enabled, + handle: response.handle + }; + return data; } @@ -67,14 +87,19 @@ export class SubAccounts { return data; } - const response = await this.mailchannels.get("/tx/v1/sub-account", { + const response = await this.mailchannels.get("/tx/v1/sub-account", { query: options, onResponseError: async ({ response }) => { data.error = getStatusError(response); } }).catch(() => []); - data.accounts = response; + data.accounts = response.map(account => ({ + companyName: account.company_name, + enabled: account.enabled, + handle: account.handle + })); + return data; } @@ -380,4 +405,140 @@ export class SubAccounts { return data; } + + /** + * Retrieves the limit of a specified sub-account. A value of `-1` indicates that the sub-account inherits the parent account's limit, allowing the sub-account to utilize any remaining capacity within the parent account's allocation. + * @param handle - Handle of the sub-account to retrieve the limit for. + * @example + * ```ts + * const mailchannels = new MailChannels('your-api-key') + * const { limit } = await mailchannels.subAccounts.getLimit('validhandle123') + * ``` + */ + async getLimit (handle: string): Promise { + const data: SubAccountsLimitResponse = { limit: null, error: null }; + + if (!handle) { + data.error = "No handle provided."; + return data; + } + + const response = await this.mailchannels.get(`/tx/v1/sub-account/${handle}/limit`, { + onResponseError: async ({ response }) => { + data.error = getStatusError(response, { + [ErrorCode.NotFound]: `Sub-account with handle '${handle}' not found.` + }); + } + }).catch(() => null); + + if (!response) return data; + + data.limit = response; + return data; + } + + /** + * Sets the limit for the specified sub-account. + * @param handle - Handle of the sub-account to set limit for. + * @param limit - The limits to set for the sub-account. The minimum allowed sends is `0` + * @example + * ```ts + * const mailchannels = new MailChannels('your-api-key') + * const { success } = await mailchannels.subAccounts.setLimit('validhandle123', { sends: 1000 }) + * ``` + */ + async setLimit (handle: string, limit: SubAccountsLimit): Promise { + const data: SuccessResponse = { success: false, error: null }; + + if (!handle) { + data.error = "No handle provided."; + return data; + } + + await this.mailchannels.put<{ limit: SubAccountsLimit }>(`/tx/v1/sub-account/${handle}/limit`, { + body: limit, + ignoreResponseError: true, + onResponse: async ({ response }) => { + if (response.ok) { + data.success = true; + return; + } + data.error = getStatusError(response, { + [ErrorCode.BadRequest]: "Bad Request.", + [ErrorCode.NotFound]: `Sub-account with handle '${handle}' not found.` + }); + } + }); + + return data; + } + + /** + * Deletes the limit for the specified sub-account. After a successful deletion, the specified sub-account will be limited to the parent account's limit. + * @param handle - Handle of the sub-account to delete limit for. + * @example + * ```ts + * const mailchannels = new MailChannels('your-api-key') + * const { success } = await mailchannels.subAccounts.deleteLimit('validhandle123') + * ``` + */ + async deleteLimit (handle: string): Promise { + const data: SuccessResponse = { success: false, error: null }; + + if (!handle) { + data.error = "No handle provided."; + return data; + } + + await this.mailchannels.delete(`/tx/v1/sub-account/${handle}/limit`, { + ignoreResponseError: true, + onResponse: async ({ response }) => { + if (response.ok) { + data.success = true; + return; + } + data.error = getStatusError(response, { + [ErrorCode.NotFound]: `Sub-account with handle '${handle}' not found.` + }); + } + }); + + return data; + } + + /** + * Retrieves usage statistics for the specified sub-account during the current billing period. + * @param handle - Handle of the sub-account to query usage stats for. + * @example + * ```ts + * const mailchannels = new MailChannels('your-api-key') + * const { usage } = await mailchannels.subAccounts.getUsage('validhandle123') + * ``` + */ + async getUsage (handle: string): Promise { + const data: SubAccountsUsageResponse = { usage: null, error: null }; + + if (!handle) { + data.error = "No handle provided."; + return data; + } + + const response = await this.mailchannels.get(`/tx/v1/sub-account/${handle}/usage`, { + onResponseError: async ({ response }) => { + data.error = getStatusError(response, { + [ErrorCode.NotFound]: `Sub-account with handle '${handle}' not found.` + }); + } + }).catch(() => null); + + if (!response) return data; + + data.usage = { + endDate: response.period_end_date, + startDate: response.period_start_date, + total: response.total_usage + }; + + return data; + } } diff --git a/src/modules/suppressions.ts b/src/modules/suppressions.ts new file mode 100644 index 0000000..9dde128 --- /dev/null +++ b/src/modules/suppressions.ts @@ -0,0 +1,138 @@ +import type { MailChannelsClient } from "../client"; +import { ErrorCode, getStatusError } from "../utils/errors"; +import type { SuccessResponse } from "../types"; +import type { SuppressionsCreateOptions, SuppressionsListOptions, SuppressionsListResponse, SuppressionsSource } from "../types/suppressions"; +import type { SuppressionsCreatePayload, SuppressionsListApiResponse, SuppressionsListPayload } from "../types/suppressions/internal"; + +export class Suppressions { + constructor (protected mailchannels: MailChannelsClient) {} + + /** + * Creates suppression entries for the specified account. Parent accounts can create suppression entries for all associated sub-accounts. If `types` is not provided, it defaults to `non-transactional`. The operation is atomic, meaning all entries are successfully added or none are added if an error occurs. + * @param options - The details of the suppression entries to create. + * @example + * ```ts + * const mailchannels = new MailChannels('your-api-key') + * const response = await mailchannels.suppressions.create({ + * // ... + * }); + */ + async create (options: SuppressionsCreateOptions): Promise { + const data: SuccessResponse = { success: false, error: null }; + + const { addToSubAccounts, entries } = options; + + const payload: SuppressionsCreatePayload = { + add_to_sub_accounts: addToSubAccounts, + suppression_entries: entries.map(entry => ({ + notes: entry.notes, + recipient: entry.recipient, + suppression_types: Array.from(new Set(entry.types)) + })) + }; + + await this.mailchannels.post("/tx/v1/suppression-list", { + body: payload, + ignoreResponseError: true, + onResponse: async ({ response }) => { + if (response.ok) { + data.success = true; + return; + } + data.error = getStatusError(response, { + [ErrorCode.BadRequest]: "Bad Request.", + [ErrorCode.Conflict]: "Conflict. One or more suppression entries in the request already exist and cannot be created again.", + [ErrorCode.PayloadTooLarge]: "Payload too large. The request exceeds the maximum allowed total of 1000 suppression entries for the parent account and/or its sub-accounts." + }); + } + }); + + return data; + } + + /** + * Deletes suppression entry associated with the account based on the specified recipient and source. + * @param recipient - The email address of the suppression entry to delete. + * @param source - The source of the suppression entry to be deleted. If source is not provided, it defaults to `api`. If source is set to `all`, all suppression entries related to the specified recipient will be deleted. + * @example + * ```ts + * const mailchannels = new MailChannels('your-api-key') + * const response = await mailchannels.suppressions.delete('name@example.com', 'api'); + * ``` + */ + async delete (recipient: string, source?: SuppressionsSource): Promise { + const data: SuccessResponse = { success: false, error: null }; + + await this.mailchannels.delete(`/tx/v1/suppression-list/recipients/${recipient}`, { + query: { + source + }, + ignoreResponseError: true, + onResponse: async ({ response }) => { + if (response.ok) { + data.success = true; + return; + } + data.error = getStatusError(response, { + [ErrorCode.BadRequest]: "Bad Request." + }); + } + }); + + return data; + } + + /** + * Retrieve suppression entries associated with the specified account. Supports filtering by recipient, source and creation date range. The response is paginated, with a default limit of `1000` entries per page and an offset of `0`. + * @example + * ```ts + * const mailchannels = new MailChannels('your-api-key') + * const response = await mailchannels.suppressions.list(); + * ``` + * @param options - Options to filter and customize the suppression entries retrieval. + */ + async list (options?: SuppressionsListOptions): Promise { + const data: SuppressionsListResponse = { list: [], error: null }; + + if (typeof options?.limit === "number" && (options.limit < 1 || options.limit > 1000)) { + data.error = "The limit must be between 1 and 1000."; + return data; + } + + if (typeof options?.offset === "number" && options.offset < 0) { + data.error = "Offset must be greater than or equal to 0."; + return data; + } + + const payload: SuppressionsListPayload = { + recipient: options?.recipient, + source: options?.source, + created_before: options?.createdBefore, + created_after: options?.createdAfter, + limit: options?.limit, + offset: options?.offset + }; + + const response = await this.mailchannels.get("/tx/v1/suppression-list", { + query: payload, + onResponseError: async ({ response }) => { + data.error = getStatusError(response, { + [ErrorCode.BadRequest]: "Bad Request." + }); + } + }).catch(() => null); + + if (!response) return data; + + data.list = response.suppression_list.map(entry => ({ + createdAt: entry.created_at, + notes: entry.notes, + recipient: entry.recipient, + sender: entry.sender, + source: entry.source, + types: entry.suppression_types + })); + + return data; + } +} diff --git a/src/modules/users.ts b/src/modules/users.ts index 1e7e18e..a37a213 100644 --- a/src/modules/users.ts +++ b/src/modules/users.ts @@ -1,7 +1,7 @@ import type { MailChannelsClient } from "../client"; import type { SuccessResponse } from "../types/success-response"; -import type { ListEntriesResponse, ListEntryOptions, ListEntryResponse, ListNames } from "../types/list-entry"; -import type { ListEntryApiResponse } from "../types/internal"; +import type { ListEntriesResponse, ListEntryOptions, ListEntryResponse, ListNames } from "../types/lists/entry"; +import type { ListEntryApiResponse } from "../types/lists/internal"; import type { UsersCreateApiResponse } from "../types/users/internal"; import type { UsersCreateOptions, UsersCreateResponse } from "../types/users/create"; import { ErrorCode, getStatusError } from "../utils/errors"; diff --git a/src/modules/webhooks.ts b/src/modules/webhooks.ts index aaf9d0f..02cdcf5 100644 --- a/src/modules/webhooks.ts +++ b/src/modules/webhooks.ts @@ -2,6 +2,8 @@ import type { MailChannelsClient } from "../client"; import type { SuccessResponse } from "../types/success-response"; import type { WebhooksListResponse } from "../types/webhooks/list"; import type { WebhooksSigningKeyResponse } from "../types/webhooks/signing-key"; +import type { WebhooksValidateResponse } from "../types/webhooks/validate"; +import type { WebhooksValidateApiResponse } from "../types/webhooks/internal"; import { ErrorCode, getStatusError } from "../utils/errors"; export class Webhooks { @@ -9,7 +11,7 @@ export class Webhooks { /** * Enrolls the customer to receive event notifications via webhooks. - * @param endpoint - The URL to receive event notifications. + * @param endpoint - The URL to receive event notifications. Must be no longer than `8000` characters. * @example * ```ts * const mailchannels = new MailChannels('your-api-key') @@ -24,6 +26,11 @@ export class Webhooks { return data; } + if (endpoint.length > 8000) { + data.error = "The endpoint exceeds the maximum length of 8000 characters."; + return data; + } + await this.mailchannels.post("/tx/v1/webhook", { query: { endpoint @@ -115,4 +122,41 @@ export class Webhooks { data.key = response?.key || null; return data; } + + /** + * Validates whether your enrolled webhook(s) respond with an HTTP `2xx` status code. Sends a test request to each webhook containing your customer handle, a hardcoded event type (`test`), a hardcoded sender email (`test@mailchannels.com`), a timestamp, a request ID (provided or generated), and an SMTP ID. The response includes the HTTP status code and body returned by each webhook. + * @param requestId - Optional identifier in the webhook payload. If not provided, a value will be automatically generated. Must not exceed 28 characters. + * @example + * ```ts + * const mailchannels = new MailChannels('your-api-key') + * const { allPassed, results } = await mailchannels.webhooks.validate('optional-request-id') + * ``` + */ + async validate (requestId?: string): Promise { + const data: WebhooksValidateResponse = { allPassed: false, results: [], error: null }; + + if (requestId && requestId.length > 28) { + data.error = "The request id should not exceed 28 characters."; + return data; + } + + const response = await this.mailchannels.post("/tx/v1/webhook/validate", { + body: { + request_id: requestId + }, + onResponseError: ({ response }) => { + data.error = getStatusError(response, { + [ErrorCode.BadRequest]: "Bad Request.", + [ErrorCode.NotFound]: "No webhooks found for the account." + }); + } + }).catch(() => null); + + if (response) { + data.allPassed = response.all_passed; + data.results = response.results; + } + + return data; + } } diff --git a/src/types/emails/internal.d.ts b/src/types/emails/internal.d.ts index 9f6685d..48a3813 100644 --- a/src/types/emails/internal.d.ts +++ b/src/types/emails/internal.d.ts @@ -23,10 +23,10 @@ export interface EmailsSendContent { export interface EmailsSendPayload { attachments?: EmailsSendAttachment[]; + campaign_id?: string; content: EmailsSendContent[]; from: EmailsSendRecipient; headers?: Record; - mailfrom?: EmailsSendRecipient; personalizations: EmailsSendPersonalization[]; reply_to?: EmailsSendRecipient; subject: string; @@ -38,6 +38,7 @@ export interface EmailsSendPayload { enable: EmailsSendTracking["open"]; }; }; + transactional?: boolean; } export interface EmailsCheckDomainPayload { diff --git a/src/types/emails/send.d.ts b/src/types/emails/send.d.ts index 696dafc..045fa4e 100644 --- a/src/types/emails/send.d.ts +++ b/src/types/emails/send.d.ts @@ -42,6 +42,10 @@ interface EmailsSendOptionsBase { * An array of attachments to be sent with the email. */ attachments?: EmailsSendAttachment[]; + /** + * The campaign identifier. If specified, this ID will be included in all relevant webhooks. It can be up to 48 UTF-8 characters long and must not contain spaces. + */ + campaignId?: string; /** * The BCC recipients of the email. Can be an array of email addresses or an array of objects with email and name properties or a single email address string or an object with email and name properties. * @example @@ -149,6 +153,13 @@ interface EmailsSendOptionsBase { * - map, whose keys must be strings, and whose values are all of permitted types */ mustaches?: Record; + /** + * Mark these messages as transactional or non-transactional. In order for a message to be marked as non-transactional, it must have exactly one recipient per personalization, and it must be DKIM signed. 400 Bad Request will be returned if there are more than one recipient in any personalization for non-transactional messages. If a message is marked as non-transactional, it changes the sending process as follows: + * + * List-Unsubscribe headers will be added. + * @default true + */ + transactional?: boolean; } export type EmailsSendOptions = EmailsSendOptionsBase & ( diff --git a/src/types/index.d.ts b/src/types/index.d.ts index b2c583b..4a38b2b 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -1,10 +1,15 @@ -// Module types +// Modules: Email API export type * from "./emails"; -export type * from "./sub-accounts"; export type * from "./webhooks"; +export type * from "./sub-accounts"; +export type * from "./metrics"; +export type * from "./suppressions"; + +// Modules: Inbound API export type * from "./domains"; +export type * from "./lists"; +export type * from "./users"; export type * from "./service"; // Shared types export type * from "./success-response"; -export type * from "./list-entry"; diff --git a/src/types/list-entry.d.ts b/src/types/lists/entry.d.ts similarity index 100% rename from src/types/list-entry.d.ts rename to src/types/lists/entry.d.ts diff --git a/src/types/lists/index.d.ts b/src/types/lists/index.d.ts new file mode 100644 index 0000000..363490f --- /dev/null +++ b/src/types/lists/index.d.ts @@ -0,0 +1 @@ +export * from "./entry"; diff --git a/src/types/internal.d.ts b/src/types/lists/internal.d.ts similarity index 100% rename from src/types/internal.d.ts rename to src/types/lists/internal.d.ts diff --git a/src/types/metrics/engagement.d.ts b/src/types/metrics/engagement.d.ts new file mode 100644 index 0000000..f227eb6 --- /dev/null +++ b/src/types/metrics/engagement.d.ts @@ -0,0 +1,21 @@ +import type { MetricsBucket } from "."; + +export interface MetricsEngagement { + buckets: { + click: MetricsBucket[]; + clickTrackingDelivered: MetricsBucket[]; + open: MetricsBucket[]; + openTrackingDelivered: MetricsBucket[]; + }; + click: number; + clickTrackingDelivered: number; + endTime: string; + open: number; + openTrackingDelivered: number; + startTime: string; +} + +export interface MetricsEngagementResponse { + engagement: MetricsEngagement | null; + error: string | null; +} diff --git a/src/types/metrics/index.d.ts b/src/types/metrics/index.d.ts new file mode 100644 index 0000000..b4a5656 --- /dev/null +++ b/src/types/metrics/index.d.ts @@ -0,0 +1,38 @@ +export * from "./engagement"; +export * from "./performance"; +export * from "./recipient-behaviour"; +export * from "./volume"; +export * from "./usage"; + +export interface MetricsBucket { + /** + * The number of events or occurrences aggregated within this time period. + */ + count: number; + /** + * The starting date and time of the time period this bucket represents. + */ + periodStart: string; +} + +export interface MetricsOptions { + /** + * The beginning of the time range for retrieving message metrics (inclusive). Formats: `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SSZ`. Defaults to one month ago if not provided. + * @example "2025-05-26" + */ + startTime?: string; + /** + * The end of the time range for retrieving message metrics (exclusive). Formats: `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SSZ`. Defaults to the current time if not provided. + * @example "2025-05-31T15:16:17Z" + */ + endTime?: string; + /** + * The ID of the campaign to filter metrics by. If not provided, metrics for all campaigns will be returned. + */ + campaignId?: string; + /** + * The interval for aggregating metrics data. + * @default "day" + */ + interval?: "hour" | "day" | "week" | "month"; +} diff --git a/src/types/metrics/internal.d.ts b/src/types/metrics/internal.d.ts new file mode 100644 index 0000000..5bc10b0 --- /dev/null +++ b/src/types/metrics/internal.d.ts @@ -0,0 +1,62 @@ +interface MetricsApiBucket { + count: number; + period_start: string; +} + +export interface MetricsEngagementApiResponse { + buckets: { + click: MetricsApiBucket[]; + click_tracking_delivered: MetricsApiBucket[]; + open: MetricsApiBucket[]; + open_tracking_delivered: MetricsApiBucket[]; + }; + click: number; + click_tracking_delivered: number; + end_time: string; + open: number; + open_tracking_delivered: number; + start_time: string; +} + +export interface MetricsPerformanceApiResponse { + bounced: number; + buckets: { + bounced: MetricsApiBucket[]; + delivered: MetricsApiBucket[]; + processed: MetricsApiBucket[]; + }; + delivered: number; + end_time: string; + processed: number; + start_time: string; +} + +export interface MetricsRecipientBehaviourApiResponse { + buckets: { + unsubscribe_delivered: MetricsApiBucket[]; + unsubscribed: MetricsApiBucket[]; + }; + end_time: string; + start_time: string; + unsubscribe_delivered: number; + unsubscribed: number; +} + +export interface MetricsVolumeApiResponse { + buckets: { + delivered: MetricsApiBucket[]; + dropped: MetricsApiBucket[]; + processed: MetricsApiBucket[]; + }; + delivered: number; + dropped: number; + end_time: string; + processed: number; + start_time: string; +} + +export interface MetricsUsageApiResponse { + period_end_date: string; + period_start_date: string; + total_usage: number; +} diff --git a/src/types/metrics/performance.d.ts b/src/types/metrics/performance.d.ts new file mode 100644 index 0000000..7412eac --- /dev/null +++ b/src/types/metrics/performance.d.ts @@ -0,0 +1,34 @@ +import type { MetricsBucket } from "."; + +export interface MetricsPerformance { + /** + * Count of messages bounced during the specified time range. + */ + bounced: number; + buckets: { + bounced: MetricsBucket[]; + delivered: MetricsBucket[]; + processed: MetricsBucket[]; + }; + /** + * Count of messages delivered during the specified time range. + */ + delivered: number; + /** + * The end of the time range for retrieving message performance metrics (exclusive). + */ + endTime: string; + /** + * Count of messages processed during the specified time range. + */ + processed: number; + /** + * The beginning of the time range for retrieving message performance metrics (inclusive). + */ + startTime: string; +} + +export interface MetricsPerformanceResponse { + performance: MetricsPerformance | null; + error: string | null; +} diff --git a/src/types/metrics/recipient-behaviour.d.ts b/src/types/metrics/recipient-behaviour.d.ts new file mode 100644 index 0000000..5606edc --- /dev/null +++ b/src/types/metrics/recipient-behaviour.d.ts @@ -0,0 +1,29 @@ +import type { MetricsBucket } from "."; + +export interface MetricsRecipientBehaviour { + buckets: { + unsubscribeDelivered: MetricsBucket[]; + unsubscribed: MetricsBucket[]; + }; + /** + * The end of the time range for retrieving recipient behaviour metrics (exclusive). + */ + endTime: string; + /** + * The beginning of the time range for retrieving recipient behaviour metrics (inclusive). + */ + startTime: string; + /** + * Count of recipients of delivered messages that include at least one of the unsubscribe link or unsubscribe headers. Since the unsubscribe feature requires exactly one recipient per message, this count also represents the total number of delivered messages. + */ + unsubscribeDelivered: number; + /** + * Count of unsubscribed events by recipients. + */ + unsubscribed: number; +} + +export interface MetricsRecipientBehaviourResponse { + behaviour: MetricsRecipientBehaviour | null; + error: string | null; +} diff --git a/src/types/metrics/usage.d.ts b/src/types/metrics/usage.d.ts new file mode 100644 index 0000000..baabc81 --- /dev/null +++ b/src/types/metrics/usage.d.ts @@ -0,0 +1,19 @@ +export interface MetricsUsageResponse { + usage: { + /** + * The end date of the current billing period (ISO 8601 format). + * @example "2025-04-11" + */ + endDate: string; + /** + * The start date of the current billing period (ISO 8601 format). + * @example "2025-03-12" + */ + startDate: string; + /** + * The total usage for the current billing period. + */ + total: number; + } | null; + error: string | null; +} diff --git a/src/types/metrics/volume.d.ts b/src/types/metrics/volume.d.ts new file mode 100644 index 0000000..af3e5d6 --- /dev/null +++ b/src/types/metrics/volume.d.ts @@ -0,0 +1,34 @@ +import type { MetricsBucket } from "."; + +export interface MetricsVolume { + buckets: { + delivered: MetricsBucket[]; + dropped: MetricsBucket[]; + processed: MetricsBucket[]; + }; + /** + * Count of messages delivered during the specified time range. + */ + delivered: number; + /** + * Count of messages dropped during the specified time range. + */ + dropped: number; + /** + * The end of the time range for retrieving message volume metrics (exclusive). + */ + endTime: string; + /** + * Count of messages processed during the specified time range. + */ + processed: number; + /** + * The beginning of the time range for retrieving message volume metrics (inclusive). + */ + startTime: string; +} + +export interface MetricsVolumeResponse { + volume: MetricsVolume | null; + error: string | null; +} diff --git a/src/types/sub-accounts/create.d.ts b/src/types/sub-accounts/create.d.ts index 14c529c..7a060c8 100644 --- a/src/types/sub-accounts/create.d.ts +++ b/src/types/sub-accounts/create.d.ts @@ -1,4 +1,8 @@ export interface SubAccountsAccount { + /** + * The name of the company associated with the sub-account. + */ + companyName: string; /** * If the sub-account is enabled. */ diff --git a/src/types/sub-accounts/index.d.ts b/src/types/sub-accounts/index.d.ts index 0ef2d7a..e4aabba 100644 --- a/src/types/sub-accounts/index.d.ts +++ b/src/types/sub-accounts/index.d.ts @@ -2,3 +2,5 @@ export type * from "./create"; export type * from "./list"; export type * from "./api-key"; export type * from "./smtp-password"; +export type * from "./limit"; +export type * from "./usage"; diff --git a/src/types/sub-accounts/internal.d.ts b/src/types/sub-accounts/internal.d.ts index fe1c4dd..73e3180 100644 --- a/src/types/sub-accounts/internal.d.ts +++ b/src/types/sub-accounts/internal.d.ts @@ -3,3 +3,17 @@ export interface SubAccountsCreateSmtpPasswordApiResponse { id: number; smtp_password: string; } + +export interface SubAccountsCreateApiResponse { + company_name: string; + enabled: boolean; + handle: string; +} + +export type SubAccountsListApiResponse = SubAccountsCreateApiResponse[]; + +export interface SubAccountsUsageApiResponse { + period_end_date: string; + period_start_date: string; + total_usage: number; +} diff --git a/src/types/sub-accounts/limit.d.ts b/src/types/sub-accounts/limit.d.ts new file mode 100644 index 0000000..30e30e6 --- /dev/null +++ b/src/types/sub-accounts/limit.d.ts @@ -0,0 +1,8 @@ +export interface SubAccountsLimit { + sends: number; +} + +export interface SubAccountsLimitResponse { + limit: SubAccountsLimit | null; + error: string | null; +} diff --git a/src/types/sub-accounts/usage.d.ts b/src/types/sub-accounts/usage.d.ts new file mode 100644 index 0000000..d6abe11 --- /dev/null +++ b/src/types/sub-accounts/usage.d.ts @@ -0,0 +1,21 @@ +export interface SubAccountsUsage { + /** + * The end date of the current billing period (ISO 8601 format). + * @example "2025-04-11" + */ + endDate?: string; + /** + * The start date of the current billing period (ISO 8601 format). + * @example "2025-03-12" + */ + startDate?: string; + /** + * The total usage for the current billing period. + */ + total: number; +} + +export interface SubAccountsUsageResponse { + usage: SubAccountsUsage | null; + error: string | null; +} diff --git a/src/types/suppressions/create.d.ts b/src/types/suppressions/create.d.ts new file mode 100644 index 0000000..60ebc3f --- /dev/null +++ b/src/types/suppressions/create.d.ts @@ -0,0 +1,27 @@ +export type SuppressionsTypes = "transactional" | "non-transactional"; + +export interface SuppressionsCreateOptions { + /** + * If true, the parent account creates suppression entries for all associated sub-accounts. This field is only applicable to parent accounts. Sub-accounts cannot create entries for other sub-accounts. + * @default false + */ + addToSubAccounts?: boolean; + /** + * The total number of suppression entries to create, for the parent and/or its sub-accounts, must not exceed `1000`. + */ + entries: { + /** + * Must be less than `1024` characters. + */ + notes?: string; + /** + * The email address to suppress. Must be a valid email address format and less than `255` characters. + */ + recipient: string; + /** + * An array of types of suppression to apply to the recipient. + * @default ["non-transactional"] + */ + types?: SuppressionsTypes[]; + }[]; +} diff --git a/src/types/suppressions/index.d.ts b/src/types/suppressions/index.d.ts new file mode 100644 index 0000000..d1c12f2 --- /dev/null +++ b/src/types/suppressions/index.d.ts @@ -0,0 +1,2 @@ +export * from "./create"; +export * from "./list"; diff --git a/src/types/suppressions/internal.d.ts b/src/types/suppressions/internal.d.ts new file mode 100644 index 0000000..e3d63d8 --- /dev/null +++ b/src/types/suppressions/internal.d.ts @@ -0,0 +1,30 @@ +import type { SuppressionsSource, SuppressionsTypes } from "."; + +export interface SuppressionsCreatePayload { + add_to_sub_accounts?: boolean; + suppression_entries: { + notes?: string; + recipient: string; + suppression_types?: SuppressionsTypes[]; + }[]; +} + +export interface SuppressionsListPayload { + recipient?: string; + source?: SuppressionsSource; + created_before?: string; + created_after?: string; + limit?: number; + offset?: number; +} + +export interface SuppressionsListApiResponse { + suppression_list: { + created_at: string; + notes?: string; + recipient: string; + sender?: string; + source: SuppressionsSource; + suppression_types: SuppressionsTypes[]; + }[]; +} diff --git a/src/types/suppressions/list.d.ts b/src/types/suppressions/list.d.ts new file mode 100644 index 0000000..5aa9fe0 --- /dev/null +++ b/src/types/suppressions/list.d.ts @@ -0,0 +1,49 @@ +import type { SuppressionsTypes } from "./create"; + +export type SuppressionsSource = "api" | "unsubscribe_link" | "list_unsubscribe" | "hard_bounce" | "spam_complaint" | "all"; + +export interface SuppressionsListOptions { + /** + * The email address of the suppression entry to search for. If provided, the search will return the suppression entry associated with this recipient. If not provided, the search will return all suppression entries for the account. + */ + recipient?: string; + /** + * The source of the suppression entries to filter by. If not provided, suppression entries from all sources will be returned. + */ + source?: Exclude; + /** + * The date and/or time before which the suppression entries were created. Format: `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SSZ` + */ + createdBefore?: string; + /** + * The date and/or time after which the suppression entries were created. Format: `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SSZ` + */ + createdAfter?: string; + /** + * The maximum number of suppression entries to return. Must be between `1` and `1000`. + * @default 1000 + */ + limit?: number; + /** + * The number of suppression entries to skip before returning results. + * @default 0 + */ + offset?: number; +} + +export interface SuppressionsListEntry { + createdAt: string; + notes?: string; + /** + * The email address that is suppressed. + */ + recipient: string; + sender?: string; + source: SuppressionsSource; + types: SuppressionsTypes[]; +} + +export interface SuppressionsListResponse { + list: SuppressionsListEntry[]; + error: string | null; +} diff --git a/src/types/webhooks/index.d.ts b/src/types/webhooks/index.d.ts index d25ce2c..1b0807d 100644 --- a/src/types/webhooks/index.d.ts +++ b/src/types/webhooks/index.d.ts @@ -1,2 +1,3 @@ export * from "./list"; export * from "./signing-key"; +export * from "./validate"; diff --git a/src/types/webhooks/internal.d.ts b/src/types/webhooks/internal.d.ts new file mode 100644 index 0000000..b5d6276 --- /dev/null +++ b/src/types/webhooks/internal.d.ts @@ -0,0 +1,11 @@ +export interface WebhooksValidateApiResponse { + all_passed: boolean; + results: { + result: "passed" | "failed"; + webhook: string; + response: { + body?: string; + status: number; + } | null; + }[]; +} diff --git a/src/types/webhooks/validate.d.ts b/src/types/webhooks/validate.d.ts new file mode 100644 index 0000000..a93f61e --- /dev/null +++ b/src/types/webhooks/validate.d.ts @@ -0,0 +1,33 @@ +export interface WebhooksValidateResponse { + /** + * Indicates whether all webhook validations passed + */ + allPassed: boolean; + /** + * Detailed results for each tested webhook, including whether it returned a 2xx status code, along with its response status code and body. + */ + results: { + /** + * Indicates whether the webhook responded with a 2xx HTTP status code + */ + result: "passed" | "failed"; + /** + * The webhook that was validated + */ + webhook: string; + /** + * The HTTP response returned by the webhook, including status code and response body. A null value indicates no response was received. Possible reasons include timeouts, connection failures, or other network-related issues. + */ + response: { + /** + * Response body from webhook. Returns an error if unprocessable or too large. + */ + body?: string; + /** + * HTTP status code returned by the webhook + */ + status: number; + } | null; + }[]; + error: string | null; +} diff --git a/src/utils/errors.ts b/src/utils/errors.ts index ac54b54..7069be7 100644 --- a/src/utils/errors.ts +++ b/src/utils/errors.ts @@ -1,6 +1,6 @@ import type { FetchResponse } from "ofetch"; -export enum ErrorCode { +export const enum ErrorCode { BadRequest = 400, Unauthorized = 401, Forbidden = 403, @@ -11,8 +11,21 @@ export enum ErrorCode { } export const getStatusError = ( - response: FetchResponse<{ message?: string }>, + response: FetchResponse<{ message?: string, errors?: string[] } | string>, errors: Record = {} ) => { - return errors[response.status] || response._data?.message || "Unknown error."; + const statusText = errors[response.status] || "Unknown error."; + + let details = ""; + if (typeof response._data === "string") { + details = response._data; + } + else if (response._data?.message) { + details = response._data.message; + } + else if (Array.isArray(response._data?.errors) && response._data.errors.length) { + details = response._data.errors.join(", "); + } + + return details ? `${statusText} ${details}` : statusText; }; diff --git a/test/domains.test.ts b/test/domains.test.ts index 68e0c36..d943e74 100644 --- a/test/domains.test.ts +++ b/test/domains.test.ts @@ -3,7 +3,7 @@ import type { MailChannelsClient } from "../src/client"; import { Domains } from "../src/modules/domains"; import type { DomainsData, DomainsProvisionOptions } from "../src/types/domains/provision"; import { ErrorCode } from "../src/utils/errors"; -import type { ListEntryOptions } from "../src/types/list-entry"; +import type { ListEntryOptions } from "../src/types/lists/entry"; import type { DomainsAddListEntryApiResponse } from "../src/types/domains/internal"; const fake = { diff --git a/test/lists.test.ts b/test/lists.test.ts index 8380bc5..d4775fb 100644 --- a/test/lists.test.ts +++ b/test/lists.test.ts @@ -2,7 +2,7 @@ import { describe, expect, it, vi } from "vitest"; import type { MailChannelsClient } from "../src/client"; import { Lists } from "../src/modules/lists"; import { ErrorCode } from "../src/utils/errors"; -import type { ListEntryApiResponse } from "../src/types/internal"; +import type { ListEntryApiResponse } from "../src/types/lists/internal"; import type { ListEntryOptions } from "../src/types"; const fake = { diff --git a/test/metrics.test.ts b/test/metrics.test.ts new file mode 100644 index 0000000..6bbfdd9 --- /dev/null +++ b/test/metrics.test.ts @@ -0,0 +1,304 @@ +import { describe, expect, it, vi } from "vitest"; +import type { MailChannelsClient } from "../src/client"; +import { Metrics } from "../src/modules/metrics"; +import { ErrorCode } from "../src/utils/errors"; +import type { MetricsEngagementResponse, MetricsOptions, MetricsPerformance, MetricsPerformanceResponse } from "../src/types/metrics"; +import type { MetricsEngagementApiResponse, MetricsPerformanceApiResponse, MetricsRecipientBehaviourApiResponse, MetricsUsageApiResponse, MetricsVolumeApiResponse } from "../src/types/metrics/internal"; +import type { MetricsRecipientBehaviourResponse } from "../src/types/metrics/recipient-behaviour"; +import type { MetricsVolumeResponse } from "../src/types/metrics/volume"; +import type { MetricsUsageResponse } from "../src/types/metrics/usage"; + +const fake = { + options: { + startTime: "2024-07-01T00:00:00Z", + endTime: "2024-07-31T23:59:59Z", + campaignId: "campaign123", + interval: "day" + } satisfies MetricsOptions, + engagement: { + apiResponse: { + buckets: { + click: [{ count: 0, period_start: "2024-07-29T15:51:28.071Z" }], + click_tracking_delivered: [{ count: 0, period_start: "2024-07-29T15:51:28.071Z" }], + open: [{ count: 0, period_start: "2024-07-29T15:51:28.071Z" }], + open_tracking_delivered: [{ count: 0, period_start: "2024-07-29T15:51:28.071Z" }] + }, + click: 0, + click_tracking_delivered: 0, + end_time: "2024-07-29T15:51:28.071Z", + open: 0, + open_tracking_delivered: 0, + start_time: "2024-07-29T15:51:28.071Z" + } satisfies MetricsEngagementApiResponse, + expectedResponse: { + engagement: { + buckets: { + click: [{ count: 0, periodStart: "2024-07-29T15:51:28.071Z" }], + clickTrackingDelivered: [{ count: 0, periodStart: "2024-07-29T15:51:28.071Z" }], + open: [{ count: 0, periodStart: "2024-07-29T15:51:28.071Z" }], + openTrackingDelivered: [{ count: 0, periodStart: "2024-07-29T15:51:28.071Z" }] + }, + click: 0, + clickTrackingDelivered: 0, + endTime: "2024-07-29T15:51:28.071Z", + open: 0, + openTrackingDelivered: 0, + startTime: "2024-07-29T15:51:28.071Z" + }, + error: null + } satisfies MetricsEngagementResponse + }, + performance: { + apiResponse: { + bounced: 0, + buckets: { + bounced: [{ count: 0, period_start: "2024-07-29T15:51:28.071Z" }], + delivered: [{ count: 0, period_start: "2024-07-29T15:51:28.071Z" }], + processed: [{ count: 0, period_start: "2024-07-29T15:51:28.071Z" }] + }, + delivered: 0, + end_time: "2024-07-29T15:51:28.071Z", + processed: 0, + start_time: "2024-07-29T15:51:28.071Z" + } satisfies MetricsPerformanceApiResponse, + expectedResponse: { + performance: { + bounced: 0, + buckets: { + bounced: [{ count: 0, periodStart: "2024-07-29T15:51:28.071Z" }], + delivered: [{ count: 0, periodStart: "2024-07-29T15:51:28.071Z" }], + processed: [{ count: 0, periodStart: "2024-07-29T15:51:28.071Z" }] + }, + delivered: 0, + endTime: "2024-07-29T15:51:28.071Z", + processed: 0, + startTime: "2024-07-29T15:51:28.071Z" + }, + error: null + } satisfies MetricsPerformanceResponse + }, + recipientBehaviour: { + apiResponse: { + buckets: { + unsubscribe_delivered: [{ count: 0, period_start: "2024-07-29T15:51:28.071Z" }], + unsubscribed: [{ count: 0, period_start: "2024-07-29T15:51:28.071Z" }] + }, + end_time: "2024-07-29T15:51:28.071Z", + start_time: "2024-07-29T15:51:28.071Z", + unsubscribe_delivered: 0, + unsubscribed: 0 + } satisfies MetricsRecipientBehaviourApiResponse, + expectedResponse: { + behaviour: { + buckets: { + unsubscribeDelivered: [{ count: 0, periodStart: "2024-07-29T15:51:28.071Z" }], + unsubscribed: [{ count: 0, periodStart: "2024-07-29T15:51:28.071Z" }] + }, + endTime: "2024-07-29T15:51:28.071Z", + startTime: "2024-07-29T15:51:28.071Z", + unsubscribeDelivered: 0, + unsubscribed: 0 + }, + error: null + } satisfies MetricsRecipientBehaviourResponse + }, + volume: { + apiResponse: { + buckets: { + delivered: [{ count: 0, period_start: "2024-07-29T15:51:28.071Z" }], + dropped: [{ count: 0, period_start: "2024-07-29T15:51:28.071Z" }], + processed: [{ count: 0, period_start: "2024-07-29T15:51:28.071Z" }] + }, + delivered: 0, + dropped: 0, + end_time: "2024-07-29T15:51:28.071Z", + processed: 0, + start_time: "2024-07-29T15:51:28.071Z" + } satisfies MetricsVolumeApiResponse, + expectedResponse: { + volume: { + buckets: { + delivered: [{ count: 0, periodStart: "2024-07-29T15:51:28.071Z" }], + dropped: [{ count: 0, periodStart: "2024-07-29T15:51:28.071Z" }], + processed: [{ count: 0, periodStart: "2024-07-29T15:51:28.071Z" }] + }, + delivered: 0, + dropped: 0, + endTime: "2024-07-29T15:51:28.071Z", + processed: 0, + startTime: "2024-07-29T15:51:28.071Z" + }, + error: null + } satisfies MetricsVolumeResponse + }, + usage: { + apiResponse: { + period_end_date: "2025-04-11", + period_start_date: "2025-03-12", + total_usage: 5000 + } satisfies MetricsUsageApiResponse, + expectedResponse: { + usage: { + endDate: "2025-04-11", + startDate: "2025-03-12", + total: 5000 + }, + error: null + } satisfies MetricsUsageResponse + } +}; + +describe("engagement", () => { + it("should successfully retrieve engagement metrics", async () => { + const mockClient = { + get: vi.fn().mockResolvedValueOnce(fake.engagement.apiResponse) + } as unknown as MailChannelsClient; + + const metrics = new Metrics(mockClient); + const { engagement, error } = await metrics.engagement(fake.options); + + expect(engagement).toEqual(fake.engagement.expectedResponse.engagement); + expect(error).toBeNull(); + expect(mockClient.get).toHaveBeenCalled(); + }); + + it("should contain error on api response error", async () => { + const mockClient = { + get: vi.fn().mockImplementationOnce(async (url, { onResponseError }) => new Promise((_, reject) => { + onResponseError({ response: { status: ErrorCode.BadRequest } }); + reject(); + })) + } as unknown as MailChannelsClient; + + const metrics = new Metrics(mockClient); + const { engagement, error } = await metrics.engagement(); + + expect(error).toBeTruthy(); + expect(engagement).toBeNull(); + expect(mockClient.get).toHaveBeenCalled(); + }); +}); + +describe("performance", () => { + it("should successfully retrieve performance metrics", async () => { + const mockClient = { + get: vi.fn().mockResolvedValueOnce(fake.performance.apiResponse) + } as unknown as MailChannelsClient; + + const metrics = new Metrics(mockClient); + const { performance, error } = await metrics.performance(fake.options); + + expect(performance).toEqual(fake.performance.expectedResponse.performance); + expect(error).toBeNull(); + expect(mockClient.get).toHaveBeenCalled(); + }); + + it("should contain error on api response error", async () => { + const mockClient = { + get: vi.fn().mockImplementationOnce(async (url, { onResponseError }) => new Promise((_, reject) => { + onResponseError({ response: { status: ErrorCode.BadRequest } }); + reject(); + })) + } as unknown as MailChannelsClient; + + const metrics = new Metrics(mockClient); + const { performance, error } = await metrics.performance(); + + expect(error).toBeTruthy(); + expect(performance).toBeNull(); + expect(mockClient.get).toHaveBeenCalled(); + }); +}); + +describe("recipientBehaviour", () => { + it("should successfully retrieve recipient behaviour metrics", async () => { + const mockClient = { + get: vi.fn().mockResolvedValueOnce(fake.recipientBehaviour.apiResponse) + } as unknown as MailChannelsClient; + + const metrics = new Metrics(mockClient); + const { behaviour, error } = await metrics.recipientBehaviour(fake.options); + + expect(behaviour).toEqual(fake.recipientBehaviour.expectedResponse.behaviour); + expect(error).toBeNull(); + expect(mockClient.get).toHaveBeenCalled(); + }); + + it("should contain error on api response error", async () => { + const mockClient = { + get: vi.fn().mockImplementationOnce(async (url, { onResponseError }) => new Promise((_, reject) => { + onResponseError({ response: { status: ErrorCode.BadRequest } }); + reject(); + })) + } as unknown as MailChannelsClient; + + const metrics = new Metrics(mockClient); + const { behaviour, error } = await metrics.recipientBehaviour(); + + expect(error).toBeTruthy(); + expect(behaviour).toBeNull(); + expect(mockClient.get).toHaveBeenCalled(); + }); +}); + +describe("volume", () => { + it("should successfully retrieve volume metrics", async () => { + const mockClient = { + get: vi.fn().mockResolvedValueOnce(fake.volume.apiResponse) + } as unknown as MailChannelsClient; + + const metrics = new Metrics(mockClient); + const { volume, error } = await metrics.volume(fake.options); + + expect(volume).toEqual(fake.volume.expectedResponse.volume); + expect(error).toBeNull(); + expect(mockClient.get).toHaveBeenCalled(); + }); + + it("should contain error on api response error", async () => { + const mockClient = { + get: vi.fn().mockImplementationOnce(async (url, { onResponseError }) => new Promise((_, reject) => { + onResponseError({ response: { status: ErrorCode.BadRequest } }); + reject(); + })) + } as unknown as MailChannelsClient; + + const metrics = new Metrics(mockClient); + const { volume, error } = await metrics.volume(); + + expect(error).toBeTruthy(); + expect(volume).toBeNull(); + expect(mockClient.get).toHaveBeenCalled(); + }); +}); + +describe("usage", () => { + it("should successfully retrieve usage metrics", async () => { + const mockClient = { + get: vi.fn().mockResolvedValueOnce(fake.usage.apiResponse) + } as unknown as MailChannelsClient; + + const metrics = new Metrics(mockClient); + const { usage, error } = await metrics.usage(); + + expect(usage).toEqual(fake.usage.expectedResponse.usage); + expect(error).toBeNull(); + expect(mockClient.get).toHaveBeenCalled(); + }); + + it("should contain error on api response error", async () => { + const mockClient = { + get: vi.fn().mockImplementationOnce(async (url, { onResponseError }) => new Promise((_, reject) => { + onResponseError({ response: { status: ErrorCode.BadRequest } }); + reject(); + })) + } as unknown as MailChannelsClient; + + const metrics = new Metrics(mockClient); + const { usage, error } = await metrics.usage(); + + expect(error).toBeTruthy(); + expect(usage).toBeNull(); + expect(mockClient.get).toHaveBeenCalled(); + }); +}); diff --git a/test/sub-accounts.test.ts b/test/sub-accounts.test.ts index 850b462..f29f877 100644 --- a/test/sub-accounts.test.ts +++ b/test/sub-accounts.test.ts @@ -1,32 +1,39 @@ import { describe, expect, it, vi } from "vitest"; import type { MailChannelsClient } from "../src/client"; import { SubAccounts } from "../src/modules/sub-accounts"; -import type { SubAccountsAccount } from "../src/types/sub-accounts/create"; -import type { SubAccountsListOptions } from "../src/types/sub-accounts/list"; +import type { SubAccountsListOptions, SubAccountsListResponse } from "../src/types/sub-accounts/list"; import type { SubAccountsApiKey } from "../src/types/sub-accounts/api-key"; import type { SubAccountsSmtpPassword } from "../src/types/sub-accounts/smtp-password"; -import type { SubAccountsCreateSmtpPasswordApiResponse } from "../src/types/sub-accounts/internal"; +import type { SubAccountsCreateApiResponse, SubAccountsCreateSmtpPasswordApiResponse, SubAccountsListApiResponse, SubAccountsUsageApiResponse } from "../src/types/sub-accounts/internal"; +import type { SubAccountsCreateResponse } from "../src/types"; +import type { SubAccountsUsageResponse } from "../src/types/sub-accounts/usage"; import { ErrorCode } from "../src/utils/errors"; const fake = { create: { + validCompanyName: "My Company", + invalidCompanyName: "a", validHandle: "validhandle123", invalidHandle: "Invalid_Handle!", - apiResponse: { enabled: true, handle: "validhandle123" } + apiResponse: { company_name: "My Company", enabled: true, handle: "validhandle123" } satisfies SubAccountsCreateApiResponse, + expectedResponse: { + account: { companyName: "My Company", enabled: true, handle: "validhandle123" }, + error: null + } satisfies SubAccountsCreateResponse }, list: { options: { limit: 10, offset: 0 } as SubAccountsListOptions, apiResponse: [ - { enabled: true, handle: "sub-account-1" }, - { enabled: false, handle: "sub-account-2" } - ] as SubAccountsAccount[], + { company_name: "My Company", enabled: true, handle: "sub-account-1" }, + { company_name: "Another Company", enabled: false, handle: "sub-account-2" } + ] satisfies SubAccountsListApiResponse, expectedResponse: { accounts: [ - { enabled: true, handle: "sub-account-1" }, - { enabled: false, handle: "sub-account-2" } - ] as SubAccountsAccount[], + { companyName: "My Company", enabled: true, handle: "sub-account-1" }, + { companyName: "Another Company", enabled: false, handle: "sub-account-2" } + ], error: null - } + } satisfies SubAccountsListResponse }, createApiKey: { apiResponse: { id: 1, key: "api-key-value" }, @@ -44,7 +51,7 @@ const fake = { keys: [ { id: 1, value: "api-key-1" }, { id: 2, value: "api-key-2" } - ] as SubAccountsApiKey[], + ] satisfies SubAccountsApiKey[], error: null } }, @@ -53,13 +60,13 @@ const fake = { enabled: true, id: 1, smtp_password: "smtp-password-value" - } as SubAccountsCreateSmtpPasswordApiResponse, + } satisfies SubAccountsCreateSmtpPasswordApiResponse, expectedResponse: { password: { enabled: true, id: 1, value: "smtp-password-value" - } as SubAccountsSmtpPassword, + } satisfies SubAccountsSmtpPassword, error: null } }, @@ -72,34 +79,69 @@ const fake = { passwords: [ { enabled: true, id: 1, value: "password-1" }, { enabled: false, id: 2, value: "password-2" } - ] as SubAccountsSmtpPassword[], + ] satisfies SubAccountsSmtpPassword[], + error: null + } + }, + getLimit: { + apiResponse: { sends: 1 }, + expectedResponse: { + limit: { sends: 1 }, error: null } + }, + getUsage: { + apiResponse: { + period_end_date: "2025-04-11", + period_start_date: "2025-03-12", + total_usage: 1234 + } satisfies SubAccountsUsageApiResponse, + expectedResponse: { + usage: { + endDate: "2025-04-11", + startDate: "2025-03-12", + total: 1234 + }, + error: null + } satisfies SubAccountsUsageResponse } }; describe("create", () => { - it("should successfully create a sub-account with a valid handle", async () => { + it("should successfully create a sub-account with a valid company name and handle", async () => { const mockClient = { post: vi.fn().mockResolvedValue(fake.create.apiResponse) } as unknown as MailChannelsClient; const subAccounts = new SubAccounts(mockClient); - const { account } = await subAccounts.create(fake.create.validHandle); + const { account } = await subAccounts.create(fake.create.validCompanyName, fake.create.validHandle); - expect(account).toEqual(fake.create.apiResponse); + expect(account).toEqual(fake.create.expectedResponse.account); expect(mockClient.post).toHaveBeenCalled(); }); + it("should contain error for an invalid company name", async () => { + const mockClient = { + post: vi.fn() + } as unknown as MailChannelsClient; + + const subAccounts = new SubAccounts(mockClient); + const { account, error } = await subAccounts.create(fake.create.invalidCompanyName, fake.create.validHandle); + + expect(error).toBe("Invalid company name. Company name must be between 3 and 128 characters."); + expect(account).toBeNull(); + expect(mockClient.post).not.toHaveBeenCalled(); + }); + it("should contain error for an invalid handle", async () => { const mockClient = { post: vi.fn() } as unknown as MailChannelsClient; const subAccounts = new SubAccounts(mockClient); - const { account, error } = await subAccounts.create(fake.create.invalidHandle); + const { account, error } = await subAccounts.create(fake.create.validCompanyName, fake.create.invalidHandle); - expect(error).toBe("Invalid handle. Sub-account handle must match the pattern [a-z0-9]{3,128}"); + expect(error).toBe("Invalid handle. Sub-account handle must be between 3 and 128 characters and contain only lowercase letters and numbers."); expect(account).toBeNull(); expect(mockClient.post).not.toHaveBeenCalled(); }); @@ -110,9 +152,9 @@ describe("create", () => { } as unknown as MailChannelsClient; const subAccounts = new SubAccounts(mockClient); - const { account } = await subAccounts.create(); + const { account } = await subAccounts.create(fake.create.validCompanyName); - expect(account).toEqual(fake.create.apiResponse); + expect(account).toEqual(fake.create.expectedResponse.account); expect(mockClient.post).toHaveBeenCalled(); }); @@ -593,3 +635,180 @@ describe("deleteSmtpPassword", () => { expect(mockClient.delete).toHaveBeenCalled(); }); }); + +describe("getLimit", () => { + it("should successfully retrieve the limit of a sub-account with a valid handle", async () => { + const mockClient = { + get: vi.fn().mockResolvedValue(fake.getLimit.apiResponse) + } as unknown as MailChannelsClient; + + const subAccounts = new SubAccounts(mockClient); + const { limit, error } = await subAccounts.getLimit(fake.create.validHandle); + + expect(limit).toEqual(fake.getLimit.expectedResponse.limit); + expect(error).toBeNull(); + expect(mockClient.get).toHaveBeenCalled(); + }); + + it("should contain error when handle is not provided", async () => { + const mockClient = { + get: vi.fn() + } as unknown as MailChannelsClient; + + const subAccounts = new SubAccounts(mockClient); + const { limit, error } = await subAccounts.getLimit(""); + + expect(error).toBe("No handle provided."); + expect(limit).toBeNull(); + expect(mockClient.get).not.toHaveBeenCalled(); + }); + + it("should contain error on api response error", async () => { + const mockClient = { + get: vi.fn().mockImplementationOnce(async (url, { onResponseError }) => new Promise((_, reject) => { + onResponseError({ response: { status: ErrorCode.NotFound } }); + reject(); + })) + } as unknown as MailChannelsClient; + + const subAccounts = new SubAccounts(mockClient); + const { limit, error } = await subAccounts.getLimit(fake.create.validHandle); + expect(error).toBeTruthy(); + expect(limit).toBeNull(); + expect(mockClient.get).toHaveBeenCalled(); + }); +}); + +describe("setLimit", () => { + it("should successfully set the limit of a sub-account with a valid handle", async () => { + const mockClient = { + put: vi.fn().mockImplementationOnce(async (url, { onResponse }) => { + onResponse({ response: { ok: true } }); + }) + } as unknown as MailChannelsClient; + + const subAccounts = new SubAccounts(mockClient); + const { success, error } = await subAccounts.setLimit(fake.create.validHandle, { sends: 1 }); + + expect(success).toBe(true); + expect(error).toBeNull(); + expect(mockClient.put).toHaveBeenCalled(); + }); + + it("should contain error when handle is not provided", async () => { + const mockClient = { + put: vi.fn() + } as unknown as MailChannelsClient; + + const subAccounts = new SubAccounts(mockClient); + const { success, error } = await subAccounts.setLimit("", { sends: 1 }); + + expect(error).toBe("No handle provided."); + expect(success).toBe(false); + expect(mockClient.put).not.toHaveBeenCalled(); + }); + + it("should contain error on api response error", async () => { + const mockClient = { + put: vi.fn().mockImplementationOnce(async (url, { onResponse }) => { + onResponse({ response: { status: ErrorCode.BadRequest } }); + }) + } as unknown as MailChannelsClient; + + const subAccounts = new SubAccounts(mockClient); + const { success, error } = await subAccounts.setLimit(fake.create.validHandle, { sends: 1 }); + + expect(error).toBeTruthy(); + expect(success).toBe(false); + expect(mockClient.put).toHaveBeenCalled(); + }); +}); + +describe("deleteLimit", () => { + it("should successfully delete the limit of a sub-account with a valid handle", async () => { + const mockClient = { + delete: vi.fn().mockImplementationOnce(async (url, { onResponse }) => { + onResponse({ response: { ok: true } }); + }) + } as unknown as MailChannelsClient; + + const subAccounts = new SubAccounts(mockClient); + const { success, error } = await subAccounts.deleteLimit(fake.create.validHandle); + + expect(success).toBe(true); + expect(error).toBeNull(); + expect(mockClient.delete).toHaveBeenCalled(); + }); + + it("should contain error when handle is not provided", async () => { + const mockClient = { + delete: vi.fn() + } as unknown as MailChannelsClient; + + const subAccounts = new SubAccounts(mockClient); + const { success, error } = await subAccounts.deleteLimit(""); + + expect(error).toBe("No handle provided."); + expect(success).toBe(false); + expect(mockClient.delete).not.toHaveBeenCalled(); + }); + + it("should contain error on api response error", async () => { + const mockClient = { + delete: vi.fn().mockImplementationOnce(async (url, { onResponse }) => { + onResponse({ response: { status: ErrorCode.BadRequest } }); + }) + } as unknown as MailChannelsClient; + + const subAccounts = new SubAccounts(mockClient); + const { success, error } = await subAccounts.deleteLimit(fake.create.validHandle); + + expect(error).toBeTruthy(); + expect(success).toBe(false); + expect(mockClient.delete).toHaveBeenCalled(); + }); +}); + +describe("getUsage", () => { + it("should successfully retrieve the usage of a sub-account with a valid handle", async () => { + const mockClient = { + get: vi.fn().mockResolvedValue(fake.getUsage.apiResponse) + } as unknown as MailChannelsClient; + + const subAccounts = new SubAccounts(mockClient); + const { usage, error } = await subAccounts.getUsage(fake.create.validHandle); + + expect(usage).toEqual(fake.getUsage.expectedResponse.usage); + expect(error).toBeNull(); + expect(mockClient.get).toHaveBeenCalled(); + }); + + it("should contain error when handle is not provided", async () => { + const mockClient = { + get: vi.fn() + } as unknown as MailChannelsClient; + + const subAccounts = new SubAccounts(mockClient); + const { usage, error } = await subAccounts.getUsage(""); + + expect(error).toBe("No handle provided."); + expect(usage).toBeNull(); + expect(mockClient.get).not.toHaveBeenCalled(); + }); + + it("should contain error on api response error", async () => { + const mockClient = { + get: vi.fn().mockImplementationOnce(async (url, { onResponseError }) => new Promise((_, reject) => { + onResponseError({ response: { status: ErrorCode.NotFound } }); + reject(); + })) + } as unknown as MailChannelsClient; + + const subAccounts = new SubAccounts(mockClient); + const { usage, error } = await subAccounts.getUsage(fake.create.validHandle); + + expect(error).toBeTruthy(); + expect(usage).toBeNull(); + expect(mockClient.get).toHaveBeenCalled(); + }); +}); diff --git a/test/suppressions.test.ts b/test/suppressions.test.ts new file mode 100644 index 0000000..82a5e98 --- /dev/null +++ b/test/suppressions.test.ts @@ -0,0 +1,192 @@ +import { describe, expect, it, vi } from "vitest"; +import type { MailChannelsClient } from "../src/client"; +import { ErrorCode } from "../src/utils/errors"; +import { Suppressions } from "../src/modules/suppressions"; +import type { SuppressionsCreateOptions, SuppressionsListOptions } from "../src/types/suppressions"; +import type { SuppressionsListApiResponse } from "../src/types/suppressions/internal"; + +const fake = { + create: { + options: { + entries: [ + { + recipient: "test@example.com", + types: ["transactional"], + notes: "Test suppression" + } + ] + } satisfies SuppressionsCreateOptions + }, + delete: { + recipient: "test@example.com", + source: "api" as const + }, + list: { + options: { + recipient: "test@example.com" + } satisfies SuppressionsListOptions, + apiResponse: { + suppression_list: [ + { + created_at: "2024-07-29T15:51:28.071Z", + notes: "string", + recipient: "string", + sender: "string", + source: "api", + suppression_types: [ + "transactional" + ] + } + ] + } satisfies SuppressionsListApiResponse, + expectedResponse: { + list: [ + { + createdAt: "2024-07-29T15:51:28.071Z", + notes: "string", + recipient: "string", + sender: "string", + source: "api", + types: [ + "transactional" + ] + } + ], + error: null + } + } +}; + +describe("create", () => { + it("should successfully create suppression entries", async () => { + const mockClient = { + post: vi.fn().mockImplementationOnce(async (url, { onResponse }) => { + onResponse({ response: { ok: true } }); + }) + } as unknown as MailChannelsClient; + + const suppressions = new Suppressions(mockClient); + const { success, error } = await suppressions.create(fake.create.options); + + expect(success).toBe(true); + expect(error).toBeNull(); + expect(mockClient.post).toHaveBeenCalled(); + }); + + it("should contain error on api response error", async () => { + const mockClient = { + post: vi.fn().mockImplementationOnce(async (url, { onResponse }) => { + onResponse({ response: { ok: false, status: ErrorCode.BadRequest } }); + }) + } as unknown as MailChannelsClient; + + const suppressions = new Suppressions(mockClient); + const { success, error } = await suppressions.create(fake.create.options); + + expect(success).toBe(false); + expect(error).toBeTruthy(); + expect(mockClient.post).toHaveBeenCalled(); + }); +}); + +describe("delete", () => { + it("should successfully delete suppression entry", async () => { + const mockClient = { + delete: vi.fn().mockImplementationOnce(async (url, { onResponse }) => { + onResponse({ response: { ok: true } }); + }) + } as unknown as MailChannelsClient; + + const suppressions = new Suppressions(mockClient); + const { success, error } = await suppressions.delete(fake.delete.recipient, fake.delete.source); + + expect(success).toBe(true); + expect(error).toBeNull(); + expect(mockClient.delete).toHaveBeenCalled(); + }); + + it("should handle API error response on delete", async () => { + const mockClient = { + delete: vi.fn().mockImplementationOnce(async (url, { onResponse }) => { + onResponse({ response: { ok: false, status: 400 } }); + }) + } as unknown as MailChannelsClient; + + const suppressions = new Suppressions(mockClient); + const { success, error } = await suppressions.delete(fake.delete.recipient, fake.delete.source); + + expect(success).toBe(false); + expect(error).toBeTruthy(); + expect(mockClient.delete).toHaveBeenCalled(); + }); +}); + +describe("list", () => { + it("should successfully list suppression entries", async () => { + const mockClient = { + get: vi.fn().mockResolvedValueOnce(fake.list.apiResponse) + } as unknown as MailChannelsClient; + + const suppressions = new Suppressions(mockClient); + const { list, error } = await suppressions.list(fake.list.options); + + expect(list).toEqual(fake.list.expectedResponse.list); + expect(error).toBeNull(); + expect(mockClient.get).toHaveBeenCalled(); + }); + + it("should contain error for invalid limit (0)", async () => { + const mockClient = { + get: vi.fn() + } as unknown as MailChannelsClient; + + const suppressions = new Suppressions(mockClient); + const { list, error } = await suppressions.list({ ...fake.list.options, limit: 0 }); + + expect(error).toBe("The limit must be between 1 and 1000."); + expect(list).toEqual([]); + expect(mockClient.get).not.toHaveBeenCalled(); + }); + + it("should contain error for invalid limit (1001)", async () => { + const mockClient = { + get: vi.fn() + } as unknown as MailChannelsClient; + + const suppressions = new Suppressions(mockClient); + const { list, error } = await suppressions.list({ ...fake.list.options, limit: 1001 }); + + expect(error).toBe("The limit must be between 1 and 1000."); + expect(list).toEqual([]); + expect(mockClient.get).not.toHaveBeenCalled(); + }); + + it("should contain error for invalid offset", async () => { + const mockClient = { + get: vi.fn() + } as unknown as MailChannelsClient; + + const suppressions = new Suppressions(mockClient); + const { list, error } = await suppressions.list({ ...fake.list.options, offset: -1 }); + + expect(error).toBe("Offset must be greater than or equal to 0."); + expect(list).toEqual([]); + expect(mockClient.get).not.toHaveBeenCalled(); + }); + + it("should contain error on api response error", async () => { + const mockClient = { + get: vi.fn().mockImplementationOnce(async (url, { onResponseError }) => new Promise((_, reject) => { + onResponseError({ response: { status: ErrorCode.BadRequest } }); + reject(); + })) + } as unknown as MailChannelsClient; + + const suppressions = new Suppressions(mockClient); + const { list, error } = await suppressions.list(); + + expect(error).toBeTruthy(); + expect(list).toEqual([]); + expect(mockClient.get).toHaveBeenCalled(); + }); +}); diff --git a/test/users.test.ts b/test/users.test.ts index 5ff23d0..63cb4de 100644 --- a/test/users.test.ts +++ b/test/users.test.ts @@ -2,9 +2,9 @@ import { describe, expect, it, vi } from "vitest"; import type { MailChannelsClient } from "../src/client"; import { Users } from "../src/modules/users"; import { ErrorCode } from "../src/utils/errors"; -import type { ListEntryApiResponse } from "../src/types/internal"; +import type { ListEntryApiResponse } from "../src/types/lists/internal"; import type { UsersCreateApiResponse } from "../src/types/users/internal"; -import type { ListEntryOptions } from "../src/types/list-entry"; +import type { ListEntryOptions } from "../src/types/lists/entry"; const fake = { create: { diff --git a/test/utils.test.ts b/test/utils.test.ts index 11033e2..79154c8 100644 --- a/test/utils.test.ts +++ b/test/utils.test.ts @@ -1,5 +1,7 @@ import { describe, expect, it } from "vitest"; +import type { FetchResponse } from "ofetch"; import { parseArrayRecipients, parseRecipient } from "../src/utils/recipients"; +import { getStatusError } from "../src/utils/errors"; const fake = { pair: "Example ", @@ -30,3 +32,42 @@ describe("parseArrayRecipients", () => { expect(recipient).toEqual([fake.object, fake.object]); }); }); + +describe("getStatusError", () => { + type ErrorResponse = FetchResponse<{ message?: string, errors?: string[] } | string>; + it("should return default error message", () => { + const response = { status: 500 }; + const error = getStatusError(response as ErrorResponse); + + expect(error).toEqual("Unknown error."); + }); + + it("should return custom error message", () => { + const response = { status: 404 }; + const error = getStatusError(response as ErrorResponse, { + 404: "Custom not found error." + }); + + expect(error).toEqual("Custom not found error."); + }); + + it("should return error message from response string", () => { + const response = { _data: "Server is down" }; + const error = getStatusError(response as ErrorResponse); + + expect(error).toEqual("Unknown error. Server is down"); + }); + + it("should return error message from response object", () => { + const response = { _data: { message: "Invalid request" } }; + const error = getStatusError(response as ErrorResponse); + + expect(error).toEqual("Unknown error. Invalid request"); + }); + + it("should return error message from response array", () => { + const response = { _data: { errors: ["Invalid email", "Name is required"] } }; + const error = getStatusError(response as ErrorResponse); + expect(error).toEqual("Unknown error. Invalid email, Name is required"); + }); +}); diff --git a/test/webhooks.test.ts b/test/webhooks.test.ts index 4cad540..326ce8f 100644 --- a/test/webhooks.test.ts +++ b/test/webhooks.test.ts @@ -2,6 +2,8 @@ import { describe, expect, it, vi } from "vitest"; import type { MailChannelsClient } from "../src/client"; import { Webhooks } from "../src/modules/webhooks"; import { ErrorCode } from "../src/utils/errors"; +import type { WebhooksValidateApiResponse } from "../src/types/webhooks/internal"; +import type { WebhooksValidateResponse } from "../src/types"; const fake = { enroll: { @@ -20,6 +22,29 @@ const fake = { signingKey: { id: "key-id", apiResponse: { error: null, key: "public-key" } + }, + validateResponse: { + apiResponse: { + all_passed: true, + results: [{ + result: "passed", + webhook: "https://example.com/webhook", + response: { + status: 200 + } + }] + } satisfies WebhooksValidateApiResponse, + expectedResponse: { + allPassed: true, + results: [{ + result: "passed", + webhook: "https://example.com/webhook", + response: { + status: 200 + } + }], + error: null + } satisfies WebhooksValidateResponse } }; @@ -49,6 +74,19 @@ describe("enroll", () => { expect(mockClient.post).not.toHaveBeenCalled(); }); + it("should contain error if the endpoint exceeds maximum length", async () => { + const mockClient = { post: vi.fn() } as unknown as MailChannelsClient; + + const webhooks = new Webhooks(mockClient); + const longEndpoint = "https://example.com/" + "a".repeat(7990); + + const { success, error } = await webhooks.enroll(longEndpoint); + + expect(error).toBe("The endpoint exceeds the maximum length of 8000 characters."); + expect(success).toBe(false); + expect(mockClient.post).not.toHaveBeenCalled(); + }); + it("should contain error on api response error", async () => { const mockClient = { post: vi.fn().mockImplementationOnce(async (url, { onResponse }) => { @@ -154,3 +192,48 @@ describe("getSigningKey", () => { expect(mockClient.get).toHaveBeenCalled(); }); }); + +describe("validate", () => { + it("should successfully validate webhook endpoints", async () => { + const mockClient = { + post: vi.fn().mockResolvedValue(fake.validateResponse.apiResponse) + } as unknown as MailChannelsClient; + + const webhooks = new Webhooks(mockClient); + const result = await webhooks.validate(); + + expect(result).toEqual(fake.validateResponse.expectedResponse); + expect(mockClient.post).toHaveBeenCalled(); + }); + + it("should contain error on api response error", async () => { + const mockClient = { + post: vi.fn().mockImplementationOnce(async (url, { onResponseError }) => new Promise((_, reject) => { + onResponseError({ response: { ok: false } }); + reject(); + })) + } as unknown as MailChannelsClient; + + const webhooks = new Webhooks(mockClient); + const { allPassed, results, error } = await webhooks.validate(); + + expect(error).toBeTruthy(); + expect(allPassed).toBe(false); + expect(results).toEqual([]); + expect(mockClient.post).toHaveBeenCalled(); + }); + + it("should contain error when requestId has more than 28 characters", async () => { + const mockClient = { + post: vi.fn() + } as unknown as MailChannelsClient; + + const webhooks = new Webhooks(mockClient); + const { allPassed, results, error } = await webhooks.validate("this-request-id-is-way-too-long"); + + expect(error).toBe("The request id should not exceed 28 characters."); + expect(allPassed).toBe(false); + expect(results).toEqual([]); + expect(mockClient.post).not.toHaveBeenCalled(); + }); +}); diff --git a/tsconfig.json b/tsconfig.json index 37f88da..9f78def 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -19,9 +19,9 @@ "declaration": true }, "exclude": [ - "**/dist/**", - "**/docs/**", - "**/playground/**", - "**/examples/**" + "dist/**", + "docs/**", + "playground/**", + "examples/**" ] } From f6cfb6d5c34c1633ed5812283894f49510ff30f8 Mon Sep 17 00:00:00 2001 From: Yizack Rangel Date: Tue, 16 Sep 2025 14:29:25 +0200 Subject: [PATCH 13/13] chore(release): v0.4.0 --- CHANGELOG.md | 37 +++++++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 89f43b0..61aabf3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,43 @@ # Changelog +## v0.4.0 + +[compare changes](https://github.com/Yizack/mailchannels/compare/v0.3.7...v0.4.0) + +### 🚀 Enhancements + +- ⚠️ Update to mailchannels email api `0.11.0` ([#1](https://github.com/Yizack/mailchannels/pull/1)) + +### 🩹 Fixes + +- **domains:** Add missing returning type in `addListEntry` ([14a755a](https://github.com/Yizack/mailchannels/commit/14a755a)) + +### 📖 Documentation + +- Update new endpoints list and add links ([7880e36](https://github.com/Yizack/mailchannels/commit/7880e36)) + +### 🏡 Chore + +- **lint:** Add `function-call-spacing` stylistic rule ([ac9055e](https://github.com/Yizack/mailchannels/commit/ac9055e)) + +### ✅ Tests + +- Error prop must be truthy on error ([ffed7a9](https://github.com/Yizack/mailchannels/commit/ffed7a9)) + +### 🤖 CI + +- Update to `actions/checkout@v5` ([964752b](https://github.com/Yizack/mailchannels/commit/964752b)) +- Update `autofix-ci` ([45c386a](https://github.com/Yizack/mailchannels/commit/45c386a)) + +#### ⚠️ Breaking Changes + +- ⚠️ Update to mailchannels email api `0.11.0` ([#1](https://github.com/Yizack/mailchannels/pull/1)) + +### ❤️ Contributors + +- Yizack Rangel ([@Yizack](https://github.com/Yizack)) + ## v0.3.7 [compare changes](https://github.com/Yizack/mailchannels/compare/v0.3.6...v0.3.7) diff --git a/package.json b/package.json index 3c18ece..f76b6f0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mailchannels-sdk", - "version": "0.3.7", + "version": "0.4.0", "description": "Node.js SDK to integrate MailChannels API into your JavaScript or TypeScript server-side applications.", "type": "module", "license": "MIT",