From 5836c276c3331a1c28cf3ac68540f72ef51e3a1d Mon Sep 17 00:00:00 2001 From: Soltus Date: Wed, 20 Mar 2024 17:08:37 +0800 Subject: [PATCH 01/77] node16 to node20 --- .github/workflows/Codecov.yml | 4 ++-- .github/workflows/aci.yml | 6 +++--- .github/workflows/cd.yml | 6 +++--- .github/workflows/codeql.yml | 2 +- .github/workflows/dockerimage.yml | 2 +- app/package/.github/workflows/npm.yml | 6 +++--- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/Codecov.yml b/.github/workflows/Codecov.yml index fe23c5e6bf..4958380f6b 100644 --- a/.github/workflows/Codecov.yml +++ b/.github/workflows/Codecov.yml @@ -12,12 +12,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository and submodules - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: recursive path: ${{ github.workspace }}/go/src/github.com/Hi-Windom/Sillot - name: Set up Node 18 - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: 18 - name: Install Node pnpm diff --git a/.github/workflows/aci.yml b/.github/workflows/aci.yml index 76f4bee7bc..1b2fdf325a 100644 --- a/.github/workflows/aci.yml +++ b/.github/workflows/aci.yml @@ -16,8 +16,8 @@ jobs: runs-on: ubuntu-latest steps: - # - uses: actions/checkout@v3 - # - uses: actions/setup-node@v3 + # - uses: actions/checkout@v4 + # - uses: actions/setup-node@v4 # with: # node-version: 16 - name: Get Latest Release Assets @@ -64,4 +64,4 @@ jobs: upload_url: ${{ steps.latest_release.outputs.result }} asset_path: ./Assets_SHA256_Sum.txt asset_name: Assets_SHA256_Sum.txt - asset_content_type: text/plain \ No newline at end of file + asset_content_type: text/plain diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 879442561f..27d9541093 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -155,7 +155,7 @@ jobs: working-directory: ${{ github.workspace }} - name: Set up Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: "1.21" @@ -171,7 +171,7 @@ jobs: GOARCH: ${{ matrix.config.goarch }} - name: Set up Node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: 20 @@ -278,7 +278,7 @@ jobs: distribution: 'zulu' overwrite-settings: true - name: Setup Android SDK - uses: android-actions/setup-android@v2 + uses: android-actions/setup-android@v3.2.0 - name: Install Android NDK uses: nttld/setup-ndk@v1 with: diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 52caaa8642..4eccacc712 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -48,7 +48,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index aac64546a0..768392b96a 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -36,7 +36,7 @@ jobs: swap-storage: true - name: Checkout repository and submodules - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: dev submodules: recursive diff --git a/app/package/.github/workflows/npm.yml b/app/package/.github/workflows/npm.yml index 15830a23d6..ccb1fb72b0 100644 --- a/app/package/.github/workflows/npm.yml +++ b/app/package/.github/workflows/npm.yml @@ -10,9 +10,9 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 # Setup .npmrc file to publish to npm - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: '18.x' registry-url: 'https://registry.npmjs.org' @@ -20,4 +20,4 @@ jobs: - run: npm ci - run: npm publish --access public env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} \ No newline at end of file + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} From 2d52dbfd1c5e977c91d4d13f6d72b8c7cc35a8c5 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Wed, 20 Mar 2024 21:50:03 +0800 Subject: [PATCH 02/77] :art: fix https://github.com/siyuan-note/siyuan/issues/10669 --- app/appearance/langs/en_US.json | 8 -------- app/appearance/langs/es_ES.json | 8 -------- app/appearance/langs/fr_FR.json | 8 -------- app/appearance/langs/zh_CHT.json | 8 -------- app/appearance/langs/zh_CN.json | 8 -------- app/electron/main.js | 6 ++---- app/src/ai/actions.ts | 26 +------------------------- app/src/block/popover.ts | 2 +- 8 files changed, 4 insertions(+), 70 deletions(-) diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 186779fadd..388d1cf1f9 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -313,14 +313,6 @@ "aiContinueWrite": "Continue writing", "aiTranslate": "Translate", "aiExtractSummary": "Extract summary", - "aiTranslate_zh_Hans": "Simplified Chinese", - "aiTranslate_zh_Hant": "Traditional Chinese", - "aiTranslate_ja_JP": "Japanese", - "aiTranslate_ko_KR": "Korean", - "aiTranslate_en_US": "English", - "aiTranslate_es_ES": "Spanish", - "aiTranslate_fr_FR": "French", - "aiTranslate_de_DE": "German", "aiBrainStorm": "Brainstorm", "aiFixGrammarSpell": "Fix grammar, spelling and typos", "aiCustomAction": "Custom action...", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index be488258ea..77d30ee697 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -313,14 +313,6 @@ "aiContinueWrite": "Continuar escribiendo", "aiTranslate": "Traducir", "aiExtractSummary": "Extraer resumen", - "aiTranslate_zh_Hans": "Chino simplificado", - "aiTranslate_zh_Hant": "Chino tradicional", - "aiTranslate_ja_JP": "Japonés", - "aiTranslate_ko_KR": "Coreano", - "aiTranslate_en_US": "Inglés", - "aiTranslate_es_ES": "Español", - "aiTranslate_fr_FR": "Francés", - "aiTranslate_de_DE": "Alemán", "aiBrainStorm": "Lluvia de ideas", "aiFixGrammarSpell": "Corregir gramática, ortografía y errores tipográficos.", "aiCustomAction": "Acción personalizada...", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index 58a7db0cc9..e3d2ab430d 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -313,14 +313,6 @@ "aiContinueWrite": "Continuer à écrire", "aiTranslate": "Traduire", "aiExtractSummary": "Résumé de l'extrait", - "aiTranslate_zh_Hans": "Chinois simplifié", - "aiTranslate_zh_Hant": "chinois traditionnel", - "aiTranslate_ja_JP": "Japonais", - "aiTranslate_ko_KR": "Coréen", - "aiTranslate_en_US": "Anglais", - "aiTranslate_es_ES": "Espagnol", - "aiTranslate_fr_FR": "Français", - "aiTranslate_de_DE": "Allemand", "aiBrainStorm": "Remue-méninges", "aiFixGrammarSpell": "Correction de la grammaire, de l'orthographe et des fautes de frappe", "aiCustomAction": "Action personnalisée...", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 49ecd50325..3b8e5985e0 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -313,14 +313,6 @@ "aiContinueWrite": "續寫", "aiTranslate": "翻譯", "aiExtractSummary": "提取摘要", - "aiTranslate_zh_Hans": "簡體中文", - "aiTranslate_zh_Hant": "繁體中文", - "aiTranslate_ja_JP": "日文", - "aiTranslate_ko_KR": "韓文", - "aiTranslate_en_US": "英文", - "aiTranslate_es_ES": "西班牙文", - "aiTranslate_fr_FR": "法文", - "aiTranslate_de_DE": "德文", "aiBrainStorm": "頭腦風暴", "aiFixGrammarSpell": "修正語法、拼寫和錯別字", "aiCustomAction": "自定義操作...", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 137d648080..0ca4c0db9e 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -313,14 +313,6 @@ "aiContinueWrite": "续写", "aiTranslate": "翻译", "aiExtractSummary": "提取摘要", - "aiTranslate_zh_Hans": "简体中文", - "aiTranslate_zh_Hant": "繁体中文", - "aiTranslate_ja_JP": "日文", - "aiTranslate_ko_KR": "韩文", - "aiTranslate_en_US": "英文", - "aiTranslate_es_ES": "西班牙文", - "aiTranslate_fr_FR": "法文", - "aiTranslate_de_DE": "德文", "aiBrainStorm": "头脑风暴", "aiFixGrammarSpell": "修正语法、拼写和错别字", "aiCustomAction": "自定义操作...", diff --git a/app/electron/main.js b/app/electron/main.js index 63a150449d..a815dd0b71 100644 --- a/app/electron/main.js +++ b/app/electron/main.js @@ -861,14 +861,12 @@ app.whenReady().then(() => { ipcMain.on("siyuan-export-newwindow", (event, data) => { const parentWnd = getWindowByContentId(event.sender.id); // The PDF/Word export preview window automatically adjusts according to the size of the main window https://github.com/siyuan-note/siyuan/issues/10554 - const width = parentWnd.getBounds().width * 0.8; - const height = parentWnd.getBounds().height * 0.8; const printWin = new BrowserWindow({ parent: parentWnd, modal: false, show: true, - width: width, - height: height, + width: Math.floor(parentWnd.getBounds().width * 0.8), + height: Math.floor(parentWnd.getBounds().height * 0.8), resizable: false, frame: "darwin" === process.platform, icon: path.join(appDir, "stage", "icon-large.png"), diff --git a/app/src/ai/actions.ts b/app/src/ai/actions.ts index 56fc1bd9d4..0dc904ccc4 100644 --- a/app/src/ai/actions.ts +++ b/app/src/ai/actions.ts @@ -185,31 +185,6 @@ export const AIActions = (elements: Element[], protyle: IProtyle) => { ${window.siyuan.languages.aiContinueWrite}
-
- ${window.siyuan.languages.aiTranslate_zh_Hans} -
-
- ${window.siyuan.languages.aiTranslate_zh_Hant} -
-
- ${window.siyuan.languages.aiTranslate_ja_JP} -
-
- ${window.siyuan.languages.aiTranslate_ko_KR} -
-
- ${window.siyuan.languages.aiTranslate_en_US} -
-
- ${window.siyuan.languages.aiTranslate_es_ES} -
-
- ${window.siyuan.languages.aiTranslate_fr_FR} -
-
- ${window.siyuan.languages.aiTranslate_de_DE} -
-
${window.siyuan.languages.aiExtractSummary}
@@ -222,6 +197,7 @@ export const AIActions = (elements: Element[], protyle: IProtyle) => {
${window.siyuan.languages.clearContext}
+
${window.siyuan.languages.aiCustomAction}
diff --git a/app/src/block/popover.ts b/app/src/block/popover.ts index 48c725a8f0..a32c0f404a 100644 --- a/app/src/block/popover.ts +++ b/app/src/block/popover.ts @@ -17,7 +17,7 @@ export const initBlockPopover = (app: App) => { let timeoutHide: number; // 编辑器内容块引用/backlinks/tag/bookmark/套娃中使用 document.addEventListener("mouseover", (event: MouseEvent & { target: HTMLElement, path: HTMLElement[] }) => { - if (!window.siyuan.config) { + if (!window.siyuan.config || !window.siyuan.menus) { return; } const aElement = hasClosestByAttribute(event.target, "data-type", "a", true) || From 34e46eee0b114c8fe074d909e0f0f7497fdc7768 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Wed, 20 Mar 2024 22:30:09 +0800 Subject: [PATCH 03/77] :art: Clean code --- kernel/av/value.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/kernel/av/value.go b/kernel/av/value.go index 4b8b289fa2..6e80d1ec07 100644 --- a/kernel/av/value.go +++ b/kernel/av/value.go @@ -205,10 +205,6 @@ func (value *Value) IsEdited() bool { return value.CreatedAt != value.UpdatedAt } -func (value *Value) IsGenerated() bool { - return KeyTypeUpdated == value.Type || KeyTypeCreated == value.Type -} - func (value *Value) IsEmpty() bool { switch value.Type { case KeyTypeBlock: From fd1f283b2f963dbbfe6c1ce7ee94b1466addd746 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Wed, 20 Mar 2024 22:30:21 +0800 Subject: [PATCH 04/77] :art: Duplicate relation values in the Attribute Panel - Database Fix https://github.com/siyuan-note/siyuan/issues/10670 --- kernel/model/attribute_view.go | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 42b55b75ba..9108317e4f 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -367,6 +367,7 @@ func GetBlockAttributeViewKeys(blockID string) (ret []*BlockAttributeViewKeys) { for _, blockValue := range destAv.GetBlockKeyValues().Values { blocks[blockValue.BlockID] = blockValue } + kv.Values[0].Relation.Contents = nil // 先清空 https://github.com/siyuan-note/siyuan/issues/10670 for _, bID := range kv.Values[0].Relation.BlockIDs { kv.Values[0].Relation.Contents = append(kv.Values[0].Relation.Contents, blocks[bID]) } From 80decafb73a44c89a566b80042d7e450c97b9f29 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Wed, 20 Mar 2024 22:52:04 +0800 Subject: [PATCH 05/77] :art: https://github.com/siyuan-note/siyuan/issues/10666 --- app/src/asset/anno.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/src/asset/anno.ts b/app/src/asset/anno.ts index b22df4f40a..f3b2d1204f 100644 --- a/app/src/asset/anno.ts +++ b/app/src/asset/anno.ts @@ -1,7 +1,6 @@ import {fetchPost} from "../util/fetch"; import {setPosition} from "../util/setPosition"; import {hasClosestByAttribute, hasClosestByClassName} from "../protyle/util/hasClosest"; -import * as dayjs from "dayjs"; import {setStorageVal, writeText} from "../protyle/util/compatibility"; import {getAllModels} from "../layout/getAll"; import {focusByRange} from "../protyle/util/selection"; @@ -531,8 +530,7 @@ const getHightlightCoordsByRect = (pdf: any, color: string, rectResizeElement: H }]; const id = Lute.NewNodeID(); - const content = pdf.appConfig.file.replace(location.origin, "").substr(8).replace(/-\d{14}-\w{7}.pdf$/, "") + - `-P${startPage.id}-${dayjs().format("YYYYMMDDHHmmss")}`; + const content = `${pdf.appConfig.file.replace(location.origin, "").substr(8).replace(/-\d{14}-\w{7}.pdf$/, "")}-P${startPage.id}-${id}`; const result = [{ index: startPage.id - 1, coords: [startSelected], From b9b14365728f35b23e77d5c0b26b564cb07c55d7 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Wed, 20 Mar 2024 22:53:10 +0800 Subject: [PATCH 06/77] :art: https://github.com/siyuan-note/siyuan/issues/10666 --- app/src/asset/anno.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/asset/anno.ts b/app/src/asset/anno.ts index f3b2d1204f..33c3c841b6 100644 --- a/app/src/asset/anno.ts +++ b/app/src/asset/anno.ts @@ -719,6 +719,7 @@ const copyAnno = (idPath: string, fileName: string, pdf: any) => { const formData = new FormData(); const imageName = content + ".png"; formData.append("file[]", blob, imageName); + formData.append("skipIfDuplicated", "true"); fetchPost(Constants.UPLOAD_ADDRESS, formData, (response) => { writeText(`<<${idPath} "${content}">> ![](${response.data.succMap[imageName]})`); From 580209b165b556337d23a511872ee9ad74914554 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Wed, 20 Mar 2024 23:18:32 +0800 Subject: [PATCH 07/77] :art: https://github.com/siyuan-note/siyuan/issues/10666 --- kernel/model/upload.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/kernel/model/upload.go b/kernel/model/upload.go index 405dd4170b..acd2291b2e 100644 --- a/kernel/model/upload.go +++ b/kernel/model/upload.go @@ -147,6 +147,11 @@ func Upload(c *gin.Context) { var errFiles []string succMap := map[string]interface{}{} files := form.File["file[]"] + skipIfDuplicated := false // 默认不跳过重复文件,但是有的场景需要跳过,比如上传 PDF 标注图片 https://github.com/siyuan-note/siyuan/issues/10666 + if nil != form.Value["skipIfDuplicated"] { + skipIfDuplicated = "true" == form.Value["skipIfDuplicated"][0] + } + for _, file := range files { baseName := file.Filename @@ -182,6 +187,20 @@ func Upload(c *gin.Context) { // 已经存在同样数据的资源文件的话不重复保存 succMap[baseName] = existAsset.Path } else { + if skipIfDuplicated { + matches, globErr := filepath.Glob(assetsDirPath + string(os.PathSeparator) + strings.TrimSuffix(fName, ext) + "*") + if nil != globErr { + logging.LogErrorf("glob failed: %s", globErr) + } else { + if 0 < len(matches) { + fName = filepath.Base(matches[0]) + succMap[baseName] = strings.TrimPrefix(path.Join(relAssetsDirPath, fName), "/") + f.Close() + break + } + } + } + fName = util.AssetName(fName) writePath := filepath.Join(assetsDirPath, fName) tmpDir := filepath.Join(util.TempDir, "convert", "zip", gulu.Rand.String(7)) From d522a74654530f8730f087d0ce26792284f49e0e Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Wed, 20 Mar 2024 23:21:26 +0800 Subject: [PATCH 08/77] :art: https://github.com/siyuan-note/siyuan/issues/10666 --- kernel/model/upload.go | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/model/upload.go b/kernel/model/upload.go index acd2291b2e..ad57efe60b 100644 --- a/kernel/model/upload.go +++ b/kernel/model/upload.go @@ -188,6 +188,7 @@ func Upload(c *gin.Context) { succMap[baseName] = existAsset.Path } else { if skipIfDuplicated { + // https://github.com/siyuan-note/siyuan/issues/10666 matches, globErr := filepath.Glob(assetsDirPath + string(os.PathSeparator) + strings.TrimSuffix(fName, ext) + "*") if nil != globErr { logging.LogErrorf("glob failed: %s", globErr) From 30d95605df9acbd36a6d229d69e26b56c96fd650 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 21 Mar 2024 10:03:08 +0800 Subject: [PATCH 09/77] :art: Database select field supports sorting by option order Fix https://github.com/siyuan-note/siyuan/issues/10665 --- kernel/av/sort.go | 33 ++++++++++++++++++++++++--------- kernel/av/table.go | 4 ++-- kernel/model/attribute_view.go | 4 ++-- kernel/model/export.go | 4 ++-- 4 files changed, 30 insertions(+), 15 deletions(-) diff --git a/kernel/av/sort.go b/kernel/av/sort.go index ade93d63f9..681ea7fc7d 100644 --- a/kernel/av/sort.go +++ b/kernel/av/sort.go @@ -25,7 +25,7 @@ import ( ) type Sortable interface { - SortRows() + SortRows(attrView *AttributeView) } type ViewSort struct { @@ -40,7 +40,7 @@ const ( SortOrderDesc SortOrder = "DESC" ) -func (value *Value) Compare(other *Value) int { +func (value *Value) Compare(other *Value, attrView *AttributeView) int { switch value.Type { case KeyTypeBlock: if nil != value.Block && nil != other.Block { @@ -112,14 +112,29 @@ func (value *Value) Compare(other *Value) int { return 0 } case KeyTypeSelect, KeyTypeMSelect: - if nil != value.MSelect && nil != other.MSelect { - var v1 string - for _, v := range value.MSelect { - v1 += v.Content + if 0 < len(value.MSelect) && 0 < len(other.MSelect) { + v1 := value.MSelect[0].Content + v2 := other.MSelect[0].Content + if v1 == v2 { + return 0 } - var v2 string - for _, v := range other.MSelect { - v2 += v.Content + + key, _ := attrView.GetKey(value.KeyID) + if nil != key { + optionSort := map[string]int{} + for i, op := range key.Options { + optionSort[op.Name] = i + } + + v1Sort := optionSort[v1] + v2Sort := optionSort[v2] + if v1Sort > v2Sort { + return 1 + } + if v1Sort < v2Sort { + return -1 + } + return 0 } return strings.Compare(v1, v2) } diff --git a/kernel/av/table.go b/kernel/av/table.go index 1a57055dc9..0930b01eb9 100644 --- a/kernel/av/table.go +++ b/kernel/av/table.go @@ -153,7 +153,7 @@ func (table *Table) GetID() string { return table.ID } -func (table *Table) SortRows() { +func (table *Table) SortRows(attrView *AttributeView) { if 1 > len(table.Sorts) { return } @@ -220,7 +220,7 @@ func (table *Table) SortRows() { return colIndexSort.Order != SortOrderAsc } - result := val1.Compare(val2) + result := val1.Compare(val2, attrView) if 0 == result { sorted = false continue diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 9108317e4f..cd52a232d2 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -724,7 +724,7 @@ func renderAttributeView(attrView *av.AttributeView, viewID, query string, page, } viewable.FilterRows(attrView) - viewable.SortRows() + viewable.SortRows(attrView) viewable.CalcCols() // 分页 @@ -2010,7 +2010,7 @@ func addAttributeViewBlock(avID, blockID, previousBlockID, addingBlockID string, if nil != view && 0 < len(view.Table.Filters) && !ignoreFillFilter { viewable, _ := renderAttributeViewTable(attrView, view, "") viewable.FilterRows(attrView) - viewable.SortRows() + viewable.SortRows(attrView) var nearRow *av.TableRow if 0 < len(viewable.Rows) { diff --git a/kernel/model/export.go b/kernel/model/export.go index b3cfb4dbc6..eba5ee4ec6 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -87,7 +87,7 @@ func ExportAv2CSV(avID, blockID string) (zipPath string, err error) { // 遵循视图过滤和排序规则 Use filtering and sorting of current view settings when exporting database blocks https://github.com/siyuan-note/siyuan/issues/10474 table.FilterRows(attrView) - table.SortRows() + table.SortRows(attrView) exportFolder := filepath.Join(util.TempDir, "export", "csv", name) if err = os.MkdirAll(exportFolder, 0755); nil != err { @@ -2284,7 +2284,7 @@ func exportTree(tree *parse.Tree, wysiwyg, expandKaTexMacros, keepFold bool, // 遵循视图过滤和排序规则 Use filtering and sorting of current view settings when exporting database blocks https://github.com/siyuan-note/siyuan/issues/10474 table.FilterRows(attrView) - table.SortRows() + table.SortRows(attrView) var aligns []int for range table.Columns { From 0606ee127e6b19a8037d487a21e42da9b2cb78ca Mon Sep 17 00:00:00 2001 From: Vanessa Date: Thu, 21 Mar 2024 10:14:18 +0800 Subject: [PATCH 10/77] :art: fix https://github.com/siyuan-note/siyuan/issues/10674 --- app/src/plugin/loader.ts | 4 ++-- app/src/protyle/wysiwyg/index.ts | 13 ++++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/src/plugin/loader.ts b/app/src/plugin/loader.ts index 7c0d3c1002..b5c77ddc2d 100644 --- a/app/src/plugin/loader.ts +++ b/app/src/plugin/loader.ts @@ -158,7 +158,7 @@ const mergePluginHotkey = (plugin: Plugin) => { } window.siyuan.config.keymap.plugin[plugin.name][dockKey]["default"] = dock.config.hotkey; } - }) + }); }; export const afterLoadPlugin = (plugin: Plugin) => { @@ -222,7 +222,7 @@ export const afterLoadPlugin = (plugin: Plugin) => { }); Object.keys(plugin.docks).forEach(key => { const dock = plugin.docks[key]; - const hotkey = window.siyuan.config.keymap.plugin[plugin.name][key].custom + const hotkey = window.siyuan.config.keymap.plugin[plugin.name][key].custom; if (dock.config.position.startsWith("Left")) { window.siyuan.layout.leftDock.genButton([{ type: key, diff --git a/app/src/protyle/wysiwyg/index.ts b/app/src/protyle/wysiwyg/index.ts index 4d6856e68e..6d062429d5 100644 --- a/app/src/protyle/wysiwyg/index.ts +++ b/app/src/protyle/wysiwyg/index.ts @@ -875,11 +875,17 @@ export class WYSIWYG { return; } let firstBlockElement = hasClosestBlock(firstElement); + if (!firstBlockElement && firstElement.classList.contains("protyle-breadcrumb__bar")) { + firstBlockElement = firstElement.nextElementSibling as HTMLElement; + } if (moveEvent.clientY > y) { if (!startFirstElement) { // 向上选择导致滚动条滚动到顶部再向下选择至 > y 时,firstBlockElement 为 undefined https://ld246.com/article/1705233964097 if (!firstBlockElement) { firstBlockElement = protyle.wysiwyg.element.firstElementChild as HTMLElement; + if (firstBlockElement.classList.contains("protyle-breadcrumb__bar")) { + firstBlockElement = firstBlockElement.nextElementSibling as HTMLElement; + } } startFirstElement = firstBlockElement; } @@ -887,6 +893,9 @@ export class WYSIWYG { // https://github.com/siyuan-note/siyuan/issues/7580 moveEvent.clientY < protyle.wysiwyg.element.lastElementChild.getBoundingClientRect().bottom) { firstBlockElement = protyle.wysiwyg.element.firstElementChild as HTMLElement; + if (firstBlockElement.classList.contains("protyle-breadcrumb__bar")) { + firstBlockElement = firstBlockElement.nextElementSibling as HTMLElement; + } } let selectElements: Element[] = []; let currentElement: Element | boolean = firstBlockElement; @@ -915,7 +924,9 @@ export class WYSIWYG { hasJump = true; } } else { - selectElements.push(currentElement); + if (!currentElement.classList.contains("protyle-breadcrumb__bar")) { + selectElements.push(currentElement); + } currentElement = currentElement.nextElementSibling; } } else if (currentElement.parentElement.classList.contains("sb")) { From c45e80b9e01a9d53132d952a9825c26ff3284494 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 21 Mar 2024 10:32:16 +0800 Subject: [PATCH 11/77] :art: One-click upgrade of downloaded marketplace packages https://github.com/siyuan-note/siyuan/issues/8390 --- kernel/api/bazaar.go | 20 ++++++++++++++++++++ kernel/api/router.go | 1 + kernel/model/bazzar.go | 9 +++++++++ 3 files changed, 30 insertions(+) diff --git a/kernel/api/bazaar.go b/kernel/api/bazaar.go index 53e1bf9446..e05ad04dd7 100644 --- a/kernel/api/bazaar.go +++ b/kernel/api/bazaar.go @@ -25,6 +25,26 @@ import ( "github.com/siyuan-note/siyuan/kernel/util" ) +func getBazaarPackages(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, ok := util.JsonArg(c, ret) + if !ok { + return + } + + frontend := arg["frontend"].(string) + plugins, widgets, icons, themes, templates := model.BazaarPackages(frontend) + ret.Data = map[string]interface{}{ + "plugins": plugins, + "widgets": widgets, + "icons": icons, + "themes": themes, + "templates": templates, + } +} + func getBazaarPackageREAME(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) diff --git a/kernel/api/router.go b/kernel/api/router.go index 6af5564d56..fc6e51ee20 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -330,6 +330,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/graph/getGraph", model.CheckAuth, getGraph) ginServer.Handle("POST", "/api/graph/getLocalGraph", model.CheckAuth, getLocalGraph) + ginServer.Handle("POST", "/api/bazaar/getBazaarPackages", model.CheckAuth, getBazaarPackages) ginServer.Handle("POST", "/api/bazaar/getBazaarPlugin", model.CheckAuth, getBazaarPlugin) ginServer.Handle("POST", "/api/bazaar/getInstalledPlugin", model.CheckAuth, getInstalledPlugin) ginServer.Handle("POST", "/api/bazaar/installBazaarPlugin", model.CheckAuth, model.CheckReadonly, installBazaarPlugin) diff --git a/kernel/model/bazzar.go b/kernel/model/bazzar.go index a531f9a27e..a01c3a36e9 100644 --- a/kernel/model/bazzar.go +++ b/kernel/model/bazzar.go @@ -29,6 +29,15 @@ import ( "github.com/siyuan-note/siyuan/kernel/bazaar" ) +func BazaarPackages(frontend string) (plugins []*bazaar.Plugin, widgets []*bazaar.Widget, icons []*bazaar.Icon, themes []*bazaar.Theme, templates []*bazaar.Template) { + plugins = BazaarPlugins(frontend, "") + widgets = BazaarWidgets("") + icons = BazaarIcons("") + themes = BazaarThemes("") + templates = BazaarTemplates("") + return +} + func GetPackageREADME(repoURL, repoHash, packageType string) (ret string) { ret = bazaar.GetPackageREADME(repoURL, repoHash, packageType) return From 00d015aeadb508fb59ac52cc01ca565a22c05748 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 21 Mar 2024 10:44:34 +0800 Subject: [PATCH 12/77] :art: One-click upgrade of downloaded marketplace packages https://github.com/siyuan-note/siyuan/issues/8390 --- kernel/model/bazzar.go | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/kernel/model/bazzar.go b/kernel/model/bazzar.go index a01c3a36e9..f53e42e4fb 100644 --- a/kernel/model/bazzar.go +++ b/kernel/model/bazzar.go @@ -22,6 +22,7 @@ import ( "path" "path/filepath" "strings" + "sync" "github.com/88250/gulu" "github.com/siyuan-note/siyuan/kernel/util" @@ -30,11 +31,34 @@ import ( ) func BazaarPackages(frontend string) (plugins []*bazaar.Plugin, widgets []*bazaar.Widget, icons []*bazaar.Icon, themes []*bazaar.Theme, templates []*bazaar.Template) { - plugins = BazaarPlugins(frontend, "") - widgets = BazaarWidgets("") - icons = BazaarIcons("") - themes = BazaarThemes("") - templates = BazaarTemplates("") + wg := &sync.WaitGroup{} + wg.Add(5) + go func() { + defer wg.Done() + plugins = InstalledPlugins(frontend, "") + }() + + go func() { + defer wg.Done() + widgets = InstalledWidgets("") + }() + + go func() { + defer wg.Done() + icons = InstalledIcons("") + }() + + go func() { + defer wg.Done() + themes = InstalledThemes("") + }() + + go func() { + defer wg.Done() + templates = InstalledTemplates("") + }() + + wg.Wait() return } From e2e3632d6ed0a99c14cd3648771234db58a44af5 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Thu, 21 Mar 2024 11:15:07 +0800 Subject: [PATCH 13/77] :art: fix https://github.com/siyuan-note/siyuan/issues/10667 --- app/appearance/langs/en_US.json | 2 + app/appearance/langs/es_ES.json | 2 + app/appearance/langs/fr_FR.json | 2 + app/appearance/langs/zh_CHT.json | 2 + app/appearance/langs/zh_CN.json | 2 + app/src/protyle/render/av/action.ts | 112 ++++++++++++---------------- app/src/protyle/render/av/row.ts | 33 +++++++- 7 files changed, 90 insertions(+), 65 deletions(-) diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 388d1cf1f9..1c9dd76755 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -1,4 +1,6 @@ { + "insertRowBefore": "Insert rows ${x} above", + "insertRowAfter": "Insert rows ${x} below", "setDueTime": "Set expiration time", "showCardDay": "After how many days do you want to show the card?", "forgetCount": "Forget to count", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index 77d30ee697..23f6c89aee 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -1,4 +1,6 @@ { + "insertRowBefore": "Insertar filas ${x} arriba", + "insertRowAfter": "Insertar filas ${x} debajo", "setDueTime": "Establecer tiempo de vencimiento", "showCardDay": "¿Después de cuántos días deseas mostrar la tarjeta?", "forgetCount": "Olvídate de contar", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index e3d2ab430d..a63e956b0e 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -1,4 +1,6 @@ { + "insertRowBefore": "Insérer les lignes ${x} ci-dessus", + "insertRowAfter": "Insérer les lignes ${x} ci-dessous", "setDueTime": "Définir le délai d'expiration", "showCardDay": "Après combien de jours souhaitez-vous montrer la carte ?", "forgetCount": "Oublier de compter", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 3b8e5985e0..6eebbae4ff 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -1,4 +1,6 @@ { + "insertRowBefore": "在上方插入${x}行", + "insertRowAfter": "在下方插入${x}行", "setDueTime": "設定到期時間", "showCardDay": "要在幾天後顯示卡片?", "forgetCount": "遺忘次數", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 0ca4c0db9e..80775476c1 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -1,4 +1,6 @@ { + "insertRowBefore": "在上方插入${x}行", + "insertRowAfter": "在下方插入${x}行", "setDueTime": "设置到期时间", "showCardDay": "要在多少天后显示卡片?", "forgetCount": "遗忘次数", diff --git a/app/src/protyle/render/av/action.ts b/app/src/protyle/render/av/action.ts index 842e4edaae..2bf064b982 100644 --- a/app/src/protyle/render/av/action.ts +++ b/app/src/protyle/render/av/action.ts @@ -5,7 +5,7 @@ import {openEditorTab} from "../../../menus/util"; import {copySubMenu} from "../../../menus/commonMenuItem"; import {getCellText, getTypeByCellElement, popTextCell, renderCell, renderCellAttr, updateHeaderCell} from "./cell"; import {getColIconByType, showColMenu} from "./col"; -import {deleteRow, insertAttrViewBlockAnimation, setPageSize, updateHeader} from "./row"; +import {deleteRow, insertRows, setPageSize, updateHeader} from "./row"; import {emitOpenMenu} from "../../../plugin/EventBus"; import {addCol} from "./col"; import {openMenuPanel} from "./openMenuPanel"; @@ -174,30 +174,7 @@ export const avClick = (protyle: IProtyle, event: MouseEvent & { target: HTMLEle event.stopPropagation(); return true; } else if (type === "av-add-more") { - const avID = blockElement.getAttribute("data-av-id"); - const srcIDs = [Lute.NewNodeID()]; - const newUpdated = dayjs().format("YYYYMMDDHHmmss"); - transaction(protyle, [{ - action: "insertAttrViewBlock", - avID, - srcIDs, - isDetached: true, - blockID: blockElement.dataset.nodeId, - }, { - action: "doUpdateUpdated", - id: blockElement.dataset.nodeId, - data: newUpdated, - }], [{ - action: "removeAttrViewBlock", - srcIDs, - avID, - }, { - action: "doUpdateUpdated", - id: blockElement.dataset.nodeId, - data: blockElement.getAttribute("updated") - }]); - insertAttrViewBlockAnimation(protyle, blockElement, srcIDs, undefined, avID); - blockElement.setAttribute("updated", newUpdated); + insertRows(blockElement, protyle, 1, undefined); event.preventDefault(); event.stopPropagation(); return true; @@ -245,32 +222,7 @@ export const avClick = (protyle: IProtyle, event: MouseEvent & { target: HTMLEle event.stopPropagation(); return true; } else if (type === "av-add-bottom") { - const avID = blockElement.getAttribute("data-av-id"); - const srcIDs = [Lute.NewNodeID()]; - const previousID = blockElement.querySelector(".av__row--util").previousElementSibling.getAttribute("data-id") || ""; - const newUpdated = dayjs().format("YYYYMMDDHHmmss"); - transaction(protyle, [{ - action: "insertAttrViewBlock", - avID, - previousID, - srcIDs, - isDetached: true, - blockID: blockElement.dataset.nodeId, - }, { - action: "doUpdateUpdated", - id: blockElement.dataset.nodeId, - data: newUpdated, - }], [{ - action: "removeAttrViewBlock", - srcIDs, - avID, - }, { - action: "doUpdateUpdated", - id: blockElement.dataset.nodeId, - data: blockElement.getAttribute("updated") - }]); - insertAttrViewBlockAnimation(protyle, blockElement, srcIDs, previousID, avID); - blockElement.setAttribute("updated", newUpdated); + insertRows(blockElement, protyle, 1, blockElement.querySelector(".av__row--util").previousElementSibling.getAttribute("data-id") || ""); event.preventDefault(); event.stopPropagation(); return true; @@ -344,19 +296,7 @@ export const avContextmenu = (protyle: IProtyle, rowElement: HTMLElement, positi rowElement.querySelector(".av__firstcol use").setAttribute("xlink:href", "#iconCheck"); const rowElements = blockElement.querySelectorAll(".av__row--select:not(.av__row--header)"); updateHeader(rowElement); - if (!protyle.disabled) { - menu.addItem({ - icon: "iconTrashcan", - label: window.siyuan.languages.delete, - click() { - deleteRow(blockElement, protyle); - } - }); - } if (rowElements.length === 1 && !rowElements[0].querySelector('[data-detached="true"]')) { - if (!protyle.disabled) { - menu.addSeparator(); - } openEditorTab(protyle.app, rowElements[0].getAttribute("data-id")); menu.addItem({ label: window.siyuan.languages.copy, @@ -366,7 +306,51 @@ export const avContextmenu = (protyle: IProtyle, rowElement: HTMLElement, positi }); } if (!protyle.disabled) { - menu.addSeparator(); + if (rowElements.length === 1) { + if (!rowElements[0].querySelector('[data-detached="true"]')) { + menu.addSeparator(); + } + menu.addItem({ + icon: "iconBefore", + type: "readonly", + label: `
+${window.siyuan.languages.insertRowBefore.replace("${x}", '')} +
`, + bind(element) { + const inputElement = element.querySelector("input") + inputElement.addEventListener("keydown", (event: KeyboardEvent) => { + if (!event.isComposing && event.key === "Enter") { + insertRows(blockElement, protyle, parseInt(inputElement.value), rowElements[0].previousElementSibling.getAttribute("data-id")); + menu.close(); + } + }) + } + }); + menu.addItem({ + icon: "iconAfter", + type: "readonly", + label: `
+${window.siyuan.languages.insertRowAfter.replace("${x}", '')} +
`, + bind(element) { + const inputElement = element.querySelector("input") + inputElement.addEventListener("keydown", (event: KeyboardEvent) => { + if (!event.isComposing && event.key === "Enter") { + insertRows(blockElement, protyle, parseInt(inputElement.value), rowElements[0].getAttribute("data-id")); + menu.close(); + } + }) + } + }); + menu.addSeparator(); + } + menu.addItem({ + icon: "iconTrashcan", + label: window.siyuan.languages.delete, + click() { + deleteRow(blockElement, protyle); + } + }); const editAttrSubmenu: IMenu[] = []; rowElement.parentElement.querySelectorAll(".av__row--header .av__cell").forEach((cellElement: HTMLElement) => { let hideBlock = false; diff --git a/app/src/protyle/render/av/row.ts b/app/src/protyle/render/av/row.ts index 0912271daa..ef7e5c0799 100644 --- a/app/src/protyle/render/av/row.ts +++ b/app/src/protyle/render/av/row.ts @@ -171,7 +171,7 @@ ${(item.getAttribute("data-block-id") || item.dataset.dtype === "block") ? ' dat if (hideTextCell) { currentRow.remove(); showMessage(window.siyuan.languages.insertRowTip); - } else { + } else if (srcIDs.length === 1) { popTextCell(protyle, [currentRow.querySelector('.av__cell[data-detached="true"]')], "block"); } setPage(blockElement); @@ -350,3 +350,34 @@ export const deleteRow = (blockElement: HTMLElement, protyle: IProtyle) => { updateHeader(blockElement.querySelector(".av__row")); blockElement.setAttribute("updated", newUpdated); }; + +export const insertRows = (blockElement: HTMLElement, protyle: IProtyle, count: number, previousID: string) => { + const avID = blockElement.getAttribute("data-av-id"); + const srcIDs: string[] = []; + new Array(count).fill(0).forEach(() => { + srcIDs.push(Lute.NewNodeID()); + }); + const newUpdated = dayjs().format("YYYYMMDDHHmmss"); + transaction(protyle, [{ + action: "insertAttrViewBlock", + avID, + previousID, + srcIDs, + isDetached: true, + blockID: blockElement.dataset.nodeId, + }, { + action: "doUpdateUpdated", + id: blockElement.dataset.nodeId, + data: newUpdated, + }], [{ + action: "removeAttrViewBlock", + srcIDs, + avID, + }, { + action: "doUpdateUpdated", + id: blockElement.dataset.nodeId, + data: blockElement.getAttribute("updated") + }]); + insertAttrViewBlockAnimation(protyle, blockElement, srcIDs, previousID, avID); + blockElement.setAttribute("updated", newUpdated); +} From 055e011b3e4abca2d5d42ddc3accb978e1adff1e Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 21 Mar 2024 17:09:08 +0800 Subject: [PATCH 14/77] :art: One-click upgrade of downloaded marketplace packages https://github.com/siyuan-note/siyuan/issues/8390 --- kernel/api/bazaar.go | 4 ++-- kernel/api/router.go | 2 +- kernel/model/bazzar.go | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/kernel/api/bazaar.go b/kernel/api/bazaar.go index e05ad04dd7..d8fbcc73fe 100644 --- a/kernel/api/bazaar.go +++ b/kernel/api/bazaar.go @@ -25,7 +25,7 @@ import ( "github.com/siyuan-note/siyuan/kernel/util" ) -func getBazaarPackages(c *gin.Context) { +func getUpdatedPackage(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) @@ -35,7 +35,7 @@ func getBazaarPackages(c *gin.Context) { } frontend := arg["frontend"].(string) - plugins, widgets, icons, themes, templates := model.BazaarPackages(frontend) + plugins, widgets, icons, themes, templates := model.UpdatedPackages(frontend) ret.Data = map[string]interface{}{ "plugins": plugins, "widgets": widgets, diff --git a/kernel/api/router.go b/kernel/api/router.go index fc6e51ee20..d4bc60b9b9 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -330,7 +330,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/graph/getGraph", model.CheckAuth, getGraph) ginServer.Handle("POST", "/api/graph/getLocalGraph", model.CheckAuth, getLocalGraph) - ginServer.Handle("POST", "/api/bazaar/getBazaarPackages", model.CheckAuth, getBazaarPackages) + ginServer.Handle("POST", "/api/bazaar/getUpdatedPackage", model.CheckAuth, getUpdatedPackage) ginServer.Handle("POST", "/api/bazaar/getBazaarPlugin", model.CheckAuth, getBazaarPlugin) ginServer.Handle("POST", "/api/bazaar/getInstalledPlugin", model.CheckAuth, getInstalledPlugin) ginServer.Handle("POST", "/api/bazaar/installBazaarPlugin", model.CheckAuth, model.CheckReadonly, installBazaarPlugin) diff --git a/kernel/model/bazzar.go b/kernel/model/bazzar.go index f53e42e4fb..573d4cf742 100644 --- a/kernel/model/bazzar.go +++ b/kernel/model/bazzar.go @@ -30,7 +30,7 @@ import ( "github.com/siyuan-note/siyuan/kernel/bazaar" ) -func BazaarPackages(frontend string) (plugins []*bazaar.Plugin, widgets []*bazaar.Widget, icons []*bazaar.Icon, themes []*bazaar.Theme, templates []*bazaar.Template) { +func UpdatedPackages(frontend string) (plugins []*bazaar.Plugin, widgets []*bazaar.Widget, icons []*bazaar.Icon, themes []*bazaar.Theme, templates []*bazaar.Template) { wg := &sync.WaitGroup{} wg.Add(5) go func() { From d793155e55147477797f986a0f2fcf5eae33d8fb Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 21 Mar 2024 17:10:14 +0800 Subject: [PATCH 15/77] :art: One-click upgrade of downloaded marketplace packages https://github.com/siyuan-note/siyuan/issues/8390 --- kernel/model/bazzar.go | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/kernel/model/bazzar.go b/kernel/model/bazzar.go index 573d4cf742..6ec935baf3 100644 --- a/kernel/model/bazzar.go +++ b/kernel/model/bazzar.go @@ -35,27 +35,52 @@ func UpdatedPackages(frontend string) (plugins []*bazaar.Plugin, widgets []*baza wg.Add(5) go func() { defer wg.Done() - plugins = InstalledPlugins(frontend, "") + tmp := InstalledPlugins(frontend, "") + for _, plugin := range tmp { + if plugin.Outdated { + plugins = append(plugins, plugin) + } + } }() go func() { defer wg.Done() - widgets = InstalledWidgets("") + tmp := InstalledWidgets("") + for _, widget := range tmp { + if widget.Outdated { + widgets = append(widgets, widget) + } + } }() go func() { defer wg.Done() - icons = InstalledIcons("") + tmp := InstalledIcons("") + for _, icon := range tmp { + if icon.Outdated { + icons = append(icons, icon) + } + } }() go func() { defer wg.Done() - themes = InstalledThemes("") + tmp := InstalledThemes("") + for _, theme := range tmp { + if theme.Outdated { + themes = append(themes, theme) + } + } }() go func() { defer wg.Done() - templates = InstalledTemplates("") + tmp := InstalledTemplates("") + for _, template := range tmp { + if template.Outdated { + templates = append(templates, template) + } + } }() wg.Wait() From ec622364affdfc57546f351ee540651ec719dd7f Mon Sep 17 00:00:00 2001 From: Vanessa Date: Thu, 21 Mar 2024 17:32:39 +0800 Subject: [PATCH 16/77] :art: https://github.com/siyuan-note/siyuan/issues/8390 --- app/src/config/bazaar.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/config/bazaar.ts b/app/src/config/bazaar.ts index c895ba2875..1139119919 100644 --- a/app/src/config/bazaar.ts +++ b/app/src/config/bazaar.ts @@ -83,6 +83,7 @@ export const bazaar = {
+
@@ -292,6 +293,11 @@ export const bazaar = {
`; }, + _getUpdate() { + fetchPost("/api/bazaar/getUpdatedPackage", {frontend: getFrontend()}, (response) => { + this.element.querySelector('[data-type="downloaded-update"]').innerHTML = `
` + }) + }, _genMyHTML(bazaarType: TBazaarType, app: App) { const contentElement = bazaar.element.querySelector("#configBazaarDownloaded"); if (contentElement.getAttribute("data-loading") === "true" || @@ -535,6 +541,7 @@ export const bazaar = { return; } this._genMyHTML("plugins", app); + this._getUpdate(); bazaar.element.firstElementChild.addEventListener("click", (event) => { let target = event.target as HTMLElement; const dataElement = hasClosestByAttribute(target, "data-obj", null); From 496c44e389bd5ceda03cfb6ff1db10d78fb8559b Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 21 Mar 2024 17:58:53 +0800 Subject: [PATCH 17/77] :art: One-click upgrade of downloaded marketplace packages https://github.com/siyuan-note/siyuan/issues/8390 --- kernel/model/bazzar.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/kernel/model/bazzar.go b/kernel/model/bazzar.go index 6ec935baf3..ffe71755b8 100644 --- a/kernel/model/bazzar.go +++ b/kernel/model/bazzar.go @@ -84,6 +84,26 @@ func UpdatedPackages(frontend string) (plugins []*bazaar.Plugin, widgets []*baza }() wg.Wait() + + if 1 > len(plugins) { + plugins = []*bazaar.Plugin{} + } + + if 1 > len(widgets) { + widgets = []*bazaar.Widget{} + } + + if 1 > len(icons) { + icons = []*bazaar.Icon{} + } + + if 1 > len(themes) { + themes = []*bazaar.Theme{} + } + + if 1 > len(templates) { + templates = []*bazaar.Template{} + } return } From c228971a23a9474f9a312a0122fa85a302f82fdb Mon Sep 17 00:00:00 2001 From: Vanessa Date: Thu, 21 Mar 2024 18:05:10 +0800 Subject: [PATCH 18/77] :art: https://github.com/siyuan-note/siyuan/issues/8390 --- app/src/assets/scss/base.scss | 4 +++ app/src/config/bazaar.ts | 51 ++++++++++++++++++++++++++++++----- 2 files changed, 48 insertions(+), 7 deletions(-) diff --git a/app/src/assets/scss/base.scss b/app/src/assets/scss/base.scss index 25f511cfd7..d34c69e875 100644 --- a/app/src/assets/scss/base.scss +++ b/app/src/assets/scss/base.scss @@ -371,6 +371,10 @@ html { width: 32px; text-align: right; } + + &--bg { + background-color: var(--b3-theme-surface); + } } .reveal { diff --git a/app/src/config/bazaar.ts b/app/src/config/bazaar.ts index 1139119919..741bf227b4 100644 --- a/app/src/config/bazaar.ts +++ b/app/src/config/bazaar.ts @@ -102,7 +102,7 @@ export const bazaar = {
-
+
${loadingHTML} @@ -131,7 +131,7 @@ export const bazaar = {
-
+
${loadingHTML} @@ -154,7 +154,7 @@ export const bazaar = {
-
+
${loadingHTML} @@ -177,7 +177,7 @@ export const bazaar = {
-
+
${loadingHTML} @@ -200,7 +200,7 @@ export const bazaar = {
-
+
${loadingHTML} @@ -223,7 +223,7 @@ export const bazaar = {
-
+
${loadingHTML} @@ -292,10 +292,47 @@ export const bazaar = {
`; + }, + _genUpdateItemHTML (item: IBazaarItem) { + return `
+
+
+
+ ${item.preferredName} ${item.name} +
${item.preferredDesc || ""}
+
+
+
+ ${item.incompatible ? `${window.siyuan.languages.incompatible}` : ""} + ${item.preferredFunding ? `` : ""} +
+
` }, _getUpdate() { fetchPost("/api/bazaar/getUpdatedPackage", {frontend: getFrontend()}, (response) => { - this.element.querySelector('[data-type="downloaded-update"]').innerHTML = `
` + let html = ""; + response.data.plugins.forEach((item: IBazaarItem) => { + html += this._genUpdateItemHTML(item); + }); + response.data.themes.forEach((item: IBazaarItem) => { + html += this._genUpdateItemHTML(item); + }); + response.data.icons.forEach((item: IBazaarItem) => { + html += this._genUpdateItemHTML(item); + }); + response.data.templates.forEach((item: IBazaarItem) => { + html += this._genUpdateItemHTML(item); + }); + response.data.widgets.forEach((item: IBazaarItem) => { + html += this._genUpdateItemHTML(item); + }); + this.element.querySelector('[data-type="downloaded-update"]').innerHTML = `
+
+ + +
${response.data.themes.length + response.data.icons.length + response.data.widgets.length + response.data.plugins.length + response.data.templates.length}
+
+
${html}
`; }) }, _genMyHTML(bazaarType: TBazaarType, app: App) { From 5f5bb83ed560a912b405e4b361aaa4aa9367883c Mon Sep 17 00:00:00 2001 From: Soltus Date: Thu, 21 Mar 2024 18:51:59 +0800 Subject: [PATCH 19/77] https://github.com/Hi-Windom/Sillot/issues/587 --- app/scripts/genTPLData.js | 3 +++ app/src/assets/template/mobile/index.tpl | 3 +++ app/src/protyle/util/compatibility.ts | 31 +++++++++++++++++++++++- 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/app/scripts/genTPLData.js b/app/scripts/genTPLData.js index f2aa8d084e..e0a95bc24b 100644 --- a/app/scripts/genTPLData.js +++ b/app/scripts/genTPLData.js @@ -37,6 +37,9 @@ exports.default = { + + + diff --git a/app/src/assets/template/mobile/index.tpl b/app/src/assets/template/mobile/index.tpl index faeed503fb..918650e9bc 100644 --- a/app/src/assets/template/mobile/index.tpl +++ b/app/src/assets/template/mobile/index.tpl @@ -23,6 +23,9 @@ + + + diff --git a/app/src/protyle/util/compatibility.ts b/app/src/protyle/util/compatibility.ts index a3b5f7f22d..24daa941e8 100644 --- a/app/src/protyle/util/compatibility.ts +++ b/app/src/protyle/util/compatibility.ts @@ -9,7 +9,36 @@ export const openByMobile = (uri: string) => { if (window.siyuan.config.system.container === "ios") { window.location.href = uri; } else if (isInAndroid()) { - window.JSAndroid.openExternal(uri); + const toolbarOpenBy = document.querySelector("#toolbarOpenBy"); + const toolbarConsole = document.querySelector("#toolbarConsole"); + if (toolbarOpenBy && toolbarConsole) { + const existingUri = toolbarOpenBy.getAttribute("data-uri"); + + // 只有在首次调用时才更新uri和绑定事件 + if (!existingUri) { + toolbarConsole.classList.add("fn__none"); + toolbarOpenBy.classList.remove("fn__none"); + + toolbarOpenBy.addEventListener("click", () => { + toolbarOpenBy.classList.add("fn__none"); + toolbarConsole.classList.remove("fn__none"); + const updatedUri = toolbarOpenBy.getAttribute("data-uri"); + if (updatedUri) { + window.JSAndroid.openExternal(updatedUri); + toolbarOpenBy.removeAttribute("data-uri"); + } + }); + + // 更新"data-uri"值 + toolbarOpenBy.setAttribute("data-uri", uri); + } else { + // 更新"data-uri"值 + toolbarOpenBy.setAttribute("data-uri", uri); + } + } else { + // 如果找不到元素,则直接调用 + window.JSAndroid.openExternal(uri); + } } else { window.open(uri); } From a42d0f27509ddc5da7813897524c490ccf4f127c Mon Sep 17 00:00:00 2001 From: Soltus Date: Thu, 21 Mar 2024 19:25:37 +0800 Subject: [PATCH 20/77] =?UTF-8?q?#587=20=E7=BB=86=E8=8A=82=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/assets/scss/base.scss | 3 ++- app/src/assets/scss/mobile.scss | 3 ++- .../scss/sillot/{_logic.scss => _base_logic.scss} | 0 app/src/assets/scss/sillot/_base_motion.scss | 12 ++++++++++++ app/src/protyle/util/compatibility.ts | 12 ++++++++++++ 5 files changed, 28 insertions(+), 2 deletions(-) rename app/src/assets/scss/sillot/{_logic.scss => _base_logic.scss} (100%) create mode 100644 app/src/assets/scss/sillot/_base_motion.scss diff --git a/app/src/assets/scss/base.scss b/app/src/assets/scss/base.scss index db3f09e696..0288e8fc2e 100644 --- a/app/src/assets/scss/base.scss +++ b/app/src/assets/scss/base.scss @@ -36,7 +36,8 @@ @import "business/av"; // sillot extend start -@import "sillot/logic"; +@import "sillot/base_logic"; +@import "sillot/base_motion"; // sillot extend end /* diff --git a/app/src/assets/scss/mobile.scss b/app/src/assets/scss/mobile.scss index 3ec1ef7f87..f303f657e9 100644 --- a/app/src/assets/scss/mobile.scss +++ b/app/src/assets/scss/mobile.scss @@ -29,7 +29,8 @@ @import "business/search"; // sillot extend start -@import "sillot/logic"; +@import "sillot/base_logic"; +@import "sillot/base_motion"; @import "sillot/mobile_slider"; @import "sillot/mobile_menu"; // sillot extend end diff --git a/app/src/assets/scss/sillot/_logic.scss b/app/src/assets/scss/sillot/_base_logic.scss similarity index 100% rename from app/src/assets/scss/sillot/_logic.scss rename to app/src/assets/scss/sillot/_base_logic.scss diff --git a/app/src/assets/scss/sillot/_base_motion.scss b/app/src/assets/scss/sillot/_base_motion.scss new file mode 100644 index 0000000000..386490deaf --- /dev/null +++ b/app/src/assets/scss/sillot/_base_motion.scss @@ -0,0 +1,12 @@ +.flash-blue { + animation: flash 0.1s infinite alternate; +} + +@keyframes flash { + from { + background-color: transparent; + } + to { + background-color: rgba(56, 83, 218, 0.83); + } +} diff --git a/app/src/protyle/util/compatibility.ts b/app/src/protyle/util/compatibility.ts index 24daa941e8..9f0b1a6a18 100644 --- a/app/src/protyle/util/compatibility.ts +++ b/app/src/protyle/util/compatibility.ts @@ -31,9 +31,21 @@ export const openByMobile = (uri: string) => { // 更新"data-uri"值 toolbarOpenBy.setAttribute("data-uri", uri); + if (!toolbarOpenBy.classList.contains("flash-blue")) { + toolbarOpenBy.classList.add("flash-blue"); + setTimeout(() => { + toolbarOpenBy.classList.remove("flash-blue"); + }, 200); + } } else { // 更新"data-uri"值 toolbarOpenBy.setAttribute("data-uri", uri); + if (!toolbarOpenBy.classList.contains("flash-blue")) { + toolbarOpenBy.classList.add("flash-blue"); + setTimeout(() => { + toolbarOpenBy.classList.remove("flash-blue"); + }, 200); + } } } else { // 如果找不到元素,则直接调用 From 7a9f05937f2ffeadb563a570041c55c56f2c41d0 Mon Sep 17 00:00:00 2001 From: Soltus Date: Thu, 21 Mar 2024 20:56:06 +0800 Subject: [PATCH 21/77] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E9=87=8C=E7=A8=8B?= =?UTF-8?q?=E7=A2=91=E5=85=B3=E9=97=AD=E5=AF=BC=E8=87=B4=E6=A3=80=E7=B4=A2?= =?UTF-8?q?=E4=B8=8D=E5=88=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/parse-changelog-sillot.py | 3 ++- scripts/parse-changelog.py | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/parse-changelog-sillot.py b/scripts/parse-changelog-sillot.py index 58108bd1b2..7b03b0d9e7 100644 --- a/scripts/parse-changelog-sillot.py +++ b/scripts/parse-changelog-sillot.py @@ -81,7 +81,8 @@ def find_milestone(repo, title, lastestRelease): --- ''') - for milestone in repo.get_milestones(): + for milestone in repo.get_milestones(state=all): + # REF https://docs.github.com/en/rest/issues/milestones?apiVersion=2022-11-28#list-milestones if version in milestone.title: return milestone diff --git a/scripts/parse-changelog.py b/scripts/parse-changelog.py index 710f59bc3b..9466442b71 100644 --- a/scripts/parse-changelog.py +++ b/scripts/parse-changelog.py @@ -71,10 +71,9 @@ def find_milestone(repo, title, lastestRelease): # --- # ''') - for milestone in repo.get_milestones(): + for milestone in repo.get_milestones(state=all): if version in milestone.title: return milestone - return version def get_issue_first_label(issue): From c8afc608ba7e27121dbe5015d5dc96111fe08fcb Mon Sep 17 00:00:00 2001 From: Soltus Date: Thu, 21 Mar 2024 20:58:39 +0800 Subject: [PATCH 22/77] test --- app/package.json | 14 +- app/pnpm-lock.yaml | 1271 +++++++++++++++++++++++--------------------- 2 files changed, 665 insertions(+), 620 deletions(-) diff --git a/app/package.json b/app/package.json index 05c5cf8284..d41e97b6fd 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "sillot", - "version": "0.27.13", + "version": "0.27.14", "syv": "3.0.4", "description": "Build Your Eternal Digital Garden", "homepage": "https://github.com/Hi-Windom/Sillot", @@ -76,11 +76,11 @@ } ], "devDependencies": { - "@babel/core": "^7.24.0", + "@babel/core": "^7.24.3", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", "@babel/plugin-proposal-optional-chaining": "^7.21.0", - "@babel/plugin-transform-runtime": "^7.24.0", - "@babel/preset-env": "^7.24.0", + "@babel/plugin-transform-runtime": "^7.24.3", + "@babel/preset-env": "^7.24.3", "@babel/preset-react": "^7.23.3", "@babel/preset-typescript": "^7.23.3", "@babel/runtime": "^7.24.0", @@ -135,7 +135,7 @@ "npm-check": "^6.0.1", "ora": "^8.0.1", "path-browserify": "^1.0.1", - "postcss": "^8.4.36", + "postcss": "^8.4.38", "react": "18.2.0", "react-dom": "18.2.0", "react-hot-toast": "^2.4.1", @@ -161,9 +161,9 @@ "ts-jest": "^29.1.2", "ts-loader": "^9.5.1", "tslib": "^2.6.2", - "typescript": "^5.4.2", + "typescript": "^5.4.3", "vconsole": "^3.15.1", - "webpack": "^5.90.3", + "webpack": "^5.91.0", "webpack-bundle-analyzer": "^4.10.1", "webpack-cli": "^5.1.4" }, diff --git a/app/pnpm-lock.yaml b/app/pnpm-lock.yaml index 24b8862cbf..21f933af52 100644 --- a/app/pnpm-lock.yaml +++ b/app/pnpm-lock.yaml @@ -31,26 +31,26 @@ importers: version: 3.1.0 devDependencies: '@babel/core': - specifier: ^7.24.0 - version: 7.24.1 + specifier: ^7.24.3 + version: 7.24.3 '@babel/plugin-proposal-nullish-coalescing-operator': specifier: ^7.18.6 - version: 7.18.6(@babel/core@7.24.1) + version: 7.18.6(@babel/core@7.24.3) '@babel/plugin-proposal-optional-chaining': specifier: ^7.21.0 - version: 7.21.0(@babel/core@7.24.1) + version: 7.21.0(@babel/core@7.24.3) '@babel/plugin-transform-runtime': - specifier: ^7.24.0 - version: 7.24.1(@babel/core@7.24.1) + specifier: ^7.24.3 + version: 7.24.3(@babel/core@7.24.3) '@babel/preset-env': - specifier: ^7.24.0 - version: 7.24.1(@babel/core@7.24.1) + specifier: ^7.24.3 + version: 7.24.3(@babel/core@7.24.3) '@babel/preset-react': specifier: ^7.23.3 - version: 7.24.1(@babel/core@7.24.1) + version: 7.24.1(@babel/core@7.24.3) '@babel/preset-typescript': specifier: ^7.23.3 - version: 7.24.1(@babel/core@7.24.1) + version: 7.24.1(@babel/core@7.24.3) '@babel/runtime': specifier: ^7.24.0 version: 7.24.1 @@ -71,7 +71,7 @@ importers: version: 5.15.14(@emotion/react@11.11.4(@types/react@18.2.67)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.2.67)(react@18.2.0))(@types/react@18.2.67)(react@18.2.0))(@types/react@18.2.67)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@rollup/plugin-babel': specifier: ^6.0.4 - version: 6.0.4(@babel/core@7.24.1)(rollup@4.13.0) + version: 6.0.4(@babel/core@7.24.3)(rollup@4.13.0) '@rollup/plugin-commonjs': specifier: ^25.0.7 version: 25.0.7(rollup@4.13.0) @@ -107,28 +107,28 @@ importers: version: 18.2.22 '@typescript-eslint/eslint-plugin': specifier: ^7.3.1 - version: 7.3.1(@typescript-eslint/parser@7.3.1(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(typescript@5.4.2) + version: 7.3.1(@typescript-eslint/parser@7.3.1(eslint@8.57.0)(typescript@5.4.3))(eslint@8.57.0)(typescript@5.4.3) '@typescript-eslint/parser': specifier: ^7.3.1 - version: 7.3.1(eslint@8.57.0)(typescript@5.4.2) + version: 7.3.1(eslint@8.57.0)(typescript@5.4.3) '@wixc3/react-board': specifier: ^2.4.1 version: 2.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) babel-loader: specifier: ^9.1.3 - version: 9.1.3(@babel/core@7.24.1)(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)) + version: 9.1.3(@babel/core@7.24.3)(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)) brace: specifier: ^0.11.1 version: 0.11.1 clean-webpack-plugin: specifier: ^4.0.0 - version: 4.0.0(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)) + version: 4.0.0(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)) concurrently: specifier: ^8.2.2 version: 8.2.2 css-loader: specifier: ^6.10.0 - version: 6.10.0(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)) + version: 6.10.0(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)) csstype: specifier: ^3.1.3 version: 3.1.3 @@ -155,7 +155,7 @@ importers: version: 0.20.2 esbuild-loader: specifier: ^4.1.0 - version: 4.1.0(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)) + version: 4.1.0(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)) eslint: specifier: ^8.57.0 version: 8.57.0 @@ -167,16 +167,16 @@ importers: version: 4.6.0(eslint@8.57.0) file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)) + version: 6.2.0(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)) fs-extra: specifier: ^11.2.0 version: 11.2.0 html-loader: specifier: ^5.0.0 - version: 5.0.0(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)) + version: 5.0.0(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)) html-webpack-plugin: specifier: ^5.6.0 - version: 5.6.0(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)) + version: 5.6.0(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)) iconv-lite: specifier: ^0.6.3 version: 0.6.3 @@ -194,10 +194,10 @@ importers: version: 4.17.21 mini-css-extract-plugin: specifier: 2.8.1 - version: 2.8.1(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)) + version: 2.8.1(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)) monaco-editor-webpack-plugin: specifier: ^7.1.0 - version: 7.1.0(monaco-editor@0.47.0)(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)) + version: 7.1.0(monaco-editor@0.47.0)(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)) npm-check: specifier: ^6.0.1 version: 6.0.1 @@ -208,8 +208,8 @@ importers: specifier: ^1.0.1 version: 1.0.1 postcss: - specifier: ^8.4.36 - version: 8.4.37 + specifier: ^8.4.38 + version: 8.4.38 react: specifier: 18.2.0 version: 18.2.0 @@ -239,7 +239,7 @@ importers: version: 3.5.0(rollup@4.13.0) rollup-plugin-postcss: specifier: ^4.0.2 - version: 4.0.2(postcss@8.4.37) + version: 4.0.2(postcss@8.4.38) rome: specifier: ^12.1.3 version: 12.1.3 @@ -254,7 +254,7 @@ importers: version: 1.72.0 sass-loader: specifier: ^14.1.1 - version: 14.1.1(sass@1.72.0)(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)) + version: 14.1.1(sass@1.72.0)(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)) shelljs: specifier: ^0.8.5 version: 0.8.5 @@ -263,43 +263,43 @@ importers: version: 4.7.5 sofill: specifier: ^1.0.76 - version: 1.0.76(@sillot/bridge@0.0.3)(typescript@5.4.2) + version: 1.0.76(@sillot/bridge@0.0.3)(typescript@5.4.3) sout: specifier: ^1.1.0 version: 1.1.0 style-loader: specifier: ^3.3.4 - version: 3.3.4(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)) + version: 3.3.4(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)) sweetalert2: specifier: ^11.10.6 version: 11.10.6 terser-webpack-plugin: specifier: ^5.3.10 - version: 5.3.10(esbuild@0.20.2)(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)) + version: 5.3.10(esbuild@0.20.2)(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)) ts-jest: specifier: ^29.1.2 - version: 29.1.2(@babel/core@7.24.1)(esbuild@0.20.2)(jest@29.7.0(@types/node@20.11.30))(typescript@5.4.2) + version: 29.1.2(@babel/core@7.24.3)(esbuild@0.20.2)(jest@29.7.0(@types/node@20.11.30))(typescript@5.4.3) ts-loader: specifier: ^9.5.1 - version: 9.5.1(typescript@5.4.2)(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)) + version: 9.5.1(typescript@5.4.3)(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)) tslib: specifier: ^2.6.2 version: 2.6.2 typescript: - specifier: ^5.4.2 - version: 5.4.2 + specifier: ^5.4.3 + version: 5.4.3 vconsole: specifier: ^3.15.1 version: 3.15.1 webpack: - specifier: ^5.90.3 - version: 5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4) + specifier: ^5.91.0 + version: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) webpack-bundle-analyzer: specifier: ^4.10.1 version: 4.10.1 webpack-cli: specifier: ^5.1.4 - version: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.3) + version: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.91.0) packages: @@ -318,12 +318,16 @@ packages: resolution: {integrity: sha512-bC49z4spJQR3j8vFtJBLqzyzFV0ciuL5HYX7qfSl3KEqeMVV+eTquRvmXxpvB0AMubRrvv7y5DILiLLPi57Ewg==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.24.2': + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.24.1': resolution: {integrity: sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==} engines: {node: '>=6.9.0'} - '@babel/core@7.24.1': - resolution: {integrity: sha512-F82udohVyIgGAY2VVj/g34TpFUG606rumIHjTfVbssPg2zTR7PuuEpZcX8JA6sgBfIYmJrFtWgPvHQuJamVqZQ==} + '@babel/core@7.24.3': + resolution: {integrity: sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==} engines: {node: '>=6.9.0'} '@babel/generator@7.24.1': @@ -379,6 +383,10 @@ packages: resolution: {integrity: sha512-HfEWzysMyOa7xI5uQHc/OcZf67/jc+xe/RZlznWQHhbb8Pg1SkRdbK4yEi61aY8wxQA7PkSfoojtLQP/Kpe3og==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.24.3': + resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.23.3': resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} @@ -441,6 +449,10 @@ packages: resolution: {integrity: sha512-EPmDPxidWe/Ex+HTFINpvXdPHRmgSF3T8hGvzondYjmgzTQ/0EbLpSxyt+w3zzlYSk9cNBQNF9k0dT5Z2NiBjw==} engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.2': + resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.24.1': resolution: {integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==} engines: {node: '>=6.0.0'} @@ -603,8 +615,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.24.1': - resolution: {integrity: sha512-OTkLJM0OtmzcpOgF7MREERUCdCnCBtBsq3vVFbuq/RKMK0/jdYqdMexWi3zNs7Nzd95ase65MbTGrpFJflOb6A==} + '@babel/plugin-transform-async-generator-functions@7.24.3': + resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -855,8 +867,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-runtime@7.24.1': - resolution: {integrity: sha512-yHLX14/T+tO0gjgJroDb8JYjOcQuzVC+Brt4CjHAxq/Ghw4xBVG+N02d1rMEcyUnKUQBL4Yy2gA9R72GK961jQ==} + '@babel/plugin-transform-runtime@7.24.3': + resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -921,8 +933,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.24.1': - resolution: {integrity: sha512-CwCMz1Z28UHLI2iE+cbnWT2epPMV9bzzoBGM6A3mOS22VQd/1TPoWItV7S7iL9TkPmPEf5L/QzurmztyyDN9FA==} + '@babel/preset-env@7.24.3': + resolution: {integrity: sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2252,6 +2264,11 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-corejs3@0.10.4: + resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-regenerator@0.6.1: resolution: {integrity: sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==} peerDependencies: @@ -4956,8 +4973,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.37: - resolution: {integrity: sha512-7iB/v/r7Woof0glKLH8b1SPHrsX7uhdO+Geb41QpF/+mWZHU3uxxSlN+UXGVit1PawOYDToO+AbZzhBzWRDwbQ==} + postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} preferred-pm@3.1.3: @@ -5919,8 +5936,8 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - typescript@5.4.2: - resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + typescript@5.4.3: + resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==} engines: {node: '>=14.17'} hasBin: true @@ -6045,8 +6062,8 @@ packages: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} - webpack@5.90.3: - resolution: {integrity: sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==} + webpack@5.91.0: + resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -6213,16 +6230,22 @@ snapshots: picocolors: 1.0.0 dev: true + '@babel/code-frame@7.24.2': + dependencies: + '@babel/highlight': 7.24.2 + picocolors: 1.0.0 + dev: true + '@babel/compat-data@7.24.1': dev: true - '@babel/core@7.24.1': + '@babel/core@7.24.3': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.1 + '@babel/code-frame': 7.24.2 '@babel/generator': 7.24.1 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.1) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) '@babel/helpers': 7.24.1 '@babel/parser': 7.24.1 '@babel/template': 7.24.0 @@ -6264,31 +6287,31 @@ snapshots: semver: 6.3.1 dev: true - '@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.24.1)': + '@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.1) + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 dev: true - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.1)': + '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 dev: true - '@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.1)': + '@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.0 debug: 4.3.4 @@ -6322,9 +6345,14 @@ snapshots: '@babel/types': 7.24.0 dev: true - '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.1)': + '@babel/helper-module-imports@7.24.3': + dependencies: + '@babel/types': 7.24.0 + dev: true + + '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.24.1 '@babel/helper-simple-access': 7.22.5 @@ -6340,17 +6368,17 @@ snapshots: '@babel/helper-plugin-utils@7.24.0': dev: true - '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.1)': + '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 dev: true - '@babel/helper-replace-supers@7.24.1(@babel/core@7.24.1)': + '@babel/helper-replace-supers@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 @@ -6404,683 +6432,691 @@ snapshots: picocolors: 1.0.0 dev: true + '@babel/highlight@7.24.2': + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.0 + dev: true + '@babel/parser@7.24.1': dependencies: '@babel/types': 7.24.0 dev: true - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.1) + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.3) dev: true - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.1)': + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) dev: true - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.24.1)': + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) dev: true - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.1)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 dev: true - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.1)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.1)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.1)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.1)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.1)': + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.1)': + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.1)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.1)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.1)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.1)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.1)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.1)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.1)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.1)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.1)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.1)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.1)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-async-generator-functions@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.1) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.1) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.3) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.3) dev: true - '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-module-imports': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.1) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.3) dev: true - '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-block-scoping@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-block-scoping@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-class-static-block@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-class-static-block@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.1) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.3) dev: true - '@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.1) + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 dev: true - '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/template': 7.24.0 dev: true - '@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.3) dev: true - '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.3) dev: true - '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true - '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.3) dev: true - '@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.1) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.3) dev: true - '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-simple-access': 7.22.5 dev: true - '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.1) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-identifier': 7.22.20 dev: true - '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.1)': + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) dev: true - '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.1) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.3) dev: true - '@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.1) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.3) dev: true - '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.1) + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) dev: true - '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.3) dev: true - '@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) dev: true - '@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.1) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.3) dev: true - '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.1)': + '@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.3) dev: true - '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.1)': + '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-module-imports': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.1) + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) '@babel/types': 7.24.0 dev: true - '@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 regenerator-transform: 0.15.2 dev: true - '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-runtime@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 - '@babel/helper-module-imports': 7.24.1 + '@babel/core': 7.24.3 + '@babel/helper-module-imports': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.1) - babel-plugin-polyfill-corejs3: 0.10.1(@babel/core@7.24.1) - babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.1) + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.3) + babel-plugin-polyfill-corejs3: 0.10.1(@babel/core@7.24.3) + babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.3) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true - '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-typescript@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-typescript@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.1) + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.3) dev: true - '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.1)': + '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 dev: true - '@babel/preset-env@7.24.1(@babel/core@7.24.1)': + '@babel/preset-env@7.24.3(@babel/core@7.24.3)': dependencies: '@babel/compat-data': 7.24.1 - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.1) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.1) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.1) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.1) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.1) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.1) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.1) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.1) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.1) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.1) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-async-generator-functions': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-block-scoping': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-class-static-block': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.1) - '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-typeof-symbol': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.1) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.1) - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.1) - babel-plugin-polyfill-corejs3: 0.10.1(@babel/core@7.24.1) - babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.1) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.3) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.3) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.3) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.3) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.3) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.3) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.3) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.3) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-block-scoping': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-class-static-block': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.3) + '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-typeof-symbol': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.3) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.3) + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.3) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.3) + babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.3) core-js-compat: 3.36.1 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.1)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/types': 7.24.0 esutils: 2.0.3 dev: true - '@babel/preset-react@7.24.1(@babel/core@7.24.1)': + '@babel/preset-react@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.1) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.1) - '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.24.1) + '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.3) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.3) + '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.24.3) dev: true - '@babel/preset-typescript@7.24.1(@babel/core@7.24.1)': + '@babel/preset-typescript@7.24.1(@babel/core@7.24.3)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.1) + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.3) dev: true '@babel/regjsgen@0.8.0': @@ -7093,14 +7129,14 @@ snapshots: '@babel/template@7.24.0': dependencies: - '@babel/code-frame': 7.24.1 + '@babel/code-frame': 7.24.2 '@babel/parser': 7.24.1 '@babel/types': 7.24.0 dev: true '@babel/traverse@7.24.1': dependencies: - '@babel/code-frame': 7.24.1 + '@babel/code-frame': 7.24.2 '@babel/generator': 7.24.1 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 @@ -7610,7 +7646,7 @@ snapshots: '@jest/transform@29.7.0': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 @@ -7854,9 +7890,9 @@ snapshots: react: 18.2.0 dev: true - '@rollup/plugin-babel@6.0.4(@babel/core@7.24.1)(rollup@4.13.0)': + '@rollup/plugin-babel@6.0.4(@babel/core@7.24.3)(rollup@4.13.0)': dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-module-imports': 7.24.1 '@rollup/pluginutils': 5.1.0(rollup@4.13.0) rollup: 4.13.0 @@ -8226,13 +8262,13 @@ snapshots: '@types/node': 20.11.30 optional: true - '@typescript-eslint/eslint-plugin@7.3.1(@typescript-eslint/parser@7.3.1(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(typescript@5.4.2)': + '@typescript-eslint/eslint-plugin@7.3.1(@typescript-eslint/parser@7.3.1(eslint@8.57.0)(typescript@5.4.3))(eslint@8.57.0)(typescript@5.4.3)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.3.1(eslint@8.57.0)(typescript@5.4.2) + '@typescript-eslint/parser': 7.3.1(eslint@8.57.0)(typescript@5.4.3) '@typescript-eslint/scope-manager': 7.3.1 - '@typescript-eslint/type-utils': 7.3.1(eslint@8.57.0)(typescript@5.4.2) - '@typescript-eslint/utils': 7.3.1(eslint@8.57.0)(typescript@5.4.2) + '@typescript-eslint/type-utils': 7.3.1(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/utils': 7.3.1(eslint@8.57.0)(typescript@5.4.3) '@typescript-eslint/visitor-keys': 7.3.1 debug: 4.3.4 eslint: 8.57.0 @@ -8240,21 +8276,21 @@ snapshots: ignore: 5.3.1 natural-compare: 1.4.0 semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.2) - typescript: 5.4.2 + ts-api-utils: 1.3.0(typescript@5.4.3) + typescript: 5.4.3 transitivePeerDependencies: - supports-color dev: true - '@typescript-eslint/parser@7.3.1(eslint@8.57.0)(typescript@5.4.2)': + '@typescript-eslint/parser@7.3.1(eslint@8.57.0)(typescript@5.4.3)': dependencies: '@typescript-eslint/scope-manager': 7.3.1 '@typescript-eslint/types': 7.3.1 - '@typescript-eslint/typescript-estree': 7.3.1(typescript@5.4.2) + '@typescript-eslint/typescript-estree': 7.3.1(typescript@5.4.3) '@typescript-eslint/visitor-keys': 7.3.1 debug: 4.3.4 eslint: 8.57.0 - typescript: 5.4.2 + typescript: 5.4.3 transitivePeerDependencies: - supports-color dev: true @@ -8265,14 +8301,14 @@ snapshots: '@typescript-eslint/visitor-keys': 7.3.1 dev: true - '@typescript-eslint/type-utils@7.3.1(eslint@8.57.0)(typescript@5.4.2)': + '@typescript-eslint/type-utils@7.3.1(eslint@8.57.0)(typescript@5.4.3)': dependencies: - '@typescript-eslint/typescript-estree': 7.3.1(typescript@5.4.2) - '@typescript-eslint/utils': 7.3.1(eslint@8.57.0)(typescript@5.4.2) + '@typescript-eslint/typescript-estree': 7.3.1(typescript@5.4.3) + '@typescript-eslint/utils': 7.3.1(eslint@8.57.0)(typescript@5.4.3) debug: 4.3.4 eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.4.2) - typescript: 5.4.2 + ts-api-utils: 1.3.0(typescript@5.4.3) + typescript: 5.4.3 transitivePeerDependencies: - supports-color dev: true @@ -8280,7 +8316,7 @@ snapshots: '@typescript-eslint/types@7.3.1': dev: true - '@typescript-eslint/typescript-estree@7.3.1(typescript@5.4.2)': + '@typescript-eslint/typescript-estree@7.3.1(typescript@5.4.3)': dependencies: '@typescript-eslint/types': 7.3.1 '@typescript-eslint/visitor-keys': 7.3.1 @@ -8289,20 +8325,20 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.2) - typescript: 5.4.2 + ts-api-utils: 1.3.0(typescript@5.4.3) + typescript: 5.4.3 transitivePeerDependencies: - supports-color dev: true - '@typescript-eslint/utils@7.3.1(eslint@8.57.0)(typescript@5.4.2)': + '@typescript-eslint/utils@7.3.1(eslint@8.57.0)(typescript@5.4.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 7.3.1 '@typescript-eslint/types': 7.3.1 - '@typescript-eslint/typescript-estree': 7.3.1(typescript@5.4.2) + '@typescript-eslint/typescript-estree': 7.3.1(typescript@5.4.3) eslint: 8.57.0 semver: 7.6.0 transitivePeerDependencies: @@ -8343,7 +8379,7 @@ snapshots: '@vue/shared': 3.4.21 estree-walker: 2.0.2 magic-string: 0.30.8 - postcss: 8.4.37 + postcss: 8.4.38 source-map-js: 1.2.0 dev: true @@ -8447,22 +8483,22 @@ snapshots: '@xtuc/long': 4.2.2 dev: true - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.3))(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4))': + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.91.0))(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4))': dependencies: - webpack: 5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.3) + webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.91.0) dev: true - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.3))(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4))': + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.91.0))(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4))': dependencies: - webpack: 5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.3) + webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.91.0) dev: true - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.3))(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4))': + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.91.0))(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4))': dependencies: - webpack: 5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.3) + webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.91.0) dev: true '@wixc3/board-core@2.4.1': @@ -8786,13 +8822,13 @@ snapshots: possible-typed-array-names: 1.0.0 dev: true - babel-jest@29.7.0(@babel/core@7.24.1): + babel-jest@29.7.0(@babel/core@7.24.3): dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.24.1) + babel-preset-jest: 29.6.3(@babel/core@7.24.3) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -8800,12 +8836,12 @@ snapshots: - supports-color dev: true - babel-loader@9.1.3(@babel/core@7.24.1)(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)): + babel-loader@9.1.3(@babel/core@7.24.3)(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)): dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4) + webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) dev: true babel-plugin-istanbul@6.1.1: @@ -8834,55 +8870,64 @@ snapshots: resolve: 1.22.8 dev: true - babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.1): + babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.3): dependencies: '@babel/compat-data': 7.24.1 - '@babel/core': 7.24.1 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - babel-plugin-polyfill-corejs3@0.10.1(@babel/core@7.24.1): + babel-plugin-polyfill-corejs3@0.10.1(@babel/core@7.24.3): + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3) + core-js-compat: 3.36.1 + transitivePeerDependencies: + - supports-color + dev: true + + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.3): dependencies: - '@babel/core': 7.24.1 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3) core-js-compat: 3.36.1 transitivePeerDependencies: - supports-color dev: true - babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.1): + babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.3): dependencies: - '@babel/core': 7.24.1 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3) transitivePeerDependencies: - supports-color dev: true - babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.1): + babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.3): dependencies: - '@babel/core': 7.24.1 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.1) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.1) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.1) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.1) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.1) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.3) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.3) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.3) dev: true - babel-preset-jest@29.6.3(@babel/core@7.24.1): + babel-preset-jest@29.6.3(@babel/core@7.24.3): dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.1) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.3) dev: true balanced-match@1.0.2: @@ -9157,10 +9202,10 @@ snapshots: source-map: 0.6.1 dev: true - clean-webpack-plugin@4.0.0(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)): + clean-webpack-plugin@4.0.0(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)): dependencies: del: 4.1.1 - webpack: 5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4) + webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) dev: true cli-boxes@2.2.1: @@ -9332,7 +9377,7 @@ snapshots: config-file-ts@0.2.6: dependencies: glob: 10.3.10 - typescript: 5.4.2 + typescript: 5.4.3 dev: true configstore@5.0.1: @@ -9431,22 +9476,22 @@ snapshots: crypto-random-string@2.0.0: dev: true - css-declaration-sorter@6.4.1(postcss@8.4.37): + css-declaration-sorter@6.4.1(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 dev: true - css-loader@6.10.0(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)): + css-loader@6.10.0(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)): dependencies: - icss-utils: 5.1.0(postcss@8.4.37) - postcss: 8.4.37 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.37) - postcss-modules-local-by-default: 4.0.4(postcss@8.4.37) - postcss-modules-scope: 3.1.1(postcss@8.4.37) - postcss-modules-values: 4.0.0(postcss@8.4.37) + icss-utils: 5.1.0(postcss@8.4.38) + 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-values: 4.0.0(postcss@8.4.38) postcss-value-parser: 4.2.0 semver: 7.6.0 - webpack: 5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4) + webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) dev: true css-select@4.3.0: @@ -9470,50 +9515,50 @@ snapshots: cssesc@3.0.0: dev: true - cssnano-preset-default@5.2.14(postcss@8.4.37): - dependencies: - css-declaration-sorter: 6.4.1(postcss@8.4.37) - cssnano-utils: 3.1.0(postcss@8.4.37) - postcss: 8.4.37 - postcss-calc: 8.2.4(postcss@8.4.37) - postcss-colormin: 5.3.1(postcss@8.4.37) - postcss-convert-values: 5.1.3(postcss@8.4.37) - postcss-discard-comments: 5.1.2(postcss@8.4.37) - postcss-discard-duplicates: 5.1.0(postcss@8.4.37) - postcss-discard-empty: 5.1.1(postcss@8.4.37) - postcss-discard-overridden: 5.1.0(postcss@8.4.37) - postcss-merge-longhand: 5.1.7(postcss@8.4.37) - postcss-merge-rules: 5.1.4(postcss@8.4.37) - postcss-minify-font-values: 5.1.0(postcss@8.4.37) - postcss-minify-gradients: 5.1.1(postcss@8.4.37) - postcss-minify-params: 5.1.4(postcss@8.4.37) - postcss-minify-selectors: 5.2.1(postcss@8.4.37) - postcss-normalize-charset: 5.1.0(postcss@8.4.37) - postcss-normalize-display-values: 5.1.0(postcss@8.4.37) - postcss-normalize-positions: 5.1.1(postcss@8.4.37) - postcss-normalize-repeat-style: 5.1.1(postcss@8.4.37) - postcss-normalize-string: 5.1.0(postcss@8.4.37) - postcss-normalize-timing-functions: 5.1.0(postcss@8.4.37) - postcss-normalize-unicode: 5.1.1(postcss@8.4.37) - postcss-normalize-url: 5.1.0(postcss@8.4.37) - postcss-normalize-whitespace: 5.1.1(postcss@8.4.37) - postcss-ordered-values: 5.1.3(postcss@8.4.37) - postcss-reduce-initial: 5.1.2(postcss@8.4.37) - postcss-reduce-transforms: 5.1.0(postcss@8.4.37) - postcss-svgo: 5.1.0(postcss@8.4.37) - postcss-unique-selectors: 5.1.1(postcss@8.4.37) - dev: true - - cssnano-utils@3.1.0(postcss@8.4.37): - dependencies: - postcss: 8.4.37 - dev: true - - cssnano@5.1.15(postcss@8.4.37): - dependencies: - cssnano-preset-default: 5.2.14(postcss@8.4.37) + cssnano-preset-default@5.2.14(postcss@8.4.38): + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.4.38) + cssnano-utils: 3.1.0(postcss@8.4.38) + postcss: 8.4.38 + postcss-calc: 8.2.4(postcss@8.4.38) + postcss-colormin: 5.3.1(postcss@8.4.38) + postcss-convert-values: 5.1.3(postcss@8.4.38) + postcss-discard-comments: 5.1.2(postcss@8.4.38) + postcss-discard-duplicates: 5.1.0(postcss@8.4.38) + postcss-discard-empty: 5.1.1(postcss@8.4.38) + postcss-discard-overridden: 5.1.0(postcss@8.4.38) + postcss-merge-longhand: 5.1.7(postcss@8.4.38) + postcss-merge-rules: 5.1.4(postcss@8.4.38) + postcss-minify-font-values: 5.1.0(postcss@8.4.38) + postcss-minify-gradients: 5.1.1(postcss@8.4.38) + postcss-minify-params: 5.1.4(postcss@8.4.38) + postcss-minify-selectors: 5.2.1(postcss@8.4.38) + postcss-normalize-charset: 5.1.0(postcss@8.4.38) + postcss-normalize-display-values: 5.1.0(postcss@8.4.38) + postcss-normalize-positions: 5.1.1(postcss@8.4.38) + postcss-normalize-repeat-style: 5.1.1(postcss@8.4.38) + postcss-normalize-string: 5.1.0(postcss@8.4.38) + postcss-normalize-timing-functions: 5.1.0(postcss@8.4.38) + postcss-normalize-unicode: 5.1.1(postcss@8.4.38) + postcss-normalize-url: 5.1.0(postcss@8.4.38) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.38) + postcss-ordered-values: 5.1.3(postcss@8.4.38) + postcss-reduce-initial: 5.1.2(postcss@8.4.38) + postcss-reduce-transforms: 5.1.0(postcss@8.4.38) + postcss-svgo: 5.1.0(postcss@8.4.38) + postcss-unique-selectors: 5.1.1(postcss@8.4.38) + dev: true + + cssnano-utils@3.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + dev: true + + cssnano@5.1.15(postcss@8.4.38): + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.4.38) lilconfig: 2.1.0 - postcss: 8.4.37 + postcss: 8.4.38 yaml: 1.10.2 dev: true @@ -10099,12 +10144,12 @@ snapshots: es6-error@4.1.1: optional: true - esbuild-loader@4.1.0(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)): + esbuild-loader@4.1.0(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)): dependencies: esbuild: 0.20.2 get-tsconfig: 4.7.3 loader-utils: 2.0.4 - webpack: 5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4) + webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) webpack-sources: 1.4.3 dev: true @@ -10372,11 +10417,11 @@ snapshots: flat-cache: 3.2.0 dev: true - file-loader@6.2.0(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)): + file-loader@6.2.0(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4) + webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) dev: true filelist@1.0.4: @@ -10802,11 +10847,11 @@ snapshots: html-escaper@2.0.2: dev: true - html-loader@5.0.0(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)): + html-loader@5.0.0(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)): dependencies: html-minifier-terser: 7.2.0 parse5: 7.1.2 - webpack: 5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4) + webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) dev: true html-minifier-terser@6.1.0: @@ -10831,14 +10876,14 @@ snapshots: terser: 5.29.2 dev: true - html-webpack-plugin@5.6.0(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)): + html-webpack-plugin@5.6.0(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4) + webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) dev: true htmlparser2@6.1.0: @@ -10895,9 +10940,9 @@ snapshots: icss-replace-symbols@1.1.0: dev: true - icss-utils@5.1.0(postcss@8.4.37): + icss-utils@5.1.0(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 dev: true ieee754@1.2.1: @@ -11255,7 +11300,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/parser': 7.24.1 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -11266,7 +11311,7 @@ snapshots: istanbul-lib-instrument@6.0.2: dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/parser': 7.24.1 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -11377,11 +11422,11 @@ snapshots: jest-config@29.7.0(@types/node@20.11.30): dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 '@types/node': 20.11.30 - babel-jest: 29.7.0(@babel/core@7.24.1) + babel-jest: 29.7.0(@babel/core@7.24.3) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -11577,15 +11622,15 @@ snapshots: jest-snapshot@29.7.0: dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/generator': 7.24.1 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.1) + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.3) '@babel/types': 7.24.0 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.1) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.3) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -11985,11 +12030,11 @@ snapshots: min-indent@1.0.1: dev: true - mini-css-extract-plugin@2.8.1(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)): + mini-css-extract-plugin@2.8.1(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)): dependencies: schema-utils: 4.2.0 tapable: 2.2.1 - webpack: 5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4) + webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) dev: true minimatch@3.1.2: @@ -12045,11 +12090,11 @@ snapshots: monaco-editor-nls@3.1.0: dev: false - monaco-editor-webpack-plugin@7.1.0(monaco-editor@0.47.0)(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)): + monaco-editor-webpack-plugin@7.1.0(monaco-editor@0.47.0)(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)): dependencies: loader-utils: 2.0.4 monaco-editor: 0.47.0 - webpack: 5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4) + webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) dev: true monaco-editor@0.47.0: {} @@ -12476,210 +12521,210 @@ snapshots: possible-typed-array-names@1.0.0: dev: true - postcss-calc@8.2.4(postcss@8.4.37): + postcss-calc@8.2.4(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 postcss-selector-parser: 6.0.16 postcss-value-parser: 4.2.0 dev: true - postcss-colormin@5.3.1(postcss@8.4.37): + postcss-colormin@5.3.1(postcss@8.4.38): dependencies: browserslist: 4.23.0 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.37 + postcss: 8.4.38 postcss-value-parser: 4.2.0 dev: true - postcss-convert-values@5.1.3(postcss@8.4.37): + postcss-convert-values@5.1.3(postcss@8.4.38): dependencies: browserslist: 4.23.0 - postcss: 8.4.37 + postcss: 8.4.38 postcss-value-parser: 4.2.0 dev: true - postcss-discard-comments@5.1.2(postcss@8.4.37): + postcss-discard-comments@5.1.2(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 dev: true - postcss-discard-duplicates@5.1.0(postcss@8.4.37): + postcss-discard-duplicates@5.1.0(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 dev: true - postcss-discard-empty@5.1.1(postcss@8.4.37): + postcss-discard-empty@5.1.1(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 dev: true - postcss-discard-overridden@5.1.0(postcss@8.4.37): + postcss-discard-overridden@5.1.0(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 dev: true - postcss-load-config@3.1.4(postcss@8.4.37): + postcss-load-config@3.1.4(postcss@8.4.38): dependencies: lilconfig: 2.1.0 - postcss: 8.4.37 + postcss: 8.4.38 yaml: 1.10.2 dev: true - postcss-merge-longhand@5.1.7(postcss@8.4.37): + postcss-merge-longhand@5.1.7(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 postcss-value-parser: 4.2.0 - stylehacks: 5.1.1(postcss@8.4.37) + stylehacks: 5.1.1(postcss@8.4.38) dev: true - postcss-merge-rules@5.1.4(postcss@8.4.37): + postcss-merge-rules@5.1.4(postcss@8.4.38): dependencies: browserslist: 4.23.0 caniuse-api: 3.0.0 - cssnano-utils: 3.1.0(postcss@8.4.37) - postcss: 8.4.37 + cssnano-utils: 3.1.0(postcss@8.4.38) + postcss: 8.4.38 postcss-selector-parser: 6.0.16 dev: true - postcss-minify-font-values@5.1.0(postcss@8.4.37): + postcss-minify-font-values@5.1.0(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 postcss-value-parser: 4.2.0 dev: true - postcss-minify-gradients@5.1.1(postcss@8.4.37): + postcss-minify-gradients@5.1.1(postcss@8.4.38): dependencies: colord: 2.9.3 - cssnano-utils: 3.1.0(postcss@8.4.37) - postcss: 8.4.37 + cssnano-utils: 3.1.0(postcss@8.4.38) + postcss: 8.4.38 postcss-value-parser: 4.2.0 dev: true - postcss-minify-params@5.1.4(postcss@8.4.37): + postcss-minify-params@5.1.4(postcss@8.4.38): dependencies: browserslist: 4.23.0 - cssnano-utils: 3.1.0(postcss@8.4.37) - postcss: 8.4.37 + cssnano-utils: 3.1.0(postcss@8.4.38) + postcss: 8.4.38 postcss-value-parser: 4.2.0 dev: true - postcss-minify-selectors@5.2.1(postcss@8.4.37): + postcss-minify-selectors@5.2.1(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 postcss-selector-parser: 6.0.16 dev: true - postcss-modules-extract-imports@3.0.0(postcss@8.4.37): + postcss-modules-extract-imports@3.0.0(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 dev: true - postcss-modules-local-by-default@4.0.4(postcss@8.4.37): + postcss-modules-local-by-default@4.0.4(postcss@8.4.38): dependencies: - icss-utils: 5.1.0(postcss@8.4.37) - postcss: 8.4.37 + icss-utils: 5.1.0(postcss@8.4.38) + postcss: 8.4.38 postcss-selector-parser: 6.0.16 postcss-value-parser: 4.2.0 dev: true - postcss-modules-scope@3.1.1(postcss@8.4.37): + postcss-modules-scope@3.1.1(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 postcss-selector-parser: 6.0.16 dev: true - postcss-modules-values@4.0.0(postcss@8.4.37): + postcss-modules-values@4.0.0(postcss@8.4.38): dependencies: - icss-utils: 5.1.0(postcss@8.4.37) - postcss: 8.4.37 + icss-utils: 5.1.0(postcss@8.4.38) + postcss: 8.4.38 dev: true - postcss-modules@4.3.1(postcss@8.4.37): + postcss-modules@4.3.1(postcss@8.4.38): dependencies: generic-names: 4.0.0 icss-replace-symbols: 1.1.0 lodash.camelcase: 4.3.0 - postcss: 8.4.37 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.37) - postcss-modules-local-by-default: 4.0.4(postcss@8.4.37) - postcss-modules-scope: 3.1.1(postcss@8.4.37) - postcss-modules-values: 4.0.0(postcss@8.4.37) + 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-values: 4.0.0(postcss@8.4.38) string-hash: 1.1.3 dev: true - postcss-normalize-charset@5.1.0(postcss@8.4.37): + postcss-normalize-charset@5.1.0(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 dev: true - postcss-normalize-display-values@5.1.0(postcss@8.4.37): + postcss-normalize-display-values@5.1.0(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 postcss-value-parser: 4.2.0 dev: true - postcss-normalize-positions@5.1.1(postcss@8.4.37): + postcss-normalize-positions@5.1.1(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 postcss-value-parser: 4.2.0 dev: true - postcss-normalize-repeat-style@5.1.1(postcss@8.4.37): + postcss-normalize-repeat-style@5.1.1(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 postcss-value-parser: 4.2.0 dev: true - postcss-normalize-string@5.1.0(postcss@8.4.37): + postcss-normalize-string@5.1.0(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 postcss-value-parser: 4.2.0 dev: true - postcss-normalize-timing-functions@5.1.0(postcss@8.4.37): + postcss-normalize-timing-functions@5.1.0(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 postcss-value-parser: 4.2.0 dev: true - postcss-normalize-unicode@5.1.1(postcss@8.4.37): + postcss-normalize-unicode@5.1.1(postcss@8.4.38): dependencies: browserslist: 4.23.0 - postcss: 8.4.37 + postcss: 8.4.38 postcss-value-parser: 4.2.0 dev: true - postcss-normalize-url@5.1.0(postcss@8.4.37): + postcss-normalize-url@5.1.0(postcss@8.4.38): dependencies: normalize-url: 6.1.0 - postcss: 8.4.37 + postcss: 8.4.38 postcss-value-parser: 4.2.0 dev: true - postcss-normalize-whitespace@5.1.1(postcss@8.4.37): + postcss-normalize-whitespace@5.1.1(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 postcss-value-parser: 4.2.0 dev: true - postcss-ordered-values@5.1.3(postcss@8.4.37): + postcss-ordered-values@5.1.3(postcss@8.4.38): dependencies: - cssnano-utils: 3.1.0(postcss@8.4.37) - postcss: 8.4.37 + cssnano-utils: 3.1.0(postcss@8.4.38) + postcss: 8.4.38 postcss-value-parser: 4.2.0 dev: true - postcss-reduce-initial@5.1.2(postcss@8.4.37): + postcss-reduce-initial@5.1.2(postcss@8.4.38): dependencies: browserslist: 4.23.0 caniuse-api: 3.0.0 - postcss: 8.4.37 + postcss: 8.4.38 dev: true - postcss-reduce-transforms@5.1.0(postcss@8.4.37): + postcss-reduce-transforms@5.1.0(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 postcss-value-parser: 4.2.0 dev: true @@ -12689,23 +12734,23 @@ snapshots: util-deprecate: 1.0.2 dev: true - postcss-svgo@5.1.0(postcss@8.4.37): + postcss-svgo@5.1.0(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 postcss-value-parser: 4.2.0 svgo: 2.8.0 dev: true - postcss-unique-selectors@5.1.1(postcss@8.4.37): + postcss-unique-selectors@5.1.1(postcss@8.4.38): dependencies: - postcss: 8.4.37 + postcss: 8.4.38 postcss-selector-parser: 6.0.16 dev: true postcss-value-parser@4.2.0: dev: true - postcss@8.4.37: + postcss@8.4.38: dependencies: nanoid: 3.3.7 picocolors: 1.0.0 @@ -13205,17 +13250,17 @@ snapshots: rollup: 4.13.0 dev: true - rollup-plugin-postcss@4.0.2(postcss@8.4.37): + rollup-plugin-postcss@4.0.2(postcss@8.4.38): dependencies: chalk: 4.1.2 concat-with-sourcemaps: 1.1.0 - cssnano: 5.1.15(postcss@8.4.37) + cssnano: 5.1.15(postcss@8.4.38) import-cwd: 3.0.0 p-queue: 6.6.2 pify: 5.0.0 - postcss: 8.4.37 - postcss-load-config: 3.1.4(postcss@8.4.37) - postcss-modules: 4.3.1(postcss@8.4.37) + postcss: 8.4.38 + postcss-load-config: 3.1.4(postcss@8.4.38) + postcss-modules: 4.3.1(postcss@8.4.38) promise.series: 0.2.0 resolve: 1.22.8 rollup-pluginutils: 2.8.2 @@ -13312,11 +13357,11 @@ snapshots: truncate-utf8-bytes: 1.0.2 dev: true - sass-loader@14.1.1(sass@1.72.0)(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)): + sass-loader@14.1.1(sass@1.72.0)(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)): dependencies: neo-async: 2.6.2 sass: 1.72.0 - webpack: 5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4) + webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) dev: true sass@1.72.0: @@ -13499,10 +13544,10 @@ snapshots: - utf-8-validate dev: true - sofill@1.0.76(@sillot/bridge@0.0.3)(typescript@5.4.2): + sofill@1.0.76(@sillot/bridge@0.0.3)(typescript@5.4.3): dependencies: '@sillot/bridge': 0.0.3 - typescript: 5.4.2 + typescript: 5.4.3 dev: true sortablejs@1.15.2: @@ -13693,15 +13738,15 @@ snapshots: style-inject@0.3.0: dev: true - style-loader@3.3.4(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)): + style-loader@3.3.4(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)): dependencies: - webpack: 5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4) + webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) dev: true - stylehacks@5.1.1(postcss@8.4.37): + stylehacks@5.1.1(postcss@8.4.38): dependencies: browserslist: 4.23.0 - postcss: 8.4.37 + postcss: 8.4.38 postcss-selector-parser: 6.0.16 dev: true @@ -13785,7 +13830,7 @@ snapshots: fs-extra: 10.1.0 dev: true - terser-webpack-plugin@5.3.10(esbuild@0.20.2)(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)): + terser-webpack-plugin@5.3.10(esbuild@0.20.2)(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)): dependencies: '@jridgewell/trace-mapping': 0.3.25 esbuild: 0.20.2 @@ -13793,7 +13838,7 @@ snapshots: schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.29.2 - webpack: 5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4) + webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) dev: true terser@5.29.2: @@ -13874,17 +13919,17 @@ snapshots: utf8-byte-length: 1.0.4 dev: true - ts-api-utils@1.3.0(typescript@5.4.2): + ts-api-utils@1.3.0(typescript@5.4.3): dependencies: - typescript: 5.4.2 + typescript: 5.4.3 dev: true ts-interface-checker@0.1.13: dev: true - ts-jest@29.1.2(@babel/core@7.24.1)(esbuild@0.20.2)(jest@29.7.0(@types/node@20.11.30))(typescript@5.4.2): + ts-jest@29.1.2(@babel/core@7.24.3)(esbuild@0.20.2)(jest@29.7.0(@types/node@20.11.30))(typescript@5.4.3): dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 bs-logger: 0.2.6 esbuild: 0.20.2 fast-json-stable-stringify: 2.1.0 @@ -13894,19 +13939,19 @@ snapshots: lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.6.0 - typescript: 5.4.2 + typescript: 5.4.3 yargs-parser: 21.1.1 dev: true - ts-loader@9.5.1(typescript@5.4.2)(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)): + ts-loader@9.5.1(typescript@5.4.3)(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)): dependencies: chalk: 4.1.2 enhanced-resolve: 5.16.0 micromatch: 4.0.5 semver: 7.6.0 source-map: 0.7.4 - typescript: 5.4.2 - webpack: 5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4) + typescript: 5.4.3 + webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) dev: true tslib@1.14.1: @@ -13985,7 +14030,7 @@ snapshots: is-typedarray: 1.0.0 dev: true - typescript@5.4.2: + typescript@5.4.3: dev: true unbox-primitive@1.0.2: @@ -14134,12 +14179,12 @@ snapshots: - utf-8-validate dev: true - webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.3): + webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.91.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.3))(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.3))(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.3))(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.91.0))(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.91.0))(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.91.0))(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.3 @@ -14148,7 +14193,7 @@ snapshots: import-local: 3.1.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4) + webpack: 5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4) webpack-bundle-analyzer: 4.10.1 webpack-merge: 5.10.0 dev: true @@ -14169,7 +14214,7 @@ snapshots: webpack-sources@3.2.3: dev: true - webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4): + webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -14192,9 +14237,9 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(esbuild@0.20.2)(webpack@5.90.3(esbuild@0.20.2)(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(esbuild@0.20.2)(webpack@5.91.0(esbuild@0.20.2)(webpack-cli@5.1.4)) watchpack: 2.4.1 - webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.90.3) + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.91.0) webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' From afde0e47c8c398895a4ddde32bcfbd8efec6ec15 Mon Sep 17 00:00:00 2001 From: Soltus Date: Thu, 21 Mar 2024 21:03:24 +0800 Subject: [PATCH 23/77] 6 --- app/package.json | 2 +- scripts/parse-changelog-sillot.py | 2 +- scripts/parse-changelog.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/package.json b/app/package.json index d41e97b6fd..2a3d8d1d3e 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "sillot", - "version": "0.27.14", + "version": "0.27.15", "syv": "3.0.4", "description": "Build Your Eternal Digital Garden", "homepage": "https://github.com/Hi-Windom/Sillot", diff --git a/scripts/parse-changelog-sillot.py b/scripts/parse-changelog-sillot.py index 7b03b0d9e7..a1636cdbe4 100644 --- a/scripts/parse-changelog-sillot.py +++ b/scripts/parse-changelog-sillot.py @@ -81,7 +81,7 @@ def find_milestone(repo, title, lastestRelease): --- ''') - for milestone in repo.get_milestones(state=all): + for milestone in repo.get_milestones(state="all"): # REF https://docs.github.com/en/rest/issues/milestones?apiVersion=2022-11-28#list-milestones if version in milestone.title: return milestone diff --git a/scripts/parse-changelog.py b/scripts/parse-changelog.py index 9466442b71..182c0631eb 100644 --- a/scripts/parse-changelog.py +++ b/scripts/parse-changelog.py @@ -71,7 +71,7 @@ def find_milestone(repo, title, lastestRelease): # --- # ''') - for milestone in repo.get_milestones(state=all): + for milestone in repo.get_milestones(state="all"): if version in milestone.title: return milestone From 83190df97e6a746ff90cf571f5ba04eb674678be Mon Sep 17 00:00:00 2001 From: Soltus Date: Thu, 21 Mar 2024 21:09:14 +0800 Subject: [PATCH 24/77] 6 --- app/package.json | 2 +- scripts/parse-changelog.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/package.json b/app/package.json index 2a3d8d1d3e..87ea5fc597 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "sillot", - "version": "0.27.15", + "version": "0.27.16", "syv": "3.0.4", "description": "Build Your Eternal Digital Garden", "homepage": "https://github.com/Hi-Windom/Sillot", diff --git a/scripts/parse-changelog.py b/scripts/parse-changelog.py index 182c0631eb..9b90f92520 100644 --- a/scripts/parse-changelog.py +++ b/scripts/parse-changelog.py @@ -71,7 +71,11 @@ def find_milestone(repo, title, lastestRelease): # --- # ''') - for milestone in repo.get_milestones(state="all"): + for milestone in repo.get_milestones(state="open"): + if version in milestone.title: + return milestone + # 相比 state="all" ,先从 open(state参数默认值)里面找,找不到再找 closed 的做法用代码量换时间 + for milestone in repo.get_milestones(state="closed"): if version in milestone.title: return milestone From bd4938b6c76301d2fb990d3ae852f5bcc581fddc Mon Sep 17 00:00:00 2001 From: Soltus Date: Thu, 21 Mar 2024 21:35:28 +0800 Subject: [PATCH 25/77] =?UTF-8?q?=EF=BC=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 2 ++ app/package.json | 2 +- scripts/parse-changelog-sillot.py | 9 ++++++--- scripts/parse-changelog.py | 4 ++-- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 27d9541093..305235ed50 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -279,8 +279,10 @@ jobs: overwrite-settings: true - name: Setup Android SDK uses: android-actions/setup-android@v3.2.0 + if: contains( matrix.config.goos, 'windows') - name: Install Android NDK uses: nttld/setup-ndk@v1 + if: contains( matrix.config.goos, 'windows') with: ndk-version: r25b add-to-path: true diff --git a/app/package.json b/app/package.json index 87ea5fc597..9d74dda9a4 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "sillot", - "version": "0.27.16", + "version": "0.27.17", "syv": "3.0.4", "description": "Build Your Eternal Digital Garden", "homepage": "https://github.com/Hi-Windom/Sillot", diff --git a/scripts/parse-changelog-sillot.py b/scripts/parse-changelog-sillot.py index a1636cdbe4..da8c926d7f 100644 --- a/scripts/parse-changelog-sillot.py +++ b/scripts/parse-changelog-sillot.py @@ -81,11 +81,14 @@ def find_milestone(repo, title, lastestRelease): --- ''') - for milestone in repo.get_milestones(state="all"): - # REF https://docs.github.com/en/rest/issues/milestones?apiVersion=2022-11-28#list-milestones + # REF https://docs.github.com/en/rest/issues/milestones?apiVersion=2022-11-28#list-milestones + for milestone in repo.get_milestones(): + if version in milestone.title: + return milestone + # 别问为什么不用 state="all" ,先从 open(state参数默认值)里面找,问就是代码按行算(doge + for milestone in repo.get_milestones(state="closed"): if version in milestone.title: return milestone - def get_issue_first_label(issue): """Get the first label from issue, if no labels, return empty string.""" diff --git a/scripts/parse-changelog.py b/scripts/parse-changelog.py index 9b90f92520..f2b4bcc103 100644 --- a/scripts/parse-changelog.py +++ b/scripts/parse-changelog.py @@ -71,10 +71,10 @@ def find_milestone(repo, title, lastestRelease): # --- # ''') - for milestone in repo.get_milestones(state="open"): + for milestone in repo.get_milestones(): if version in milestone.title: return milestone - # 相比 state="all" ,先从 open(state参数默认值)里面找,找不到再找 closed 的做法用代码量换时间 + # 别问为什么不用 state="all" ,先从 open(state参数默认值)里面找,问就是代码按行算(doge for milestone in repo.get_milestones(state="closed"): if version in milestone.title: return milestone From 2120637c06c9bb15e4573fbc80b3cbc8e99ec230 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 21 Mar 2024 22:35:21 +0800 Subject: [PATCH 26/77] :art: One-click upgrade of downloaded marketplace packages https://github.com/siyuan-note/siyuan/issues/8390 --- app/appearance/langs/en_US.json | 6 ++- app/appearance/langs/es_ES.json | 6 ++- app/appearance/langs/fr_FR.json | 6 ++- app/appearance/langs/zh_CHT.json | 6 ++- app/appearance/langs/zh_CN.json | 6 ++- kernel/api/bazaar.go | 13 +++++ kernel/api/router.go | 3 +- kernel/bazaar/package.go | 20 ++++++- kernel/model/bazzar.go | 89 ++++++++++++++++++++++++++++++-- 9 files changed, 144 insertions(+), 11 deletions(-) diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 1c9dd76755..700b6adfdf 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -1440,6 +1440,10 @@ "231": "Deleting unreferenced data objects in cloud storage...", "232": "The cloud data storage has been purged. [%d] snapshots and [%d] data objects have been deleted, and a total of [%s] disk space has been released", "233": "Closing user guide...", - "234": "[%d/%d] Updated [%d] of readable paths of doc [%s]" + "234": "[%d/%d] Updated [%d] of readable paths of doc [%s]", + "235": "[%d/%d] is updating the marketplace package...", + "236": "[%d/%d] is updating the marketplace package [%s]...", + "237": "[%d] marketplace packages have all been updated successfully", + "238": "Marketplace package [%s] update failed, please try again later" } } diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index 23f6c89aee..939aeecce6 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -1440,6 +1440,10 @@ "231": "Eliminar objetos de datos no referenciados en el almacenamiento en la nube...", "232": "Se ha eliminado el almacenamiento de datos en la nube. Se han eliminado [%d] instantáneas y [%d] objetos de datos, y se ha liberado un total de [%s] espacio en disco", "233": "Cerrando la guía del usuario...", - "234": "[%d/%d] Actualizado [%d] de rutas legibles del documento [%s]" + "234": "[%d/%d] Actualizado [%d] de rutas legibles del documento [%s]", + "235": "[%d/%d] está actualizando el paquete del mercado...", + "236": "[%d/%d] está actualizando el paquete del mercado [%s]...", + "237": "[%d] todos los paquetes del mercado se han actualizado correctamente", + "238": "Error en la actualización del paquete Marketplace [%s], inténtalo de nuevo más tarde" } } diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index a63e956b0e..472757fe0f 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -1440,6 +1440,10 @@ "231": "Suppression des objets de données non référencés dans le stockage cloud...", "232": "Le stockage de données cloud a été purgé. [%d] instantanés et [%d] objets de données ont été supprimés, et un total de [%s] espace disque a été libéré", "233": "Fermeture du guide de l'utilisateur...", - "234": "[%d/%d] Mise à jour de [%d] des chemins lisibles du document [%s]" + "234": "[%d/%d] Mise à jour de [%d] des chemins lisibles du document [%s]", + "235": "[%d/%d] met à jour le package Marketplace...", + "236": "[%d/%d] met à jour le package Marketplace [%s]...", + "237": "[%d] packages Marketplace ont tous été mis à jour avec succès", + "238": "La mise à jour du package Marketplace [%s] a échoué, veuillez réessayer plus tard" } } diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 6eebbae4ff..b6b79c421f 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -1440,6 +1440,10 @@ "231": "正在刪除雲端儲存未引用資料物件...", "232": "雲端資料儲存清理完畢,已刪除 [%d] 個快照和 [%d] 個資料對象,共釋放 [%s] 磁碟空間", "233": "正在關閉用戶指南...", - "234": "[%d/%d] 已經更新 [%d] 個文件的可讀路徑 [%s]" + "234": "[%d/%d] 已經更新 [%d] 個文件的可讀路徑 [%s]", + "235": "[%d/%d] 正在更新市集包...", + "236": "[%d/%d] 正在更新市集包 [%s]...", + "237": "[%d] 個市集包已經全部更新成功", + "238": "市集包 [%s] 更新失敗,請稍後再試" } } diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 80775476c1..12213464db 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -1440,6 +1440,10 @@ "231": "正在删除云端存储未引用数据对象...", "232": "云端数据存储清理完毕,已删除 [%d] 个快照和 [%d] 个数据对象,共释放 [%s] 磁盘空间", "233": "正在关闭用户指南...", - "234": "[%d/%d] 已经更新 [%d] 个文档的可读路径 [%s]" + "234": "[%d/%d] 已经更新 [%d] 个文档的可读路径 [%s]", + "235": "[%d/%d] 正在更新集市包...", + "236": "[%d/%d] 正在更新集市包 [%s]...", + "237": "[%d] 个集市包已经全部更新成功", + "238": "集市包 [%s] 更新失败,请稍后再试" } } diff --git a/kernel/api/bazaar.go b/kernel/api/bazaar.go index d8fbcc73fe..eeaf0fc5ff 100644 --- a/kernel/api/bazaar.go +++ b/kernel/api/bazaar.go @@ -25,6 +25,19 @@ import ( "github.com/siyuan-note/siyuan/kernel/util" ) +func batchUpdatePackage(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, ok := util.JsonArg(c, ret) + if !ok { + return + } + + frontend := arg["frontend"].(string) + model.BatchUpdateBazaarPackages(frontend) +} + func getUpdatedPackage(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) diff --git a/kernel/api/router.go b/kernel/api/router.go index d4bc60b9b9..88d40ab059 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -330,7 +330,6 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/graph/getGraph", model.CheckAuth, getGraph) ginServer.Handle("POST", "/api/graph/getLocalGraph", model.CheckAuth, getLocalGraph) - ginServer.Handle("POST", "/api/bazaar/getUpdatedPackage", model.CheckAuth, getUpdatedPackage) ginServer.Handle("POST", "/api/bazaar/getBazaarPlugin", model.CheckAuth, getBazaarPlugin) ginServer.Handle("POST", "/api/bazaar/getInstalledPlugin", model.CheckAuth, getInstalledPlugin) ginServer.Handle("POST", "/api/bazaar/installBazaarPlugin", model.CheckAuth, model.CheckReadonly, installBazaarPlugin) @@ -352,6 +351,8 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/bazaar/installBazaarTheme", model.CheckAuth, model.CheckReadonly, installBazaarTheme) ginServer.Handle("POST", "/api/bazaar/uninstallBazaarTheme", model.CheckAuth, model.CheckReadonly, uninstallBazaarTheme) ginServer.Handle("POST", "/api/bazaar/getBazaarPackageREAME", model.CheckAuth, getBazaarPackageREAME) + ginServer.Handle("POST", "/api/bazaar/getUpdatedPackage", model.CheckAuth, getUpdatedPackage) + ginServer.Handle("POST", "/api/bazaar/batchUpdatePackage", model.CheckAuth, batchUpdatePackage) ginServer.Handle("POST", "/api/repo/initRepoKey", model.CheckAuth, model.CheckReadonly, initRepoKey) ginServer.Handle("POST", "/api/repo/initRepoKeyFromPassphrase", model.CheckAuth, model.CheckReadonly, initRepoKeyFromPassphrase) diff --git a/kernel/bazaar/package.go b/kernel/bazaar/package.go index 5720e31c52..6d0d106ac7 100644 --- a/kernel/bazaar/package.go +++ b/kernel/bazaar/package.go @@ -530,9 +530,25 @@ func renderREADME(repoURL string, mdData []byte) (ret string, err error) { return } +var ( + packageLocks = map[string]*sync.Mutex{} + packageLocksLock = sync.Mutex{} +) + func downloadPackage(repoURLHash string, pushProgress bool, systemID string) (data []byte, err error) { + packageLocksLock.Lock() + defer packageLocksLock.Unlock() + // repoURLHash: https://github.com/88250/Comfortably-Numb@6286912c381ef3f83e455d06ba4d369c498238dc - pushID := repoURLHash[:strings.LastIndex(repoURLHash, "@")] + repoURL := repoURLHash[:strings.LastIndex(repoURLHash, "@")] + lock, ok := packageLocks[repoURLHash] + if !ok { + lock = &sync.Mutex{} + packageLocks[repoURLHash] = lock + } + lock.Lock() + defer lock.Unlock() + repoURLHash = strings.TrimPrefix(repoURLHash, "https://github.com/") u := util.BazaarOSSServer + "/package/" + repoURLHash buf := &bytes.Buffer{} @@ -540,7 +556,7 @@ func downloadPackage(repoURLHash string, pushProgress bool, systemID string) (da if pushProgress { progress := float32(info.DownloadedSize) / float32(info.Response.ContentLength) //logging.LogDebugf("downloading bazaar package [%f]", progress) - util.PushDownloadProgress(pushID, progress) + util.PushDownloadProgress(repoURL, progress) } }).Get(u) if nil != err { diff --git a/kernel/model/bazzar.go b/kernel/model/bazzar.go index ffe71755b8..432369ca20 100644 --- a/kernel/model/bazzar.go +++ b/kernel/model/bazzar.go @@ -19,17 +19,100 @@ package model import ( "errors" "fmt" + "github.com/88250/gulu" + "github.com/siyuan-note/logging" + "github.com/siyuan-note/siyuan/kernel/util" "path" "path/filepath" "strings" "sync" - - "github.com/88250/gulu" - "github.com/siyuan-note/siyuan/kernel/util" + "time" "github.com/siyuan-note/siyuan/kernel/bazaar" ) +func BatchUpdateBazaarPackages(frontend string) { + plugins, widgets, icons, themes, templates := UpdatedPackages(frontend) + + total := len(plugins) + len(widgets) + len(icons) + len(themes) + len(templates) + if 1 > total { + return + } + + util.PushEndlessProgress(fmt.Sprintf(Conf.language(235), 1, total)) + defer util.PushClearProgress() + count := 1 + for _, plugin := range plugins { + err := bazaar.InstallPlugin(plugin.RepoURL, plugin.RepoHash, filepath.Join(util.DataDir, "plugins", plugin.Name), Conf.System.ID) + if nil != err { + logging.LogErrorf("update plugin [%s] failed: %s", plugin.Name, err) + util.PushErrMsg(fmt.Sprintf(Conf.language(238)), 5000) + return + } + + count++ + util.PushEndlessProgress(fmt.Sprintf(Conf.language(236), count, total, plugin.Name)) + } + + for _, widget := range widgets { + err := bazaar.InstallWidget(widget.RepoURL, widget.RepoHash, filepath.Join(util.DataDir, "widgets", widget.Name), Conf.System.ID) + if nil != err { + logging.LogErrorf("update widget [%s] failed: %s", widget.Name, err) + util.PushErrMsg(fmt.Sprintf(Conf.language(238)), 5000) + return + } + + count++ + util.PushEndlessProgress(fmt.Sprintf(Conf.language(236), count, total, widget.Name)) + } + + for _, icon := range icons { + err := bazaar.InstallIcon(icon.RepoURL, icon.RepoHash, filepath.Join(util.IconsPath, icon.Name), Conf.System.ID) + if nil != err { + logging.LogErrorf("update icon [%s] failed: %s", icon.Name, err) + util.PushErrMsg(fmt.Sprintf(Conf.language(238)), 5000) + return + } + + count++ + util.PushEndlessProgress(fmt.Sprintf(Conf.language(236), count, total, icon.Name)) + } + + for _, template := range templates { + err := bazaar.InstallTemplate(template.RepoURL, template.RepoHash, filepath.Join(util.DataDir, "templates", template.Name), Conf.System.ID) + if nil != err { + logging.LogErrorf("update template [%s] failed: %s", template.Name, err) + util.PushErrMsg(fmt.Sprintf(Conf.language(238)), 5000) + return + } + + count++ + util.PushEndlessProgress(fmt.Sprintf(Conf.language(236), count, total, template.Name)) + } + + for _, theme := range themes { + err := bazaar.InstallTheme(theme.RepoURL, theme.RepoHash, filepath.Join(util.ThemesPath, theme.Name), Conf.System.ID) + if nil != err { + logging.LogErrorf("update theme [%s] failed: %s", theme.Name, err) + util.PushErrMsg(fmt.Sprintf(Conf.language(238)), 5000) + return + } + + count++ + util.PushEndlessProgress(fmt.Sprintf(Conf.language(236), count, total, theme.Name)) + } + + util.ReloadUI() + + go func() { + util.WaitForUILoaded() + time.Sleep(500) + util.PushMsg(fmt.Sprintf(Conf.language(237), total), 5000) + }() + + return +} + func UpdatedPackages(frontend string) (plugins []*bazaar.Plugin, widgets []*bazaar.Widget, icons []*bazaar.Icon, themes []*bazaar.Theme, templates []*bazaar.Template) { wg := &sync.WaitGroup{} wg.Add(5) From 893f645a82d9dcc4d2a323d450044975528e74e5 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Thu, 21 Mar 2024 22:55:14 +0800 Subject: [PATCH 27/77] :art: https://github.com/siyuan-note/siyuan/issues/8390 --- app/src/config/bazaar.ts | 68 ++++++++++++++++++++++++++-------------- 1 file changed, 45 insertions(+), 23 deletions(-) diff --git a/app/src/config/bazaar.ts b/app/src/config/bazaar.ts index 741bf227b4..682f42bd7b 100644 --- a/app/src/config/bazaar.ts +++ b/app/src/config/bazaar.ts @@ -293,49 +293,64 @@ export const bazaar = { `; }, - _genUpdateItemHTML (item: IBazaarItem) { - return `
+ _genUpdateItemHTML(item: IBazaarItem, bazaarType: TBazaarType) { + const dataObj = { + bazaarType, + themeMode: item.modes?.toString(), + updated: item.updated, + name: item.name, + repoURL: item.repoURL, + repoHash: item.repoHash, + downloaded: true + }; + return `
-
-
- ${item.preferredName} ${item.name} -
${item.preferredDesc || ""}
-
+
+
+ ${item.preferredName} ${item.name} +
${item.preferredDesc || ""}
+
- ${item.incompatible ? `${window.siyuan.languages.incompatible}` : ""} - ${item.preferredFunding ? `` : ""} + ${item.incompatible ? `${window.siyuan.languages.incompatible}` : ""} + ${item.preferredFunding ? `` : ""} + + + + + +
-
` +
`; }, _getUpdate() { fetchPost("/api/bazaar/getUpdatedPackage", {frontend: getFrontend()}, (response) => { let html = ""; response.data.plugins.forEach((item: IBazaarItem) => { - html += this._genUpdateItemHTML(item); + html += this._genUpdateItemHTML(item, "plugins"); }); response.data.themes.forEach((item: IBazaarItem) => { - html += this._genUpdateItemHTML(item); + html += this._genUpdateItemHTML(item, "themes"); }); response.data.icons.forEach((item: IBazaarItem) => { - html += this._genUpdateItemHTML(item); + html += this._genUpdateItemHTML(item, "icons"); }); response.data.templates.forEach((item: IBazaarItem) => { - html += this._genUpdateItemHTML(item); + html += this._genUpdateItemHTML(item, "templates"); }); response.data.widgets.forEach((item: IBazaarItem) => { - html += this._genUpdateItemHTML(item); + html += this._genUpdateItemHTML(item, "widgets"); }); this.element.querySelector('[data-type="downloaded-update"]').innerHTML = `
- +
${response.data.themes.length + response.data.icons.length + response.data.widgets.length + response.data.plugins.length + response.data.templates.length}
${html}
`; }) }, - _genMyHTML(bazaarType: TBazaarType, app: App) { + _genMyHTML(bazaarType: TBazaarType, app: App, updateUpdate = true) { const contentElement = bazaar.element.querySelector("#configBazaarDownloaded"); if (contentElement.getAttribute("data-loading") === "true" || contentElement.previousElementSibling.querySelector(`[data-type="my${bazaarType.replace(bazaarType[0], bazaarType[0].toUpperCase()).substring(0, bazaarType.length - 1)}"]`).classList.contains("b3-button--outline")) { @@ -430,6 +445,9 @@ export const bazaar = { } contentElement.innerHTML = html ? html : `
  • ${window.siyuan.languages.emptyContent}
`; }); + if (updateUpdate) { + this._getUpdate(); + } }, _data: { themes: [] as IBazaarItem[], @@ -578,7 +596,6 @@ export const bazaar = { return; } this._genMyHTML("plugins", app); - this._getUpdate(); bazaar.element.firstElementChild.addEventListener("click", (event) => { let target = event.target as HTMLElement; const dataElement = hasClosestByAttribute(target, "data-obj", null); @@ -611,7 +628,7 @@ export const bazaar = { } }); target.classList.remove("b3-button--outline"); - this._genMyHTML(type.replace("my", "").toLowerCase() + "s" as TBazaarType, app); + this._genMyHTML(type.replace("my", "").toLowerCase() + "s" as TBazaarType, app, false); } event.preventDefault(); event.stopPropagation(); @@ -662,7 +679,7 @@ export const bazaar = { } } bazaar._onBazaar(response, bazaarType, ["themes", "icons"].includes(bazaarType)); - bazaar._genMyHTML(bazaarType, app); + bazaar._genMyHTML(bazaarType, app, false); if (bazaarType === "plugins") { if (window.siyuan.config.bazaar.petalDisabled) { confirmDialog(window.siyuan.languages.confirm, window.siyuan.languages.enablePluginTip2); @@ -674,7 +691,7 @@ export const bazaar = { frontend: getFrontend() }, (response) => { loadPlugin(app, response.data); - bazaar._genMyHTML(bazaarType, app); + bazaar._genMyHTML(bazaarType, app, false); }); }); } @@ -684,6 +701,11 @@ export const bazaar = { event.preventDefault(); event.stopPropagation(); break; + } else if (type === "install-all") { + fetchPost("/api/bazaar/batchUpdatePackage", {frontend: getFrontend()}); + event.preventDefault(); + event.stopPropagation(); + break; } else if (type === "install-t") { if (!target.classList.contains("b3-button--progress")) { confirmDialog(window.siyuan.languages.update, window.siyuan.languages.exportTplTip, () => { @@ -790,7 +812,7 @@ export const bazaar = { fetchPost("/api/setting/setAppearance", Object.assign({}, window.siyuan.config.appearance, { icon: packageName, }), (appearanceResponse) => { - this._genMyHTML(bazaarType, app); + this._genMyHTML(bazaarType, app, false); fetchPost("/api/bazaar/getBazaarIcon", {}, response => { response.data.appearance = appearanceResponse.data; bazaar._onBazaar(response, "icons", true); @@ -827,7 +849,7 @@ export const bazaar = { return; } } - this._genMyHTML("themes", app); + this._genMyHTML("themes", app, false); fetchPost("/api/bazaar/getBazaarTheme", {}, response => { response.data.appearance = appearanceResponse.data; bazaar._onBazaar(response, "themes", true); From 896197347fc26a0ca5a318d0e21d46ab1fa0dea5 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 21 Mar 2024 23:04:12 +0800 Subject: [PATCH 28/77] :art: One-click upgrade of downloaded marketplace packages https://github.com/siyuan-note/siyuan/issues/8390 --- app/appearance/langs/en_US.json | 3 +++ app/appearance/langs/fr_FR.json | 3 +++ app/appearance/langs/zh_CHT.json | 3 +++ app/appearance/langs/zh_CN.json | 3 +++ 4 files changed, 12 insertions(+) diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 700b6adfdf..6bc631cd3a 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -1,4 +1,7 @@ { + "updateAll": "Update all", + "confirmUpdateAll": "Are you sure you want to update all?", + "confirmUpdate": "Are you sure you want to update?", "insertRowBefore": "Insert rows ${x} above", "insertRowAfter": "Insert rows ${x} below", "setDueTime": "Set expiration time", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index 472757fe0f..a2ebd624dd 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -1,4 +1,7 @@ { + "updateAll": "Tout mettre à jour", + "confirmUpdateAll": "Etes-vous sûr de vouloir tout mettre à jour ?", + "confirmUpdate": "Êtes-vous sûr de vouloir mettre à jour ?", "insertRowBefore": "Insérer les lignes ${x} ci-dessus", "insertRowAfter": "Insérer les lignes ${x} ci-dessous", "setDueTime": "Définir le délai d'expiration", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index b6b79c421f..d4444e2ae6 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -1,4 +1,7 @@ { + "updateAll": "全部更新", + "confirmUpdateAll": "確定全部更新嗎?", + "confirmUpdate": "確定更新嗎?", "insertRowBefore": "在上方插入${x}行", "insertRowAfter": "在下方插入${x}行", "setDueTime": "設定到期時間", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 12213464db..ae3ce17f78 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -1,4 +1,7 @@ { + "updateAll": "全部更新", + "confirmUpdateAll": "确定全部更新吗?", + "confirmUpdate": "确定更新吗?", "insertRowBefore": "在上方插入${x}行", "insertRowAfter": "在下方插入${x}行", "setDueTime": "设置到期时间", From dac164a8e1747ac9103558c098122d9d27661660 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Thu, 21 Mar 2024 23:10:02 +0800 Subject: [PATCH 29/77] :art: https://github.com/siyuan-note/siyuan/issues/8390 --- app/src/config/bazaar.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/app/src/config/bazaar.ts b/app/src/config/bazaar.ts index 682f42bd7b..8e06652a2f 100644 --- a/app/src/config/bazaar.ts +++ b/app/src/config/bazaar.ts @@ -341,11 +341,16 @@ export const bazaar = { response.data.widgets.forEach((item: IBazaarItem) => { html += this._genUpdateItemHTML(item, "widgets"); }); + + const allCount = response.data.themes.length + response.data.icons.length + response.data.widgets.length + response.data.plugins.length + response.data.templates.length + if (allCount === 0) { + return; + } this.element.querySelector('[data-type="downloaded-update"]').innerHTML = `
- + -
${response.data.themes.length + response.data.icons.length + response.data.widgets.length + response.data.plugins.length + response.data.templates.length}
+
${allCount}
${html}
`; }) @@ -702,13 +707,15 @@ export const bazaar = { event.stopPropagation(); break; } else if (type === "install-all") { - fetchPost("/api/bazaar/batchUpdatePackage", {frontend: getFrontend()}); + confirmDialog(window.siyuan.languages.updateAll, window.siyuan.languages.confirmUpdateAll, () => { + fetchPost("/api/bazaar/batchUpdatePackage", {frontend: getFrontend()}); + }); event.preventDefault(); event.stopPropagation(); break; } else if (type === "install-t") { if (!target.classList.contains("b3-button--progress")) { - confirmDialog(window.siyuan.languages.update, window.siyuan.languages.exportTplTip, () => { + confirmDialog(window.siyuan.languages.update, window.siyuan.languages.confirmUpdate, () => { const bazaarType = dataObj.bazaarType as TBazaarType; let url = "/api/bazaar/installBazaarTemplate"; if (bazaarType === "themes") { From b64770d595ce8b3fe737b4bf35902b06cb82590d Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 21 Mar 2024 23:17:43 +0800 Subject: [PATCH 30/77] :art: One-click upgrade of downloaded marketplace packages https://github.com/siyuan-note/siyuan/issues/8390 --- app/appearance/langs/es_ES.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index 939aeecce6..c0afc04d93 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -1,4 +1,7 @@ { + "updateAll": "Actualizar todo", + "confirmUpdateAll": "¿Estás seguro de que deseas actualizar todo?", + "confirmUpdate": "¿Estás seguro de que deseas actualizar?", "insertRowBefore": "Insertar filas ${x} arriba", "insertRowAfter": "Insertar filas ${x} debajo", "setDueTime": "Establecer tiempo de vencimiento", From 180bac66efd7abd3f25e514d3f8f4244d6abd9b8 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 21 Mar 2024 23:21:16 +0800 Subject: [PATCH 31/77] :art: One-click upgrade of downloaded marketplace packages https://github.com/siyuan-note/siyuan/issues/8390 --- app/src/config/bazaar.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/config/bazaar.ts b/app/src/config/bazaar.ts index 8e06652a2f..6e53b4b5dd 100644 --- a/app/src/config/bazaar.ts +++ b/app/src/config/bazaar.ts @@ -707,7 +707,7 @@ export const bazaar = { event.stopPropagation(); break; } else if (type === "install-all") { - confirmDialog(window.siyuan.languages.updateAll, window.siyuan.languages.confirmUpdateAll, () => { + confirmDialog('⬆️ ' + window.siyuan.languages.updateAll, window.siyuan.languages.confirmUpdateAll, () => { fetchPost("/api/bazaar/batchUpdatePackage", {frontend: getFrontend()}); }); event.preventDefault(); @@ -715,7 +715,7 @@ export const bazaar = { break; } else if (type === "install-t") { if (!target.classList.contains("b3-button--progress")) { - confirmDialog(window.siyuan.languages.update, window.siyuan.languages.confirmUpdate, () => { + confirmDialog('⬆️ ' + window.siyuan.languages.update, window.siyuan.languages.confirmUpdate, () => { const bazaarType = dataObj.bazaarType as TBazaarType; let url = "/api/bazaar/installBazaarTemplate"; if (bazaarType === "themes") { From 4917e183696f253854adfbc455f481e2a064b145 Mon Sep 17 00:00:00 2001 From: Soltus Date: Fri, 22 Mar 2024 00:07:18 +0800 Subject: [PATCH 32/77] =?UTF-8?q?=E8=AF=95=E8=AF=95=E8=BE=93=E5=87=BA?= =?UTF-8?q?=E4=B8=A4=E4=B8=AA=E6=80=9D=E6=BA=90=E7=89=88=E6=9C=ACissue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 2 +- .github/workflows/cd.yml | 8 +++++++- app/package.json | 5 +++-- scripts/parse-changelog.py | 25 +++++++++++++++---------- 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/.editorconfig b/.editorconfig index 0bb4ad6ecd..6f47929bcc 100644 --- a/.editorconfig +++ b/.editorconfig @@ -7,7 +7,7 @@ root = true charset = utf-8 end_of_line = lf indent_size = 2 -indent_style = tab +indent_style = space insert_final_newline = true trim_trailing_whitespace = false diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 305235ed50..bdf8bb74ac 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -36,6 +36,12 @@ jobs: with: cmd: "jq .syv app/package.json -r" + - name: Extract SiYuan version from package.json + uses: sergeysova/jq-action@v2 + id: sypv + with: + cmd: "jq .sypv app/package.json -r" + - id: thislatestR uses: pozetroninc/github-action-get-latest-release@master with: @@ -67,7 +73,7 @@ jobs: - name: Gather SiYuan Release Information id: release_info_siyuan run: | - changelog=$(python scripts/parse-changelog.py -t v${{ steps.syv.outputs.value }} siyuan-note/siyuan) + changelog=$(python scripts/parse-changelog.py -t v${{ steps.syv.outputs.value }} -b v${{ steps.sypv.outputs.value }} siyuan-note/siyuan) EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) echo "release_body_siyuan<<$EOF" >> $GITHUB_ENV echo "$changelog" >> $GITHUB_ENV diff --git a/app/package.json b/app/package.json index 9d74dda9a4..5f39423b7a 100644 --- a/app/package.json +++ b/app/package.json @@ -1,7 +1,8 @@ { "name": "sillot", - "version": "0.27.17", - "syv": "3.0.4", + "version": "0.27.18", + "syv": "3.0.5", + "sypv": "3.0.4", "description": "Build Your Eternal Digital Garden", "homepage": "https://github.com/Hi-Windom/Sillot", "repository": "https://github.com/Hi-Windom/Sillot", diff --git a/scripts/parse-changelog.py b/scripts/parse-changelog.py index f2b4bcc103..02c4fa5b3c 100644 --- a/scripts/parse-changelog.py +++ b/scripts/parse-changelog.py @@ -29,21 +29,27 @@ def generate_msg_from_repo(repo_name, tag_name, lastestRelease): """ hostname = os.getenv("GITHUB_HOST") or "api.github.com" token = os.getenv("GITHUB_TOKEN") - desc_mapping = defaultdict(list) gh = github.Github(token, base_url=f"https://{hostname}") repo = gh.get_repo(repo_name) - milestone = find_milestone(repo, tag_name, lastestRelease) + print('## [@SiYuan](https://github.com/siyuan-note/siyuan)\n') + for v in [tag_name, lastestRelease]: + print(f'''--- + +### v{v} - for issue in repo.get_issues(state="closed", milestone=milestone): # type: ignore - # REF https://pygithub.readthedocs.io/en/latest/github_objects/Issue.html#github.Issue.Issue - desc_mapping[get_issue_first_label(issue)].append( - {"title": issue.title, "url": issue.html_url} - ) - generate_msg(desc_mapping) +''') + desc_mapping = defaultdict(list) + milestone = find_milestone(repo, v) + for issue in repo.get_issues(state="closed", milestone=milestone): # type: ignore + # REF https://pygithub.readthedocs.io/en/latest/github_objects/Issue.html#github.Issue.Issue + desc_mapping[get_issue_first_label(issue)].append( + {"title": issue.title, "url": issue.html_url} + ) + generate_msg(desc_mapping) -def find_milestone(repo, title, lastestRelease): +def find_milestone(repo, title): """Find the milestone in a repository that is similar to milestone title Args: @@ -91,7 +97,6 @@ def get_issue_first_label(issue): def generate_msg(desc_mapping): """Print changelogs from direction.""" print() - print('## [@SiYuan](https://github.com/siyuan-note/siyuan)\n') for header in docmap: if not desc_mapping[header]: continue From 53cab5902ef110fb3f9fb94d97201ed15ae6debb Mon Sep 17 00:00:00 2001 From: Soltus Date: Fri, 22 Mar 2024 00:11:09 +0800 Subject: [PATCH 33/77] 6 --- scripts/parse-changelog-sillot.py | 2 +- scripts/parse-changelog.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/parse-changelog-sillot.py b/scripts/parse-changelog-sillot.py index da8c926d7f..def7a0cd4c 100644 --- a/scripts/parse-changelog-sillot.py +++ b/scripts/parse-changelog-sillot.py @@ -101,7 +101,7 @@ def get_issue_first_label(issue): def generate_msg(desc_mapping): """Print changelogs from direction.""" print() - print('## [@Sillot](https://github.com/Hi-Windom/Sillot)\n') + print('# [@Sillot](https://github.com/Hi-Windom/Sillot)\n') for header in docmap: if not desc_mapping[header]: continue diff --git a/scripts/parse-changelog.py b/scripts/parse-changelog.py index 02c4fa5b3c..e51920df70 100644 --- a/scripts/parse-changelog.py +++ b/scripts/parse-changelog.py @@ -32,11 +32,11 @@ def generate_msg_from_repo(repo_name, tag_name, lastestRelease): gh = github.Github(token, base_url=f"https://{hostname}") repo = gh.get_repo(repo_name) - print('## [@SiYuan](https://github.com/siyuan-note/siyuan)\n') + print('# [@SiYuan](https://github.com/siyuan-note/siyuan)\n') for v in [tag_name, lastestRelease]: - print(f'''--- + print(f''' -### v{v} +## {v} ''') desc_mapping = defaultdict(list) From ea5626d0ffc50f93104d06fcb0233ced120f38b6 Mon Sep 17 00:00:00 2001 From: Soltus Date: Fri, 22 Mar 2024 01:01:30 +0800 Subject: [PATCH 34/77] =?UTF-8?q?=E6=94=AF=E6=8C=81=E8=BE=93=E5=87=BA?= =?UTF-8?q?=E5=AE=89=E5=8D=93repo=E7=9A=84issue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 8 +++- app/package.json | 2 +- scripts/parse-changelog-HEAD.py | 61 +++++++++++++++++++++++++++++++ scripts/parse-changelog-sillot.py | 25 ++----------- 4 files changed, 71 insertions(+), 25 deletions(-) create mode 100644 scripts/parse-changelog-HEAD.py diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index bdf8bb74ac..d98a132695 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -62,10 +62,14 @@ jobs: run: | echo "release_title=$(git show --format=%s --no-patch | head -1)" >> $GITHUB_OUTPUT echo "release_version=v${{ steps.version.outputs.value }}_$(TZ=Asia/Shanghai date +'%Y%m%d')_syv${{ steps.syv.outputs.value }}" >> $GITHUB_OUTPUT - changelog=$(python scripts/parse-changelog-sillot.py -t ${{ github.ref }} -b ${{ steps.thislatestR.outputs.release }} Hi-Windom/Sillot) + changelog1=$(python scripts/parse-changelog-HEAD.py -t ${{ github.ref }} -b ${{ steps.thislatestR.outputs.release }} Hi-Windom/Sillot) + changelog2=$(python scripts/parse-changelog-sillot.py -t ${{ github.ref }} Hi-Windom/Sillot) + changelog3=$(python scripts/parse-changelog-sillot.py -t ${{ github.ref }} Hi-Windom/Sillot-android) EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) echo "release_body_sillot<<$EOF" >> $GITHUB_ENV - echo "$changelog" >> $GITHUB_ENV + echo "$changelog1" >> $GITHUB_ENV + echo "$changelog2" >> $GITHUB_ENV + echo "$changelog3" >> $GITHUB_ENV echo "$EOF" >> $GITHUB_ENV env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/app/package.json b/app/package.json index 5f39423b7a..057904cd4d 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "sillot", - "version": "0.27.18", + "version": "0.27.19", "syv": "3.0.5", "sypv": "3.0.4", "description": "Build Your Eternal Digital Garden", diff --git a/scripts/parse-changelog-HEAD.py b/scripts/parse-changelog-HEAD.py new file mode 100644 index 0000000000..89ffbe78e5 --- /dev/null +++ b/scripts/parse-changelog-HEAD.py @@ -0,0 +1,61 @@ +import os +import re +from argparse import ArgumentParser +from collections import defaultdict + +import github # pip install PyGithub + +# ensure the milestone is open before run this +docmap = { + "Feature": "引入特性 | Feature", + "Enhancement": "改进功能 | Enhancement", + "Bug": "修复错误 | Bugfix", + "Security": "安全相关 | Security", + "Document": "文档相关 | Document", + "Refactor": "开发重构 | Refactor", + "Abolishment": "移除废止 | Abolishment", + "Shinning": "闪亮之名 | Shinning", +} + + +def generate_msg_from_repo(repo_name, tag_name, lastestRelease): + thisRelease = tag_name.split("/")[-1] + pat = re.search("v([0-9.]+)", thisRelease) + if not pat: + return None + + print(f''' +--- +

+ + +GitHub commits difference between two branches/tags/commits +

+ +⚠️ 这是自动构建的开发者版本!数据无价,请勿用于生产环节 +❤️ 欢迎共建汐洛 694357845@qq.com +🚧 [{repo_name} is currently in active development](https://github.com/orgs/Hi-Windom/projects/2/views/2) + +🚢 [Docker image](https://hub.docker.com/r/soltus/sillot/tags?page=1&ordering=last_updated) 📱 [Android application package](https://github.com/Hi-Windom/Sillot-android/releases) 📦 [Chromium Browser Extension](https://github.com/K-Sillot/Sillot-Be/releases) + + + + +--- + +''') + + +if __name__ == "__main__": + parser = ArgumentParser( + description="Automaticly generate information from issues by tag." + ) + parser.add_argument("-t", "--tag", help="the tag to filter issues.") + parser.add_argument("-b", "--lastestRelease", help="lastest Release") + parser.add_argument("repo", help="The repository name") + args = parser.parse_args() + + try: + generate_msg_from_repo(args.repo, args.tag, args.lastestRelease) + except AssertionError: + print(args.tag) diff --git a/scripts/parse-changelog-sillot.py b/scripts/parse-changelog-sillot.py index def7a0cd4c..71abc5ba67 100644 --- a/scripts/parse-changelog-sillot.py +++ b/scripts/parse-changelog-sillot.py @@ -29,6 +29,7 @@ def generate_msg_from_repo(repo_name, tag_name, lastestRelease): repo_name (str): The repository name tag_name (str): the tag name """ + print(f'# [@{repo_name.split("/")[-1]}](https://github.com/{repo_name})\n') hostname = os.getenv("GITHUB_HOST") or "api.github.com" token = os.getenv("GITHUB_TOKEN") desc_mapping = defaultdict(list) @@ -45,7 +46,7 @@ def generate_msg_from_repo(repo_name, tag_name, lastestRelease): generate_msg(desc_mapping) -def find_milestone(repo, title, lastestRelease): +def find_milestone(repo, title): """Find the milestone in a repository that is similar to milestone title Args: @@ -61,26 +62,7 @@ def find_milestone(repo, title, lastestRelease): if not pat: return None version = ".".join(pat.group(1).split(".")[:2]) - print(f''' ---- -

- - -GitHub commits difference between two branches/tags/commits -

- -⚠️ 这是自动构建的开发者版本!数据无价,请勿用于生产环节 -❤️ 欢迎共建汐洛 694357845@qq.com -🚧 [Sillot is currently in active development](https://github.com/orgs/Hi-Windom/projects/2/views/2) - -🚢 [Docker image](https://hub.docker.com/r/soltus/sillot/tags?page=1&ordering=last_updated) 📱 [Android application package](https://github.com/Hi-Windom/Sillot-android/releases) 📦 [Chromium Browser Extension](https://github.com/K-Sillot/Sillot-Be/releases) - - - - ---- - -''') + # REF https://docs.github.com/en/rest/issues/milestones?apiVersion=2022-11-28#list-milestones for milestone in repo.get_milestones(): if version in milestone.title: @@ -101,7 +83,6 @@ def get_issue_first_label(issue): def generate_msg(desc_mapping): """Print changelogs from direction.""" print() - print('# [@Sillot](https://github.com/Hi-Windom/Sillot)\n') for header in docmap: if not desc_mapping[header]: continue From d196348932d1511728d5863a859b79130bbd459d Mon Sep 17 00:00:00 2001 From: Soltus Date: Fri, 22 Mar 2024 01:04:59 +0800 Subject: [PATCH 35/77] 6 --- app/package.json | 2 +- scripts/parse-changelog-sillot.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/package.json b/app/package.json index 057904cd4d..4605184142 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "sillot", - "version": "0.27.19", + "version": "0.27.20", "syv": "3.0.5", "sypv": "3.0.4", "description": "Build Your Eternal Digital Garden", diff --git a/scripts/parse-changelog-sillot.py b/scripts/parse-changelog-sillot.py index 71abc5ba67..bae51ae94c 100644 --- a/scripts/parse-changelog-sillot.py +++ b/scripts/parse-changelog-sillot.py @@ -18,7 +18,7 @@ } -def generate_msg_from_repo(repo_name, tag_name, lastestRelease): +def generate_msg_from_repo(repo_name, tag_name): """Generate changelog messages from repository and tag name. Envs: @@ -36,7 +36,7 @@ def generate_msg_from_repo(repo_name, tag_name, lastestRelease): gh = github.Github(token, base_url=f"https://{hostname}") repo = gh.get_repo(repo_name) - milestone = find_milestone(repo, tag_name, lastestRelease) + milestone = find_milestone(repo, tag_name) for issue in repo.get_issues(state="closed", milestone=milestone): # type: ignore # REF https://pygithub.readthedocs.io/en/latest/github_objects/Issue.html#github.Issue.Issue @@ -102,6 +102,6 @@ def generate_msg(desc_mapping): args = parser.parse_args() try: - generate_msg_from_repo(args.repo, args.tag, args.lastestRelease) + generate_msg_from_repo(args.repo, args.tag) except AssertionError: print(args.tag) From d4a5ac3298a200f42160ecee30ec3b3c6bda3f25 Mon Sep 17 00:00:00 2001 From: Soltus Date: Fri, 22 Mar 2024 01:21:15 +0800 Subject: [PATCH 36/77] #570 --- scripts/parse-changelog-HEAD.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/parse-changelog-HEAD.py b/scripts/parse-changelog-HEAD.py index 89ffbe78e5..433aee874e 100644 --- a/scripts/parse-changelog-HEAD.py +++ b/scripts/parse-changelog-HEAD.py @@ -38,7 +38,7 @@ def generate_msg_from_repo(repo_name, tag_name, lastestRelease): 🚢 [Docker image](https://hub.docker.com/r/soltus/sillot/tags?page=1&ordering=last_updated) 📱 [Android application package](https://github.com/Hi-Windom/Sillot-android/releases) 📦 [Chromium Browser Extension](https://github.com/K-Sillot/Sillot-Be/releases) - + --- From ec3c0188b2cf669308351bfc1cf4f1430b0ede18 Mon Sep 17 00:00:00 2001 From: Soltus Date: Fri, 22 Mar 2024 04:16:44 +0800 Subject: [PATCH 37/77] https://github.com/Hi-Windom/Sillot-android/issues/14 --- app/src/protyle/export/util.ts | 1 + app/src/types/index.d.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/app/src/protyle/export/util.ts b/app/src/protyle/export/util.ts index ee478b465a..55e91bac98 100644 --- a/app/src/protyle/export/util.ts +++ b/app/src/protyle/export/util.ts @@ -75,6 +75,7 @@ export const exportImage = (id: string) => { formData.append("type", "image/png"); fetchPost("/api/export/exportAsFile", formData, (response) => { openByMobile(response.data.file); + window.JSAndroid.savePictureByURL(response.data.file); }); hideMessage(msgId); exportDialog.destroy(); diff --git a/app/src/types/index.d.ts b/app/src/types/index.d.ts index ecbe28527b..d166579e74 100644 --- a/app/src/types/index.d.ts +++ b/app/src/types/index.d.ts @@ -169,6 +169,7 @@ interface Window { showBiometricPrompt(): void requestPermission(p: string): void exitSillotAndroid(): void + savePictureByURL(contentHeight: number): void // sillot extend end returnDesktop(): void openExternal(url: string): void From 92d7604e9bbcfe19fc4f2e3b2bed6785d202e332 Mon Sep 17 00:00:00 2001 From: Soltus Date: Fri, 22 Mar 2024 04:28:47 +0800 Subject: [PATCH 38/77] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E4=BD=93=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/package.cli.mjs | 17 ++++++++++++++++- app/package.json | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/package.cli.mjs b/app/package.cli.mjs index 502ca032ad..59628a55d2 100644 --- a/app/package.cli.mjs +++ b/app/package.cli.mjs @@ -19,6 +19,20 @@ if (!shell.which("go")) { } const spinner = ora("正在执行, 请稍后...\n"); +let startTime = new Date().getTime(); + +function updateSpinnerText() { + const currentTime = new Date().getTime(); + const elapsedTime = currentTime - startTime; + const hours = Math.floor(elapsedTime / (1000 * 60 * 60)); + const minutes = Math.floor((elapsedTime % (1000 * 60 * 60)) / (1000 * 60)); + const seconds = Math.floor((elapsedTime % (1000 * 60)) / 1000); + + spinner.text = `正在执行, 请稍后...\n\n\n\t\t\t已用时 ${hours}时${minutes}分${seconds}秒\n\n\n`; +} + +// 每秒更新一次spinner文本 +const intervalId = setInterval(updateSpinnerText, 1000); const works = { a: { a01: "构建 build", a02: "检查 check", a03: "开发 dev" }, a01: { a0101: "Win App 构建", a0102: "安卓构建" }, @@ -67,6 +81,7 @@ function exeHandler(cmds, silent) { cmds, { encoding: silent ? "base64" : "utf8", silent: silent }, function (code, stdout, stderr) { + clearInterval(intervalId); // 停止更新spinner文本 console.log("Exit code:", code); console.log( "Program output:", @@ -98,7 +113,7 @@ function doit(obj) { }, ]) .then((answers) => { - console.warn("建议暂时退出杀毒软件,避免弹窗影响体验"); + console.warn("\n建议暂时退出杀毒软件,避免弹窗影响体验\n"); switch (answers.b) { case works.a01.a0101: exeHandler("cd .. && .\\scripts\\sillot-win-build.bat", true); diff --git a/app/package.json b/app/package.json index 4605184142..39a76d3226 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "sillot", - "version": "0.27.20", + "version": "0.27.21", "syv": "3.0.5", "sypv": "3.0.4", "description": "Build Your Eternal Digital Garden", From 9d740f26c1a1a547acebedc49234f04bfbf019c3 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Fri, 22 Mar 2024 08:59:42 +0800 Subject: [PATCH 39/77] :bug: fix https://github.com/siyuan-note/siyuan/issues/10686 --- app/src/protyle/wysiwyg/enter.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/protyle/wysiwyg/enter.ts b/app/src/protyle/wysiwyg/enter.ts index 274493374e..c64d5d169e 100644 --- a/app/src/protyle/wysiwyg/enter.ts +++ b/app/src/protyle/wysiwyg/enter.ts @@ -219,9 +219,10 @@ export const enter = (blockElement: HTMLElement, range: Range, protyle: IProtyle // 回车之前的块为 1\n\n2 时会产生多个块 Array.from(enterElement.children).forEach((item: HTMLElement) => { if (item.dataset.nodeId === id) { - const previousElement = blockElement.previousElementSibling; + const blockPreviousElement = blockElement.previousElementSibling; + const blockParentElement = blockElement.parentElement; blockElement.outerHTML = item.outerHTML; - blockElement = (previousElement?.nextElementSibling || protyle.wysiwyg.element.firstElementChild) as HTMLElement; + blockElement = (blockPreviousElement ? blockPreviousElement.nextElementSibling : blockParentElement.firstElementChild) as HTMLElement; doOperation.push({ action: "update", data: blockElement.outerHTML, From 5937c14e2f4c12319f13b940d54755cd20428a08 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Fri, 22 Mar 2024 09:09:58 +0800 Subject: [PATCH 40/77] :art: fix https://github.com/siyuan-note/siyuan/issues/10676 --- app/src/config/image.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/app/src/config/image.ts b/app/src/config/image.ts index b503e2ee5e..33b94b7f1f 100644 --- a/app/src/config/image.ts +++ b/app/src/config/image.ts @@ -89,7 +89,7 @@ export const image = { event.stopPropagation(); break; } else if (type === "copy") { - writeText(target.parentElement.querySelector(".b3-list-item__text").textContent.trim()); + writeText(target.parentElement.querySelector(".b3-list-item__text").textContent.trim().replace("assets/", "")); } else if (type === "open") { /// #if !BROWSER openBy(target.parentElement.getAttribute("data-path"), "folder"); @@ -138,18 +138,14 @@ export const image = { let html = ""; let boxOpenHTML = ""; if (!isBrowser() && action) { - boxOpenHTML = ` + boxOpenHTML = ` `; } let boxClearHTML = ""; if (action) { - boxClearHTML = ` + boxClearHTML = ` -`; - } else { - boxClearHTML = ` - `; } data.forEach((item) => { @@ -157,6 +153,9 @@ export const image = { const dataPath = item.substr(idx); html += `
  • ${escapeHtml(item)} + + + ${boxOpenHTML} ${boxClearHTML}
  • `; From 0770b160ff370bec4fff5264ca38377e994de4c7 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Fri, 22 Mar 2024 09:35:26 +0800 Subject: [PATCH 41/77] :art: https://github.com/siyuan-note/siyuan/issues/10682 --- app/src/config/keymap.ts | 3 +++ app/src/plugin/loader.ts | 3 +++ 2 files changed, 6 insertions(+) diff --git a/app/src/config/keymap.ts b/app/src/config/keymap.ts index 2a38054fe5..c7b54e2006 100644 --- a/app/src/config/keymap.ts +++ b/app/src/config/keymap.ts @@ -52,6 +52,9 @@ export const keymap = { }); Object.keys(item.docks).forEach(key => { const dockConfig = item.docks[key].config; + if (!dockConfig.hotkey) { + return; + } const dockKeymap = window.siyuan.config.keymap.plugin[item.name][key]; const keyValue = updateHotkeyTip(dockKeymap.custom); commandHTML += `
    - + + + + +
    @@ -279,6 +315,10 @@ export const query = { htmlBlock: (query.element.querySelector("#htmlBlock") as HTMLInputElement).checked, embedBlock: (query.element.querySelector("#embedBlock") as HTMLInputElement).checked, databaseBlock: (query.element.querySelector("#databaseBlock") as HTMLInputElement).checked, + audioBlock: (query.element.querySelector("#audioBlock") as HTMLInputElement).checked, + videoBlock: (query.element.querySelector("#videoBlock") as HTMLInputElement).checked, + iFrameBlock: (query.element.querySelector("#iFrameBlock") as HTMLInputElement).checked, + widgetBlock: (query.element.querySelector("#widgetBlock") as HTMLInputElement).checked, mathBlock: (query.element.querySelector("#mathBlock") as HTMLInputElement).checked, table: (query.element.querySelector("#table") as HTMLInputElement).checked, blockquote: (query.element.querySelector("#blockquote") as HTMLInputElement).checked, diff --git a/app/src/search/menu.ts b/app/src/search/menu.ts index cd7fd2481d..e3f6a407c8 100644 --- a/app/src/search/menu.ts +++ b/app/src/search/menu.ts @@ -130,6 +130,42 @@ export const filterMenu = (config: ISearchOption, cb: () => void) => { + + + +
    diff --git a/app/src/search/util.ts b/app/src/search/util.ts index a450011fd8..5d5ca91598 100644 --- a/app/src/search/util.ts +++ b/app/src/search/util.ts @@ -507,6 +507,10 @@ export const genSearch = (app: App, config: ISearchOption, element: Element, clo r: "", page: 1, types: { + audioBlock: window.siyuan.config.search.audioBlock, + videoBlock: window.siyuan.config.search.videoBlock, + iFrameBlock: window.siyuan.config.search.iFrameBlock, + widgetBlock: window.siyuan.config.search.widgetBlock, document: window.siyuan.config.search.document, heading: window.siyuan.config.search.heading, list: window.siyuan.config.search.list, @@ -763,6 +767,10 @@ export const genSearch = (app: App, config: ISearchOption, element: Element, clo r: "", page: 1, types: { + audioBlock: window.siyuan.config.search.audioBlock, + videoBlock: window.siyuan.config.search.videoBlock, + iFrameBlock: window.siyuan.config.search.iFrameBlock, + widgetBlock: window.siyuan.config.search.widgetBlock, document: window.siyuan.config.search.document, heading: window.siyuan.config.search.heading, list: window.siyuan.config.search.list, diff --git a/app/src/types/index.d.ts b/app/src/types/index.d.ts index 3412b3b8b8..13f817b70f 100644 --- a/app/src/types/index.d.ts +++ b/app/src/types/index.d.ts @@ -268,26 +268,32 @@ interface ISearchOption { idPath: string[] k: string r: string - types: { - mathBlock: boolean - table: boolean - blockquote: boolean - superBlock: boolean - paragraph: boolean - document: boolean - heading: boolean - list: boolean - listItem: boolean - codeBlock: boolean - htmlBlock: boolean - embedBlock: boolean - databaseBlock: boolean - }, + types: ISearchType, replaceTypes: { [key: string]: boolean; }, } +interface ISearchType { + audioBlock: boolean + videoBlock: boolean + iFrameBlock: boolean + widgetBlock: boolean + mathBlock: boolean + table: boolean + blockquote: boolean + superBlock: boolean + paragraph: boolean + document: boolean + heading: boolean + list: boolean + listItem: boolean + codeBlock: boolean + htmlBlock: boolean + embedBlock: boolean + databaseBlock: boolean +} + interface ITextOption { color?: string, type: string @@ -823,20 +829,7 @@ interface IConfig { tag: { sort: number } - search: { - databaseBlock: boolean - embedBlock: boolean - htmlBlock: boolean - document: boolean - heading: boolean - list: boolean - listItem: boolean - codeBlock: boolean - mathBlock: boolean - table: boolean - blockquote: boolean - superBlock: boolean - paragraph: boolean + search: ISearchType & { name: boolean alias: boolean memo: boolean From ab69eb57322e15b27efaba6c876acce12f1e2833 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Fri, 22 Mar 2024 16:58:25 +0800 Subject: [PATCH 54/77] :rotating_light: --- app/src/config/bazaar.ts | 8 ++-- app/src/menus/workspace.ts | 2 +- app/src/mobile/menu/search.ts | 17 +------- app/src/protyle/render/av/action.ts | 8 ++-- app/src/protyle/render/av/cell.ts | 2 +- app/src/protyle/render/av/render.ts | 10 ++--- app/src/protyle/render/av/row.ts | 2 +- app/src/protyle/util/insertHTML.ts | 8 ++-- app/src/search/util.ts | 61 +++++++++++------------------ 9 files changed, 45 insertions(+), 73 deletions(-) diff --git a/app/src/config/bazaar.ts b/app/src/config/bazaar.ts index e39a0929b6..ad242fc0fd 100644 --- a/app/src/config/bazaar.ts +++ b/app/src/config/bazaar.ts @@ -342,7 +342,7 @@ export const bazaar = { html += this._genUpdateItemHTML(item, "widgets"); }); - const allCount = response.data.themes.length + response.data.icons.length + response.data.widgets.length + response.data.plugins.length + response.data.templates.length + const allCount = response.data.themes.length + response.data.icons.length + response.data.widgets.length + response.data.plugins.length + response.data.templates.length; if (allCount === 0) { this.element.querySelector('[data-type="downloaded-update"]').innerHTML = ""; return; @@ -354,7 +354,7 @@ export const bazaar = {
    ${allCount}
    ${html}
    `; - }) + }); }, _genMyHTML(bazaarType: TBazaarType, app: App, updateUpdate = true) { const contentElement = bazaar.element.querySelector("#configBazaarDownloaded"); @@ -708,7 +708,7 @@ export const bazaar = { event.stopPropagation(); break; } else if (type === "install-all") { - confirmDialog('⬆️ ' + window.siyuan.languages.updateAll, window.siyuan.languages.confirmUpdateAll, () => { + confirmDialog("⬆️ " + window.siyuan.languages.updateAll, window.siyuan.languages.confirmUpdateAll, () => { fetchPost("/api/bazaar/batchUpdatePackage", {frontend: getFrontend()}); }); event.preventDefault(); @@ -716,7 +716,7 @@ export const bazaar = { break; } else if (type === "install-t") { if (!target.classList.contains("b3-button--progress")) { - confirmDialog('⬆️ ' + window.siyuan.languages.update, window.siyuan.languages.confirmUpdate, () => { + confirmDialog("⬆️ " + window.siyuan.languages.update, window.siyuan.languages.confirmUpdate, () => { const bazaarType = dataObj.bazaarType as TBazaarType; let url = "/api/bazaar/installBazaarTemplate"; if (bazaarType === "themes") { diff --git a/app/src/menus/workspace.ts b/app/src/menus/workspace.ts index 71894aa599..582a5e3e9b 100644 --- a/app/src/menus/workspace.ts +++ b/app/src/menus/workspace.ts @@ -98,7 +98,7 @@ export const workspaceMenu = (app: App, rect: DOMRect) => { if (response.data.isWorkspace) { openWorkspace(localPath.filePaths[0]); } else { - confirmDialog('🏗️ ' + window.siyuan.languages.createWorkspace, window.siyuan.languages.createWorkspaceTip + `

    ${localPath.filePaths[0]}`, () => { + confirmDialog("🏗️ " + window.siyuan.languages.createWorkspace, window.siyuan.languages.createWorkspaceTip + `

    ${localPath.filePaths[0]}`, () => { openWorkspace(localPath.filePaths[0]); }); } diff --git a/app/src/mobile/menu/search.ts b/app/src/mobile/menu/search.ts index 268d035519..4d62457bc8 100644 --- a/app/src/mobile/menu/search.ts +++ b/app/src/mobile/menu/search.ts @@ -25,6 +25,7 @@ import { } from "../../search/assets"; import {addClearButton} from "../../util/addClearButton"; import {checkFold} from "../../util/noRelyPCFunction"; +import {getDefaultType} from "../../search/util"; const replace = (element: Element, config: ISearchOption, isAll: boolean) => { if (config.method === 1 || config.method === 2) { @@ -484,21 +485,7 @@ const initSearchEvent = (app: App, element: Element, config: ISearchOption) => { k: "", r: "", page: 1, - types: { - document: window.siyuan.config.search.document, - heading: window.siyuan.config.search.heading, - list: window.siyuan.config.search.list, - listItem: window.siyuan.config.search.listItem, - codeBlock: window.siyuan.config.search.codeBlock, - htmlBlock: window.siyuan.config.search.htmlBlock, - mathBlock: window.siyuan.config.search.mathBlock, - table: window.siyuan.config.search.table, - blockquote: window.siyuan.config.search.blockquote, - superBlock: window.siyuan.config.search.superBlock, - paragraph: window.siyuan.config.search.paragraph, - embedBlock: window.siyuan.config.search.embedBlock, - databaseBlock: window.siyuan.config.search.databaseBlock, - }, + types: getDefaultType(), replaceTypes: Object.assign({}, Constants.SIYUAN_DEFAULT_REPLACETYPES), }, config); }); diff --git a/app/src/protyle/render/av/action.ts b/app/src/protyle/render/av/action.ts index 2bf064b982..931ceeff9c 100644 --- a/app/src/protyle/render/av/action.ts +++ b/app/src/protyle/render/av/action.ts @@ -317,13 +317,13 @@ export const avContextmenu = (protyle: IProtyle, rowElement: HTMLElement, positi ${window.siyuan.languages.insertRowBefore.replace("${x}", '')} `, bind(element) { - const inputElement = element.querySelector("input") + const inputElement = element.querySelector("input"); inputElement.addEventListener("keydown", (event: KeyboardEvent) => { if (!event.isComposing && event.key === "Enter") { insertRows(blockElement, protyle, parseInt(inputElement.value), rowElements[0].previousElementSibling.getAttribute("data-id")); menu.close(); } - }) + }); } }); menu.addItem({ @@ -333,13 +333,13 @@ ${window.siyuan.languages.insertRowBefore.replace("${x}", '')} `, bind(element) { - const inputElement = element.querySelector("input") + const inputElement = element.querySelector("input"); inputElement.addEventListener("keydown", (event: KeyboardEvent) => { if (!event.isComposing && event.key === "Enter") { insertRows(blockElement, protyle, parseInt(inputElement.value), rowElements[0].getAttribute("data-id")); menu.close(); } - }) + }); } }); menu.addSeparator(); diff --git a/app/src/protyle/render/av/cell.ts b/app/src/protyle/render/av/cell.ts index 7fe978f14f..0665c69d81 100644 --- a/app/src/protyle/render/av/cell.ts +++ b/app/src/protyle/render/av/cell.ts @@ -829,4 +829,4 @@ export const addDragFill = (cellElement: Element) => { } cellElement.classList.add("av__cell--active"); cellElement.insertAdjacentHTML("beforeend", `
    `); -} +}; diff --git a/app/src/protyle/render/av/render.ts b/app/src/protyle/render/av/render.ts index 564b9dde29..ff26c13419 100644 --- a/app/src/protyle/render/av/render.ts +++ b/app/src/protyle/render/av/render.ts @@ -50,7 +50,7 @@ export const avRender = (element: Element, protyle: IProtyle, cb?: () => void, v if (selectCellElement) { selectCellId = (hasClosestByClassName(selectCellElement, "av__row") as HTMLElement).dataset.id + Constants.ZWSP + selectCellElement.getAttribute("data-col-id"); } - let dragFillId = "" + let dragFillId = ""; const dragFillElement = e.querySelector(".av__drag-fill") as HTMLElement; if (dragFillElement) { dragFillId = (hasClosestByClassName(dragFillElement, "av__row") as HTMLElement).dataset.id + Constants.ZWSP + dragFillElement.parentElement.getAttribute("data-col-id"); @@ -58,7 +58,7 @@ export const avRender = (element: Element, protyle: IProtyle, cb?: () => void, v const activeIds: string[] = []; e.querySelectorAll(".av__cell--active").forEach((item: HTMLElement) => { activeIds.push((hasClosestByClassName(item, "av__row") as HTMLElement).dataset.id + Constants.ZWSP + item.getAttribute("data-col-id")); - }) + }); const created = protyle.options.history?.created; const snapshot = protyle.options.history?.snapshot; let newViewID = e.getAttribute(Constants.CUSTOM_SY_AV_VIEW) || ""; @@ -288,11 +288,11 @@ ${cell.color ? `color:${cell.color};` : ""}">${renderCell(cell.value)}`; } } if (dragFillId) { - addDragFill(e.querySelector(`.av__row[data-id="${dragFillId.split(Constants.ZWSP)[0]}"] .av__cell[data-col-id="${dragFillId.split(Constants.ZWSP)[1]}"]`)) + addDragFill(e.querySelector(`.av__row[data-id="${dragFillId.split(Constants.ZWSP)[0]}"] .av__cell[data-col-id="${dragFillId.split(Constants.ZWSP)[1]}"]`)); } activeIds.forEach(activeId => { - e.querySelector(`.av__row[data-id="${activeId.split(Constants.ZWSP)[0]}"] .av__cell[data-col-id="${activeId.split(Constants.ZWSP)[1]}"]`)?.classList.add("av__cell--active") - }) + e.querySelector(`.av__row[data-id="${activeId.split(Constants.ZWSP)[0]}"] .av__cell[data-col-id="${activeId.split(Constants.ZWSP)[1]}"]`)?.classList.add("av__cell--active"); + }); if (getSelection().rangeCount > 0) { // 修改表头后光标重新定位 const range = getSelection().getRangeAt(0); diff --git a/app/src/protyle/render/av/row.ts b/app/src/protyle/render/av/row.ts index ef7e5c0799..62e4c7122f 100644 --- a/app/src/protyle/render/av/row.ts +++ b/app/src/protyle/render/av/row.ts @@ -380,4 +380,4 @@ export const insertRows = (blockElement: HTMLElement, protyle: IProtyle, count: }]); insertAttrViewBlockAnimation(protyle, blockElement, srcIDs, previousID, avID); blockElement.setAttribute("updated", newUpdated); -} +}; diff --git a/app/src/protyle/util/insertHTML.ts b/app/src/protyle/util/insertHTML.ts index 1c2877564a..b462653d6b 100644 --- a/app/src/protyle/util/insertHTML.ts +++ b/app/src/protyle/util/insertHTML.ts @@ -12,7 +12,7 @@ import {input} from "../wysiwyg/input"; import {objEquals} from "../../util/functions"; const processAV = (range: Range, html: string, protyle: IProtyle, blockElement: HTMLElement) => { - const tempElement = document.createElement("template") + const tempElement = document.createElement("template"); tempElement.innerHTML = html; let values: IAVCellValue[] = []; if (html.endsWith("]") && html.startsWith("[")) { @@ -27,9 +27,9 @@ const processAV = (range: Range, html: string, protyle: IProtyle, blockElement: values.push({ text: {content: cell.textContent}, type: "text" - }) - }) - }) + }); + }); + }); } if (values && Array.isArray(values) && values.length > 0) { const cellElements: Element[] = Array.from(blockElement.querySelectorAll(".av__cell--active, .av__cell--select")) || []; diff --git a/app/src/search/util.ts b/app/src/search/util.ts index 5d5ca91598..065caebe44 100644 --- a/app/src/search/util.ts +++ b/app/src/search/util.ts @@ -51,6 +51,27 @@ import {addClearButton} from "../util/addClearButton"; import {checkFold} from "../util/noRelyPCFunction"; import {getUnRefList, openSearchUnRef, unRefMoreMenu} from "./unRef"; +export const getDefaultType = () => { + return { + audioBlock: window.siyuan.config.search.audioBlock, + videoBlock: window.siyuan.config.search.videoBlock, + iFrameBlock: window.siyuan.config.search.iFrameBlock, + widgetBlock: window.siyuan.config.search.widgetBlock, + document: window.siyuan.config.search.document, + heading: window.siyuan.config.search.heading, + list: window.siyuan.config.search.list, + listItem: window.siyuan.config.search.listItem, + codeBlock: window.siyuan.config.search.codeBlock, + htmlBlock: window.siyuan.config.search.htmlBlock, + mathBlock: window.siyuan.config.search.mathBlock, + table: window.siyuan.config.search.table, + blockquote: window.siyuan.config.search.blockquote, + superBlock: window.siyuan.config.search.superBlock, + paragraph: window.siyuan.config.search.paragraph, + embedBlock: window.siyuan.config.search.embedBlock, + databaseBlock: window.siyuan.config.search.databaseBlock, + }; +}; export const toggleReplaceHistory = (searchElement: Element) => { const list = window.siyuan.storage[Constants.LOCAL_SEARCHKEYS]; if (!list.replaceKeys || list.replaceKeys.length === 0) { @@ -506,25 +527,7 @@ export const genSearch = (app: App, config: ISearchOption, element: Element, clo k: "", r: "", page: 1, - types: { - audioBlock: window.siyuan.config.search.audioBlock, - videoBlock: window.siyuan.config.search.videoBlock, - iFrameBlock: window.siyuan.config.search.iFrameBlock, - widgetBlock: window.siyuan.config.search.widgetBlock, - document: window.siyuan.config.search.document, - heading: window.siyuan.config.search.heading, - list: window.siyuan.config.search.list, - listItem: window.siyuan.config.search.listItem, - codeBlock: window.siyuan.config.search.codeBlock, - htmlBlock: window.siyuan.config.search.htmlBlock, - mathBlock: window.siyuan.config.search.mathBlock, - table: window.siyuan.config.search.table, - blockquote: window.siyuan.config.search.blockquote, - superBlock: window.siyuan.config.search.superBlock, - paragraph: window.siyuan.config.search.paragraph, - embedBlock: window.siyuan.config.search.embedBlock, - databaseBlock: window.siyuan.config.search.databaseBlock, - }, + types: getDefaultType(), replaceTypes: Object.assign({}, Constants.SIYUAN_DEFAULT_REPLACETYPES), }, config, edit); element.querySelector(".b3-chip--current")?.classList.remove("b3-chip--current"); @@ -766,25 +769,7 @@ export const genSearch = (app: App, config: ISearchOption, element: Element, clo k: "", r: "", page: 1, - types: { - audioBlock: window.siyuan.config.search.audioBlock, - videoBlock: window.siyuan.config.search.videoBlock, - iFrameBlock: window.siyuan.config.search.iFrameBlock, - widgetBlock: window.siyuan.config.search.widgetBlock, - document: window.siyuan.config.search.document, - heading: window.siyuan.config.search.heading, - list: window.siyuan.config.search.list, - listItem: window.siyuan.config.search.listItem, - codeBlock: window.siyuan.config.search.codeBlock, - htmlBlock: window.siyuan.config.search.htmlBlock, - mathBlock: window.siyuan.config.search.mathBlock, - table: window.siyuan.config.search.table, - blockquote: window.siyuan.config.search.blockquote, - superBlock: window.siyuan.config.search.superBlock, - paragraph: window.siyuan.config.search.paragraph, - embedBlock: window.siyuan.config.search.embedBlock, - databaseBlock: window.siyuan.config.search.databaseBlock, - }, + types: getDefaultType(), replaceTypes: Object.assign({}, Constants.SIYUAN_DEFAULT_REPLACETYPES), }, config, edit); element.querySelector("#criteria .b3-chip--current")?.classList.remove("b3-chip--current"); From 5f25b74e49f2ea8e9cc59dedcad881a737ed7ba5 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Fri, 22 Mar 2024 17:07:07 +0800 Subject: [PATCH 55/77] :rotating_light: --- app/src/mobile/menu/search.ts | 2 +- app/src/search/getDefault.ts | 22 ++++++++++++++++++++++ app/src/search/util.ts | 22 +--------------------- 3 files changed, 24 insertions(+), 22 deletions(-) create mode 100644 app/src/search/getDefault.ts diff --git a/app/src/mobile/menu/search.ts b/app/src/mobile/menu/search.ts index 4d62457bc8..d0de71a653 100644 --- a/app/src/mobile/menu/search.ts +++ b/app/src/mobile/menu/search.ts @@ -25,7 +25,7 @@ import { } from "../../search/assets"; import {addClearButton} from "../../util/addClearButton"; import {checkFold} from "../../util/noRelyPCFunction"; -import {getDefaultType} from "../../search/util"; +import {getDefaultType} from "../../search/getDefault"; const replace = (element: Element, config: ISearchOption, isAll: boolean) => { if (config.method === 1 || config.method === 2) { diff --git a/app/src/search/getDefault.ts b/app/src/search/getDefault.ts new file mode 100644 index 0000000000..79f0215ad5 --- /dev/null +++ b/app/src/search/getDefault.ts @@ -0,0 +1,22 @@ + +export const getDefaultType = () => { + return { + audioBlock: window.siyuan.config.search.audioBlock, + videoBlock: window.siyuan.config.search.videoBlock, + iFrameBlock: window.siyuan.config.search.iFrameBlock, + widgetBlock: window.siyuan.config.search.widgetBlock, + document: window.siyuan.config.search.document, + heading: window.siyuan.config.search.heading, + list: window.siyuan.config.search.list, + listItem: window.siyuan.config.search.listItem, + codeBlock: window.siyuan.config.search.codeBlock, + htmlBlock: window.siyuan.config.search.htmlBlock, + mathBlock: window.siyuan.config.search.mathBlock, + table: window.siyuan.config.search.table, + blockquote: window.siyuan.config.search.blockquote, + superBlock: window.siyuan.config.search.superBlock, + paragraph: window.siyuan.config.search.paragraph, + embedBlock: window.siyuan.config.search.embedBlock, + databaseBlock: window.siyuan.config.search.databaseBlock, + }; +}; diff --git a/app/src/search/util.ts b/app/src/search/util.ts index 065caebe44..476373c981 100644 --- a/app/src/search/util.ts +++ b/app/src/search/util.ts @@ -50,28 +50,8 @@ import {Menu} from "../plugin/Menu"; import {addClearButton} from "../util/addClearButton"; import {checkFold} from "../util/noRelyPCFunction"; import {getUnRefList, openSearchUnRef, unRefMoreMenu} from "./unRef"; +import {getDefaultType} from "./getDefault"; -export const getDefaultType = () => { - return { - audioBlock: window.siyuan.config.search.audioBlock, - videoBlock: window.siyuan.config.search.videoBlock, - iFrameBlock: window.siyuan.config.search.iFrameBlock, - widgetBlock: window.siyuan.config.search.widgetBlock, - document: window.siyuan.config.search.document, - heading: window.siyuan.config.search.heading, - list: window.siyuan.config.search.list, - listItem: window.siyuan.config.search.listItem, - codeBlock: window.siyuan.config.search.codeBlock, - htmlBlock: window.siyuan.config.search.htmlBlock, - mathBlock: window.siyuan.config.search.mathBlock, - table: window.siyuan.config.search.table, - blockquote: window.siyuan.config.search.blockquote, - superBlock: window.siyuan.config.search.superBlock, - paragraph: window.siyuan.config.search.paragraph, - embedBlock: window.siyuan.config.search.embedBlock, - databaseBlock: window.siyuan.config.search.databaseBlock, - }; -}; export const toggleReplaceHistory = (searchElement: Element) => { const list = window.siyuan.storage[Constants.LOCAL_SEARCHKEYS]; if (!list.replaceKeys || list.replaceKeys.length === 0) { From c752df919ae6b55ede607b353e849602689b7eec Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 22 Mar 2024 17:25:48 +0800 Subject: [PATCH 56/77] :art: Search type filtering supports Audio, Video, IFrame and Widget block https://github.com/siyuan-note/siyuan/issues/10645 --- kernel/model/storage.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kernel/model/storage.go b/kernel/model/storage.go index 397dc1339e..818ee9bbad 100644 --- a/kernel/model/storage.go +++ b/kernel/model/storage.go @@ -187,6 +187,10 @@ type CriterionTypes struct { HtmlBlock bool `json:"htmlBlock"` EmbedBlock bool `json:"embedBlock"` DatabaseBlock bool `json:"databaseBlock"` + AudioBlock bool `json:"audioBlock"` + VideoBlock bool `json:"videoBlock"` + IFrameBlock bool `json:"iframeBlock"` + WidgetBlock bool `json:"widgetBlock"` } type CriterionReplaceTypes struct { From 85eb116ac24e8ba608bbb7dda568aeeb0e9b37a1 Mon Sep 17 00:00:00 2001 From: Soltus Date: Fri, 22 Mar 2024 17:39:39 +0800 Subject: [PATCH 57/77] 6 --- scripts/parse-changelog.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/parse-changelog.py b/scripts/parse-changelog.py index e51920df70..1ae03fc51d 100644 --- a/scripts/parse-changelog.py +++ b/scripts/parse-changelog.py @@ -6,12 +6,12 @@ import github # pip install PyGithub # ensure the milestone is open before run this docmap = { - "Feature": "Feature", - "Enhancement": "Enhancement", - "Bug": "Bugfix", - "Document": "Document", - "Refactor": "Refactor", - "Abolishment": "Abolishment", + "Feature": "引入特性 | Feature", + "Enhancement": "改进功能 | Enhancement", + "Bug": "修复错误 | Bugfix", + "Document": "文档相关 | Document", + "Refactor": "开发重构 | Refactor", + "Abolishment": "移除废止 | Abolishment", "Development": "Development", } @@ -36,7 +36,7 @@ def generate_msg_from_repo(repo_name, tag_name, lastestRelease): for v in [tag_name, lastestRelease]: print(f''' -## {v} +## ⚓ [{v}](https://github.com/siyuan-note/siyuan/releases/tag/{v}) ''') desc_mapping = defaultdict(list) From 45df03aede6857e25a91c8b2dd4128a6f242e7a0 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 22 Mar 2024 19:28:59 +0800 Subject: [PATCH 58/77] :bug: Unable to search replace hyperlink anchor text https://github.com/siyuan-note/siyuan/issues/10689 --- kernel/model/search.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/model/search.go b/kernel/model/search.go index 0fcd5f4845..698ea925c4 100644 --- a/kernel/model/search.go +++ b/kernel/model/search.go @@ -592,7 +592,7 @@ func FindReplace(keyword, replacement string, replaceTypes map[string]bool, ids } else if n.IsTextMarkType("a") { if replaceTypes["aText"] { if 0 == method { - if bytes.Contains(n.Tokens, []byte(keyword)) { + if strings.Contains(n.TextMarkTextContent, keyword) { n.TextMarkTextContent = strings.ReplaceAll(n.TextMarkTextContent, keyword, replacement) } } else if 3 == method { From 8b7e6661f5b0290ffff4919dbe845cebd0bc1d60 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 22 Mar 2024 19:46:48 +0800 Subject: [PATCH 59/77] :art: Creating a dailynote template supports doc attributes https://github.com/siyuan-note/siyuan/issues/10698 --- kernel/api/template.go | 2 +- kernel/model/file.go | 18 +++++++++++++----- kernel/model/template.go | 28 ++++++++++++++-------------- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/kernel/api/template.go b/kernel/api/template.go index c706f2eb6a..2913e3a9b9 100644 --- a/kernel/api/template.go +++ b/kernel/api/template.go @@ -85,7 +85,7 @@ func renderTemplate(c *gin.Context) { preview = previewArg.(bool) } - content, err := model.RenderTemplate(p, id, preview) + _, content, err := model.RenderTemplate(p, id, preview) if nil != err { ret.Code = -1 ret.Msg = util.EscapeHTML(err.Error()) diff --git a/kernel/model/file.go b/kernel/model/file.go index 69663ff2a1..4a1021222a 100644 --- a/kernel/model/file.go +++ b/kernel/model/file.go @@ -1096,26 +1096,28 @@ func CreateDailyNote(boxID string) (p string, existed bool, err error) { return } - var dom string + var templateTree *parse.Tree + var templateDom string if "" != boxConf.DailyNoteTemplatePath { tplPath := filepath.Join(util.DataDir, "templates", boxConf.DailyNoteTemplatePath) if !filelock.IsExist(tplPath) { logging.LogWarnf("not found daily note template [%s]", tplPath) } else { - dom, err = renderTemplate(tplPath, id, false) - if nil != err { + var renderErr error + templateTree, templateDom, renderErr = RenderTemplate(tplPath, id, false) + if nil != renderErr { logging.LogWarnf("render daily note template [%s] failed: %s", boxConf.DailyNoteTemplatePath, err) } } } - if "" != dom { + if "" != templateDom { var tree *parse.Tree tree, err = LoadTreeByBlockID(id) if nil == err { tree.Root.FirstChild.Unlink() luteEngine := util.NewLute() - newTree := luteEngine.BlockDOM2Tree(dom) + newTree := luteEngine.BlockDOM2Tree(templateDom) var children []*ast.Node for c := newTree.Root.FirstChild; nil != c; c = c.Next { children = append(children, c) @@ -1123,6 +1125,12 @@ func CreateDailyNote(boxID string) (p string, existed bool, err error) { for _, c := range children { tree.Root.AppendChild(c) } + templateIALs := parse.IAL2Map(templateTree.Root.KramdownIAL) + for k, v := range templateIALs { + if "name" == k || "alias" == k || "bookmark" == k || "memo" == k || "title" == k || strings.HasPrefix(k, "custom-") { + tree.Root.SetIALAttr(k, v) + } + } tree.Root.SetIALAttr("updated", util.CurrentTimeSecondsStr()) if err = indexWriteJSONQueue(tree); nil != err { return diff --git a/kernel/model/template.go b/kernel/model/template.go index 2ccf1606c2..bc71bb049e 100644 --- a/kernel/model/template.go +++ b/kernel/model/template.go @@ -183,24 +183,21 @@ func DocSaveAsTemplate(id, name string, overwrite bool) (code int, err error) { return } -func RenderTemplate(p, id string, preview bool) (string, error) { - return renderTemplate(p, id, preview) -} - -func renderTemplate(p, id string, preview bool) (string, error) { - tree, err := LoadTreeByBlockID(id) +func RenderTemplate(p, id string, preview bool) (tree *parse.Tree, dom string, err error) { + tree, err = LoadTreeByBlockID(id) if nil != err { - return "", err + return } node := treenode.GetNodeInTree(tree, id) if nil == node { - return "", ErrBlockNotFound + err = ErrBlockNotFound + return } block := sql.BuildBlockFromNode(node, tree) md, err := os.ReadFile(p) if nil != err { - return "", err + return } dataModel := map[string]string{} @@ -222,20 +219,23 @@ func renderTemplate(p, id string, preview bool) (string, error) { goTpl = goTpl.Funcs(tplFuncMap) tpl, err := goTpl.Funcs(tplFuncMap).Parse(gulu.Str.FromBytes(md)) if nil != err { - return "", errors.New(fmt.Sprintf(Conf.Language(44), err.Error())) + err = errors.New(fmt.Sprintf(Conf.Language(44), err.Error())) + return } buf := &bytes.Buffer{} buf.Grow(4096) if err = tpl.Execute(buf, dataModel); nil != err { - return "", errors.New(fmt.Sprintf(Conf.Language(44), err.Error())) + err = errors.New(fmt.Sprintf(Conf.Language(44), err.Error())) + return } md = buf.Bytes() tree = parseKTree(md) if nil == tree { msg := fmt.Sprintf("parse tree [%s] failed", p) logging.LogErrorf(msg) - return "", errors.New(msg) + err = errors.New(msg) + return } var nodesNeedAppendChild, unlinks []*ast.Node @@ -357,8 +357,8 @@ func renderTemplate(p, id string, preview bool) (string, error) { }) luteEngine := NewLute() - dom := luteEngine.Tree2BlockDOM(tree, luteEngine.RenderOptions) - return dom, nil + dom = luteEngine.Tree2BlockDOM(tree, luteEngine.RenderOptions) + return } func addBlockIALNodes(tree *parse.Tree, removeUpdated bool) { From 5c6be798f4a50ec26fd7cf398158a40b6c70e00b Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 22 Mar 2024 19:47:03 +0800 Subject: [PATCH 60/77] :art: Creating a dailynote template supports doc attributes https://github.com/siyuan-note/siyuan/issues/10698 --- kernel/model/file.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/model/file.go b/kernel/model/file.go index 4a1021222a..53b7300a0d 100644 --- a/kernel/model/file.go +++ b/kernel/model/file.go @@ -1125,12 +1125,15 @@ func CreateDailyNote(boxID string) (p string, existed bool, err error) { for _, c := range children { tree.Root.AppendChild(c) } + + // Creating a dailynote template supports doc attributes https://github.com/siyuan-note/siyuan/issues/10698 templateIALs := parse.IAL2Map(templateTree.Root.KramdownIAL) for k, v := range templateIALs { if "name" == k || "alias" == k || "bookmark" == k || "memo" == k || "title" == k || strings.HasPrefix(k, "custom-") { tree.Root.SetIALAttr(k, v) } } + tree.Root.SetIALAttr("updated", util.CurrentTimeSecondsStr()) if err = indexWriteJSONQueue(tree); nil != err { return From 8a8ac2f45d933b0112f6636bb6d4e2568a43a4bc Mon Sep 17 00:00:00 2001 From: Vanessa Date: Fri, 22 Mar 2024 19:52:04 +0800 Subject: [PATCH 61/77] :art: https://github.com/siyuan-note/siyuan/issues/10692 --- app/src/protyle/render/av/action.ts | 14 ++++++++++- app/src/util/backForward.ts | 38 +++++++++++++++++++++++++++-- 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/app/src/protyle/render/av/action.ts b/app/src/protyle/render/av/action.ts index 931ceeff9c..70b0c36fbd 100644 --- a/app/src/protyle/render/av/action.ts +++ b/app/src/protyle/render/av/action.ts @@ -3,7 +3,15 @@ import {hasClosestBlock, hasClosestByAttribute, hasClosestByClassName} from "../ import {transaction} from "../../wysiwyg/transaction"; import {openEditorTab} from "../../../menus/util"; import {copySubMenu} from "../../../menus/commonMenuItem"; -import {getCellText, getTypeByCellElement, popTextCell, renderCell, renderCellAttr, updateHeaderCell} from "./cell"; +import { + addDragFill, + getCellText, + getTypeByCellElement, + popTextCell, + renderCell, + renderCellAttr, + updateHeaderCell +} from "./cell"; import {getColIconByType, showColMenu} from "./col"; import {deleteRow, insertRows, setPageSize, updateHeader} from "./row"; import {emitOpenMenu} from "../../../plugin/EventBus"; @@ -450,7 +458,11 @@ export const updateAttrViewCellAnimation = (cellElement: HTMLElement, value: IAV if (headerValue) { updateHeaderCell(cellElement, headerValue); } else { + const hasDragFill = cellElement.querySelector(".av__drag-fill"); cellElement.innerHTML = renderCell(value); + if (hasDragFill) { + addDragFill(cellElement); + } renderCellAttr(cellElement, value); } }; diff --git a/app/src/util/backForward.ts b/app/src/util/backForward.ts index 4e86246e59..c84fd9cd1d 100644 --- a/app/src/util/backForward.ts +++ b/app/src/util/backForward.ts @@ -2,7 +2,7 @@ import {hasClosestBlock, hasClosestByAttribute} from "../protyle/util/hasClosest import {getContenteditableElement} from "../protyle/wysiwyg/getBlock"; import {focusByOffset, focusByRange, getSelectionOffset} from "../protyle/util/selection"; import {hideElements} from "../protyle/ui/hideElements"; -import {fetchSyncPost} from "./fetch"; +import {fetchPost, fetchSyncPost} from "./fetch"; import {Constants} from "../constants"; import {Wnd} from "../layout/Wnd"; import {getInstanceById, getWndByLayout} from "../layout/util"; @@ -14,6 +14,7 @@ import {showMessage} from "../dialog/message"; import {saveScroll} from "../protyle/scroll/saveScroll"; import {getAllModels} from "../layout/getAll"; import {App} from "../index"; +import {onGet} from "../protyle/util/onGet"; let forwardStack: IBackStack[] = []; let previousIsBack = false; @@ -143,7 +144,6 @@ const focusStack = async (app: App, stack: IBackStack) => { }); return true; } - // 缩放 if (stack.protyle.element.parentElement) { const response = await fetchSyncPost("/api/block/checkBlockExist", {id: stack.id}); if (!response.data) { @@ -153,6 +153,40 @@ const focusStack = async (app: App, stack: IBackStack) => { } return false; } + // 动态加载导致内容移除 https://github.com/siyuan-note/siyuan/issues/10692 + if (!blockElement && !stack.zoomId && !stack.protyle.scroll.element.classList.contains("fn__none")) { + fetchPost("/api/filetree/getDoc", { + id: stack.id, + mode: 3, + size: window.siyuan.config.editor.dynamicLoadBlocks, + }, getResponse => { + onGet({ + data: getResponse, + protyle: stack.protyle, + action: [Constants.CB_GET_FOCUS], + afterCB() { + Array.from(stack.protyle.wysiwyg.element.querySelectorAll(`[data-node-id="${stack.id}"]`)).find((item: HTMLElement) => { + if (!hasClosestByAttribute(item, "data-type", "NodeBlockQueryEmbed")) { + blockElement = item; + return true; + } + }); + if (!blockElement) { + return; + } + getAllModels().outline.forEach(item => { + if (item.blockId === stack.protyle.block.rootID) { + item.setCurrent(blockElement); + } + }); + focusByOffset(getContenteditableElement(blockElement), stack.position.start, stack.position.end); + } + }); + }); + return true; + } + + // 缩放 zoomOut({ protyle: stack.protyle, id: stack.zoomId || stack.protyle.block.rootID, From 8be272bfc6a14d3fec376dc83bf0cee35ced3b38 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 22 Mar 2024 20:36:18 +0800 Subject: [PATCH 62/77] :art: Creating a dailynote template supports doc attributes https://github.com/siyuan-note/siyuan/issues/10698 --- kernel/model/template.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/kernel/model/template.go b/kernel/model/template.go index bc71bb049e..909fb2eb9e 100644 --- a/kernel/model/template.go +++ b/kernel/model/template.go @@ -169,6 +169,16 @@ func DocSaveAsTemplate(id, name string, overwrite bool) (code int, err error) { luteEngine := NewLute() formatRenderer := render.NewFormatRenderer(tree, luteEngine.RenderOptions) md := formatRenderer.Render() + + // 单独渲染根节点的 IAL + if 0 < len(tree.Root.KramdownIAL) { + // 把 docIAL 中的 id 调整到第一个 + tree.Root.RemoveIALAttr("id") + tree.Root.KramdownIAL = append([][]string{{"id", tree.Root.ID}}, tree.Root.KramdownIAL...) + md = append(md, []byte("\n")...) + md = append(md, parse.IAL2Tokens(tree.Root.KramdownIAL)...) + } + name = util.FilterFileName(name) + ".md" name = util.TruncateLenFileName(name) savePath := filepath.Join(util.DataDir, "templates", name) From 04bbcc6eed6d303c1eee356e3bf50e07e68eb006 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 22 Mar 2024 20:40:54 +0800 Subject: [PATCH 63/77] :art: Creating a dailynote template supports doc attributes https://github.com/siyuan-note/siyuan/issues/10698 --- kernel/model/file.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/model/file.go b/kernel/model/file.go index 53b7300a0d..2e1a236639 100644 --- a/kernel/model/file.go +++ b/kernel/model/file.go @@ -1129,7 +1129,7 @@ func CreateDailyNote(boxID string) (p string, existed bool, err error) { // Creating a dailynote template supports doc attributes https://github.com/siyuan-note/siyuan/issues/10698 templateIALs := parse.IAL2Map(templateTree.Root.KramdownIAL) for k, v := range templateIALs { - if "name" == k || "alias" == k || "bookmark" == k || "memo" == k || "title" == k || strings.HasPrefix(k, "custom-") { + if "name" == k || "alias" == k || "bookmark" == k || "memo" == k || strings.HasPrefix(k, "custom-") { tree.Root.SetIALAttr(k, v) } } From 39220af36cf1866dc4c64b28b103ce79f6827f11 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Fri, 22 Mar 2024 23:09:12 +0800 Subject: [PATCH 64/77] :art: https://github.com/siyuan-note/siyuan/issues/10692 --- app/src/util/backForward.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/util/backForward.ts b/app/src/util/backForward.ts index c84fd9cd1d..7a58abfe62 100644 --- a/app/src/util/backForward.ts +++ b/app/src/util/backForward.ts @@ -163,7 +163,6 @@ const focusStack = async (app: App, stack: IBackStack) => { onGet({ data: getResponse, protyle: stack.protyle, - action: [Constants.CB_GET_FOCUS], afterCB() { Array.from(stack.protyle.wysiwyg.element.querySelectorAll(`[data-node-id="${stack.id}"]`)).find((item: HTMLElement) => { if (!hasClosestByAttribute(item, "data-type", "NodeBlockQueryEmbed")) { @@ -180,6 +179,7 @@ const focusStack = async (app: App, stack: IBackStack) => { } }); focusByOffset(getContenteditableElement(blockElement), stack.position.start, stack.position.end); + scrollCenter(stack.protyle, blockElement, true); } }); }); From a72cafa65246f680a030f022ef365e0e183b33a8 Mon Sep 17 00:00:00 2001 From: Soltus Date: Sat, 23 Mar 2024 02:49:38 +0800 Subject: [PATCH 65/77] =?UTF-8?q?=E2=99=BB=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/electron/error.html | 9 ++-- app/electron/init.html | 4 +- app/electron/main.js | 21 +++++++-- app/package.json | 6 ++- app/pnpm-lock.yaml | 10 ++--- app/src/asset/renderAssets.ts | 6 +-- app/src/boot/globalEvent/keydown.ts | 6 +-- app/src/card/openCard.ts | 6 +-- app/src/card/viewCards.ts | 8 ++-- app/src/dialog/processSystem.ts | 21 +++++++++ app/src/history/diff.ts | 14 +++--- app/src/history/doc.ts | 4 +- app/src/history/history.ts | 6 +-- app/src/layout/topBar.ts | 4 +- app/src/menus/commonMenuItem.ts | 12 +++--- app/src/menus/protyle.ts | 50 +++++++++++----------- app/src/protyle/gutter/index.ts | 7 +-- app/src/protyle/header/Title.ts | 4 +- app/src/protyle/header/openTitleMenu.ts | 4 +- app/src/protyle/render/av/action.ts | 4 +- app/src/protyle/render/av/blockAttr.ts | 10 ++--- app/src/protyle/render/av/cell.ts | 14 +++--- app/src/protyle/render/av/col.ts | 36 ++++++++-------- app/src/protyle/render/av/date.ts | 18 ++++---- app/src/protyle/render/av/filter.ts | 10 ++--- app/src/protyle/render/av/openMenuPanel.ts | 4 +- app/src/protyle/render/av/render.ts | 2 +- app/src/protyle/render/av/row.ts | 6 +-- app/src/protyle/toolbar/index.ts | 8 ++-- app/src/protyle/util/editorCommonEvent.ts | 6 +-- app/src/protyle/util/insertHTML.ts | 8 ++-- app/src/protyle/wysiwyg/commonHotkey.ts | 6 +-- app/src/protyle/wysiwyg/index.ts | 6 +-- app/src/protyle/wysiwyg/input.ts | 4 +- app/src/protyle/wysiwyg/keydown.ts | 4 +- app/src/protyle/wysiwyg/list.ts | 8 ++-- app/src/protyle/wysiwyg/turnIntoList.ts | 4 +- app/src/sillot/index.ts | 4 +- kernel/util/working_mobile.go | 2 +- 39 files changed, 203 insertions(+), 163 deletions(-) diff --git a/app/electron/error.html b/app/electron/error.html index 3294430b1d..deedf449a3 100644 --- a/app/electron/error.html +++ b/app/electron/error.html @@ -1,7 +1,7 @@ - Error - SiYuan + Error - Sillot