From 42adae8646683bf75dece228058f3e8bc6dac1cb Mon Sep 17 00:00:00 2001 From: South Drifted Date: Fri, 28 Jun 2024 20:23:19 +0000 Subject: [PATCH] [optimize] Tool Script supports YAML meta data --- README.md | 33 ++++---- package.json | 3 +- pnpm-lock.yaml | 218 ++++++++++++++++++++++++++---------------------- tool/index.tsx | 13 ++- tool/utility.ts | 18 +++- 5 files changed, 159 insertions(+), 126 deletions(-) diff --git a/README.md b/README.md index 96027ae..660bdf2 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # KnowledgeBase-xiaoyibao -[![Web deployment](https://github.com/xycjscs/KnowledgeBase-xiaoyibao/actions/workflows/deploy-Web.yml/badge.svg)][1] -[![PDF downloader](https://github.com/xycjscs/KnowledgeBase-xiaoyibao/actions/workflows/fetch-PDF.yml/badge.svg)][2] +[![Data submission](https://github.com/xycjscs/KnowledgeBase-xiaoyibao/actions/workflows/submit-data.yml/badge.svg)][1] +[![Web deployment](https://github.com/xycjscs/KnowledgeBase-xiaoyibao/actions/workflows/deploy-Web.yml/badge.svg)][2] +[![PDF downloader](https://github.com/xycjscs/KnowledgeBase-xiaoyibao/actions/workflows/fetch-PDF.yml/badge.svg)][3] 这是 xiaoyibao 扩展项目中的知识库项目,用于存储生成 RAG 所需的医疗专业资料。 @@ -17,6 +18,13 @@ 您可以通过此链接查看并访问我们的数据库目录,以便获取相关的信息和资源。 +## 维基百科形式的协作 + +文档以维基百科的形式进行协同创作,任何人可以修改文档中的任何内容,包括删减不合适的目录。 + +- [数据提交](https://github.com/xycjscs/KnowledgeBase-xiaoyibao/issues/new?&template=submit-data.yml&labels=documentation&assignees=xycjscs) +- [数据审核](https://github.com/xycjscs/KnowledgeBase-xiaoyibao/issues?q=is%3Aopen+is%3Aissue+label%3Adocumentation) + ## 安装基础环境 ### 1. 安装 Node.js 和 Git @@ -89,7 +97,7 @@ choco install curl -y ### 3. 执行命令 ```sh -pnpm tool nutritionDB.json +pnpm tool nutritionDB.yml ``` 详细用法可执行: @@ -116,25 +124,19 @@ pnpm build ### 1. 癌症患者营养食谱知识库 -对应数据库文件为 `nutritionDB.json` +对应数据库文件为 `nutritionDB.yml` ### 2. 癌症患者心理辅导知识库 -对应数据库文件为 `PsychologicalDB.json` +对应数据库文件为 `PsychologicalDB.yml` ### 3. 高尿酸人群饮食知识库 -对应数据库文件为 `HyperuricemiaDB.json` +对应数据库文件为 `HyperuricemiaDB.yml` > 资料通过“下载链接+下载脚本”形式储存。 -计划仓库中不同 json 文档存储不同的 `{标题-说明-链接}` 库,README 文件自动读取 json 文件渲染首页,下载脚本自动读取 json 并执行下载。 - -## 维基百科形式的协作 - -文档以维基百科的形式进行协同创作,任何人可以修改文档中的任何内容,包括删减不合适的目录。 - -贡献者可通过修改 json 文件提交代码,提交代码前需要检查下载脚本是否可以正确执行。 +计划仓库中不同 YAML 文档存储不同的 `{标题-说明-链接}` 库,README 文件自动读取 YAML 文件渲染首页,下载脚本自动读取 YAML 并执行下载。 ## 待开发功能或资料 @@ -150,5 +152,6 @@ pnpm build - [x] 自动将文档更新于一链接 -[1]: https://github.com/xycjscs/KnowledgeBase-xiaoyibao/actions/workflows/deploy-Web.yml -[2]: https://github.com/xycjscs/KnowledgeBase-xiaoyibao/actions/workflows/fetch-PDF.yml +[1]: https://github.com/xycjscs/KnowledgeBase-xiaoyibao/actions/workflows/submit-data.yml +[2]: https://github.com/xycjscs/KnowledgeBase-xiaoyibao/actions/workflows/deploy-Web.yml +[3]: https://github.com/xycjscs/KnowledgeBase-xiaoyibao/actions/workflows/fetch-PDF.yml diff --git a/package.json b/package.json index 673a023..b40dd03 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@xiaoyibao/knowledge-base", - "version": "0.3.0", + "version": "0.4.0", "license": "Apache-2.0", "engines": { "node": ">=18" @@ -19,6 +19,7 @@ "office-text-extractor": "^3.0.3", "tsx": "^4.15.7", "web-utility": "^4.4.0", + "yaml": "^2.4.5", "zx": "^8.1.3" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1be169e..09da4ec 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,10 +13,10 @@ importers: version: 0.1.31(encoding@0.1.13) '@tech_query/node-toolkit': specifier: ^1.2.1 - version: 1.2.1(@types/node@18.19.38) + version: 1.2.1(@types/node@18.19.39) commander-jsx: specifier: ^0.6.9 - version: 0.6.9(@types/node@18.19.38) + version: 0.6.9(@types/node@18.19.39) core-js: specifier: ^3.37.1 version: 3.37.1 @@ -40,10 +40,13 @@ importers: version: 3.0.3 tsx: specifier: ^4.15.7 - version: 4.15.7 + version: 4.15.8 web-utility: specifier: ^4.4.0 version: 4.4.0 + yaml: + specifier: ^2.4.5 + version: 2.4.5 zx: specifier: ^8.1.3 version: 8.1.3 @@ -53,7 +56,7 @@ importers: version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@types/node': specifier: ^18.19.38 - version: 18.19.38 + version: 18.19.39 husky: specifier: ^9.0.11 version: 9.0.11 @@ -65,7 +68,7 @@ importers: version: 2.12.0(@swc/helpers@0.5.11) parcel-transformer-mdx: specifier: ^0.3.2 - version: 0.3.2(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + version: 0.3.3(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) prettier: specifier: ^3.3.2 version: 3.3.2 @@ -738,68 +741,68 @@ packages: resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} engines: {node: '>=14.16'} - '@swc/core-darwin-arm64@1.6.3': - resolution: {integrity: sha512-3r7cJf1BcE30iyF1rnOSKrEzIR+cqnyYSZvivrm62TZdXVsIjfXe1xulsKGxZgNeLY5erIu7ukvMvBvPhnQvqA==} + '@swc/core-darwin-arm64@1.6.5': + resolution: {integrity: sha512-RGQhMdni2v1/ANQ/2K+F+QYdzaucekYBewZcX1ogqJ8G5sbPaBdYdDN1qQ4kHLCIkPtGP6qC7c71qPEqL2RidQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.6.3': - resolution: {integrity: sha512-8GLZ23IgVpF5xh2SbS5ZW/12/EEBuRU1hFOLB5rKERJU0y1RJ6YhDMf/FuOWhfHQcFM7TeedBwHIzaF+tdKKlw==} + '@swc/core-darwin-x64@1.6.5': + resolution: {integrity: sha512-/pSN0/Jtcbbb9+ovS9rKxR3qertpFAM3OEJr/+Dh/8yy7jK5G5EFPIrfsw/7Q5987ERPIJIH6BspK2CBB2tgcg==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.6.3': - resolution: {integrity: sha512-VQ/bduX7WhLOlGbJLMG7UH0LBehjjx43R4yuk55rjjJLqpvX5fQzMsWhQdIZ5vsc+4ORzdgtEAlpumTv6bsD1A==} + '@swc/core-linux-arm-gnueabihf@1.6.5': + resolution: {integrity: sha512-B0g/dROCE747RRegs/jPHuKJgwXLracDhnqQa80kFdgWEMjlcb7OMCgs5OX86yJGRS4qcYbiMGD0Pp7Kbqn3yw==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.6.3': - resolution: {integrity: sha512-jHIQ/PCwtdDBIF/BiC5DochswuCAIW/T5skJ+eDMbta7+QtEnZCXTZWpT5ORoEY/gtsE2fjpOA4TS6fBBvXqUw==} + '@swc/core-linux-arm64-gnu@1.6.5': + resolution: {integrity: sha512-W8meapgXTq8AOtSvDG4yKR8ant2WWD++yOjgzAleB5VAC+oC+aa8YJROGxj8HepurU8kurqzcialwoMeq5SZZQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.6.3': - resolution: {integrity: sha512-gA6velEUD27Dwu0BlR9hCcFzkWq2YL2pDAU5qbgeuGhaMiUCBssfqTQB+2ctEnV+AZx+hSMJOHvtA+uFZjfRrw==} + '@swc/core-linux-arm64-musl@1.6.5': + resolution: {integrity: sha512-jyCKqoX50Fg8rJUQqh4u5PqnE7nqYKXHjVH2WcYr114/MU21zlsI+YL6aOQU1XP8bJQ2gPQ1rnlnGJdEHiKS/w==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.6.3': - resolution: {integrity: sha512-fy4qoBDr5I8r+ZNCZxs/oZcmu4j/8mtSud6Ka102DaSxEjNg0vfIdo9ITsVIPsofhUTmDKjQsPB2O7YUlJAioQ==} + '@swc/core-linux-x64-gnu@1.6.5': + resolution: {integrity: sha512-G6HmUn/RRIlXC0YYFfBz2qh6OZkHS/KUPkhoG4X9ADcgWXXjOFh6JrefwsYj8VBAJEnr5iewzjNfj+nztwHaeA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.6.3': - resolution: {integrity: sha512-c/twcMbq/Gpq47G+b3kWgoaCujpXO11aRgJx6am+CprvP4uNeBHEpQkxD+DQmdWFHisZd0i9GB8NG3e7L9Rz9Q==} + '@swc/core-linux-x64-musl@1.6.5': + resolution: {integrity: sha512-AQpBjBnelQDSbeTJA50AXdS6+CP66LsXIMNTwhPSgUfE7Bx1ggZV11Fsi4Q5SGcs6a8Qw1cuYKN57ZfZC5QOuA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.6.3': - resolution: {integrity: sha512-y6RxMtX45acReQmzkxcEfJscfBXce6QjuNgWQHHs9exA592BZzmolDUwgmAyjyvopz1lWX+KdymdZFKvuDSx4w==} + '@swc/core-win32-arm64-msvc@1.6.5': + resolution: {integrity: sha512-MZTWM8kUwS30pVrtbzSGEXtek46aXNb/mT9D6rsS7NvOuv2w+qZhjR1rzf4LNbbn5f8VnR4Nac1WIOYZmfC5ng==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.6.3': - resolution: {integrity: sha512-41h7z3xgukl1HDDwhquaeOPSP1OWeHl+mWKnJVmmwd3ui/oowUDCO856qa6JagBgPSnAGfyXwv6vthuXwyCcWA==} + '@swc/core-win32-ia32-msvc@1.6.5': + resolution: {integrity: sha512-WZdu4gISAr3yOm1fVwKhhk6+MrP7kVX0KMP7+ZQFTN5zXQEiDSDunEJKVgjMVj3vlR+6mnAqa/L0V9Qa8+zKlQ==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.6.3': - resolution: {integrity: sha512-//bnwo9b8Vp1ED06eXCHyGZ5xIpdkQgg2fuFDdtd1FITl7r5bdQh2ryRzPiKiGwgXZwZQitUshI4JeEX9IuW+Q==} + '@swc/core-win32-x64-msvc@1.6.5': + resolution: {integrity: sha512-ezXgucnMTzlFIxQZw7ls/5r2hseFaRoDL04cuXUOs97E8r+nJSmFsRQm/ygH5jBeXNo59nyZCalrjJAjwfgACA==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.6.3': - resolution: {integrity: sha512-mZpei+LqE+AL+nwgERMQey9EJA9/yhHTN6nwbobH5GnSij/lhfTdGfAb1iumOrroqEcXbHUaK//7wOw7DjBGdA==} + '@swc/core@1.6.5': + resolution: {integrity: sha512-tyVvUK/HDOUUsK6/GmWvnqUtD9oDpPUA4f7f7JCOV8hXxtfjMtAZeBKf93yrB1XZet69TDR7EN0hFC6i4MF0Ig==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -813,8 +816,8 @@ packages: '@swc/helpers@0.5.11': resolution: {integrity: sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==} - '@swc/types@0.1.8': - resolution: {integrity: sha512-RNFA3+7OJFNYY78x0FYwi1Ow+iF1eF5WvmfY1nXPOEH4R2p/D4Cr1vzje7dNAI2aLFqpv8Wyz4oKSWqIZArpQA==} + '@swc/types@0.1.9': + resolution: {integrity: sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg==} '@szmarczak/http-timer@5.0.1': resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} @@ -880,11 +883,11 @@ packages: '@types/node-fetch@2.6.11': resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} - '@types/node@18.19.38': - resolution: {integrity: sha512-SApYXUF7si4JJ+lO2o6X60OPOnA6wPpbiB09GMCkQ+JAwpa9hxUVG8p7GzA08TKQn5OhzK57rj1wFj+185YsGg==} + '@types/node@18.19.39': + resolution: {integrity: sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==} - '@types/node@20.14.8': - resolution: {integrity: sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==} + '@types/node@20.14.9': + resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==} '@types/retry@0.12.5': resolution: {integrity: sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==} @@ -1033,8 +1036,8 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001636: - resolution: {integrity: sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==} + caniuse-lite@1.0.30001638: + resolution: {integrity: sha512-5SuJUJ7cZnhPpeLHaH0c/HPAnAHZvS6ElWyHK9GSIbVOQABLzowiI2pjmpvZ1WEbkyz46iFd4UXlOHR5SqgfMQ==} canvas@2.11.2: resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} @@ -1282,8 +1285,8 @@ packages: edkit@1.2.1: resolution: {integrity: sha512-Mqixc9JdCC7oFFeQ+Vn8GmK3jaGkI7jEGighQQt3PZmKKXmlMovwRoMXFV2glev7pyiA48GP89sBXapZcQhgXQ==} - electron-to-chromium@1.4.806: - resolution: {integrity: sha512-nkoEX2QIB8kwCOtvtgwhXWy2IHVcOLQZu9Qo36uaGB835mdX/h8uLRlosL6QIhLVUnAiicXRW00PwaPZC74Nrg==} + electron-to-chromium@1.4.814: + resolution: {integrity: sha512-GVulpHjFu1Y9ZvikvbArHmAhZXtm3wHlpjTMcXNGKl4IQ4jMQjlnz8yMQYYqdLHKi/jEL2+CBC2akWVCoIGUdw==} element-internals-polyfill@1.3.11: resolution: {integrity: sha512-SQLQNVY4wMdpnP/F/HtalJbpEenQd46Avtjm5hvUdeTs3QU0zHFNX5/AmtQIPPcfzePb0ipCkQGY4GwYJIhLJA==} @@ -1350,8 +1353,8 @@ packages: estree-util-to-js@2.0.0: resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} - estree-util-value-to-estree@3.1.1: - resolution: {integrity: sha512-5mvUrF2suuv5f5cGDnDphIy4/gW86z82kl5qG6mM9z04SEQI4FB5Apmaw/TGEf3l55nLtMs5s51dmhUzvAHQCA==} + estree-util-value-to-estree@3.1.2: + resolution: {integrity: sha512-S0gW2+XZkmsx00tU2uJ4L9hUT7IFabbml9pHh2WQqFmAbxit++YGZne0sKJbNwkj9Wvg9E4uqWl4nCIFQMmfag==} estree-util-visit@2.0.0: resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} @@ -1853,8 +1856,8 @@ packages: markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - marked@13.0.0: - resolution: {integrity: sha512-VTeDCd9txf4KLLljUZ0nljE/Incb9SrWuueE44QVuU0pkOdh4sfCeW1Z6lPcxyDRSVY6rm8db/0OPaN75RNUmw==} + marked@13.0.1: + resolution: {integrity: sha512-7kBohS6GrZKvCsNXZyVVXSW7/hGBHe49ng99YPkDCckSUrrG7MSFLCexsRxptzOmyW2eT5dySh4Md1V6my52fA==} engines: {node: '>= 18'} hasBin: true @@ -2221,8 +2224,8 @@ packages: pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - parcel-transformer-mdx@0.3.2: - resolution: {integrity: sha512-PRDDbMDkrC0b/0KXrbvvaHfBwF1EXfyDpLO+VYfHtIaDWWBdlO7L6ZWfQol8OXKUKxSqRbiZvEAjUog70j+JDw==} + parcel-transformer-mdx@0.3.3: + resolution: {integrity: sha512-m2DVy4GT5aFYXVAAkRcU4658A3uZYOiSmht44Csrw+Okp6kOA1GDEbHnk4+qBFwQ0eqqyQXHKNlCOJ2Wp+A5fQ==} engines: {parcel: ^2} parcel@2.12.0: @@ -2644,8 +2647,8 @@ packages: tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - tsx@4.15.7: - resolution: {integrity: sha512-u3H0iSFDZM3za+VxkZ1kywdCeHCn+8/qHQS1MNoO2sONDgD95HlWtt8aB23OzeTmFP9IU4/8bZUdg58Uu5J4cg==} + tsx@4.15.8: + resolution: {integrity: sha512-B8dMlbbkZPW0GQ7wafyy2TGXyoGYW0IURfWkM1h/WzgG5lxxRoeDU2VbMURmmjwGaCsoKROVTLmQQPe/s2TnLw==} engines: {node: '>=18.0.0'} hasBin: true @@ -3288,7 +3291,7 @@ snapshots: '@parcel/source-map': 2.1.1 '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) abortcontroller-polyfill: 1.7.5 base-x: 3.0.9 browserslist: 4.23.1 @@ -3316,7 +3319,7 @@ snapshots: '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@parcel/utils': 2.12.0 '@parcel/watcher': 2.4.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) transitivePeerDependencies: - '@swc/helpers' @@ -3393,7 +3396,7 @@ snapshots: '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@parcel/rust': 2.12.0 '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) transitivePeerDependencies: - '@swc/helpers' @@ -3413,7 +3416,7 @@ snapshots: '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 - '@swc/core': 1.6.3(@swc/helpers@0.5.11) + '@swc/core': 1.6.5(@swc/helpers@0.5.11) nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' @@ -3426,10 +3429,10 @@ snapshots: '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@parcel/logger': 2.12.0 '@parcel/node-resolver-core': 3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) - '@swc/core': 1.6.3(@swc/helpers@0.5.11) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@swc/core': 1.6.5(@swc/helpers@0.5.11) semver: 7.6.2 transitivePeerDependencies: - '@swc/helpers' @@ -3635,7 +3638,7 @@ snapshots: '@parcel/core': 2.12.0(@swc/helpers@0.5.11) '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) nullthrows: 1.1.1 transitivePeerDependencies: - '@swc/helpers' @@ -3648,7 +3651,7 @@ snapshots: '@parcel/rust': 2.12.0 '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@swc/helpers': 0.5.11 browserslist: 4.23.1 nullthrows: 1.1.1 @@ -3720,6 +3723,18 @@ snapshots: - '@parcel/core' - '@swc/helpers' + '@parcel/types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': + dependencies: + '@parcel/cache': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/diagnostic': 2.12.0 + '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/source-map': 2.1.1 + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + utility-types: 3.11.0 + transitivePeerDependencies: + - '@parcel/core' + '@parcel/types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': dependencies: '@parcel/cache': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) @@ -3727,7 +3742,7 @@ snapshots: '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@parcel/source-map': 2.1.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) utility-types: 3.11.0 transitivePeerDependencies: - '@parcel/core' @@ -3800,7 +3815,7 @@ snapshots: '@parcel/watcher-win32-ia32': 2.4.1 '@parcel/watcher-win32-x64': 2.4.1 - '@parcel/workers@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': + '@parcel/workers@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': dependencies: '@parcel/core': 2.12.0(@swc/helpers@0.5.11) '@parcel/diagnostic': 2.12.0 @@ -3809,6 +3824,8 @@ snapshots: '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 + transitivePeerDependencies: + - '@swc/helpers' '@remark-embedder/core@3.0.3': dependencies: @@ -3832,51 +3849,51 @@ snapshots: '@sindresorhus/is@5.6.0': {} - '@swc/core-darwin-arm64@1.6.3': + '@swc/core-darwin-arm64@1.6.5': optional: true - '@swc/core-darwin-x64@1.6.3': + '@swc/core-darwin-x64@1.6.5': optional: true - '@swc/core-linux-arm-gnueabihf@1.6.3': + '@swc/core-linux-arm-gnueabihf@1.6.5': optional: true - '@swc/core-linux-arm64-gnu@1.6.3': + '@swc/core-linux-arm64-gnu@1.6.5': optional: true - '@swc/core-linux-arm64-musl@1.6.3': + '@swc/core-linux-arm64-musl@1.6.5': optional: true - '@swc/core-linux-x64-gnu@1.6.3': + '@swc/core-linux-x64-gnu@1.6.5': optional: true - '@swc/core-linux-x64-musl@1.6.3': + '@swc/core-linux-x64-musl@1.6.5': optional: true - '@swc/core-win32-arm64-msvc@1.6.3': + '@swc/core-win32-arm64-msvc@1.6.5': optional: true - '@swc/core-win32-ia32-msvc@1.6.3': + '@swc/core-win32-ia32-msvc@1.6.5': optional: true - '@swc/core-win32-x64-msvc@1.6.3': + '@swc/core-win32-x64-msvc@1.6.5': optional: true - '@swc/core@1.6.3(@swc/helpers@0.5.11)': + '@swc/core@1.6.5(@swc/helpers@0.5.11)': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.8 + '@swc/types': 0.1.9 optionalDependencies: - '@swc/core-darwin-arm64': 1.6.3 - '@swc/core-darwin-x64': 1.6.3 - '@swc/core-linux-arm-gnueabihf': 1.6.3 - '@swc/core-linux-arm64-gnu': 1.6.3 - '@swc/core-linux-arm64-musl': 1.6.3 - '@swc/core-linux-x64-gnu': 1.6.3 - '@swc/core-linux-x64-musl': 1.6.3 - '@swc/core-win32-arm64-msvc': 1.6.3 - '@swc/core-win32-ia32-msvc': 1.6.3 - '@swc/core-win32-x64-msvc': 1.6.3 + '@swc/core-darwin-arm64': 1.6.5 + '@swc/core-darwin-x64': 1.6.5 + '@swc/core-linux-arm-gnueabihf': 1.6.5 + '@swc/core-linux-arm64-gnu': 1.6.5 + '@swc/core-linux-arm64-musl': 1.6.5 + '@swc/core-linux-x64-gnu': 1.6.5 + '@swc/core-linux-x64-musl': 1.6.5 + '@swc/core-win32-arm64-msvc': 1.6.5 + '@swc/core-win32-ia32-msvc': 1.6.5 + '@swc/core-win32-x64-msvc': 1.6.5 '@swc/helpers': 0.5.11 '@swc/counter@0.1.3': {} @@ -3885,7 +3902,7 @@ snapshots: dependencies: tslib: 2.6.3 - '@swc/types@0.1.8': + '@swc/types@0.1.9': dependencies: '@swc/counter': 0.1.3 @@ -3893,10 +3910,10 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@tech_query/node-toolkit@1.2.1(@types/node@18.19.38)': + '@tech_query/node-toolkit@1.2.1(@types/node@18.19.39)': dependencies: '@babel/core': 7.24.7 - '@types/node': 18.19.38 + '@types/node': 18.19.39 cross-spawn: 7.0.3 file-type: 16.5.4 fs-extra: 11.2.0 @@ -3932,7 +3949,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 18.19.38 + '@types/node': 18.19.39 optional: true '@types/hast@2.3.10': @@ -3947,7 +3964,7 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 18.19.38 + '@types/node': 18.19.39 optional: true '@types/make-fetch-happen@10.0.4': @@ -3966,14 +3983,14 @@ snapshots: '@types/node-fetch@2.6.11': dependencies: - '@types/node': 18.19.38 + '@types/node': 18.19.39 form-data: 4.0.0 - '@types/node@18.19.38': + '@types/node@18.19.39': dependencies: undici-types: 5.26.5 - '@types/node@20.14.8': + '@types/node@20.14.9': dependencies: undici-types: 5.26.5 optional: true @@ -3982,7 +3999,7 @@ snapshots: '@types/ssri@7.1.5': dependencies: - '@types/node': 18.19.38 + '@types/node': 18.19.39 '@types/turndown@5.0.4': {} @@ -4086,8 +4103,8 @@ snapshots: browserslist@4.23.1: dependencies: - caniuse-lite: 1.0.30001636 - electron-to-chromium: 1.4.806 + caniuse-lite: 1.0.30001638 + electron-to-chromium: 1.4.814 node-releases: 2.0.14 update-browserslist-db: 1.0.16(browserslist@4.23.1) @@ -4128,7 +4145,7 @@ snapshots: callsites@3.1.0: {} - caniuse-lite@1.0.30001636: {} + caniuse-lite@1.0.30001638: {} canvas@2.11.2(encoding@0.1.13): dependencies: @@ -4219,9 +4236,9 @@ snapshots: comma-separated-tokens@2.0.3: {} - commander-jsx@0.6.9(@types/node@18.19.38): + commander-jsx@0.6.9(@types/node@18.19.39): dependencies: - '@tech_query/node-toolkit': 1.2.1(@types/node@18.19.38) + '@tech_query/node-toolkit': 1.2.1(@types/node@18.19.39) tslib: 2.6.3 transitivePeerDependencies: - '@babel/plugin-transform-modules-commonjs' @@ -4356,7 +4373,7 @@ snapshots: '@swc/helpers': 0.5.11 '@types/turndown': 5.0.4 browser-fs-access: 0.35.0 - marked: 13.0.0 + marked: 13.0.1 regenerator-runtime: 0.14.1 turndown: 7.2.0 turndown-plugin-gfm: 1.0.2 @@ -4364,7 +4381,7 @@ snapshots: transitivePeerDependencies: - typescript - electron-to-chromium@1.4.806: {} + electron-to-chromium@1.4.814: {} element-internals-polyfill@1.3.11: {} @@ -4444,10 +4461,9 @@ snapshots: astring: 1.8.6 source-map: 0.7.4 - estree-util-value-to-estree@3.1.1: + estree-util-value-to-estree@3.1.2: dependencies: '@types/estree': 1.0.5 - is-plain-obj: 4.1.0 estree-util-visit@2.0.0: dependencies: @@ -5023,7 +5039,7 @@ snapshots: markdown-table@3.0.3: {} - marked@13.0.0: {} + marked@13.0.1: {} marked@4.3.0: {} @@ -5662,7 +5678,7 @@ snapshots: pako@1.0.11: {} - parcel-transformer-mdx@0.3.2(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11): + parcel-transformer-mdx@0.3.3(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11): dependencies: '@mapbox/rehype-prism': 0.9.0 '@mdx-js/mdx': 3.0.1 @@ -5882,7 +5898,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 estree-util-is-identifier-name: 3.0.0 - estree-util-value-to-estree: 3.1.1 + estree-util-value-to-estree: 3.1.2 toml: 3.0.0 unified: 11.0.5 yaml: 2.4.5 @@ -6140,7 +6156,7 @@ snapshots: tslib@2.6.3: {} - tsx@4.15.7: + tsx@4.15.8: dependencies: esbuild: 0.21.5 get-tsconfig: 4.7.5 @@ -6343,4 +6359,4 @@ snapshots: zx@8.1.3: optionalDependencies: '@types/fs-extra': 11.0.4 - '@types/node': 20.14.8 + '@types/node': 20.14.9 diff --git a/tool/index.tsx b/tool/index.tsx index 4778a80..af28bc2 100644 --- a/tool/index.tsx +++ b/tool/index.tsx @@ -2,10 +2,9 @@ import { Command, createCommand } from "commander-jsx"; import { basename, extname, join } from "path"; -import { fs } from "zx"; import { download, transform, upload } from "./core"; -import { changeExtensionName, makeAbsolutePath } from "./utility"; +import { changeExtensionName, makeAbsolutePath, readMeta } from "./utility"; Command.execute( , - process.argv.slice(2) + process.argv.slice(2), ); async function downloader( {}, sourceURL: string, - targetFile = basename(new URL(sourceURL).pathname) + targetFile = basename(new URL(sourceURL).pathname), ) { console.time(targetFile); @@ -53,7 +52,7 @@ async function downloader( async function transformer( {}, sourceFile: string, - targetFile = changeExtensionName(sourceFile, "md") + targetFile = changeExtensionName(sourceFile, "md"), ) { console.time(targetFile); @@ -74,13 +73,13 @@ type ArticleMeta = Record<"name" | "description" | "author" | "link", string>; async function batcher({}, metaFile: string, batchFolder = "downloads") { const rootFolder = makeAbsolutePath(batchFolder), - meta: ArticleMeta[] = await fs.readJSON(makeAbsolutePath(metaFile)); + meta: ArticleMeta[] = await readMeta(metaFile); for (const { name, link } of meta) try { const filePath = join( rootFolder, - `${name}${extname(new URL(link).pathname)}` + `${name}${extname(new URL(link).pathname)}`, ); const markdownPath = changeExtensionName(filePath, "md"); diff --git a/tool/utility.ts b/tool/utility.ts index ec5cb6d..c0c8228 100644 --- a/tool/utility.ts +++ b/tool/utility.ts @@ -4,6 +4,12 @@ import { packageOf } from "@tech_query/node-toolkit"; import { config } from "dotenv"; import { Window } from "happy-dom"; import { extname, isAbsolute, join } from "path"; +import { parse } from "yaml"; +import { fs } from "zx"; + +const window = new Window(); + +Reflect.set(globalThis, "document", window.document); // set `package.json`'s foldr as Current Working Directory const { path = process.cwd() } = packageOf(); @@ -16,6 +22,14 @@ export const makeAbsolutePath = (raw: string, cwd = path) => export const changeExtensionName = (raw: string, extension: string) => `${raw.slice(0, -extname(raw).length)}.${extension}`; -const window = new Window(); +export async function readMeta(filePath: string) { + filePath = makeAbsolutePath(filePath); -Reflect.set(globalThis, "document", window.document); + switch (extname(filePath).toLowerCase()) { + case ".json": + return fs.readJSON(filePath); + case ".yml": + case ".yaml": + return parse(filePath); + } +}