Compare commits

...

3 Commits

9 changed files with 145 additions and 126 deletions

View File

@ -1,6 +1,6 @@
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/poster/github-poster-dark.png">
<img alt="Yufan Blog Logo" src="docs/poster/github-poster.png">
<source media="(prefers-color-scheme: dark)" srcset="public/blog-poster-dark.png">
<img alt="Yufan Blog Logo" src="public/blog-poster.png">
</picture>
# Yufan Personal Weblog

228
package-lock.json generated
View File

@ -13,11 +13,11 @@
"@astrojs/rss": "^4.0.9",
"@zeabur/astro-adapter": "^1.0.6",
"astro": "^4.16.10",
"drizzle-orm": "^0.36.0",
"drizzle-orm": "^0.36.1",
"fuse.js": "^7.0.0",
"lodash": "^4.17.21",
"luxon": "^3.5.0",
"marked": "^14.1.3",
"marked": "^14.1.4",
"pg": "^8.13.1",
"qrcode-svg": "^1.1.0",
"ultrahtml": "^1.5.3"
@ -25,7 +25,7 @@
"devDependencies": {
"@astrojs/check": "^0.9.4",
"@biomejs/biome": "^1.9.4",
"@napi-rs/canvas": "^0.1.59",
"@napi-rs/canvas": "^0.1.60",
"@types/lodash": "^4.17.13",
"@types/luxon": "^3.4.2",
"@types/node": "^22.9.0",
@ -1726,30 +1726,30 @@
}
},
"node_modules/@napi-rs/canvas": {
"version": "0.1.59",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.59.tgz",
"integrity": "sha512-3vUtQ8DzYcz9xy86UUe8OfDiXNuuLB9zFAUs5N/I2GpkY/MWBJ2M7w5FqH380oC44IzYOWaOMLWCPfNZBsbBww==",
"version": "0.1.60",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.60.tgz",
"integrity": "sha512-2a/8ynCHVXu9JVTeT/RLrZy6kro3VHnxDqy7SyHIdzCUUwJoKuKNmDzXjD6bqE0W/07j1lFW7OVIAYSr1GiWuA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 10"
},
"optionalDependencies": {
"@napi-rs/canvas-android-arm64": "0.1.59",
"@napi-rs/canvas-darwin-arm64": "0.1.59",
"@napi-rs/canvas-darwin-x64": "0.1.59",
"@napi-rs/canvas-linux-arm-gnueabihf": "0.1.59",
"@napi-rs/canvas-linux-arm64-gnu": "0.1.59",
"@napi-rs/canvas-linux-arm64-musl": "0.1.59",
"@napi-rs/canvas-linux-x64-gnu": "0.1.59",
"@napi-rs/canvas-linux-x64-musl": "0.1.59",
"@napi-rs/canvas-win32-x64-msvc": "0.1.59"
"@napi-rs/canvas-android-arm64": "0.1.60",
"@napi-rs/canvas-darwin-arm64": "0.1.60",
"@napi-rs/canvas-darwin-x64": "0.1.60",
"@napi-rs/canvas-linux-arm-gnueabihf": "0.1.60",
"@napi-rs/canvas-linux-arm64-gnu": "0.1.60",
"@napi-rs/canvas-linux-arm64-musl": "0.1.60",
"@napi-rs/canvas-linux-x64-gnu": "0.1.60",
"@napi-rs/canvas-linux-x64-musl": "0.1.60",
"@napi-rs/canvas-win32-x64-msvc": "0.1.60"
}
},
"node_modules/@napi-rs/canvas-android-arm64": {
"version": "0.1.59",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.59.tgz",
"integrity": "sha512-p4rRL9KIDz57Z+gKLpemX36DB7fVVHmY4DtesMGrnjx4gSBUM2M7LNzbzf4o3oPZGDiHMY0vnvNHR4dKfszNeg==",
"version": "0.1.60",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.60.tgz",
"integrity": "sha512-KNOBYH3BUfUl5mo5wvrA2C+tJk0RnF4InkbsCoHdsxjhLjbriJKmu5DCFLaiG/c6WPfTcLRz73bGcP7boVeb6A==",
"cpu": [
"arm64"
],
@ -1764,9 +1764,9 @@
}
},
"node_modules/@napi-rs/canvas-darwin-arm64": {
"version": "0.1.59",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.59.tgz",
"integrity": "sha512-+8s06WxcM9ilv9PVOl57hvasbwKWMfrrNAYknqMPCn4jpc4XDcLbrM5LTZGhhptlv9jQ9DmHfZ978/xInsMYXw==",
"version": "0.1.60",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.60.tgz",
"integrity": "sha512-j6PA7RwRcx0409Jk3zz6beq3EtvwEgvN46FyKgFnSnzoV0ey2kM+KI2XTpG3tE/v4+fTnQenR+ysUBEgtWuUuA==",
"cpu": [
"arm64"
],
@ -1781,9 +1781,9 @@
}
},
"node_modules/@napi-rs/canvas-darwin-x64": {
"version": "0.1.59",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.59.tgz",
"integrity": "sha512-6kziJHjXdxduYK2L2uuwjEIYoPJednKq+C81MCm3fPobXE4HBKs0JGXwq3GkWNe340U340vmagwXiFi6muEy+g==",
"version": "0.1.60",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.60.tgz",
"integrity": "sha512-k0uBuShNK7QnOJlLhzxSsnSdJMkiU8VexqvuTEi0qABqKkHrYzD0ezUgtyvaVLOOoqxwGy1Hh5ZoEze5s9H/6g==",
"cpu": [
"x64"
],
@ -1798,9 +1798,9 @@
}
},
"node_modules/@napi-rs/canvas-linux-arm-gnueabihf": {
"version": "0.1.59",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.59.tgz",
"integrity": "sha512-eCkyS7jojNmaUPaVFdNjAyS0R3isrJtUfRf1vRP6K50GRuHso3vwQRbZBPKM71qHdjPDylfaQc5H6/M7epyD+w==",
"version": "0.1.60",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.60.tgz",
"integrity": "sha512-X2cQ6MIDZn5dMsy9jakASM6tvo2PGd3dq25gqrUzJeQIngQhLIWZtaYWza3md3M6HoQ4b/6W81OVQhgL/8uTkA==",
"cpu": [
"arm"
],
@ -1815,9 +1815,9 @@
}
},
"node_modules/@napi-rs/canvas-linux-arm64-gnu": {
"version": "0.1.59",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.59.tgz",
"integrity": "sha512-1u4++lbsolP1MAPViuDoZmgmDLKlV0iJnlHN2dfwgbu3t53P0l3jIT1oCIAiWil0OlrWtDF24JbY7LUUGH5aHg==",
"version": "0.1.60",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.60.tgz",
"integrity": "sha512-Ch02kQsetlXA4tfHfSJ63oyq9EbYB00yy/6hZ0/VYh60pLnopvsMt682+cM+rGBbgm14G+Heh3rDzJ6zBiiocw==",
"cpu": [
"arm64"
],
@ -1832,9 +1832,9 @@
}
},
"node_modules/@napi-rs/canvas-linux-arm64-musl": {
"version": "0.1.59",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.59.tgz",
"integrity": "sha512-eqevZ2kWPxeAnvhxl7U5tf6AiMnhlO4w2Hci79WQkfeirqQG6RRM4Jnxbh9iO3jkAnnOXmM4r+S3UrOcfIx1Rg==",
"version": "0.1.60",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.60.tgz",
"integrity": "sha512-7TpSJM4RnhHnAMrA/bDXitNVx9TV8ZLQ/47QHsNhdZ77yCgcEyLBRgUGvjsmnUpWIHhTOWTHDlGY47zHcQDfhA==",
"cpu": [
"arm64"
],
@ -1849,9 +1849,9 @@
}
},
"node_modules/@napi-rs/canvas-linux-x64-gnu": {
"version": "0.1.59",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.59.tgz",
"integrity": "sha512-F+T63RnLt0qYUXhbOpaome3vIWLW4xoQRmhTnkKDzOtBSnKVP7sCM6E5/5tByOFCR3fTj4ksMeeHy8zJScEExA==",
"version": "0.1.60",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.60.tgz",
"integrity": "sha512-46yi+fIUQ5SRg0Qs3L04zh67kk0uFJa2elWt/cS/7kEydu06uhjbJwW3123J9KShu2PKLlaZEqxJPksYpowoeA==",
"cpu": [
"x64"
],
@ -1866,9 +1866,9 @@
}
},
"node_modules/@napi-rs/canvas-linux-x64-musl": {
"version": "0.1.59",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.59.tgz",
"integrity": "sha512-HhUgpTGQUR2VRslEC5Idf6s0hhamJiVlEh2k3AG9XXOwX6fg0xXkqm84DPiOCLzsO5bqtJEo+rh03BUSDcf53g==",
"version": "0.1.60",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.60.tgz",
"integrity": "sha512-lTKiv5VnccFyZAd27AL6t69djDXQlfUgVE03PTM5HZUUy0h7sQKnrGh2mSMq58E3/vA0k65IFDqVqxyLjCpvlw==",
"cpu": [
"x64"
],
@ -1883,9 +1883,9 @@
}
},
"node_modules/@napi-rs/canvas-win32-x64-msvc": {
"version": "0.1.59",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.59.tgz",
"integrity": "sha512-bYMiZJsKPkU7HEoYI5E0alOSV1EkaigY4VEgGHPK9W/qGMmNFsxdbURQqa5h3zbhZTK5QRSdYYqowcTEYVIlug==",
"version": "0.1.60",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.60.tgz",
"integrity": "sha512-b7VjNQ3V/7G6VQqB8KvG9A06ENFZhxFMe4areUduipFwuJ0w35PGgOmYZHd0+iY9Nh7niECjgPRNDcrzpDlWXg==",
"cpu": [
"x64"
],
@ -1935,9 +1935,9 @@
}
},
"node_modules/@opendal/lib-darwin-arm64": {
"version": "0.47.6",
"resolved": "https://registry.npmjs.org/@opendal/lib-darwin-arm64/-/lib-darwin-arm64-0.47.6.tgz",
"integrity": "sha512-uFWHKYtyYDh98B4as1+Cna/IHhelZUaVhc3mSRW+D4KJmwXgh44QERimt99UiJ8HXuJ//QIqr2SH2P6p4+i9ew==",
"version": "0.47.7",
"resolved": "https://registry.npmjs.org/@opendal/lib-darwin-arm64/-/lib-darwin-arm64-0.47.7.tgz",
"integrity": "sha512-1upzDBXmr/lAheJCTn2flGfZDs4G3VpjmnLG/fvhU9FnAD3lU5n3MRtarO0bFxaEKCM/yT/jGFKeiGxICxgHZw==",
"cpu": [
"arm64"
],
@ -1952,9 +1952,9 @@
}
},
"node_modules/@opendal/lib-darwin-x64": {
"version": "0.47.6",
"resolved": "https://registry.npmjs.org/@opendal/lib-darwin-x64/-/lib-darwin-x64-0.47.6.tgz",
"integrity": "sha512-DKBjU3+flTNVpZouiI5YCBenpzeRQJkBNJyORvNHbDWFGs1l8UjkoLIkwkzHyDyrv7h2MMtZ2DP3sMgr6MQxUg==",
"version": "0.47.7",
"resolved": "https://registry.npmjs.org/@opendal/lib-darwin-x64/-/lib-darwin-x64-0.47.7.tgz",
"integrity": "sha512-QdKDI80YzC+peWRg7pa4OoTb1P7XFaRWwBTbZTMTlKZKdg4d3A2dUu1POa0kPKDkuMsHNTZciXBPERzHjIGY4Q==",
"cpu": [
"x64"
],
@ -1969,9 +1969,9 @@
}
},
"node_modules/@opendal/lib-linux-arm64-gnu": {
"version": "0.47.6",
"resolved": "https://registry.npmjs.org/@opendal/lib-linux-arm64-gnu/-/lib-linux-arm64-gnu-0.47.6.tgz",
"integrity": "sha512-NHb/GXWOeE+B+ymtsEbwJNrm1f+YoDEtkpVnZhN0LpA1wzHA8jYlEnWpjZfhn/AYOzXhfBYbNjGu9P83vUgsJQ==",
"version": "0.47.7",
"resolved": "https://registry.npmjs.org/@opendal/lib-linux-arm64-gnu/-/lib-linux-arm64-gnu-0.47.7.tgz",
"integrity": "sha512-V/XcdfJn6VfULTtzCiNQXsoy7suELbFK/zdIfQNk78IlpdjOoh2cw/hcUZXH1K03cJ+DhHBnUiQk7AEg8pWgdg==",
"cpu": [
"arm64"
],
@ -1986,9 +1986,9 @@
}
},
"node_modules/@opendal/lib-linux-arm64-musl": {
"version": "0.47.6",
"resolved": "https://registry.npmjs.org/@opendal/lib-linux-arm64-musl/-/lib-linux-arm64-musl-0.47.6.tgz",
"integrity": "sha512-I+G24lJczrODCiElTS84By227aGB2OmFsT3bBKK+K4vwD5TgZMAN2+UPbjfjdspXd0mf1JYCvG8IlWz2I8qk5A==",
"version": "0.47.7",
"resolved": "https://registry.npmjs.org/@opendal/lib-linux-arm64-musl/-/lib-linux-arm64-musl-0.47.7.tgz",
"integrity": "sha512-ArG8c8dQHVhAXyMilZuubIRfK8wttqdpSaSHy6ao6efro70AWBTnzSK5fuutCzOvgqHnRQuaJti1BUwnLr+Hnw==",
"cpu": [
"arm64"
],
@ -2003,9 +2003,9 @@
}
},
"node_modules/@opendal/lib-linux-x64-gnu": {
"version": "0.47.6",
"resolved": "https://registry.npmjs.org/@opendal/lib-linux-x64-gnu/-/lib-linux-x64-gnu-0.47.6.tgz",
"integrity": "sha512-i47klDtqT6h7cITvULNgPSa66fmvQbqFNxr219kJrOJREpRUgQt2/5eqnppivJRmB0Ji7YlBSGYkmVgctqqi7w==",
"version": "0.47.7",
"resolved": "https://registry.npmjs.org/@opendal/lib-linux-x64-gnu/-/lib-linux-x64-gnu-0.47.7.tgz",
"integrity": "sha512-oFEVTUpdFIjlxJ3cP7eqN6Wfq9kPB3PvfCiBIPvGbD8tK+6TqOOh7FO88NxBrBWoBhK3BvLvjRUJ6jWoCtlbtw==",
"cpu": [
"x64"
],
@ -2020,9 +2020,9 @@
}
},
"node_modules/@opendal/lib-win32-arm64-msvc": {
"version": "0.47.6",
"resolved": "https://registry.npmjs.org/@opendal/lib-win32-arm64-msvc/-/lib-win32-arm64-msvc-0.47.6.tgz",
"integrity": "sha512-YrwklApOgjvXq2QG2G+V4WvBc+w2hXFDsnnJNQS3aOfpUY8GO6SB9ROon9PQ3U8SQmzgJ4C04mQJok7vwSxfOQ==",
"version": "0.47.7",
"resolved": "https://registry.npmjs.org/@opendal/lib-win32-arm64-msvc/-/lib-win32-arm64-msvc-0.47.7.tgz",
"integrity": "sha512-Dq6goHu5l5HKPbYa2MWt2n8iKjbvyH8dhw3BgO/2caTrFsI2zFHLQONglBpVKhh6rtE11ivLMLR/ydElGmxFUg==",
"cpu": [
"arm64"
],
@ -2037,9 +2037,9 @@
}
},
"node_modules/@opendal/lib-win32-x64-msvc": {
"version": "0.47.6",
"resolved": "https://registry.npmjs.org/@opendal/lib-win32-x64-msvc/-/lib-win32-x64-msvc-0.47.6.tgz",
"integrity": "sha512-QlTvmIqSL8tqUyg4Tb89oV7LzDrkacVV/d9IEFi1qlXWTq9yxvBRd5VMG6VYmqhHqccLB2p128jVO2uiWGpnrQ==",
"version": "0.47.7",
"resolved": "https://registry.npmjs.org/@opendal/lib-win32-x64-msvc/-/lib-win32-x64-msvc-0.47.7.tgz",
"integrity": "sha512-RCGSFV/mGNLGyzV3PWkgzTn50CftHc7oTdfZ+6NJnKuDT7pKmEJNIqpjhL1GGf/QnPPMgpEC5fQSW6ennt8EVg==",
"cpu": [
"x64"
],
@ -2593,14 +2593,14 @@
"license": "MIT"
},
"node_modules/@volar/kit": {
"version": "2.4.8",
"resolved": "https://registry.npmjs.org/@volar/kit/-/kit-2.4.8.tgz",
"integrity": "sha512-HY+HTP9sSqj0St9j1N8l85YMu4w0GxCtelzkzZWuq2GVz0+QRYwlyc0mPH7749OknUAdtsdozBR5Ecez55Ncug==",
"version": "2.4.9",
"resolved": "https://registry.npmjs.org/@volar/kit/-/kit-2.4.9.tgz",
"integrity": "sha512-9EKvaON/yd9aUXLTVjipK5iBARTml5CLS2C4DYrXUccXrZ64OZKmhg7ShIed1xVrTujVZViG8ejpPlixHMpghg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@volar/language-service": "2.4.8",
"@volar/typescript": "2.4.8",
"@volar/language-service": "2.4.9",
"@volar/typescript": "2.4.9",
"typesafe-path": "^0.2.2",
"vscode-languageserver-textdocument": "^1.0.11",
"vscode-uri": "^3.0.8"
@ -2610,25 +2610,25 @@
}
},
"node_modules/@volar/language-core": {
"version": "2.4.8",
"resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.8.tgz",
"integrity": "sha512-K/GxMOXGq997bO00cdFhTNuR85xPxj0BEEAy+BaqqayTmy9Tmhfgmq2wpJcVspRhcwfgPoE2/mEJa26emUhG/g==",
"version": "2.4.9",
"resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.9.tgz",
"integrity": "sha512-t++GIrUeQnKCieZdY9e+Uar2VmTqOE4Z9KcEcdSHKmKZPuqpbbWow1YKe1i3HpU2s1JqLRVM8y/n87WKXyxJAg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@volar/source-map": "2.4.8"
"@volar/source-map": "2.4.9"
}
},
"node_modules/@volar/language-server": {
"version": "2.4.8",
"resolved": "https://registry.npmjs.org/@volar/language-server/-/language-server-2.4.8.tgz",
"integrity": "sha512-3Jd9Y+0Zhwi/zfdRxqoNrm7AxP6lgTsw4Ni9r6eCyWYGVsTnpVwGmlcbiZyDja6anoKZxnaeDatX1jkaHHWaRQ==",
"version": "2.4.9",
"resolved": "https://registry.npmjs.org/@volar/language-server/-/language-server-2.4.9.tgz",
"integrity": "sha512-5YOHMLJqQL8adKYUctePGA9ReZA2FQXS2PjDnNjMq/mwtIgRGq6lqRtgq8PBeZt5NK4Xmxq8p7HafqOtqTQ4Hg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@volar/language-core": "2.4.8",
"@volar/language-service": "2.4.8",
"@volar/typescript": "2.4.8",
"@volar/language-core": "2.4.9",
"@volar/language-service": "2.4.9",
"@volar/typescript": "2.4.9",
"path-browserify": "^1.0.1",
"request-light": "^0.7.0",
"vscode-languageserver": "^9.0.1",
@ -2638,33 +2638,33 @@
}
},
"node_modules/@volar/language-service": {
"version": "2.4.8",
"resolved": "https://registry.npmjs.org/@volar/language-service/-/language-service-2.4.8.tgz",
"integrity": "sha512-9y8X4cdUxXmy4s5HoB8jmOpDIZG7XVFu4iEFvouhZlJX2leCq0pbq5h7dhA+O8My0fne3vtE6cJ4t9nc+8UBZw==",
"version": "2.4.9",
"resolved": "https://registry.npmjs.org/@volar/language-service/-/language-service-2.4.9.tgz",
"integrity": "sha512-PvraIeBkFcUVhNDMEWNuB0wsN3WMf3hzswaLrpkPMgntTdbiczjsvHIfVR7KTD9SPHka79bYB7CIFlFgvyHV2A==",
"dev": true,
"license": "MIT",
"dependencies": {
"@volar/language-core": "2.4.8",
"@volar/language-core": "2.4.9",
"vscode-languageserver-protocol": "^3.17.5",
"vscode-languageserver-textdocument": "^1.0.11",
"vscode-uri": "^3.0.8"
}
},
"node_modules/@volar/source-map": {
"version": "2.4.8",
"resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.8.tgz",
"integrity": "sha512-jeWJBkC/WivdelMwxKkpFL811uH/jJ1kVxa+c7OvG48DXc3VrP7pplSWPP2W1dLMqBxD+awRlg55FQQfiup4cA==",
"version": "2.4.9",
"resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.9.tgz",
"integrity": "sha512-UGE+WgJwk64OcfBwBOBKIzmF+uNx4dC5GzOvaVsHbTBp/IVqeTVsGiO5CwBAt6l3vVXYbMuddG2DU8FEnBRxTg==",
"dev": true,
"license": "MIT"
},
"node_modules/@volar/typescript": {
"version": "2.4.8",
"resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.8.tgz",
"integrity": "sha512-6xkIYJ5xxghVBhVywMoPMidDDAFT1OoQeXwa27HSgJ6AiIKRe61RXLoik+14Z7r0JvnblXVsjsRLmCr42SGzqg==",
"version": "2.4.9",
"resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.9.tgz",
"integrity": "sha512-Zmh3Bq8CFD6OANKYsi4vs/l7togwfjFH0kgrT12uAsDff2AJQjbEUKTVUnxmHbnbH2B9ja7Lb6Mu/Wj9wBuJlg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@volar/language-core": "2.4.8",
"@volar/language-core": "2.4.9",
"path-browserify": "^1.0.1",
"vscode-uri": "^3.0.8"
}
@ -3270,9 +3270,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001677",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz",
"integrity": "sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==",
"version": "1.0.30001678",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001678.tgz",
"integrity": "sha512-RR+4U/05gNtps58PEBDZcPWTgEO2MBeoPZ96aQcjmfkBWRIDfN451fW2qyDA9/+HohLLIL5GqiMwA+IB1pWarw==",
"funding": [
{
"type": "opencollective",
@ -3618,9 +3618,9 @@
}
},
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"version": "7.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz",
"integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -3762,9 +3762,9 @@
"license": "MIT"
},
"node_modules/drizzle-orm": {
"version": "0.36.0",
"resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.36.0.tgz",
"integrity": "sha512-6BETYPdKSR7cDHC0ZfqZk2VrKJ8n/Rfd3ajFPsAbc69gi87nwZ6oBA2wUGMELHA0tQE4kUKN0Ds00LUZQ6Z69A==",
"version": "0.36.1",
"resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.36.1.tgz",
"integrity": "sha512-F4hbimnMEhyWzDowQB4xEuVJJWXLHZYD7FYwvo8RImY+N7pStGqsbfmT95jDbec1s4qKmQbiuxEDZY90LRrfIw==",
"license": "Apache-2.0",
"peerDependencies": {
"@aws-sdk/client-rds-data": ">=3",
@ -3903,9 +3903,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
"version": "1.5.52",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.52.tgz",
"integrity": "sha512-xtoijJTZ+qeucLBDNztDOuQBE1ksqjvNjvqFoST3nGC7fSpqJ+X6BdTBaY5BHG+IhWWmpc6b/KfpeuEDupEPOQ==",
"version": "1.5.54",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.54.tgz",
"integrity": "sha512-TX6vHleisn5i/4pekTyy1sdoLXQNy8VFvBK/fJRXSyp7GUO27KioLTG0Qo5wFjM3ZF4ryKinDo4m+IJ+rwUWSw==",
"license": "ISC"
},
"node_modules/emmet": {
@ -5363,9 +5363,9 @@
}
},
"node_modules/marked": {
"version": "14.1.3",
"resolved": "https://registry.npmjs.org/marked/-/marked-14.1.3.tgz",
"integrity": "sha512-ZibJqTULGlt9g5k4VMARAktMAjXoVnnr+Y3aCqW1oDftcV4BA3UmrBifzXoZyenHRk75csiPu9iwsTj4VNBT0g==",
"version": "14.1.4",
"resolved": "https://registry.npmjs.org/marked/-/marked-14.1.4.tgz",
"integrity": "sha512-vkVZ8ONmUdPnjCKc5uTRvmkRbx4EAi2OkTOXmfTDhZz3OFqMNBM1oTTWwTr4HY4uAEojhzPf+Fy8F1DWa3Sndg==",
"license": "MIT",
"bin": {
"marked": "bin/marked.js"
@ -6702,22 +6702,22 @@
}
},
"node_modules/opendal": {
"version": "0.47.6",
"resolved": "https://registry.npmjs.org/opendal/-/opendal-0.47.6.tgz",
"integrity": "sha512-xJNUClxB+qk/jHCjuLJUq2R5hOSxb8XDUbFae2ySCEKiP6higpE5Lt2iP958u8qVDJ4IcdBksJJZSTVMnlkwxQ==",
"version": "0.47.7",
"resolved": "https://registry.npmjs.org/opendal/-/opendal-0.47.7.tgz",
"integrity": "sha512-pgp0fZTITdStnBnh0nQRZWZF3kCUyu+TxOZepC2ScZ9bRVOtkz2GyXHndkxZ6g+ohI5v7HCDh/1Ixd8btMMjtw==",
"dev": true,
"license": "Apache-2.0",
"engines": {
"node": ">= 10"
},
"optionalDependencies": {
"@opendal/lib-darwin-arm64": "0.47.6",
"@opendal/lib-darwin-x64": "0.47.6",
"@opendal/lib-linux-arm64-gnu": "0.47.6",
"@opendal/lib-linux-arm64-musl": "0.47.6",
"@opendal/lib-linux-x64-gnu": "0.47.6",
"@opendal/lib-win32-arm64-msvc": "0.47.6",
"@opendal/lib-win32-x64-msvc": "0.47.6"
"@opendal/lib-darwin-arm64": "0.47.7",
"@opendal/lib-darwin-x64": "0.47.7",
"@opendal/lib-linux-arm64-gnu": "0.47.7",
"@opendal/lib-linux-arm64-musl": "0.47.7",
"@opendal/lib-linux-x64-gnu": "0.47.7",
"@opendal/lib-win32-arm64-msvc": "0.47.7",
"@opendal/lib-win32-x64-msvc": "0.47.7"
}
},
"node_modules/ora": {

View File

@ -46,11 +46,11 @@
"@astrojs/rss": "^4.0.9",
"@zeabur/astro-adapter": "^1.0.6",
"astro": "^4.16.10",
"drizzle-orm": "^0.36.0",
"drizzle-orm": "^0.36.1",
"fuse.js": "^7.0.0",
"lodash": "^4.17.21",
"luxon": "^3.5.0",
"marked": "^14.1.3",
"marked": "^14.1.4",
"pg": "^8.13.1",
"qrcode-svg": "^1.1.0",
"ultrahtml": "^1.5.3"
@ -58,7 +58,7 @@
"devDependencies": {
"@astrojs/check": "^0.9.4",
"@biomejs/biome": "^1.9.4",
"@napi-rs/canvas": "^0.1.59",
"@napi-rs/canvas": "^0.1.60",
"@types/lodash": "^4.17.13",
"@types/luxon": "^3.4.2",
"@types/node": "^22.9.0",

View File

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 103 KiB

View File

Before

Width:  |  Height:  |  Size: 128 KiB

After

Width:  |  Height:  |  Size: 128 KiB

14
public/logo-dark.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 19 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -2,6 +2,7 @@
import FeaturePost from '@/components/page/post/FeaturePost.astro';
import type { Post } from '@/helpers/schema';
import options from '@/options';
import { DateTime } from 'luxon';
interface Props {
posts: Post[];
@ -16,8 +17,8 @@ const historicalPosts = (): Post[] => {
return [];
}
const now = new Date();
const radical = now.getMonth() + now.getDate();
const now = DateTime.now().setZone(options.settings.timeZone);
const radical = now.month + now.day;
return [posts[offset + radical - 1], posts[offset + radical + 43 - 1], posts[offset + radical + 43 * 2 - 1]];
};

View File

@ -39,5 +39,9 @@ published: true
1. 博客名称:且听书吟
2. 博客简介:诗与梦想的远方
3. 博客网址https://yufan.me
4. 博客 LOGOhttps://yufan.me/logo.svg
5. 博客 Bannerhttps://github.com/syhily/yufan.me/blob/astro/docs/poster/github-poster.png
4. 博客 LOGO
* 浅色:<a href="https://yufan.me/logo.svg" target="_blank">https://yufan.me/logo.svg</a>
* 深色:<a href="https://yufan.me/logo-dark.svg" target="_blank">https://yufan.me/logo-dark.svg</a>
5. 博客 Banner
* 浅色:<a href="https://yufan.me/blog-poster.png" target="_blank">https://yufan.me/blog-poster.png</a>
* 深色:<a href="https://yufan.me/blog-poster-dark.png" target="_blank">https://yufan.me/blog-poster-dark.png</a>