From 224d7fc488326cd3dd122f6627476bc3d6718bd2 Mon Sep 17 00:00:00 2001 From: terwer Date: Mon, 8 Apr 2024 16:03:08 +0800 Subject: [PATCH] fix: #1109 support telegra.ph both login user and anonymous --- README.md | 2 +- README_zh_CN.md | 2 +- package.json | 22 +- pnpm-lock.yaml | 617 +++++++++--------- .../api/telegraph/telegraphApiAdaptor.ts | 167 +++-- src/adaptors/api/telegraph/telegraphConfig.ts | 20 +- src/adaptors/api/telegraph/useTelegraphApi.ts | 3 +- .../singleplatform/base/CommonBlogSetting.vue | 12 +- .../commonblog/TelegraphSetting.vue | 64 +- src/layouts/default/DefaultFooter.vue | 4 +- src/locales/en_US.ts | 13 + src/locales/zh_CN.ts | 10 +- src/utils/cookieUtils.ts | 22 +- src/utils/utils.ts | 6 +- 14 files changed, 553 insertions(+), 411 deletions(-) diff --git a/README.md b/README.md index d31654e8..58e99346 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ configuration. | Blog | Typecho | ✔ | Compatible | ✔ | Compatible | ✔ | Supported | Bundled Proxy | No | [Official Website](https://typecho.org/) | | Blog | Jvue | ✔ | Compatible | ✔ | Compatible | ✔ | Supported | Bundled Proxy | No | [Official Website](https://github.com/terwer/jvue) | | Blog | WordPress | ✔ | Compatible | ✔ | Compatible | ✔ | Supported | Bundled Proxy | No | [Official Website](https://wordpress.org/) | -| Blog | WordPress.com | ✔ | Compatible | ✔ | Compatible | ✔ | Supported | Bundled Proxy | No | [Official Website](https://wordpress.com) | +| Blog | WordPress.com | ✔ | Compatible | ✔ | Compatible | ✔ | Supported | Custom Proxy | Custom Proxy | [Official Website](https://wordpress.com) | | Social Media | Zhihu | ✔ | Fully Compatible | ✔ | Requires PC Auth | ✖ | Supported | Bundled Proxy | No | [Official Website](https://www.zhihu.com/) | | Social Media | CSDN | ✔ | Fully Compatible | ✔ | Requires PC Auth | ✖ | Supported | Bundled Proxy | No | [Official Website](https://www.csdn.net/) | | Social Media | WeChat Official Account | ✔ | Fully Compatible | ✔ | Requires PC Auth | ✖ | Supported | Bundled Proxy | No | [Official Website](https://mp.weixin.qq.com/) | diff --git a/README_zh_CN.md b/README_zh_CN.md index 847b1cd1..d6993f44 100644 --- a/README_zh_CN.md +++ b/README_zh_CN.md @@ -56,7 +56,7 @@ | 博客 | Typecho | ✔ | 完全兼容 | ✔ | 完全兼容 | ✔ | 支持 | 内置代理 | 不需要 | [官网](https://typecho.org/) | | 博客 | Jvue | ✔ | 完全兼容 | ✔ | 完全兼容 | ✔ | 支持 | 内置代理 | 不需要 | [官网](https://github.com/terwer/jvue) | | 博客 | WordPress | ✔ | 完全兼容 | ✔ | 完全兼容 | ✔ | 支持 | 内置代理 | 不需要 | [官网](https://wordpress.org/) | -| 博客 | WordPress.com | ✔ | 完全兼容 | ✔ | 完全兼容 | ✔ | 支持 | 内置代理 | 不需要 | [官网](https://wordpress.com) | +| 博客 | WordPress.com | ✔ | 完全兼容 | ✔ | 完全兼容 | ✔ | 支持 | 自建代理 | 自建代理 | [官网](https://wordpress.com) | | 社交媒体 | 知乎 | ✔ | 完全兼容 | ✔ | PC 验证 | ✖ | 支持 | 内置代理 | 不需要 | [官网](https://www.zhihu.com/) | | 社交媒体 | CSDN | ✔ | 完全兼容 | ✔ | PC 验证 | ✖ | 支持 | 内置代理 | 不需要 | [官网](https://www.csdn.net/) | | 社交媒体 | 微信公众号 | ✔ | 完全兼容 | ✔ | PC 验证 | ✖ | 支持 | 内置代理 | 不需要 | [官网](https://mp.weixin.qq.com/) | diff --git a/package.json b/package.json index 2e7b7815..3de05cb3 100644 --- a/package.json +++ b/package.json @@ -26,14 +26,14 @@ "syncWidgetRepo": "python scripts/sync_widget_repo.py" }, "devDependencies": { - "@halo-dev/api-client": "^2.13.0", + "@halo-dev/api-client": "^2.14.0", "@terwer/esbuild-config-custom": "2.0.0", "@terwer/eslint-config-custom": "^1.3.6", "@types/crypto-js": "^4.2.2", "@types/iframe-resizer": "^3.5.13", "@types/katex": "^0.16.7", "@types/minimist": "^1.2.5", - "@types/node": "^18.19.28", + "@types/node": "^18.19.30", "@vitejs/plugin-vue": "^5.0.4", "@vitest/coverage-v8": "^1.4.0", "@vue/test-utils": "^2.4.5", @@ -44,19 +44,19 @@ "minimist": "^1.2.8", "rollup-plugin-livereload": "^2.0.5", "stylus": "^0.63.0", - "typescript": "^5.4.3", + "typescript": "^5.4.4", "unplugin-auto-import": "^0.17.5", "unplugin-vue-components": "^0.26.0", - "vercel": "^33.6.2", - "vite": "^5.2.7", + "vercel": "^33.7.0", + "vite": "^5.2.8", "vite-plugin-html": "^3.2.2", "vite-plugin-node-polyfills": "^0.21.0", "vitest": "^1.4.0", - "vue-tsc": "^2.0.7" + "vue-tsc": "^2.0.11" }, "dependencies": { "@element-plus/icons-vue": "^2.3.1", - "@iconify/json": "^2.2.196", + "@iconify/json": "^2.2.198", "@vueuse/components": "^10.9.0", "@vueuse/core": "^10.9.0", "chatgpt": "^5.2.5", @@ -74,15 +74,15 @@ "pinia": "^2.1.7", "shorthash2": "^1.0.3", "simple-xmlrpc": "^1.4.2", - "siyuan": "^0.9.6", + "siyuan": "^0.9.7", "telegraph.md": "^0.0.1", "unplugin-icons": "^0.18.5", "uuid": "^9.0.1", "vue": "^3.4.21", - "vue-i18n": "^9.10.2", + "vue-i18n": "^9.11.0", "vue-router": "^4.3.0", "xmlbuilder2": "^3.1.1", - "zhi-blog-api": "^1.63.0", + "zhi-blog-api": "^1.65.0", "zhi-common": "^1.33.0", "zhi-device": "^2.11.0", "zhi-fetch-middleware": "^0.12.0", @@ -90,7 +90,7 @@ "zhi-gitlab-middleware": "^0.10.0", "zhi-lib-base": "^0.8.0", "zhi-notion-markdown": "^0.1.4", - "zhi-siyuan-api": "^2.20.7", + "zhi-siyuan-api": "^2.20.9", "zhi-siyuan-picgo": "1.9.0", "zhi-xmlrpc-middleware": "^0.6.21" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cf04dd13..b069d971 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ dependencies: specifier: ^2.3.1 version: 2.3.1(vue@3.4.21) '@iconify/json': - specifier: ^2.2.196 - version: 2.2.196 + specifier: ^2.2.198 + version: 2.2.198 '@vueuse/components': specifier: ^10.9.0 version: 10.9.0(vue@3.4.21) @@ -55,7 +55,7 @@ dependencies: version: 4.17.21 pinia: specifier: ^2.1.7 - version: 2.1.7(typescript@5.4.3)(vue@3.4.21) + version: 2.1.7(typescript@5.4.4)(vue@3.4.21) shorthash2: specifier: ^1.0.3 version: 1.0.3 @@ -63,8 +63,8 @@ dependencies: specifier: ^1.4.2 version: 1.4.2 siyuan: - specifier: ^0.9.6 - version: 0.9.6 + specifier: ^0.9.7 + version: 0.9.7 telegraph.md: specifier: ^0.0.1 version: 0.0.1 @@ -76,10 +76,10 @@ dependencies: version: 9.0.1 vue: specifier: ^3.4.21 - version: 3.4.21(typescript@5.4.3) + version: 3.4.21(typescript@5.4.4) vue-i18n: - specifier: ^9.10.2 - version: 9.10.2(vue@3.4.21) + specifier: ^9.11.0 + version: 9.11.0(vue@3.4.21) vue-router: specifier: ^4.3.0 version: 4.3.0(vue@3.4.21) @@ -87,23 +87,23 @@ dependencies: specifier: ^3.1.1 version: 3.1.1 zhi-blog-api: - specifier: ^1.63.0 - version: 1.63.0(typescript@5.4.3) + specifier: ^1.65.0 + version: 1.65.0(typescript@5.4.4) zhi-common: specifier: ^1.33.0 - version: 1.33.0(typescript@5.4.3) + version: 1.33.0(typescript@5.4.4) zhi-device: specifier: ^2.11.0 version: 2.11.0 zhi-fetch-middleware: specifier: ^0.12.0 - version: 0.12.0(typescript@5.4.3) + version: 0.12.0(typescript@5.4.4) zhi-github-middleware: specifier: ^0.5.0 - version: 0.5.0(typescript@5.4.3) + version: 0.5.0(typescript@5.4.4) zhi-gitlab-middleware: specifier: ^0.10.0 - version: 0.10.0(typescript@5.4.3) + version: 0.10.0(typescript@5.4.4) zhi-lib-base: specifier: ^0.8.0 version: 0.8.0 @@ -111,25 +111,25 @@ dependencies: specifier: ^0.1.4 version: 0.1.4 zhi-siyuan-api: - specifier: ^2.20.7 - version: 2.20.7(typescript@5.4.3) + specifier: ^2.20.9 + version: 2.20.9(typescript@5.4.4) zhi-siyuan-picgo: specifier: 1.9.0 - version: 1.9.0(typescript@5.4.3) + version: 1.9.0(typescript@5.4.4) zhi-xmlrpc-middleware: specifier: ^0.6.21 - version: 0.6.21(typescript@5.4.3) + version: 0.6.21(typescript@5.4.4) devDependencies: '@halo-dev/api-client': - specifier: ^2.13.0 - version: 2.13.0 + specifier: ^2.14.0 + version: 2.14.0 '@terwer/esbuild-config-custom': specifier: 2.0.0 version: 2.0.0(@types/minimist@1.2.5)(dotenv@16.4.5)(esbuild-plugin-copy@2.1.1)(esbuild-plugin-d.ts@1.2.3)(esbuild-plugin-ifdef@1.0.1)(esbuild-plugin-inline-image@0.0.9)(esbuild-plugin-vue3@0.3.2)(esbuild-style-plugin@1.6.3)(esbuild@0.17.19)(minimist@1.2.8)(rimraf@4.4.1)(stylus@0.63.0) '@terwer/eslint-config-custom': specifier: ^1.3.6 - version: 1.3.6(@nuxt/eslint-config@0.1.1)(@typescript-eslint/eslint-plugin@5.62.0)(astro-eslint-parser@0.13.3)(eslint-config-prettier@8.10.0)(eslint-config-turbo@1.13.0)(eslint-plugin-prettier@4.2.1)(eslint-plugin-svelte@2.35.1)(eslint-plugin-vue@9.24.0)(eslint@8.57.0)(prettier-plugin-svelte@2.10.1)(prettier@2.8.8)(typescript@5.4.3) + version: 1.3.6(@nuxt/eslint-config@0.1.1)(@typescript-eslint/eslint-plugin@5.62.0)(astro-eslint-parser@0.13.3)(eslint-config-prettier@8.10.0)(eslint-config-turbo@1.13.2)(eslint-plugin-prettier@4.2.1)(eslint-plugin-svelte@2.36.0)(eslint-plugin-vue@9.24.0)(eslint@8.57.0)(prettier-plugin-svelte@2.10.1)(prettier@2.8.8)(typescript@5.4.4) '@types/crypto-js': specifier: ^4.2.2 version: 4.2.2 @@ -143,11 +143,11 @@ devDependencies: specifier: ^1.2.5 version: 1.2.5 '@types/node': - specifier: ^18.19.28 - version: 18.19.28 + specifier: ^18.19.30 + version: 18.19.30 '@vitejs/plugin-vue': specifier: ^5.0.4 - version: 5.0.4(vite@5.2.7)(vue@3.4.21) + version: 5.0.4(vite@5.2.8)(vue@3.4.21) '@vitest/coverage-v8': specifier: ^1.4.0 version: 1.4.0(vitest@1.4.0) @@ -176,8 +176,8 @@ devDependencies: specifier: ^0.63.0 version: 0.63.0 typescript: - specifier: ^5.4.3 - version: 5.4.3 + specifier: ^5.4.4 + version: 5.4.4 unplugin-auto-import: specifier: ^0.17.5 version: 0.17.5(@vueuse/core@10.9.0) @@ -185,23 +185,23 @@ devDependencies: specifier: ^0.26.0 version: 0.26.0(vue@3.4.21) vercel: - specifier: ^33.6.2 - version: 33.6.2 + specifier: ^33.7.0 + version: 33.7.0 vite: - specifier: ^5.2.7 - version: 5.2.7(@types/node@18.19.28)(stylus@0.63.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.30)(stylus@0.63.0) vite-plugin-html: specifier: ^3.2.2 - version: 3.2.2(vite@5.2.7) + version: 3.2.2(vite@5.2.8) vite-plugin-node-polyfills: specifier: ^0.21.0 - version: 0.21.0(vite@5.2.7) + version: 0.21.0(vite@5.2.8) vitest: specifier: ^1.4.0 - version: 1.4.0(@types/node@18.19.28)(jsdom@24.0.0)(stylus@0.63.0) + version: 1.4.0(@types/node@18.19.30)(jsdom@24.0.0)(stylus@0.63.0) vue-tsc: - specifier: ^2.0.7 - version: 2.0.7(typescript@5.4.3) + specifier: ^2.0.11 + version: 2.0.11(typescript@5.4.4) packages: @@ -268,8 +268,8 @@ packages: picocolors: 1.0.0 dev: false - /@babel/parser@7.24.1: - resolution: {integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==} + /@babel/parser@7.24.4: + resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} engines: {node: '>=6.0.0'} hasBin: true dependencies: @@ -343,7 +343,7 @@ packages: peerDependencies: vue: ^3.2.0 dependencies: - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.4) dev: false /@esbuild/aix-ppc64@0.20.2: @@ -819,15 +819,15 @@ packages: resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} dev: false - /@halo-dev/api-client@2.13.0: - resolution: {integrity: sha512-BdUvu5IqoUdJ6JemHmp5bYNs8P/zth4oPm3qUy0aelWLh/hi3tHG2EVk0JZlgeamyxMD2SGGyh65ehntmPGVsQ==} + /@halo-dev/api-client@2.14.0: + resolution: {integrity: sha512-koAm1WR37Luy17/tkA0Ly+2QMzN2lrsXWGuMrF+bN48KKftwXp6dFsO2VNP3bqOXxvtOGGyPql8n5RzWP947HQ==} dev: true /@humanwhocodes/config-array@0.11.14: resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.2 + '@humanwhocodes/object-schema': 2.0.3 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -839,12 +839,12 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@2.0.2: - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} dev: true - /@iconify/json@2.2.196: - resolution: {integrity: sha512-hRZ0pq77N+mkAbZvFi/pfsKcspA8PyGSASc6zQoq6n/RSLxb8xAgORatVHyDl0ow7shcS+dvyiZI8xmr6yI2WA==} + /@iconify/json@2.2.198: + resolution: {integrity: sha512-z4cvKDXBK6priTJhRppWQSV2ljYhuonArN6ugTM8axDcJFHZ6x75a1YDxd1HVON+c86RspvcjZ1mhOXA3qheaQ==} dependencies: '@iconify/types': 2.0.0 pathe: 1.1.2 @@ -868,24 +868,24 @@ packages: - supports-color dev: false - /@intlify/core-base@9.10.2: - resolution: {integrity: sha512-HGStVnKobsJL0DoYIyRCGXBH63DMQqEZxDUGrkNI05FuTcruYUtOAxyL3zoAZu/uDGO6mcUvm3VXBaHG2GdZCg==} + /@intlify/core-base@9.11.0: + resolution: {integrity: sha512-cveOqAstjLZIiyatcP/HrzrQ87cZI8ScPQna3yvoM8zjcjcIRK1MRvmxUNlPdg0rTNJMZw7rixPVM58O5aHVPA==} engines: {node: '>= 16'} dependencies: - '@intlify/message-compiler': 9.10.2 - '@intlify/shared': 9.10.2 + '@intlify/message-compiler': 9.11.0 + '@intlify/shared': 9.11.0 dev: false - /@intlify/message-compiler@9.10.2: - resolution: {integrity: sha512-ntY/kfBwQRtX5Zh6wL8cSATujPzWW2ZQd1QwKyWwAy5fMqJyyixHMeovN4fmEyCqSu+hFfYOE63nU94evsy4YA==} + /@intlify/message-compiler@9.11.0: + resolution: {integrity: sha512-x31Gl7cscnoI4UUY1yaIy8e7vVMVW1VVlTXZz4SIHKqoSEUkfmgqK8NAx1e7RcoHEbICR7uyCbud0ZL1s4OGXQ==} engines: {node: '>= 16'} dependencies: - '@intlify/shared': 9.10.2 + '@intlify/shared': 9.11.0 source-map-js: 1.2.0 dev: false - /@intlify/shared@9.10.2: - resolution: {integrity: sha512-ttHCAJkRy7R5W2S9RVnN9KYQYPIpV2+GiS79T4EE37nrPyH6/1SrOh3bmdCRC1T3ocL8qCDx7x2lBJ0xaITU7Q==} + /@intlify/shared@9.11.0: + resolution: {integrity: sha512-KHSNgi7sRjmSm7aD8QH8WFt9VfKaekJuJ473opbJlkGY3EDnDUU8ikIhG8PbasQbgNvbY3m3tWNGqk2omIdwMA==} engines: {node: '>= 16'} dev: false @@ -1025,63 +1025,63 @@ packages: engines: {node: '>= 18'} dev: false - /@octokit/core@5.1.0: - resolution: {integrity: sha512-BDa2VAMLSh3otEiaMJ/3Y36GU4qf6GI+VivQ/P41NC6GHcdxpKlqV0ikSZ5gdQsmS3ojXeRx5vasgNTinF0Q4g==} + /@octokit/core@5.2.0: + resolution: {integrity: sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==} engines: {node: '>= 18'} dependencies: '@octokit/auth-token': 4.0.0 - '@octokit/graphql': 7.0.2 - '@octokit/request': 8.2.0 - '@octokit/request-error': 5.0.1 - '@octokit/types': 12.6.0 + '@octokit/graphql': 7.1.0 + '@octokit/request': 8.3.1 + '@octokit/request-error': 5.1.0 + '@octokit/types': 13.1.0 before-after-hook: 2.2.3 universal-user-agent: 6.0.1 dev: false - /@octokit/endpoint@9.0.4: - resolution: {integrity: sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==} + /@octokit/endpoint@9.0.5: + resolution: {integrity: sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==} engines: {node: '>= 18'} dependencies: - '@octokit/types': 12.6.0 + '@octokit/types': 13.1.0 universal-user-agent: 6.0.1 dev: false - /@octokit/graphql@7.0.2: - resolution: {integrity: sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==} + /@octokit/graphql@7.1.0: + resolution: {integrity: sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==} engines: {node: '>= 18'} dependencies: - '@octokit/request': 8.2.0 - '@octokit/types': 12.6.0 + '@octokit/request': 8.3.1 + '@octokit/types': 13.1.0 universal-user-agent: 6.0.1 dev: false - /@octokit/openapi-types@20.0.0: - resolution: {integrity: sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==} + /@octokit/openapi-types@21.2.0: + resolution: {integrity: sha512-xx+Xd6I7rYvul/hgUDqv6TeGX0IOGnhSg9IOeYgd/uI7IAqUy6DE2B6Ipv2M4mWoxaMcWjIzgTIcv8pMO3F3vw==} dev: false - /@octokit/request-error@5.0.1: - resolution: {integrity: sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==} + /@octokit/request-error@5.1.0: + resolution: {integrity: sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==} engines: {node: '>= 18'} dependencies: - '@octokit/types': 12.6.0 + '@octokit/types': 13.1.0 deprecation: 2.3.1 once: 1.4.0 dev: false - /@octokit/request@8.2.0: - resolution: {integrity: sha512-exPif6x5uwLqv1N1irkLG1zZNJkOtj8bZxuVHd71U5Ftuxf2wGNvAJyNBcPbPC+EBzwYEbBDdSFb8EPcjpYxPQ==} + /@octokit/request@8.3.1: + resolution: {integrity: sha512-fin4cl5eHN5Ybmb/gtn7YZ+ycyUlcyqqkg5lfxeSChqj7sUt6TNaJPehREi+0PABKLREYL8pfaUhH3TicEWNoA==} engines: {node: '>= 18'} dependencies: - '@octokit/endpoint': 9.0.4 - '@octokit/request-error': 5.0.1 - '@octokit/types': 12.6.0 + '@octokit/endpoint': 9.0.5 + '@octokit/request-error': 5.1.0 + '@octokit/types': 13.1.0 universal-user-agent: 6.0.1 dev: false - /@octokit/types@12.6.0: - resolution: {integrity: sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==} + /@octokit/types@13.1.0: + resolution: {integrity: sha512-nBwAFOYqVUUJ2AZFK4ZzESQptaAVqdTDKk8gE0Xr0o99WuPDSrhUC38x0F40xD9OUxXhOOuZKWNNVVLPSHQDvQ==} dependencies: - '@octokit/openapi-types': 20.0.0 + '@octokit/openapi-types': 21.2.0 dev: false /@one-ini/wasm@0.1.1: @@ -1147,7 +1147,7 @@ packages: dependencies: '@rollup/pluginutils': 5.1.0 estree-walker: 2.0.2 - magic-string: 0.30.8 + magic-string: 0.30.9 dev: true /@rollup/pluginutils@4.2.1: @@ -1172,120 +1172,120 @@ packages: picomatch: 2.3.1 dev: true - /@rollup/rollup-android-arm-eabi@4.13.2: - resolution: {integrity: sha512-3XFIDKWMFZrMnao1mJhnOT1h2g0169Os848NhhmGweEcfJ4rCi+3yMCOLG4zA61rbJdkcrM/DjVZm9Hg5p5w7g==} + /@rollup/rollup-android-arm-eabi@4.14.1: + resolution: {integrity: sha512-fH8/o8nSUek8ceQnT7K4EQbSiV7jgkHq81m9lWZFIXjJ7lJzpWXbQFpT/Zh6OZYnpFykvzC3fbEvEAFZu03dPA==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.13.2: - resolution: {integrity: sha512-GdxxXbAuM7Y/YQM9/TwwP+L0omeE/lJAR1J+olu36c3LqqZEBdsIWeQ91KBe6nxwOnb06Xh7JS2U5ooWU5/LgQ==} + /@rollup/rollup-android-arm64@4.14.1: + resolution: {integrity: sha512-Y/9OHLjzkunF+KGEoJr3heiD5X9OLa8sbT1lm0NYeKyaM3oMhhQFvPB0bNZYJwlq93j8Z6wSxh9+cyKQaxS7PQ==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.13.2: - resolution: {integrity: sha512-mCMlpzlBgOTdaFs83I4XRr8wNPveJiJX1RLfv4hggyIVhfB5mJfN4P8Z6yKh+oE4Luz+qq1P3kVdWrCKcMYrrA==} + /@rollup/rollup-darwin-arm64@4.14.1: + resolution: {integrity: sha512-+kecg3FY84WadgcuSVm6llrABOdQAEbNdnpi5X3UwWiFVhZIZvKgGrF7kmLguvxHNQy+UuRV66cLVl3S+Rkt+Q==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.13.2: - resolution: {integrity: sha512-yUoEvnH0FBef/NbB1u6d3HNGyruAKnN74LrPAfDQL3O32e3k3OSfLrPgSJmgb3PJrBZWfPyt6m4ZhAFa2nZp2A==} + /@rollup/rollup-darwin-x64@4.14.1: + resolution: {integrity: sha512-2pYRzEjVqq2TB/UNv47BV/8vQiXkFGVmPFwJb+1E0IFFZbIX8/jo1olxqqMbo6xCXf8kabANhp5bzCij2tFLUA==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.13.2: - resolution: {integrity: sha512-GYbLs5ErswU/Xs7aGXqzc3RrdEjKdmoCrgzhJWyFL0r5fL3qd1NPcDKDowDnmcoSiGJeU68/Vy+OMUluRxPiLQ==} + /@rollup/rollup-linux-arm-gnueabihf@4.14.1: + resolution: {integrity: sha512-mS6wQ6Do6/wmrF9aTFVpIJ3/IDXhg1EZcQFYHZLHqw6AzMBjTHWnCG35HxSqUNphh0EHqSM6wRTT8HsL1C0x5g==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.13.2: - resolution: {integrity: sha512-L1+D8/wqGnKQIlh4Zre9i4R4b4noxzH5DDciyahX4oOz62CphY7WDWqJoQ66zNR4oScLNOqQJfNSIAe/6TPUmQ==} + /@rollup/rollup-linux-arm64-gnu@4.14.1: + resolution: {integrity: sha512-p9rGKYkHdFMzhckOTFubfxgyIO1vw//7IIjBBRVzyZebWlzRLeNhqxuSaZ7kCEKVkm/kuC9fVRW9HkC/zNRG2w==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.13.2: - resolution: {integrity: sha512-tK5eoKFkXdz6vjfkSTCupUzCo40xueTOiOO6PeEIadlNBkadH1wNOH8ILCPIl8by/Gmb5AGAeQOFeLev7iZDOA==} + /@rollup/rollup-linux-arm64-musl@4.14.1: + resolution: {integrity: sha512-nDY6Yz5xS/Y4M2i9JLQd3Rofh5OR8Bn8qe3Mv/qCVpHFlwtZSBYSPaU4mrGazWkXrdQ98GB//H0BirGR/SKFSw==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.13.2: - resolution: {integrity: sha512-zvXvAUGGEYi6tYhcDmb9wlOckVbuD+7z3mzInCSTACJ4DQrdSLPNUeDIcAQW39M3q6PDquqLWu7pnO39uSMRzQ==} + /@rollup/rollup-linux-powerpc64le-gnu@4.14.1: + resolution: {integrity: sha512-im7HE4VBL+aDswvcmfx88Mp1soqL9OBsdDBU8NqDEYtkri0qV0THhQsvZtZeNNlLeCUQ16PZyv7cqutjDF35qw==} cpu: [ppc64le] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.13.2: - resolution: {integrity: sha512-C3GSKvMtdudHCN5HdmAMSRYR2kkhgdOfye4w0xzyii7lebVr4riCgmM6lRiSCnJn2w1Xz7ZZzHKuLrjx5620kw==} + /@rollup/rollup-linux-riscv64-gnu@4.14.1: + resolution: {integrity: sha512-RWdiHuAxWmzPJgaHJdpvUUlDz8sdQz4P2uv367T2JocdDa98iRw2UjIJ4QxSyt077mXZT2X6pKfT2iYtVEvOFw==} cpu: [riscv64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-s390x-gnu@4.13.2: - resolution: {integrity: sha512-l4U0KDFwzD36j7HdfJ5/TveEQ1fUTjFFQP5qIt9gBqBgu1G8/kCaq5Ok05kd5TG9F8Lltf3MoYsUMw3rNlJ0Yg==} + /@rollup/rollup-linux-s390x-gnu@4.14.1: + resolution: {integrity: sha512-VMgaGQ5zRX6ZqV/fas65/sUGc9cPmsntq2FiGmayW9KMNfWVG/j0BAqImvU4KTeOOgYSf1F+k6at1UfNONuNjA==} cpu: [s390x] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.13.2: - resolution: {integrity: sha512-xXMLUAMzrtsvh3cZ448vbXqlUa7ZL8z0MwHp63K2IIID2+DeP5iWIT6g1SN7hg1VxPzqx0xZdiDM9l4n9LRU1A==} + /@rollup/rollup-linux-x64-gnu@4.14.1: + resolution: {integrity: sha512-9Q7DGjZN+hTdJomaQ3Iub4m6VPu1r94bmK2z3UeWP3dGUecRC54tmVu9vKHTm1bOt3ASoYtEz6JSRLFzrysKlA==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.13.2: - resolution: {integrity: sha512-M/JYAWickafUijWPai4ehrjzVPKRCyDb1SLuO+ZyPfoXgeCEAlgPkNXewFZx0zcnoIe3ay4UjXIMdXQXOZXWqA==} + /@rollup/rollup-linux-x64-musl@4.14.1: + resolution: {integrity: sha512-JNEG/Ti55413SsreTguSx0LOVKX902OfXIKVg+TCXO6Gjans/k9O6ww9q3oLGjNDaTLxM+IHFMeXy/0RXL5R/g==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.13.2: - resolution: {integrity: sha512-2YWwoVg9KRkIKaXSh0mz3NmfurpmYoBBTAXA9qt7VXk0Xy12PoOP40EFuau+ajgALbbhi4uTj3tSG3tVseCjuA==} + /@rollup/rollup-win32-arm64-msvc@4.14.1: + resolution: {integrity: sha512-ryS22I9y0mumlLNwDFYZRDFLwWh3aKaC72CWjFcFvxK0U6v/mOkM5Up1bTbCRAhv3kEIwW2ajROegCIQViUCeA==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.13.2: - resolution: {integrity: sha512-2FSsE9aQ6OWD20E498NYKEQLneShWes0NGMPQwxWOdws35qQXH+FplabOSP5zEe1pVjurSDOGEVCE2agFwSEsw==} + /@rollup/rollup-win32-ia32-msvc@4.14.1: + resolution: {integrity: sha512-TdloItiGk+T0mTxKx7Hp279xy30LspMso+GzQvV2maYePMAWdmrzqSNZhUpPj3CGw12aGj57I026PgLCTu8CGg==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.13.2: - resolution: {integrity: sha512-7h7J2nokcdPePdKykd8wtc8QqqkqxIrUz7MHj6aNr8waBRU//NLDVnNjQnqQO6fqtjrtCdftpbTuOKAyrAQETQ==} + /@rollup/rollup-win32-x64-msvc@4.14.1: + resolution: {integrity: sha512-wQGI+LY/Py20zdUPq+XCem7JcPOyzIJBm3dli+56DJsQOHbnXZFEwgmnC6el1TPAfC8lBT3m+z69RmLykNUbew==} cpu: [x64] os: [win32] requiresBuild: true @@ -1329,7 +1329,7 @@ packages: dotenv: 16.4.5 esbuild: 0.17.19 esbuild-plugin-copy: 2.1.1(esbuild@0.17.19) - esbuild-plugin-d.ts: 1.2.3(typescript@5.4.3) + esbuild-plugin-d.ts: 1.2.3(typescript@5.4.4) esbuild-plugin-ifdef: 1.0.1 esbuild-plugin-inline-image: 0.0.9 esbuild-plugin-vue3: 0.3.2(cheerio@1.0.0-rc.12) @@ -1339,7 +1339,7 @@ packages: stylus: 0.63.0 dev: true - /@terwer/eslint-config-custom@1.3.6(@nuxt/eslint-config@0.1.1)(@typescript-eslint/eslint-plugin@5.62.0)(astro-eslint-parser@0.13.3)(eslint-config-prettier@8.10.0)(eslint-config-turbo@1.13.0)(eslint-plugin-prettier@4.2.1)(eslint-plugin-svelte@2.35.1)(eslint-plugin-vue@9.24.0)(eslint@8.57.0)(prettier-plugin-svelte@2.10.1)(prettier@2.8.8)(typescript@5.4.3): + /@terwer/eslint-config-custom@1.3.6(@nuxt/eslint-config@0.1.1)(@typescript-eslint/eslint-plugin@5.62.0)(astro-eslint-parser@0.13.3)(eslint-config-prettier@8.10.0)(eslint-config-turbo@1.13.2)(eslint-plugin-prettier@4.2.1)(eslint-plugin-svelte@2.36.0)(eslint-plugin-vue@9.24.0)(eslint@8.57.0)(prettier-plugin-svelte@2.10.1)(prettier@2.8.8)(typescript@5.4.4): resolution: {integrity: sha512-W0dFSTYfkzpp71LW8cDZUgLrNa004KDctojbiQrJrF4FIDmlwND/LyPUqfe1Eg8sulB5qkNX9qMgFWZ4SAVXBQ==} peerDependencies: '@nuxt/eslint-config': ^0.1.1 @@ -1356,17 +1356,17 @@ packages: typescript: ^5.0.4 dependencies: '@nuxt/eslint-config': 0.1.1(eslint@8.57.0) - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.4) astro-eslint-parser: 0.13.3 eslint: 8.57.0 eslint-config-prettier: 8.10.0(eslint@8.57.0) - eslint-config-turbo: 1.13.0(eslint@8.57.0) + eslint-config-turbo: 1.13.2(eslint@8.57.0) eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.0)(prettier@2.8.8) - eslint-plugin-svelte: 2.35.1(eslint@8.57.0)(svelte@4.2.12) + eslint-plugin-svelte: 2.36.0(eslint@8.57.0)(svelte@4.2.12) eslint-plugin-vue: 9.24.0(eslint@8.57.0) prettier: 2.8.8 prettier-plugin-svelte: 2.10.1(prettier@2.8.8)(svelte@4.2.12) - typescript: 5.4.3 + typescript: 5.4.4 dev: true /@tootallnate/once@2.0.0: @@ -1464,7 +1464,7 @@ packages: /@types/node-fetch@2.6.11: resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} dependencies: - '@types/node': 18.19.28 + '@types/node': 18.19.30 form-data: 4.0.0 dev: false @@ -1472,8 +1472,8 @@ packages: resolution: {integrity: sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==} dev: true - /@types/node@18.19.28: - resolution: {integrity: sha512-J5cOGD9n4x3YGgVuaND6khm5x07MMdAKkRyXnjVR6KFhLMNh2yONGiP7Z+4+tBOt5mK+GvDTiacTOVGGpqiecw==} + /@types/node@18.19.30: + resolution: {integrity: sha512-453z1zPuJLVDbyahaa1sSD5C2sht6ZpHp5rgJNs+H8YGqhluCXcuOUmBYsAo0Tos0cHySJ3lVUGbGgLlqIkpyg==} dependencies: undici-types: 5.26.5 @@ -1485,7 +1485,7 @@ packages: resolution: {integrity: sha512-jn7qwGFmJHwUSphV8zZneO3GmtlgLsmhs/LQyVvQbIIa+fzGMUiHI4HXJZL3FT8MJmgXWbLGiVVY7ElvHq6vDA==} deprecated: This is a stub types definition. sass provides its own type definitions, so you do not need this installed. dependencies: - sass: 1.72.0 + sass: 1.74.1 dev: true /@types/semver@7.5.8: @@ -1495,7 +1495,7 @@ packages: /@types/stylus@0.48.42: resolution: {integrity: sha512-CPGlr5teL4sqdap+EOowMifLuNGeIoLwc0VQ7u/BPxo+ocqiNa5jeVt0H0IVBblEh6ZwX1sGpIQIFnSSr8NBQA==} dependencies: - '@types/node': 18.19.28 + '@types/node': 18.19.30 dev: true /@types/unist@2.0.10: @@ -1537,7 +1537,7 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.3): + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.4): resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1549,18 +1549,18 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.4) '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.4.4) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.4) debug: 4.3.4 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare-lite: 1.4.0 semver: 7.6.0 - tsutils: 3.21.0(typescript@5.4.3) - typescript: 5.4.3 + tsutils: 3.21.0(typescript@5.4.4) + typescript: 5.4.4 transitivePeerDependencies: - supports-color dev: true @@ -1585,7 +1585,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.3): + /@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.4): resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1597,10 +1597,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.3) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.4) debug: 4.3.4 eslint: 8.57.0 - typescript: 5.4.3 + typescript: 5.4.4 transitivePeerDependencies: - supports-color dev: true @@ -1633,7 +1633,7 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@5.4.3): + /@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@5.4.4): resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1643,12 +1643,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.3) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.4) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.4) debug: 4.3.4 eslint: 8.57.0 - tsutils: 3.21.0(typescript@5.4.3) - typescript: 5.4.3 + tsutils: 3.21.0(typescript@5.4.4) + typescript: 5.4.4 transitivePeerDependencies: - supports-color dev: true @@ -1679,7 +1679,7 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.3): + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.4): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1694,8 +1694,8 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.0 - tsutils: 3.21.0(typescript@5.4.3) - typescript: 5.4.3 + tsutils: 3.21.0(typescript@5.4.4) + typescript: 5.4.4 transitivePeerDependencies: - supports-color dev: true @@ -1720,7 +1720,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.3): + /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.4): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1731,7 +1731,7 @@ packages: '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.3) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.4) eslint: 8.57.0 eslint-scope: 5.1.1 semver: 7.6.0 @@ -1752,8 +1752,8 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@vercel/build-utils@7.10.0: - resolution: {integrity: sha512-Lgt95xovRE/9ISevWiToDjt0l9NX8mlMUJKLQ6b7hjMB9ARkT3y+cgdx6TJJg4qmunIS8RKRxqTjzYXMPJLnmg==} + /@vercel/build-utils@7.11.0: + resolution: {integrity: sha512-UFrx1hNIjNJJkd0NZrYfaOrmcWhQmrVsbKe9o3L9jX9J1iufG685wIZ9tFCKKC0Fa2HWbNDNzNxrE5SCAS2lyA==} dev: true /@vercel/error-utils@2.0.2: @@ -1795,19 +1795,19 @@ packages: web-vitals: 0.2.4 dev: true - /@vercel/gatsby-plugin-vercel-builder@2.0.23: - resolution: {integrity: sha512-pnMPPH+KevwZ2+ectFCDAYVSneWBODSB+gNcWe/3DpT/m2sthaKdeszFne8fGJTmyt01Vic1ldQR9Z/3EbOfeg==} + /@vercel/gatsby-plugin-vercel-builder@2.0.24: + resolution: {integrity: sha512-b02ifu8WCmz4ARjkC9AyuOxpXa0Tmh0uIbDDYvyvDRpvohQY53eC3sXKVOejnmQbi9KojkaJsQRvMTBRh9BUHA==} dependencies: '@sinclair/typebox': 0.25.24 - '@vercel/build-utils': 7.10.0 + '@vercel/build-utils': 7.11.0 '@vercel/routing-utils': 3.1.0 esbuild: 0.14.47 etag: 1.8.1 fs-extra: 11.1.0 dev: true - /@vercel/go@3.0.5: - resolution: {integrity: sha512-+kEDI+hop3e8BuKisaEozxfzT6GBbp0OMBcgi0tlD5ZTmhGmpwi3vgK5mBQlB+RBXj7qlqDLW/uV2F1Y03FLcQ==} + /@vercel/go@3.1.1: + resolution: {integrity: sha512-mrzomNYltxkjvtUmaYry5YEyvwTz6c/QQHE5Gr/pPGRIniUiP6T6OFOJ49RBN7e6pRXaNzHPVuidiuBhvHh5+Q==} dev: true /@vercel/hydrogen@1.0.2: @@ -1848,14 +1848,14 @@ packages: - supports-color dev: true - /@vercel/node@3.0.25: - resolution: {integrity: sha512-P1Q79xSNyxQ1a6B+x6A3icpSkgtRzOp8VF90REARB1FwfCVYOFPiwU8s0tq92XsKQ0KXnw4eokkebEp3wERr8Q==} + /@vercel/node@3.0.26: + resolution: {integrity: sha512-PoyacnoylwpE3+7RFUVHJlbPqtneTCEJVXXx4n8g9ARgUDSRSCwFpJOhiFQon2sS2YtfCzsJa29Z9dAZQedDcQ==} dependencies: '@edge-runtime/node-utils': 2.3.0 '@edge-runtime/primitives': 4.1.0 '@edge-runtime/vm': 3.2.0 '@types/node': 14.18.33 - '@vercel/build-utils': 7.10.0 + '@vercel/build-utils': 7.11.0 '@vercel/error-utils': 2.0.2 '@vercel/nft': 0.26.4 '@vercel/static-config': 3.0.0 @@ -1917,11 +1917,11 @@ packages: resolution: {integrity: sha512-Gfm8HDech41vf+EPleRzgoJUnDTJerKgckMm4KX0JT860gV9XBMSOWYH7eMWHmMza104+HRCWL7wT6OlpftF2Q==} dev: true - /@vercel/static-build@2.4.5: - resolution: {integrity: sha512-+TvQypOEN4/eDLFEbCHZrQM/J5t0acl9r1Yu583mT16xybIqWPW0HJ4uRWN1x1bc8Vmp4A1LsQuBbqHn7CGLPQ==} + /@vercel/static-build@2.4.6: + resolution: {integrity: sha512-LCmEBXRse7Bt46fo4OUzkq6RL1Q26oMWvmbFsW5uKi6bkT8asU1U5/zw9PQTeFQjGRL2vkUi22fGXF6XHuuqsA==} dependencies: '@vercel/gatsby-plugin-vercel-analytics': 1.0.11 - '@vercel/gatsby-plugin-vercel-builder': 2.0.23 + '@vercel/gatsby-plugin-vercel-builder': 2.0.24 '@vercel/static-config': 3.0.0 ts-morph: 12.0.0 dev: true @@ -1934,15 +1934,15 @@ packages: ts-morph: 12.0.0 dev: true - /@vitejs/plugin-vue@5.0.4(vite@5.2.7)(vue@3.4.21): + /@vitejs/plugin-vue@5.0.4(vite@5.2.8)(vue@3.4.21): resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 vue: ^3.2.25 dependencies: - vite: 5.2.7(@types/node@18.19.28)(stylus@0.63.0) - vue: 3.4.21(typescript@5.4.3) + vite: 5.2.8(@types/node@18.19.30)(stylus@0.63.0) + vue: 3.4.21(typescript@5.4.4) dev: true /@vitest/coverage-v8@1.4.0(vitest@1.4.0): @@ -1957,14 +1957,14 @@ packages: istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.4 istanbul-reports: 3.1.7 - magic-string: 0.30.8 + magic-string: 0.30.9 magicast: 0.3.3 picocolors: 1.0.0 std-env: 3.7.0 strip-literal: 2.1.0 test-exclude: 6.0.0 v8-to-istanbul: 9.2.0 - vitest: 1.4.0(@types/node@18.19.28)(jsdom@24.0.0)(stylus@0.63.0) + vitest: 1.4.0(@types/node@18.19.30)(jsdom@24.0.0)(stylus@0.63.0) transitivePeerDependencies: - supports-color dev: true @@ -1988,7 +1988,7 @@ packages: /@vitest/snapshot@1.4.0: resolution: {integrity: sha512-saAFnt5pPIA5qDGxOHxJ/XxhMFKkUSBJmVt5VgDsAqPTX6JP326r5C/c9UuCMPoXNzuudTPsYDZCoJ5ilpqG2A==} dependencies: - magic-string: 0.30.8 + magic-string: 0.30.9 pathe: 1.1.2 pretty-format: 29.7.0 dev: true @@ -2008,29 +2008,29 @@ packages: pretty-format: 29.7.0 dev: true - /@volar/language-core@2.1.6: - resolution: {integrity: sha512-pAlMCGX/HatBSiDFMdMyqUshkbwWbLxpN/RL7HCQDOo2gYBE+uS+nanosLc1qR6pTQ/U8q00xt8bdrrAFPSC0A==} + /@volar/language-core@2.2.0-alpha.6: + resolution: {integrity: sha512-GmT28LX2w4x82uuQqNN/P94VOCsZRHBbGcGe+5bFtA2hbIbH6f8tFdMfgXFtyhbft/pj6f3xl37xe+t+nomLIA==} dependencies: - '@volar/source-map': 2.1.6 + '@volar/source-map': 2.2.0-alpha.6 dev: true - /@volar/source-map@2.1.6: - resolution: {integrity: sha512-TeyH8pHHonRCHYI91J7fWUoxi0zWV8whZTVRlsWHSYfjm58Blalkf9LrZ+pj6OiverPTmrHRkBsG17ScQyWECw==} + /@volar/source-map@2.2.0-alpha.6: + resolution: {integrity: sha512-EztD2zoUopETY+ZCUZAGUHKgj4gOkY/2WnaOS+RSTc56xm85miSA4qOBS8Lt1Ruu5vV52WIZKHW/R9PbjkZWFA==} dependencies: muggle-string: 0.4.1 dev: true - /@volar/typescript@2.1.6: - resolution: {integrity: sha512-JgPGhORHqXuyC3r6skPmPHIZj4LoMmGlYErFTuPNBq9Nhc9VTv7ctHY7A3jMN3ngKEfRrfnUcwXHztvdSQqNfw==} + /@volar/typescript@2.2.0-alpha.6: + resolution: {integrity: sha512-wTr0jO3wVXQ9FjBbWE2iX8GgDoiHp1Nttsb+tKk5IeUUb6f1uOjyeIXuS4KfeMBpCufthRO2st2O2uatAs/UXQ==} dependencies: - '@volar/language-core': 2.1.6 + '@volar/language-core': 2.2.0-alpha.6 path-browserify: 1.0.1 dev: true /@vue/compiler-core@3.4.21: resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} dependencies: - '@babel/parser': 7.24.1 + '@babel/parser': 7.24.4 '@vue/shared': 3.4.21 entities: 4.5.0 estree-walker: 2.0.2 @@ -2045,13 +2045,13 @@ packages: /@vue/compiler-sfc@3.4.21: resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} dependencies: - '@babel/parser': 7.24.1 + '@babel/parser': 7.24.4 '@vue/compiler-core': 3.4.21 '@vue/compiler-dom': 3.4.21 '@vue/compiler-ssr': 3.4.21 '@vue/shared': 3.4.21 estree-walker: 2.0.2 - magic-string: 0.30.8 + magic-string: 0.30.9 postcss: 8.4.38 source-map-js: 1.2.0 @@ -2065,21 +2065,21 @@ packages: resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==} dev: false - /@vue/language-core@2.0.7(typescript@5.4.3): - resolution: {integrity: sha512-Vh1yZX3XmYjn9yYLkjU8DN6L0ceBtEcapqiyclHne8guG84IaTzqtvizZB1Yfxm3h6m7EIvjerLO5fvOZO6IIQ==} + /@vue/language-core@2.0.11(typescript@5.4.4): + resolution: {integrity: sha512-5ivg8Vem/yckzXI3L3n0mdKBPRcHSlsGt6/dpbEx42PcH3MIHAjSAJBYvENXeWJxv2ClQc8BS2mH1Ho2U7jZig==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@volar/language-core': 2.1.6 + '@volar/language-core': 2.2.0-alpha.6 '@vue/compiler-dom': 3.4.21 '@vue/shared': 3.4.21 computeds: 0.0.1 minimatch: 9.0.4 path-browserify: 1.0.1 - typescript: 5.4.3 + typescript: 5.4.4 vue-template-compiler: 2.7.16 dev: true @@ -2108,7 +2108,7 @@ packages: dependencies: '@vue/compiler-ssr': 3.4.21 '@vue/shared': 3.4.21 - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.4) /@vue/shared@3.4.21: resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} @@ -2117,7 +2117,7 @@ packages: resolution: {integrity: sha512-oo2u7vktOyKUked36R93NB7mg2B+N7Plr8lxp2JBGwr18ch6EggFjixSCdIVVLkT6Qr0z359Xvnafc9dcKyDUg==} dependencies: js-beautify: 1.15.1 - vue-component-type-helpers: 2.0.7 + vue-component-type-helpers: 2.0.11 dev: true /@vueuse/components@10.9.0(vue@3.4.21): @@ -2478,8 +2478,8 @@ packages: /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - /atomically@2.0.2: - resolution: {integrity: sha512-Xfmb4q5QV7uqTlVdMSTtO5eF4DCHfNOdaPyKlbFShkzeNP+3lj3yjjcbdjSmEY4+pDBKJ9g26aP+ImTe88UHoQ==} + /atomically@2.0.3: + resolution: {integrity: sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==} dependencies: stubborn-fs: 1.2.5 when-exit: 2.1.2 @@ -2940,7 +2940,7 @@ packages: dependencies: ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) - atomically: 2.0.2 + atomically: 2.0.3 debounce-fn: 5.1.2 dot-prop: 7.2.0 env-paths: 3.0.0 @@ -3441,7 +3441,7 @@ packages: lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21) memoize-one: 6.0.0 normalize-wheel-es: 1.2.0 - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.4) transitivePeerDependencies: - '@vue/composition-api' dev: false @@ -3818,7 +3818,7 @@ packages: globby: 11.1.0 dev: true - /esbuild-plugin-d.ts@1.2.3(typescript@5.4.3): + /esbuild-plugin-d.ts@1.2.3(typescript@5.4.4): resolution: {integrity: sha512-JkNqcCTkv0N39izAOLaiAQcFA6DfbhDkef1ZO6NvnHtTT+7i+4VHjCcAM2yFslRTBTK1TuF41FLSwWvGm88N7w==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3826,7 +3826,7 @@ packages: dependencies: chalk: 4.1.2 lodash.merge: 4.6.2 - typescript: 5.4.3 + typescript: 5.4.4 dev: true /esbuild-plugin-ifdef@1.0.1: @@ -4085,13 +4085,14 @@ packages: engines: {node: '>=12'} dev: true - /eslint-compat-utils@0.1.2(eslint@8.57.0): - resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} + /eslint-compat-utils@0.5.0(eslint@8.57.0): + resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: eslint: 8.57.0 + semver: 7.6.0 dev: true /eslint-config-prettier@8.10.0(eslint@8.57.0): @@ -4103,13 +4104,13 @@ packages: eslint: 8.57.0 dev: true - /eslint-config-turbo@1.13.0(eslint@8.57.0): - resolution: {integrity: sha512-xV13WrEjAJLeo6yqR1YEv5R5WPwNMyw8f4FlK2C4zWMr7e8ZiRg81jajltabEOZdeVboHIQ6gGn+FnSmgdVSSQ==} + /eslint-config-turbo@1.13.2(eslint@8.57.0): + resolution: {integrity: sha512-TzvsMwNJx/P4JYw79iFqbyQApnyT050gW7dBxnNeNVl3pVMnT2rwaFo9Q3Hc49Tp5NANxEwYN9RStF50P/IwGA==} peerDependencies: eslint: '>6.6.0' dependencies: eslint: 8.57.0 - eslint-plugin-turbo: 1.13.0(eslint@8.57.0) + eslint-plugin-turbo: 1.13.2(eslint@8.57.0) dev: true /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.0)(prettier@2.8.8): @@ -4129,12 +4130,12 @@ packages: prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-svelte@2.35.1(eslint@8.57.0)(svelte@4.2.12): - resolution: {integrity: sha512-IF8TpLnROSGy98Z3NrsKXWDSCbNY2ReHDcrYTuXZMbfX7VmESISR78TWgO9zdg4Dht1X8coub5jKwHzP0ExRug==} + /eslint-plugin-svelte@2.36.0(eslint@8.57.0)(svelte@4.2.12): + resolution: {integrity: sha512-D30hSj13Y8YEn7yGXos7EYp0lpEb3Z2V/M+6a3MZ13KGVhaefdW2A9j8IBIcW4YR+j6fo901USzLeXQz/XbWeQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0-0 - svelte: ^3.37.0 || ^4.0.0 + eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.95 peerDependenciesMeta: svelte: optional: true @@ -4143,23 +4144,23 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 debug: 4.3.4 eslint: 8.57.0 - eslint-compat-utils: 0.1.2(eslint@8.57.0) + eslint-compat-utils: 0.5.0(eslint@8.57.0) esutils: 2.0.3 - known-css-properties: 0.29.0 + known-css-properties: 0.30.0 postcss: 8.4.38 postcss-load-config: 3.1.4(postcss@8.4.38) postcss-safe-parser: 6.0.0(postcss@8.4.38) postcss-selector-parser: 6.0.16 semver: 7.6.0 svelte: 4.2.12 - svelte-eslint-parser: 0.33.1(svelte@4.2.12) + svelte-eslint-parser: 0.34.0(svelte@4.2.12) transitivePeerDependencies: - supports-color - ts-node dev: true - /eslint-plugin-turbo@1.13.0(eslint@8.57.0): - resolution: {integrity: sha512-y9YRXMSOc43SijAFFkDnrFpstV2k/w6Qmbr5mO/w7tUGzDWkHc87btLa0e/L2PJxod5bzNwsmzeyj8c/AsMMCQ==} + /eslint-plugin-turbo@1.13.2(eslint@8.57.0): + resolution: {integrity: sha512-QNaihF0hTRjfOBd1SLHrftm8V3pOU35CNS/C0/Z6qY1xxdL1PSv4IctEIldSMX7/A1jOPYwMPO7wYwPXgjgp/g==} peerDependencies: eslint: '>6.6.0' dependencies: @@ -4845,7 +4846,7 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.30.0 + terser: 5.30.3 dev: true /htmlparser2@8.0.2: @@ -5381,8 +5382,8 @@ packages: engines: {node: '>=0.10.0'} dev: false - /known-css-properties@0.29.0: - resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==} + /known-css-properties@0.30.0: + resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==} dev: true /kolorist@1.8.0: @@ -5512,8 +5513,8 @@ packages: dependencies: yallist: 4.0.0 - /magic-string@0.30.8: - resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} + /magic-string@0.30.9: + resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -5521,7 +5522,7 @@ packages: /magicast@0.3.3: resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} dependencies: - '@babel/parser': 7.24.1 + '@babel/parser': 7.24.4 '@babel/types': 7.24.0 source-map-js: 1.2.0 dev: true @@ -6420,7 +6421,7 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - /pinia@2.1.7(typescript@5.4.3)(vue@3.4.21): + /pinia@2.1.7(typescript@5.4.4)(vue@3.4.21): resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==} peerDependencies: '@vue/composition-api': ^1.4.0 @@ -6433,8 +6434,8 @@ packages: optional: true dependencies: '@vue/devtools-api': 6.6.1 - typescript: 5.4.3 - vue: 3.4.21(typescript@5.4.3) + typescript: 5.4.4 + vue: 3.4.21(typescript@5.4.4) vue-demi: 0.14.7(vue@3.4.21) dev: false @@ -6478,8 +6479,8 @@ packages: yaml: 1.10.2 dev: true - /postcss-modules-extract-imports@3.0.0(postcss@8.4.38): - resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + /postcss-modules-extract-imports@3.1.0(postcss@8.4.38): + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 @@ -6487,8 +6488,8 @@ packages: postcss: 8.4.38 dev: true - /postcss-modules-local-by-default@4.0.4(postcss@8.4.38): - resolution: {integrity: sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==} + /postcss-modules-local-by-default@4.0.5(postcss@8.4.38): + resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 @@ -6499,8 +6500,8 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-modules-scope@3.1.1(postcss@8.4.38): - resolution: {integrity: sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==} + /postcss-modules-scope@3.2.0(postcss@8.4.38): + resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 @@ -6528,9 +6529,9 @@ packages: icss-utils: 5.1.0(postcss@8.4.38) lodash.camelcase: 4.3.0 postcss: 8.4.38 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.38) - postcss-modules-local-by-default: 4.0.4(postcss@8.4.38) - postcss-modules-scope: 3.1.1(postcss@8.4.38) + postcss-modules-extract-imports: 3.1.0(postcss@8.4.38) + postcss-modules-local-by-default: 4.0.5(postcss@8.4.38) + postcss-modules-scope: 3.2.0(postcss@8.4.38) postcss-modules-values: 4.0.0(postcss@8.4.38) string-hash: 1.1.3 dev: true @@ -6878,28 +6879,28 @@ packages: - utf-8-validate dev: true - /rollup@4.13.2: - resolution: {integrity: sha512-MIlLgsdMprDBXC+4hsPgzWUasLO9CE4zOkj/u6j+Z6j5A4zRY+CtiXAdJyPtgCsc42g658Aeh1DlrdVEJhsL2g==} + /rollup@4.14.1: + resolution: {integrity: sha512-4LnHSdd3QK2pa1J6dFbfm1HN0D7vSK/ZuZTsdyUAlA6Rr1yTouUTL13HaDOGJVgby461AhrNGBS7sCGXXtT+SA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.13.2 - '@rollup/rollup-android-arm64': 4.13.2 - '@rollup/rollup-darwin-arm64': 4.13.2 - '@rollup/rollup-darwin-x64': 4.13.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.13.2 - '@rollup/rollup-linux-arm64-gnu': 4.13.2 - '@rollup/rollup-linux-arm64-musl': 4.13.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.13.2 - '@rollup/rollup-linux-riscv64-gnu': 4.13.2 - '@rollup/rollup-linux-s390x-gnu': 4.13.2 - '@rollup/rollup-linux-x64-gnu': 4.13.2 - '@rollup/rollup-linux-x64-musl': 4.13.2 - '@rollup/rollup-win32-arm64-msvc': 4.13.2 - '@rollup/rollup-win32-ia32-msvc': 4.13.2 - '@rollup/rollup-win32-x64-msvc': 4.13.2 + '@rollup/rollup-android-arm-eabi': 4.14.1 + '@rollup/rollup-android-arm64': 4.14.1 + '@rollup/rollup-darwin-arm64': 4.14.1 + '@rollup/rollup-darwin-x64': 4.14.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.14.1 + '@rollup/rollup-linux-arm64-gnu': 4.14.1 + '@rollup/rollup-linux-arm64-musl': 4.14.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.14.1 + '@rollup/rollup-linux-riscv64-gnu': 4.14.1 + '@rollup/rollup-linux-s390x-gnu': 4.14.1 + '@rollup/rollup-linux-x64-gnu': 4.14.1 + '@rollup/rollup-linux-x64-musl': 4.14.1 + '@rollup/rollup-win32-arm64-msvc': 4.14.1 + '@rollup/rollup-win32-ia32-msvc': 4.14.1 + '@rollup/rollup-win32-x64-msvc': 4.14.1 fsevents: 2.3.3 dev: true @@ -6923,8 +6924,8 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - /sass@1.72.0: - resolution: {integrity: sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA==} + /sass@1.74.1: + resolution: {integrity: sha512-w0Z9p/rWZWelb88ISOLyvqTWGmtmu2QJICqDBGyNnfG4OUnPX9BBjjYIXUpXCMOOg5MQWNpqzt876la1fsTvUA==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -7063,8 +7064,8 @@ packages: sax: 1.3.0 dev: false - /siyuan@0.9.6: - resolution: {integrity: sha512-MasF1bxkhEoX7Lk/aJm+AYI7lkX7FeTSTF98dKV8v2q0Y0JbVdPY2GB3Wb9Sv5AXm1Q9KEVyCAhRyywv0s9WBw==} + /siyuan@0.9.7: + resolution: {integrity: sha512-8DpEH3xaWVdIGETiZxHTpIowF6hN1+KbmPcQogtgXAYQvYi89acv8HAkxjLABTLS7AWwYT+UWmNRDRa2UofvNA==} dev: false /slash@3.0.0: @@ -7294,11 +7295,11 @@ packages: engines: {node: '>= 0.4'} dev: true - /svelte-eslint-parser@0.33.1(svelte@4.2.12): - resolution: {integrity: sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==} + /svelte-eslint-parser@0.34.0(svelte@4.2.12): + resolution: {integrity: sha512-jOozxWbHVtIFt6fvettJK9T9aK1AyrcWBJzqcjqJxkr7QfgMYWjHNVlG/qFFOr72cw8mUVS/D/8BO6HlPEtNug==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - svelte: ^3.37.0 || ^4.0.0 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.94 peerDependenciesMeta: svelte: optional: true @@ -7327,7 +7328,7 @@ packages: estree-walker: 3.0.3 is-reference: 3.0.2 locate-character: 3.0.0 - magic-string: 0.30.8 + magic-string: 0.30.9 periscopic: 3.1.0 dev: true @@ -7374,8 +7375,8 @@ packages: commonmark: 0.28.1 dev: false - /terser@5.30.0: - resolution: {integrity: sha512-Y/SblUl5kEyEFzhMAQdsxVHh+utAxd4IuRNJzKywY/4uzSogh3G219jqbDDxYu4MXO9CzY3tSEqmZvW6AoEDJw==} + /terser@5.30.3: + resolution: {integrity: sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==} engines: {node: '>=10'} hasBin: true dependencies: @@ -7563,14 +7564,14 @@ packages: typescript: 4.9.5 dev: true - /tsutils@3.21.0(typescript@5.4.3): + /tsutils@3.21.0(typescript@5.4.4): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.4.3 + typescript: 5.4.4 dev: true /tty-browserify@0.0.1: @@ -7605,8 +7606,8 @@ packages: hasBin: true dev: true - /typescript@5.4.3: - resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==} + /typescript@5.4.4: + resolution: {integrity: sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==} engines: {node: '>=14.17'} hasBin: true @@ -7655,7 +7656,7 @@ packages: estree-walker: 3.0.3 fast-glob: 3.3.2 local-pkg: 0.5.0 - magic-string: 0.30.8 + magic-string: 0.30.9 mlly: 1.6.1 pathe: 1.1.2 pkg-types: 1.0.3 @@ -7752,7 +7753,7 @@ packages: '@vueuse/core': 10.9.0(vue@3.4.21) fast-glob: 3.3.2 local-pkg: 0.5.0 - magic-string: 0.30.8 + magic-string: 0.30.9 minimatch: 9.0.4 unimport: 3.7.1 unplugin: 1.10.1 @@ -7810,11 +7811,11 @@ packages: debug: 4.3.4 fast-glob: 3.3.2 local-pkg: 0.4.3 - magic-string: 0.30.8 + magic-string: 0.30.9 minimatch: 9.0.4 resolve: 1.22.8 unplugin: 1.10.1 - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.4) transitivePeerDependencies: - rollup - supports-color @@ -7930,22 +7931,22 @@ packages: spdx-expression-parse: 3.0.1 dev: false - /vercel@33.6.2: - resolution: {integrity: sha512-9tpC+wAtGSKiZf1TPjXZK6ntQDK0IZPd5xl99Ka91bcNQS9Z/8jJ/IKmTbgKw80z7i769ozMPtKj3/jTRnWuhw==} + /vercel@33.7.0: + resolution: {integrity: sha512-zP2NwI4qwF78AtmJ19GSwyeeAR5WVW8+Jvbnt480GVS7VO4NCAwIeoQmZ1irCD9iKINAO6bM96ry/btZmd+SZw==} engines: {node: '>= 16'} hasBin: true dependencies: - '@vercel/build-utils': 7.10.0 + '@vercel/build-utils': 7.11.0 '@vercel/fun': 1.1.0 - '@vercel/go': 3.0.5 + '@vercel/go': 3.1.1 '@vercel/hydrogen': 1.0.2 '@vercel/next': 4.1.6 - '@vercel/node': 3.0.25 + '@vercel/node': 3.0.26 '@vercel/python': 4.1.1 '@vercel/redwood': 2.0.8 '@vercel/remix-builder': 2.1.5 '@vercel/ruby': 2.0.5 - '@vercel/static-build': 2.4.5 + '@vercel/static-build': 2.4.6 chokidar: 3.3.1 transitivePeerDependencies: - '@swc/core' @@ -7970,7 +7971,7 @@ packages: vfile-message: 2.0.4 dev: false - /vite-node@1.4.0(@types/node@18.19.28)(stylus@0.63.0): + /vite-node@1.4.0(@types/node@18.19.30)(stylus@0.63.0): resolution: {integrity: sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -7979,7 +7980,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.2.7(@types/node@18.19.28)(stylus@0.63.0) + vite: 5.2.8(@types/node@18.19.30)(stylus@0.63.0) transitivePeerDependencies: - '@types/node' - less @@ -7991,7 +7992,7 @@ packages: - terser dev: true - /vite-plugin-html@3.2.2(vite@5.2.7): + /vite-plugin-html@3.2.2(vite@5.2.8): resolution: {integrity: sha512-vb9C9kcdzcIo/Oc3CLZVS03dL5pDlOFuhGlZYDCJ840BhWl/0nGeZWf3Qy7NlOayscY4Cm/QRgULCQkEZige5Q==} peerDependencies: vite: '>=2.0.0' @@ -8008,23 +8009,23 @@ packages: html-minifier-terser: 6.1.0 node-html-parser: 5.4.2 pathe: 0.2.0 - vite: 5.2.7(@types/node@18.19.28)(stylus@0.63.0) + vite: 5.2.8(@types/node@18.19.30)(stylus@0.63.0) dev: true - /vite-plugin-node-polyfills@0.21.0(vite@5.2.7): + /vite-plugin-node-polyfills@0.21.0(vite@5.2.8): resolution: {integrity: sha512-Sk4DiKnmxN8E0vhgEhzLudfJQfaT8k4/gJ25xvUPG54KjLJ6HAmDKbr4rzDD/QWEY+Lwg80KE85fGYBQihEPQA==} peerDependencies: vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 dependencies: '@rollup/plugin-inject': 5.0.5 node-stdlib-browser: 1.2.0 - vite: 5.2.7(@types/node@18.19.28)(stylus@0.63.0) + vite: 5.2.8(@types/node@18.19.30)(stylus@0.63.0) transitivePeerDependencies: - rollup dev: true - /vite@5.2.7(@types/node@18.19.28)(stylus@0.63.0): - resolution: {integrity: sha512-k14PWOKLI6pMaSzAuGtT+Cf0YmIx12z9YGon39onaJNy8DLBfBJrzg9FQEmkAM5lpHBZs9wksWAsyF/HkpEwJA==} + /vite@5.2.8(@types/node@18.19.30)(stylus@0.63.0): + resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -8051,16 +8052,16 @@ packages: terser: optional: true dependencies: - '@types/node': 18.19.28 + '@types/node': 18.19.30 esbuild: 0.20.2 postcss: 8.4.38 - rollup: 4.13.2 + rollup: 4.14.1 stylus: 0.63.0 optionalDependencies: fsevents: 2.3.3 dev: true - /vitest@1.4.0(@types/node@18.19.28)(jsdom@24.0.0)(stylus@0.63.0): + /vitest@1.4.0(@types/node@18.19.30)(jsdom@24.0.0)(stylus@0.63.0): resolution: {integrity: sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -8085,7 +8086,7 @@ packages: jsdom: optional: true dependencies: - '@types/node': 18.19.28 + '@types/node': 18.19.30 '@vitest/expect': 1.4.0 '@vitest/runner': 1.4.0 '@vitest/snapshot': 1.4.0 @@ -8097,15 +8098,15 @@ packages: execa: 8.0.1 jsdom: 24.0.0 local-pkg: 0.5.0 - magic-string: 0.30.8 + magic-string: 0.30.9 pathe: 1.1.2 picocolors: 1.0.0 std-env: 3.7.0 strip-literal: 2.1.0 tinybench: 2.6.0 tinypool: 0.8.3 - vite: 5.2.7(@types/node@18.19.28)(stylus@0.63.0) - vite-node: 1.4.0(@types/node@18.19.28)(stylus@0.63.0) + vite: 5.2.8(@types/node@18.19.30)(stylus@0.63.0) + vite-node: 1.4.0(@types/node@18.19.30)(stylus@0.63.0) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -8121,8 +8122,8 @@ packages: resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} dev: true - /vue-component-type-helpers@2.0.7: - resolution: {integrity: sha512-7e12Evdll7JcTIocojgnCgwocX4WzIYStGClBQ+QuWPinZo/vQolv2EMq4a3lg16TKfwWafLimG77bxb56UauA==} + /vue-component-type-helpers@2.0.11: + resolution: {integrity: sha512-8aluKz5oVC8PvVQAYgyIefOlqzKVmAOTCx2imbrFBVLbF7mnJvyMsE2A7rqX/4f4uT6ee9o8u3GcoRpUWc0xsw==} dev: true /vue-demi@0.14.7(vue@3.4.21): @@ -8137,7 +8138,7 @@ packages: '@vue/composition-api': optional: true dependencies: - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.4) /vue-eslint-parser@9.4.2(eslint@8.57.0): resolution: {integrity: sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==} @@ -8157,16 +8158,16 @@ packages: - supports-color dev: true - /vue-i18n@9.10.2(vue@3.4.21): - resolution: {integrity: sha512-ECJ8RIFd+3c1d3m1pctQ6ywG5Yj8Efy1oYoAKQ9neRdkLbuKLVeW4gaY5HPkD/9ssf1pOnUrmIFjx2/gkGxmEw==} + /vue-i18n@9.11.0(vue@3.4.21): + resolution: {integrity: sha512-vU4gY6lu8Pdfs9BgKGiDAJmFDf88cceR47KcSB0VW4xJzUrXR/7qwqM7A8dQ2nedhoIDxoOm5Ro4pFd2KvJqbA==} engines: {node: '>= 16'} peerDependencies: vue: ^3.0.0 dependencies: - '@intlify/core-base': 9.10.2 - '@intlify/shared': 9.10.2 + '@intlify/core-base': 9.11.0 + '@intlify/shared': 9.11.0 '@vue/devtools-api': 6.6.1 - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.4) dev: false /vue-router@4.3.0(vue@3.4.21): @@ -8175,7 +8176,7 @@ packages: vue: ^3.2.0 dependencies: '@vue/devtools-api': 6.6.1 - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.4) dev: false /vue-template-compiler@2.7.16: @@ -8185,19 +8186,19 @@ packages: he: 1.2.0 dev: true - /vue-tsc@2.0.7(typescript@5.4.3): - resolution: {integrity: sha512-LYa0nInkfcDBB7y8jQ9FQ4riJTRNTdh98zK/hzt4gEpBZQmf30dPhP+odzCa+cedGz6B/guvJEd0BavZaRptjg==} + /vue-tsc@2.0.11(typescript@5.4.4): + resolution: {integrity: sha512-dl5MEU4VGZdQFGBnKfPpAfV3SQmBDWs9o4YhUPvDmwk+zmb/RprzFJK2sagR6EWazogZhXENvykd3wBXWS9kng==} hasBin: true peerDependencies: typescript: '*' dependencies: - '@volar/typescript': 2.1.6 - '@vue/language-core': 2.0.7(typescript@5.4.3) + '@volar/typescript': 2.2.0-alpha.6 + '@vue/language-core': 2.0.11(typescript@5.4.4) semver: 7.6.0 - typescript: 5.4.3 + typescript: 5.4.4 dev: true - /vue@3.4.21(typescript@5.4.3): + /vue@3.4.21(typescript@5.4.4): resolution: {integrity: sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==} peerDependencies: typescript: '*' @@ -8210,7 +8211,7 @@ packages: '@vue/runtime-dom': 3.4.21 '@vue/server-renderer': 3.4.21(vue@3.4.21) '@vue/shared': 3.4.21 - typescript: 5.4.3 + typescript: 5.4.4 /w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} @@ -8479,22 +8480,22 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} - /zhi-blog-api@1.63.0(typescript@5.4.3): - resolution: {integrity: sha512-wbFcjp5/cqG2WkDCjd8SgowNguq1oMo3KHXdMTVPjc+piPaa4TLHY+47/al3l8stjK/OUUAg0x1GD3cyyeKrLw==} + /zhi-blog-api@1.65.0(typescript@5.4.4): + resolution: {integrity: sha512-xcUDE9I1rU/MjnCo236ovO22clzTT2BrfgG1/RjnGukgvjM8RWquLXeTXC6aE0vcIddcfZvOCskd3rNAd9JE5g==} dependencies: - zhi-common: 1.33.0(typescript@5.4.3) + zhi-common: 1.33.0(typescript@5.4.4) zhi-lib-base: 0.8.0 transitivePeerDependencies: - typescript dev: false - /zhi-common@1.33.0(typescript@5.4.3): + /zhi-common@1.33.0(typescript@5.4.4): resolution: {integrity: sha512-ggHVmZ/zkVIOLfAWv4vqJBZY9BZnlnBUhlOmtYoVHV35UdxI5zcvvakBRgDZxjyknikHOLot7MtYfccCCOdyKw==} dependencies: js-yaml: 4.1.0 shorthash2: 1.0.3 transliteration: 2.3.5 - vue: 3.4.21(typescript@5.4.3) + vue: 3.4.21(typescript@5.4.4) zhi-lib-base: 0.8.0 transitivePeerDependencies: - typescript @@ -8504,31 +8505,31 @@ packages: resolution: {integrity: sha512-HKcEHVULUcGboePoSBWJ6vDHYqXEiZS/xetzTRV8DRPkRTmeWzJWs5Xu3BTz21Iz3DGy43hFahpm2Yz2+MFUcA==} dev: false - /zhi-fetch-middleware@0.12.0(typescript@5.4.3): + /zhi-fetch-middleware@0.12.0(typescript@5.4.4): resolution: {integrity: sha512-cVXCLFM6Dhzizqcz6/ukzQpBNFUTmkUPO3BmBYtNBKrtZlNGGzzYERfD97dX2ldfvA6C/FzAKNcMmhOxqrGp/A==} dependencies: - zhi-common: 1.33.0(typescript@5.4.3) + zhi-common: 1.33.0(typescript@5.4.4) zhi-device: 2.11.0 zhi-lib-base: 0.8.0 transitivePeerDependencies: - typescript dev: false - /zhi-github-middleware@0.5.0(typescript@5.4.3): + /zhi-github-middleware@0.5.0(typescript@5.4.4): resolution: {integrity: sha512-D5IhY5JE0xe8+AUvakZOh/FQJUCU2rdOwG+kadonja/5I/fDf1WXfCFtVxdPjAyN/N/S84lAwkJxMsaz68i7eQ==} dependencies: - '@octokit/core': 5.1.0 + '@octokit/core': 5.2.0 js-base64: 3.7.7 - zhi-common: 1.33.0(typescript@5.4.3) + zhi-common: 1.33.0(typescript@5.4.4) zhi-lib-base: 0.8.0 transitivePeerDependencies: - typescript dev: false - /zhi-gitlab-middleware@0.10.0(typescript@5.4.3): + /zhi-gitlab-middleware@0.10.0(typescript@5.4.4): resolution: {integrity: sha512-ib9XtQGsRz/wckGfyYm6bvxCBTwxouJ7Ra1liWmCYeMEFCneYBw7LFXnKeZ8+kExQY8lU5LgJ2BRmVDXkpehwQ==} dependencies: - zhi-fetch-middleware: 0.12.0(typescript@5.4.3) + zhi-fetch-middleware: 0.12.0(typescript@5.4.4) zhi-lib-base: 0.8.0 transitivePeerDependencies: - typescript @@ -8548,26 +8549,26 @@ packages: - supports-color dev: false - /zhi-siyuan-api@2.20.7(typescript@5.4.3): - resolution: {integrity: sha512-GSJil6nbm9Xjc1NSdz9FWmEJErO5qg1QCzp6pI4hiumEjXNejz6O7Jim3gFjbfPdrCeH1Sw9tfRqJMEBq6AdRA==} + /zhi-siyuan-api@2.20.9(typescript@5.4.4): + resolution: {integrity: sha512-Vr9J3MQfg2GWOZa39a+JNKx38qmMdTPlyvMqhP85+BzsE+BZ6c77MnsZs52XtNxkMQcmGe9jP+mBdb1bdEY+Pw==} dependencies: - zhi-blog-api: 1.63.0(typescript@5.4.3) - zhi-common: 1.33.0(typescript@5.4.3) + zhi-blog-api: 1.65.0(typescript@5.4.4) + zhi-common: 1.33.0(typescript@5.4.4) zhi-lib-base: 0.8.0 transitivePeerDependencies: - typescript dev: false - /zhi-siyuan-picgo@1.9.0(typescript@5.4.3): + /zhi-siyuan-picgo@1.9.0(typescript@5.4.4): resolution: {integrity: sha512-Oq3/2x38WlST8bcREWYlKO+V8Kx1RPA5kuwvitMeNX8Pg5NwRbQYaaXqHEZVqVTeeJuyBDpGlYALBfdjshztkg==} dependencies: js-md5: 0.8.3 universal-picgo: 1.9.0 uuid: 9.0.1 - zhi-common: 1.33.0(typescript@5.4.3) + zhi-common: 1.33.0(typescript@5.4.4) zhi-device: 2.11.0 zhi-lib-base: 0.8.0 - zhi-siyuan-api: 2.20.7(typescript@5.4.3) + zhi-siyuan-api: 2.20.9(typescript@5.4.4) transitivePeerDependencies: - debug - proxy-agent @@ -8575,10 +8576,10 @@ packages: - typescript dev: false - /zhi-xmlrpc-middleware@0.6.21(typescript@5.4.3): + /zhi-xmlrpc-middleware@0.6.21(typescript@5.4.4): resolution: {integrity: sha512-PIAYQUaRmu+qUK4ZnqefyhPz3CkEkELmCWoyHIorfLrcZ6nyRIFFvyraCslQQtaMlk9asKr9QDg9WaNicU20Bg==} dependencies: - zhi-common: 1.33.0(typescript@5.4.3) + zhi-common: 1.33.0(typescript@5.4.4) zhi-device: 2.11.0 zhi-lib-base: 0.8.0 transitivePeerDependencies: diff --git a/src/adaptors/api/telegraph/telegraphApiAdaptor.ts b/src/adaptors/api/telegraph/telegraphApiAdaptor.ts index 23834d41..f7a63e0a 100644 --- a/src/adaptors/api/telegraph/telegraphApiAdaptor.ts +++ b/src/adaptors/api/telegraph/telegraphApiAdaptor.ts @@ -25,11 +25,10 @@ import { BaseBlogApi } from "~/src/adaptors/api/base/baseBlogApi.ts" import { Post, UserBlog } from "zhi-blog-api" -import { TelegraphConfig } from "~/src/adaptors/api/telegraph/telegraphConfig.ts" +import { TelegraphConfig, TelegraphPostType } from "~/src/adaptors/api/telegraph/telegraphConfig.ts" import { JsonUtil, StrUtil } from "zhi-common" import CookieUtils from "~/src/utils/cookieUtils.ts" import md from "telegraph.md" -import FormDataUtils from "~/src/utils/FormDataUtils.ts" /** * Telegraph API 适配器 @@ -37,89 +36,127 @@ import FormDataUtils from "~/src/utils/FormDataUtils.ts" * @see https://telegra.ph/ telegra.ph */ class TelegraphApiAdaptor extends BaseBlogApi { + private TPH_TOKEN_KEY = "tph_token" private TPH_UUID_KEY = "tph_uuid" public async getUsersBlogs(): Promise { + const tgCfg = this.cfg as TelegraphConfig const result: UserBlog[] = [] - const contentType = "text/plain" - let xCorsHeaders: Record = {} - - // x-cors-headers - xCorsHeaders["origin"] = "https://telegra.ph" - xCorsHeaders["referer"] = "https://telegra.ph/" - xCorsHeaders["Content-Type"] = contentType + if (tgCfg.postType === TelegraphPostType.LOGIN_USER) { + if ( + StrUtil.isEmptyString(tgCfg.password) || + StrUtil.isEmptyString(tgCfg.accessToken) || + StrUtil.isEmptyString(tgCfg.saveHash) + ) { + throw new Error("登录模式必须手动填写 uuid 、 Access Token 和 save hash,请从浏览器开发者工具获取") + } - const headers = { - // for cors proxy - // siyuan proxy should ignore this header - "x-cors-headers": JSON.stringify(xCorsHeaders), - } - for (const [xkey, xvalue] of Object.entries(xCorsHeaders)) { - headers[xkey] = xvalue - } + // 数据适配 + const userblog: UserBlog = new UserBlog() + userblog.blogid = tgCfg.saveHash + userblog.blogName = "telegra.ph" + userblog.url = tgCfg.apiUrl + } else { + const contentType = "text/plain" + let xCorsHeaders: Record = {} + + // x-cors-headers + xCorsHeaders["origin"] = "https://telegra.ph" + xCorsHeaders["referer"] = "https://telegra.ph/" + xCorsHeaders["Content-Type"] = contentType + + const headers = { + // for cors proxy + // siyuan proxy should ignore this header + "x-cors-headers": JSON.stringify(xCorsHeaders), + } + for (const [xkey, xvalue] of Object.entries(xCorsHeaders)) { + headers[xkey] = xvalue + } - let cookies: any - let checkJson = await this.telegraphFetch("/check", "page_id=0", "POST", headers, contentType) - this.logger.debug("checkJson =>", checkJson) + let cookies: any + let checkJson = await this.telegraphFetch("/check", "page_id=0", "POST", headers, contentType) + this.logger.debug("checkJson =>", checkJson) - if (checkJson["cors-received-headers"]) { - // use cors proxy - if (checkJson.error) { - throw new Error("telegra.ph request error =>" + checkJson.error) - } - const corsHeaders = JsonUtil.safeParse(checkJson["cors-received-headers"], {}) - cookies = corsHeaders["Set-Cookie-Array"] - } else { - // use siyuan proxy - if (checkJson.status == 200) { - cookies = checkJson.headers["Set-Cookie"] - const body = JsonUtil.safeParse(checkJson.body, {}) - checkJson = { - ...checkJson, - ...body, + if (checkJson["cors-received-headers"]) { + // use cors proxy + if (checkJson.error) { + throw new Error("telegra.ph request error =>" + checkJson.error) } + const corsHeaders = JsonUtil.safeParse(checkJson["cors-received-headers"], {}) + cookies = corsHeaders["Set-Cookie-Array"] } else { - throw new Error(`telegra.ph request error ${checkJson.status}=>` + checkJson.body) + // use siyuan proxy + if (checkJson.status == 200) { + cookies = checkJson.headers["Set-Cookie"] + const body = JsonUtil.safeParse(checkJson.body, {}) + checkJson = { + ...checkJson, + ...body, + } + } else { + throw new Error(`telegra.ph request error ${checkJson.status}=>` + checkJson.body) + } } - } - // 数据适配 - const userblog: UserBlog = new UserBlog() - const cfg = this.cfg as TelegraphConfig - userblog.blogid = checkJson.save_hash - userblog.blogName = "telegra.ph" - userblog.url = cfg.apiUrl - // 元数据映射 - // @since 1.20.0 - const { isUpdated, cookieArray } = CookieUtils.addCookieArray(this.cfg?.corsCookieArray ?? [], cookies) - // save_hash 必须和 Cookie 的有效期同时有效 - if (isUpdated) { - userblog.metadataMap = { - password: checkJson.save_hash, - corsCookieArray: cookieArray, + // 数据适配 + const userblog: UserBlog = new UserBlog() + userblog.blogid = checkJson.save_hash + userblog.blogName = "telegra.ph" + userblog.url = tgCfg.apiUrl + + // 元数据映射 + // @since 1.20.0 + const { isUpdated, cookieArray } = CookieUtils.addCookieArray( + tgCfg?.corsCookieArray ?? [], + cookies, + tgCfg.forceReAuth + ) + this.logger.info(`是否需要刷新:${isUpdated},是否强制刷新:${tgCfg.forceReAuth}`) + if (isUpdated) { + // cookies 每一次都是最新的 + const tphUuidObj = CookieUtils.getCookieObject(cookies, this.TPH_UUID_KEY) + userblog.metadataMap = { + username: checkJson.author_name, + password: tphUuidObj[this.TPH_UUID_KEY], + saveHash: checkJson.save_hash, + corsCookieArray: cookieArray, + } + } else { + this.logger.warn("Cookie 还在有效期,可等待 Cookie 过期之后再进行操作", cookieArray) } - } else { - this.logger.warn("Cookie 还在有效期,可等待 Cookie 过期之后再进行操作", cookieArray) + + result.push(userblog) } - result.push(userblog) this.logger.debug("get telegraph cfg =>", result) return result } public async newPost(post: Post, _publish?: boolean): Promise { + const tgCfg = this.cfg as TelegraphConfig + let xCorsHeaders: Record = {} // x-cors-headers - const tphUuidObj = CookieUtils.getCookieObject(this.cfg.corsCookieArray, this.TPH_UUID_KEY) - if (StrUtil.isEmptyString(tphUuidObj[this.TPH_UUID_KEY])) { - throw new Error("Cookie 获取失败,无法新建文章") + let requestCookie: string + const uuidCookie = `${this.TPH_UUID_KEY}=${tgCfg.password}` + if (tgCfg.postType == TelegraphPostType.ANONYMOUS) { + if (StrUtil.isEmptyString(tgCfg.password)) { + throw new Error(`Cookie ${this.TPH_UUID_KEY} 获取失败,无法新建文章`) + } + requestCookie = uuidCookie + this.logger.warn("当前为匿名发布") + } else { + if (StrUtil.isEmptyString(tgCfg.password) || StrUtil.isEmptyString(tgCfg.accessToken)) { + throw new Error(`Cookie ${this.TPH_UUID_KEY},${this.TPH_TOKEN_KEY} 获取失败,无法新建文章`) + } + const tokenCookie = `${this.TPH_TOKEN_KEY}=${tgCfg.accessToken}` + requestCookie = [uuidCookie, tokenCookie].join(";") } - - const requestCookie = `${this.TPH_UUID_KEY}=${tphUuidObj[this.TPH_UUID_KEY]}` - xCorsHeaders["Cookie"] = requestCookie + xCorsHeaders["Cookie"] = requestCookie ?? "" xCorsHeaders["origin"] = "https://telegra.ph" xCorsHeaders["referer"] = "https://telegra.ph/" @@ -140,8 +177,8 @@ class TelegraphApiAdaptor extends BaseBlogApi { const blobData = new Blob([JSON.stringify(content)], { type: "text/plain" }) formData.append("Data", blobData, "content.html") formData.append("title", post.title) - formData.append("author", this.cfg.username) - formData.append("save_hash", this.cfg.password) + formData.append("author", tgCfg.username) + formData.append("save_hash", tgCfg.saveHash) formData.append("page_id", "0") const res = await this.telegraphFormFetch("/save", formData, headers) @@ -157,12 +194,14 @@ class TelegraphApiAdaptor extends BaseBlogApi { update_cookie: requestCookie, page_id: res.page_id, path: res.path, + save_hash: tgCfg.saveHash, } const postid = JSON.stringify(postMeta) return postid } public async editPost(postid: string, post: Post, publish?: boolean): Promise { + const tgCfg = this.cfg as TelegraphConfig const postMeta = JsonUtil.safeParse(postid, {}) let xCorsHeaders: Record = {} @@ -193,8 +232,8 @@ class TelegraphApiAdaptor extends BaseBlogApi { const blobData = new Blob([JSON.stringify(content)], { type: "text/plain" }) formData.append("Data", blobData, "content.html") formData.append("title", post.title) - formData.append("author", this.cfg.username) - formData.append("save_hash", this.cfg.password) + formData.append("author", tgCfg.username) + formData.append("save_hash", postMeta.save_hash) formData.append("page_id", postMeta.page_id) const res = await this.telegraphFormFetch("/save", formData, headers) diff --git a/src/adaptors/api/telegraph/telegraphConfig.ts b/src/adaptors/api/telegraph/telegraphConfig.ts index 0f4481d8..7e65c53d 100644 --- a/src/adaptors/api/telegraph/telegraphConfig.ts +++ b/src/adaptors/api/telegraph/telegraphConfig.ts @@ -26,17 +26,33 @@ import { CommonBlogConfig } from "~/src/adaptors/api/base/commonBlogConfig.ts" import { PasswordType } from "zhi-blog-api" +/** + * 发布方式 + */ +enum TelegraphPostType { + // 匿名用户 + ANONYMOUS = "anonymous", + // 登录用户 + LOGIN_USER = "user", +} + /** * Telegraph 配置 */ class TelegraphConfig extends CommonBlogConfig { + public postType: TelegraphPostType + public accessToken: string + public saveHash: string + public forceReAuth: boolean + constructor(telegraphUrl: string, telegraphToken: string, middlewareUrl?: string) { super(telegraphUrl, "https://edit.telegra.ph", "", telegraphToken, middlewareUrl) - this.passwordType = PasswordType.PasswordType_Token + this.postType = TelegraphPostType.ANONYMOUS this.previewUrl = "/[postid]" this.allowPreviewUrlChange = false + this.forceReAuth = false } } -export { TelegraphConfig } +export { TelegraphPostType, TelegraphConfig } diff --git a/src/adaptors/api/telegraph/useTelegraphApi.ts b/src/adaptors/api/telegraph/useTelegraphApi.ts index 0833e19c..1939bd98 100644 --- a/src/adaptors/api/telegraph/useTelegraphApi.ts +++ b/src/adaptors/api/telegraph/useTelegraphApi.ts @@ -23,7 +23,7 @@ * questions. */ -import { TelegraphConfig } from "~/src/adaptors/api/telegraph/telegraphConfig.ts" +import { TelegraphConfig, TelegraphPostType } from "~/src/adaptors/api/telegraph/telegraphConfig.ts" import { createAppLogger } from "~/src/utils/appLogger.ts" import { PublisherAppInstance } from "~/src/publisherAppInstance.ts" import { usePublishSettingStore } from "~/src/stores/usePublishSettingStore.ts" @@ -68,6 +68,7 @@ const useTelegraphApi = async (key: string, newCfg?: TelegraphConfig) => { cfg.usernameEnabled = true cfg.cateEnabled = false cfg.tagEnabled = false + cfg.postType = cfg.postType ?? TelegraphPostType.ANONYMOUS const blogApi = new TelegraphApiAdaptor(appInstance, cfg) logger.info("Telegraph API created successfully.", cfg) diff --git a/src/components/set/publish/singleplatform/base/CommonBlogSetting.vue b/src/components/set/publish/singleplatform/base/CommonBlogSetting.vue index 41fe6ac0..3f8d552c 100644 --- a/src/components/set/publish/singleplatform/base/CommonBlogSetting.vue +++ b/src/components/set/publish/singleplatform/base/CommonBlogSetting.vue @@ -211,9 +211,7 @@ const afterValid = async (api: any) => { // @since 1.20.0 for (const key in userBlog.metadataMap) { // 这里不用校验,因为可能是继承的属性 - // if (ObjectUtil.hasKey(formData.cfg, key)) { formData.cfg[key] = userBlog.metadataMap[key] - // } } } } @@ -360,7 +358,7 @@ onMounted(async () => { - + { { { > - + ) => { + val.password = "" + val.accessToken = "" + val.saveHash = "" +} diff --git a/src/layouts/default/DefaultFooter.vue b/src/layouts/default/DefaultFooter.vue index 4d89f355..ee8b23d2 100644 --- a/src/layouts/default/DefaultFooter.vue +++ b/src/layouts/default/DefaultFooter.vue @@ -69,7 +69,7 @@