Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2024-10-24 17:31:00 +08:00
commit 91bb18203d
10 changed files with 124 additions and 108 deletions

View file

@ -14,10 +14,10 @@ Install pnpm: `npm install -g pnpm@9.12.1`
Set the Electron mirror environment variable and install Electron:
* macOS/Linux: `ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@v32.2.0 -D`
* macOS/Linux: `ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@v32.2.2 -D`
* Windows:
* `SET ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/`
* `pnpm install electron@v32.2.0 -D`
* `pnpm install electron@v32.2.2 -D`
NPM mirror:
@ -28,7 +28,7 @@ NPM mirror:
On the desktop, go to the app folder to run:
* `pnpm install electron@v32.2.0 -D`
* `pnpm install electron@v32.2.2 -D`
* `pnpm run dev`
* `pnpm run start`

View file

@ -16,11 +16,11 @@
* macOS/Linux:
```
ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@v32.2.0 -D
ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@v32.2.2 -D
```
* Windows:
* `SET ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/`
* `pnpm install electron@v32.2.0 -D`
* `pnpm install electron@v32.2.2 -D`
NPM 镜像:
@ -30,7 +30,7 @@ NPM 镜像:
桌面端进入 app 文件夹运行:
* `pnpm install electron@v32.2.0 -D`
* `pnpm install electron@v32.2.2 -D`
* `pnpm run dev`
* `pnpm run start`

View file

@ -45,27 +45,51 @@ jobs:
arch=("x86_64")
url="https://b3log.org/siyuan"
license=("AGPL-3.0-only")
_pkgname=siyuan-\${pkgver}-linux.AppImage
noextract=(siyuan-\${pkgver}-linux.AppImage)
options=("!strip" "!debug")
depends=("fuse2")
optdepends=('pandoc: docx export')
source=("https://github.com/siyuan-note/siyuan/releases/download/v\${pkgver}/siyuan-\${pkgver}-linux.AppImage")
sha256sums=('SKIP')
_installdir=/opt/appimages
_pkgname=siyuan-\${pkgver}-linux.AppImage
noextract=("\${_pkgname}")
prepare() {
chmod a+x \${_pkgname}
./\${_pkgname} --appimage-extract >/dev/null
sed -i "s+AppRun+\${_installdir}/siyuan.AppImage+" "squashfs-root/siyuan.desktop"
sed -i "s+^Icon=.*+Icon=siyuan-bin+" "squashfs-root/siyuan.desktop"
chmod +x "\${_pkgname}"
./"\${_pkgname}" --appimage-extract > /dev/null
}
build() {
# Adjust .desktop so it will work autside of AppImage container
sed -i \\
-e "s|Exec=AppRun|Exec=/opt/\${pkgname}/\${pkgname}.AppImage|" \\
-e "s+^Icon=.*+Icon=siyuan-bin+" \\
"squashfs-root/siyuan.desktop"
# Fix permissions; .AppImage permissions are 700 for all directories
chmod -R a-x+rX squashfs-root/usr
}
package() {
install -Dm755 \${_pkgname} "\${pkgdir}/\${_installdir}/siyuan.AppImage"
install -Dm644 "squashfs-root/resources/stage/icon.png" "\${pkgdir}/usr/share/icons/hicolor/512x512/apps/siyuan-bin.png"
install -Dm644 "squashfs-root/siyuan.desktop" "\${pkgdir}/usr/share/applications/siyuan-bin.desktop"
# AppImage
install -Dm755 "\${srcdir}/\${_pkgname}" "\${pkgdir}/opt/\${pkgname}/\${pkgname}.AppImage"
install -Dm644 "\${srcdir}/squashfs-root/LICENSE" "\${pkgdir}/opt/\${pkgname}/LICENSE"
# Desktop file
install -Dm644 "\${srcdir}/squashfs-root/siyuan.desktop" \\
"\${pkgdir}/usr/share/applications/siyuan.desktop"
# Icon images
install -Dm644 "squashfs-root/resources/stage/icon.png" \\
"\${pkgdir}/usr/share/icons/hicolor/512x512/apps/siyuan-bin.png"
# Symlink executable
install -dm755 "\${pkgdir}/usr/bin"
ln -s "/opt/\${pkgname}/\${pkgname}.AppImage" "\${pkgdir}/usr/bin/siyuan"
# Symlink license
install -dm755 "\${pkgdir}/usr/share/licenses/\${pkgname}/"
ln -s "/opt/\${pkgname}/LICENSE" "\${pkgdir}/usr/share/licenses/\${pkgname}"
}
EOF

View file

@ -6,7 +6,7 @@
"id": "20200924100744-br924ar",
"title": "Assets",
"type": "doc",
"updated": "20231110112758"
"updated": "20241024163243"
},
"Children": [
{
@ -624,7 +624,7 @@
"HeadingLevel": 2,
"Properties": {
"id": "20220503122349-eacedlu",
"updated": "20220503122357"
"updated": "20241024163243"
},
"Children": [
{
@ -667,7 +667,7 @@
"ListData": {},
"Properties": {
"id": "20220503122349-o26mvnq",
"updated": "20220715105117"
"updated": "20241024163243"
},
"Children": [
{
@ -679,7 +679,7 @@
},
"Properties": {
"id": "20220503122349-192fehc",
"updated": "20220503122616"
"updated": "20241024163243"
},
"Children": [
{
@ -687,12 +687,12 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20220503122349-ye6haas",
"updated": "20220503122616"
"updated": "20241024163243"
},
"Children": [
{
"Type": "NodeText",
"Data": "When deleting the notebook, in order to ensure that cross-notebook asset references work properly, the assets under the notebook will be copied to the global assets in batches"
"Data": "When deleting the doc, the assets referenced by the doc will be copied to the global assets in batches to ensure the normal operation of cross-notebook asset references"
}
]
}

View file

@ -6,7 +6,7 @@
"id": "20200915214115-42b8zma",
"title": "资源文件",
"type": "doc",
"updated": "20231110112936"
"updated": "20241024163136"
},
"Children": [
{
@ -626,7 +626,7 @@
"HeadingLevel": 2,
"Properties": {
"id": "20210615102657-kampx8a",
"updated": "20220503121605"
"updated": "20241024163136"
},
"Children": [
{
@ -669,7 +669,7 @@
"ListData": {},
"Properties": {
"id": "20220503121213-afjyt05",
"updated": "20220715105016"
"updated": "20241024163136"
},
"Children": [
{
@ -681,7 +681,7 @@
},
"Properties": {
"id": "20220503121214-haxyvyt",
"updated": "20220503121401"
"updated": "20241024163136"
},
"Children": [
{
@ -689,20 +689,12 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20220503121214-cmqtvby",
"updated": "20220503121401"
"updated": "20241024163136"
},
"Children": [
{
"Type": "NodeText",
"Data": "删除该笔记本时,为保证跨笔记本资源文件引用正常工作,该笔记本下的资源文件会被批量复制到全局 "
},
{
"Type": "NodeText",
"Data": "assets"
},
{
"Type": "NodeText",
"Data": " 中"
"Data": "删除该笔记时,为保证跨笔记本资源文件引用正常工作,该笔记引用的资源文件会被批量复制到全局 assets 中"
}
]
}

View file

@ -5,7 +5,8 @@
"Properties": {
"id": "20211226123038-4umgpxy",
"title": "資料文件",
"updated": "20231110112927"
"type": "doc",
"updated": "20241024163151"
},
"Children": [
{
@ -609,7 +610,7 @@
"HeadingLevel": 2,
"Properties": {
"id": "20220503122338-a69glac",
"updated": "20220715092913"
"updated": "20241024163151"
},
"Children": [
{
@ -652,7 +653,7 @@
"ListData": {},
"Properties": {
"id": "20220503122338-jmr7c2k",
"updated": "20220715105038"
"updated": "20241024163151"
},
"Children": [
{
@ -664,7 +665,7 @@
},
"Properties": {
"id": "20220503122338-4zg71qe",
"updated": "20220715092936"
"updated": "20241024163151"
},
"Children": [
{
@ -672,20 +673,12 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20220503122338-t6apzrh",
"updated": "20220715092936"
"updated": "20241024163151"
},
"Children": [
{
"Type": "NodeText",
"Data": "刪除該筆記本時,為保證跨筆記本資料文件引用正常工作,該筆記本下的資料文件會被批量複製到全域 "
},
{
"Type": "NodeText",
"Data": "assets"
},
{
"Type": "NodeText",
"Data": " 中"
"Data": "刪除該筆記時,為確保跨筆記本資源檔案引用正常運作,該筆記引用的資源檔案會被批次複製到全域 assets 中"
}
]
}

View file

@ -7,7 +7,7 @@
"id": "20240530101000-1m5un7l",
"title": "アセット",
"type": "doc",
"updated": "20240530101000"
"updated": "20241024163314"
},
"Children": [
{
@ -670,7 +670,7 @@
"Properties": {
"ID": "20240530101000-nmkttsp",
"id": "20240530101000-e91yggl",
"updated": "20240530101000"
"updated": "20241024163314"
},
"Children": [
{
@ -725,7 +725,7 @@
"Properties": {
"ID": "20240530101000-ycli2ph",
"id": "20240530101000-pcecoaa",
"updated": "20240530101000"
"updated": "20241024163314"
},
"Children": [
{
@ -738,21 +738,20 @@
"Properties": {
"ID": "20240530101000-x0auq2n",
"id": "20240530101000-of4sc87",
"updated": "20240530101000"
"updated": "20241024163314"
},
"Children": [
{
"ID": "20240530101000-pu6ton7",
"Type": "NodeParagraph",
"Properties": {
"ID": "20240530101000-mw4xwas",
"id": "20240530101000-pu6ton7",
"updated": "20240530101000"
"updated": "20241024163314"
},
"Children": [
{
"Type": "NodeText",
"Data": "ノートブックを削除する際にノートブック間のアセットファイルの参照を正常に保つため、ノートブック内のアセットファイルがすべてグローバルのアセットフォルダにコピーされます"
"Data": "ノートが削除されると、ノートブック間のリソース ファイル参照が適切に機能するように、ノートによって参照されるリソース ファイルがバッチでグローバル アセットにコピーされます"
}
]
}

View file

@ -56,7 +56,7 @@
"clean-webpack-plugin": "^4.0.0",
"css-loader": "^6.7.1",
"dayjs": "^1.11.5",
"electron": "32.2.0",
"electron": "32.2.2",
"electron-builder": "24.13.3",
"encoding": "^0.1.13",
"esbuild-loader": "^3.0.1",

79
app/pnpm-lock.yaml generated
View file

@ -10,7 +10,7 @@ importers:
dependencies:
'@electron/remote':
specifier: ^2.1.2
version: 2.1.2(electron@32.2.0)
version: 2.1.2(electron@32.2.2)
devDependencies:
'@types/node':
specifier: ^18.13.0
@ -26,37 +26,37 @@ importers:
version: 2.19.0
clean-webpack-plugin:
specifier: ^4.0.0
version: 4.0.0(webpack@5.95.0(webpack-cli@4.10.0))
version: 4.0.0(webpack@5.95.0)
css-loader:
specifier: ^6.7.1
version: 6.7.1(webpack@5.95.0(webpack-cli@4.10.0))
version: 6.7.1(webpack@5.95.0)
dayjs:
specifier: ^1.11.5
version: 1.11.5
electron:
specifier: 32.2.0
version: 32.2.0
specifier: 32.2.2
version: 32.2.2
electron-builder:
specifier: 24.13.3
version: 24.13.3(electron-builder-squirrel-windows@25.0.5(dmg-builder@24.13.3))
version: 24.13.3(electron-builder-squirrel-windows@25.0.5)
encoding:
specifier: ^0.1.13
version: 0.1.13
esbuild-loader:
specifier: ^3.0.1
version: 3.0.1(webpack@5.95.0(webpack-cli@4.10.0))
version: 3.0.1(webpack@5.95.0)
eslint:
specifier: ^8.19.0
version: 8.19.0
file-loader:
specifier: ^6.2.0
version: 6.2.0(webpack@5.95.0(webpack-cli@4.10.0))
version: 6.2.0(webpack@5.95.0)
html-loader:
specifier: ^2.1.2
version: 2.1.2(webpack@5.95.0(webpack-cli@4.10.0))
version: 2.1.2(webpack@5.95.0)
html-webpack-plugin:
specifier: ^5.5.0
version: 5.5.0(webpack@5.95.0(webpack-cli@4.10.0))
version: 5.5.0(webpack@5.95.0)
iconv-lite:
specifier: ^0.6.3
version: 0.6.3
@ -65,7 +65,7 @@ importers:
version: 2.3.2
mini-css-extract-plugin:
specifier: 2.7.6
version: 2.7.6(webpack@5.95.0(webpack-cli@4.10.0))
version: 2.7.6(webpack@5.95.0)
path-browserify:
specifier: ^1.0.1
version: 1.0.1
@ -77,7 +77,7 @@ importers:
version: 1.53.0
sass-loader:
specifier: ^12.6.0
version: 12.6.0(sass@1.53.0)(webpack@5.95.0(webpack-cli@4.10.0))
version: 12.6.0(sass@1.53.0)(webpack@5.95.0)
typescript:
specifier: ^4.7.4
version: 4.7.4
@ -762,6 +762,7 @@ packages:
boolean@3.2.0:
resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
brace-expansion@1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
@ -1121,8 +1122,8 @@ packages:
electron-to-chromium@1.5.39:
resolution: {integrity: sha512-4xkpSR6CjuiaNyvwiWDI85N9AxsvbPawB8xc7yzLPonYTuP19BVgYweKyUMFtHEZgIcHWMt1ks5Cqx2m+6/Grg==}
electron@32.2.0:
resolution: {integrity: sha512-Xy82QBQrEiQysoxsv6lnhHAcWNNe6vV6QqH3OPFXhEj/T9oAsBHEhZuuYHINSSsUE7zRSj+J9sNwJYOjisT0Vw==}
electron@32.2.2:
resolution: {integrity: sha512-c7TRE42JcgEmJ4elJyCdKk/2os0UX7YMkRDeXBkxFEoM34iX1/2x+c5T9PgeroKz8FEG7omRU5TvjulqVtXvdw==}
engines: {node: '>= 12.20.55'}
hasBin: true
@ -2812,9 +2813,9 @@ snapshots:
- bluebird
- supports-color
'@electron/remote@2.1.2(electron@32.2.0)':
'@electron/remote@2.1.2(electron@32.2.2)':
dependencies:
electron: 32.2.0
electron: 32.2.2
'@electron/universal@1.5.1':
dependencies:
@ -3249,17 +3250,17 @@ snapshots:
'@webassemblyjs/ast': 1.12.1
'@xtuc/long': 4.2.2
'@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0))(webpack@5.95.0(webpack-cli@4.10.0))':
'@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.95.0)':
dependencies:
webpack: 5.95.0(webpack-cli@4.10.0)
webpack-cli: 4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0)
'@webpack-cli/info@1.5.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0))':
'@webpack-cli/info@1.5.0(webpack-cli@4.10.0)':
dependencies:
envinfo: 7.8.1
webpack-cli: 4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0)
'@webpack-cli/serve@1.7.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0))':
'@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)':
dependencies:
webpack-cli: 4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0)
@ -3346,7 +3347,7 @@ snapshots:
app-builder-bin@5.0.0-alpha.7: {}
app-builder-lib@24.13.3(dmg-builder@24.13.3(electron-builder-squirrel-windows@25.0.5))(electron-builder-squirrel-windows@25.0.5(dmg-builder@24.13.3)):
app-builder-lib@24.13.3(dmg-builder@24.13.3)(electron-builder-squirrel-windows@25.0.5):
dependencies:
'@develar/schema-utils': 2.6.5
'@electron/notarize': 2.2.1
@ -3380,7 +3381,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
app-builder-lib@25.0.5(dmg-builder@24.13.3(electron-builder-squirrel-windows@25.0.5))(electron-builder-squirrel-windows@25.0.5(dmg-builder@24.13.3)):
app-builder-lib@25.0.5(dmg-builder@24.13.3)(electron-builder-squirrel-windows@25.0.5):
dependencies:
'@develar/schema-utils': 2.6.5
'@electron/notarize': 2.3.2
@ -3677,7 +3678,7 @@ snapshots:
clean-stack@2.2.0: {}
clean-webpack-plugin@4.0.0(webpack@5.95.0(webpack-cli@4.10.0)):
clean-webpack-plugin@4.0.0(webpack@5.95.0):
dependencies:
del: 4.1.1
webpack: 5.95.0(webpack-cli@4.10.0)
@ -3779,7 +3780,7 @@ snapshots:
shebang-command: 2.0.0
which: 2.0.2
css-loader@6.7.1(webpack@5.95.0(webpack-cli@4.10.0)):
css-loader@6.7.1(webpack@5.95.0):
dependencies:
icss-utils: 5.1.0(postcss@8.4.31)
postcss: 8.4.31
@ -3862,7 +3863,7 @@ snapshots:
dmg-builder@24.13.3(electron-builder-squirrel-windows@25.0.5):
dependencies:
app-builder-lib: 24.13.3(dmg-builder@24.13.3(electron-builder-squirrel-windows@25.0.5))(electron-builder-squirrel-windows@25.0.5(dmg-builder@24.13.3))
app-builder-lib: 24.13.3(dmg-builder@24.13.3)(electron-builder-squirrel-windows@25.0.5)
builder-util: 24.13.1
builder-util-runtime: 9.2.4
fs-extra: 10.1.0
@ -3937,7 +3938,7 @@ snapshots:
electron-builder-squirrel-windows@25.0.5(dmg-builder@24.13.3):
dependencies:
app-builder-lib: 25.0.5(dmg-builder@24.13.3(electron-builder-squirrel-windows@25.0.5))(electron-builder-squirrel-windows@25.0.5(dmg-builder@24.13.3))
app-builder-lib: 25.0.5(dmg-builder@24.13.3)(electron-builder-squirrel-windows@25.0.5)
archiver: 5.3.2
builder-util: 25.0.3
fs-extra: 10.1.0
@ -3946,9 +3947,9 @@ snapshots:
- dmg-builder
- supports-color
electron-builder@24.13.3(electron-builder-squirrel-windows@25.0.5(dmg-builder@24.13.3)):
electron-builder@24.13.3(electron-builder-squirrel-windows@25.0.5):
dependencies:
app-builder-lib: 24.13.3(dmg-builder@24.13.3(electron-builder-squirrel-windows@25.0.5))(electron-builder-squirrel-windows@25.0.5(dmg-builder@24.13.3))
app-builder-lib: 24.13.3(dmg-builder@24.13.3)(electron-builder-squirrel-windows@25.0.5)
builder-util: 24.13.1
builder-util-runtime: 9.2.4
chalk: 4.1.2
@ -3989,7 +3990,7 @@ snapshots:
electron-to-chromium@1.5.39: {}
electron@32.2.0:
electron@32.2.2:
dependencies:
'@electron/get': 2.0.2
'@types/node': 20.14.5
@ -4029,7 +4030,7 @@ snapshots:
es6-error@4.1.1:
optional: true
esbuild-loader@3.0.1(webpack@5.95.0(webpack-cli@4.10.0)):
esbuild-loader@3.0.1(webpack@5.95.0):
dependencies:
esbuild: 0.17.10
get-tsconfig: 4.4.0
@ -4192,7 +4193,7 @@ snapshots:
dependencies:
flat-cache: 3.0.4
file-loader@6.2.0(webpack@5.95.0(webpack-cli@4.10.0)):
file-loader@6.2.0(webpack@5.95.0):
dependencies:
loader-utils: 2.0.4
schema-utils: 3.1.1
@ -4409,7 +4410,7 @@ snapshots:
dependencies:
lru-cache: 6.0.0
html-loader@2.1.2(webpack@5.95.0(webpack-cli@4.10.0)):
html-loader@2.1.2(webpack@5.95.0):
dependencies:
html-minifier-terser: 5.1.1
parse5: 6.0.1
@ -4435,7 +4436,7 @@ snapshots:
relateurl: 0.2.7
terser: 5.14.1
html-webpack-plugin@5.5.0(webpack@5.95.0(webpack-cli@4.10.0)):
html-webpack-plugin@5.5.0(webpack@5.95.0):
dependencies:
'@types/html-minifier-terser': 6.1.0
html-minifier-terser: 6.1.0
@ -4759,7 +4760,7 @@ snapshots:
mimic-response@3.1.0: {}
mini-css-extract-plugin@2.7.6(webpack@5.95.0(webpack-cli@4.10.0)):
mini-css-extract-plugin@2.7.6(webpack@5.95.0):
dependencies:
schema-utils: 4.2.0
webpack: 5.95.0(webpack-cli@4.10.0)
@ -5212,7 +5213,7 @@ snapshots:
dependencies:
truncate-utf8-bytes: 1.0.2
sass-loader@12.6.0(sass@1.53.0)(webpack@5.95.0(webpack-cli@4.10.0)):
sass-loader@12.6.0(sass@1.53.0)(webpack@5.95.0):
dependencies:
klona: 2.0.5
neo-async: 2.6.2
@ -5408,7 +5409,7 @@ snapshots:
async-exit-hook: 2.0.1
fs-extra: 10.1.0
terser-webpack-plugin@5.3.10(webpack@5.95.0(webpack-cli@4.10.0)):
terser-webpack-plugin@5.3.10(webpack@5.95.0):
dependencies:
'@jridgewell/trace-mapping': 0.3.25
jest-worker: 27.5.1
@ -5546,9 +5547,9 @@ snapshots:
webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0):
dependencies:
'@discoveryjs/json-ext': 0.5.7
'@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0))(webpack@5.95.0(webpack-cli@4.10.0))
'@webpack-cli/info': 1.5.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0))
'@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0))
'@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.95.0)
'@webpack-cli/info': 1.5.0(webpack-cli@4.10.0)
'@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0)
colorette: 2.0.19
commander: 7.2.0
cross-spawn: 7.0.3
@ -5595,7 +5596,7 @@ snapshots:
neo-async: 2.6.2
schema-utils: 3.3.0
tapable: 2.2.1
terser-webpack-plugin: 5.3.10(webpack@5.95.0(webpack-cli@4.10.0))
terser-webpack-plugin: 5.3.10(webpack@5.95.0)
watchpack: 2.4.2
webpack-sources: 3.2.3
optionalDependencies:

View file

@ -1381,15 +1381,13 @@ func fullTextSearchCountByFTS(query, boxFilter, pathFilter, typeFilter, ignoreFi
}
func fullTextSearchByFTSWithRoot(query, boxFilter, pathFilter, typeFilter, ignoreFilter, orderBy string, beforeLen, page, pageSize int) (ret []*Block, matchedBlockCount, matchedRootCount int) {
start := time.Now()
table := "blocks_fts" // 大小写敏感
if !Conf.Search.CaseSensitive {
table = "blocks_fts_case_insensitive"
}
mQ := stringQuery(query)
bMatchStmt := "SELECT id FROM " + table + " WHERE (" + table + " MATCH '" + columnFilter() + ":(" + mQ + ")')"
bMatchStmt += " AND type IN " + typeFilter + boxFilter + pathFilter + ignoreFilter
query = strings.ReplaceAll(query, "'", "''")
query = strings.ReplaceAll(query, "\"", "\"\"")
keywords := strings.Split(query, " ")
@ -1400,14 +1398,20 @@ func fullTextSearchByFTSWithRoot(query, boxFilter, pathFilter, typeFilter, ignor
likeFilter += " AND "
}
}
dMatchStmt := "SELECT root_id, GROUP_CONCAT(content) AS docContent" +
bMatchStmt := "SELECT id FROM " + table + " WHERE " + strings.ReplaceAll(likeFilter, "docContent LIKE ", "content LIKE ")
bMatchStmt += " AND type IN " + typeFilter + boxFilter + pathFilter + ignoreFilter
dMatchStmt := "SELECT root_id, GROUP_CONCAT(content || tag || name || alias || memo) AS docContent" +
" FROM " + table + " WHERE type IN " + typeFilter + boxFilter + pathFilter + ignoreFilter +
" GROUP BY root_id HAVING " + likeFilter
cteStmt := "WITH docs AS (" + dMatchStmt + "), blocks AS (" + bMatchStmt + ")"
cteStmt += "\nSELECT * FROM " + table + " WHERE id IN (SELECT id FROM blocks) OR id IN (SELECT root_id FROM docs)"
countStmt := cteStmt
cteStmt := "WITH docBlocks AS (" + dMatchStmt + "), nonDocBlocks AS (" + bMatchStmt + ")"
wheheClause := " WHERE id IN (SELECT id FROM nonDocBlocks) OR id IN (SELECT root_id FROM docBlocks)"
selectStmt := cteStmt + "\nSELECT * FROM " + table + wheheClause
countStmt := cteStmt + "\nSELECT COUNT(id) AS `matches`, COUNT(DISTINCT(root_id)) AS `docs` FROM " + table + wheheClause
cteStmt += orderBy + " LIMIT " + strconv.Itoa(pageSize) + " OFFSET " + strconv.Itoa((page-1)*pageSize)
resultBlocks := sql.SelectBlocksRawStmtNoParse(cteStmt, -1)
resultBlocks := sql.SelectBlocksRawStmtNoParse(selectStmt, -1)
logging.LogInfof("time cost [main search]: %v", time.Since(start))
now := time.Now()
// FTS 高亮
projections := "id, parent_id, root_id, hash, box, path, " +
@ -1419,7 +1423,7 @@ func fullTextSearchByFTSWithRoot(query, boxFilter, pathFilter, typeFilter, ignor
"snippet(" + table + ", 10, '" + search.SearchMarkLeft + "', '" + search.SearchMarkRight + "', '...', 64) AS tag, " +
"snippet(" + table + ", 11, '" + search.SearchMarkLeft + "', '" + search.SearchMarkRight + "', '...', 512) AS content, " +
"fcontent, markdown, length, type, subtype, ial, sort, created, updated"
stmt := "SELECT " + projections + " FROM " + table + " WHERE (`" + table + "` MATCH '" + columnFilter() + ":(" + query + ")'"
stmt := "SELECT " + projections + " FROM " + table + " WHERE (`" + table + "` MATCH '" + columnFilter() + ":(" + stringQuery(query) + ")'"
stmt += ") AND type IN " + typeFilter + boxFilter + pathFilter + ignoreFilter + orderBy + " LIMIT " + strconv.Itoa(pageSize) + " OFFSET " + strconv.Itoa((page-1)*pageSize)
blocks := sql.SelectBlocksRawStmt(stmt, page, pageSize)
for i, resultBlock := range resultBlocks {
@ -1438,12 +1442,15 @@ func fullTextSearchByFTSWithRoot(query, boxFilter, pathFilter, typeFilter, ignor
ret = []*Block{}
}
logging.LogInfof("time cost [highlight search]: %v", time.Since(now))
now = time.Now()
matchedBlockCount, matchedRootCount = fullTextSearchCountByStmt(countStmt)
logging.LogInfof("time cost [count search]: %v", time.Since(now))
logging.LogInfof("time cost [all]: %v", time.Since(start))
return
}
func fullTextSearchCountByStmt(stmt string) (matchedBlockCount, matchedRootCount int) {
stmt = "SELECT COUNT(id) AS `matches`, COUNT(DISTINCT(root_id)) AS `docs` FROM (" + stmt + ")"
result, _ := sql.QueryNoLimit(stmt)
if 1 > len(result) {
return