From 7be4c2de9d522f3c7f01afe79e9002d0fdcc9389 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 22 Oct 2023 17:52:44 +0000 Subject: [PATCH] Deploy to GitHub pages --- README.md | 228 + README_zh_CN.md | 228 + i18n/en_US.json | 59 + i18n/zh_CHT.json | 59 + i18n/zh_CN.json | 59 + icon.png | Bin 0 -> 20254 bytes index.css | 1 + index.js | 12 + keeweb/app/404.html | 28 + keeweb/app/browserconfig.xml | 12 + keeweb/app/icons/android-chrome-192x192.png | Bin 0 -> 32772 bytes keeweb/app/icons/android-chrome-512x512.png | Bin 0 -> 62674 bytes keeweb/app/icons/apple-touch-icon.png | Bin 0 -> 20254 bytes keeweb/app/icons/favicon-16x16.png | Bin 0 -> 685 bytes keeweb/app/icons/favicon-32x32.png | Bin 0 -> 1834 bytes keeweb/app/icons/mstile-150x150.png | Bin 0 -> 3685 bytes keeweb/app/icons/mstile-310x150.png | Bin 0 -> 3233 bytes keeweb/app/icons/mstile-310x310.png | Bin 0 -> 6449 bytes keeweb/app/icons/mstile-70x70.png | Bin 0 -> 1765 bytes keeweb/app/icons/safari-pinned-tab.svg | 1 + keeweb/app/icons/splash-1125x2436.png | Bin 0 -> 1037478 bytes keeweb/app/icons/splash-1242x2148.png | Bin 0 -> 983465 bytes keeweb/app/icons/splash-1536x2048.png | Bin 0 -> 1067138 bytes keeweb/app/icons/splash-1668x2224.png | Bin 0 -> 1189843 bytes keeweb/app/icons/splash-2048x2732.png | Bin 0 -> 1592414 bytes keeweb/app/icons/splash-640x1136.png | Bin 0 -> 329446 bytes keeweb/app/icons/splash-750x1294.png | Bin 0 -> 418312 bytes keeweb/app/index.html | 78184 ++++++++++++++++ keeweb/app/manifest.json | 22 + keeweb/app/oauth-result/dropbox.html | 16 + keeweb/app/oauth-result/gdrive.html | 16 + keeweb/app/oauth-result/onedrive.html | 16 + keeweb/app/oauth-result/teams.html | 16 + keeweb/app/service-worker.js | 19 + keeweb/app/update.json | 4 + keeweb/plugins/404.html | 27 + keeweb/plugins/create.html | 412 + keeweb/plugins/css/site.css | 77 + keeweb/plugins/favicon.png | Bin 0 -> 1834 bytes keeweb/plugins/img/install.png | Bin 0 -> 39136 bytes keeweb/plugins/img/logo.png | Bin 0 -> 4826 bytes keeweb/plugins/index.html | 40 + keeweb/plugins/lib/FileSaver.min.js | 2 + keeweb/plugins/lib/jszip.min.js | 15 + keeweb/plugins/plugins.json | 874 + .../external-selection-menu/manifest.json | 18 + .../plugins/external-selection-menu/plugin.js | 116 + keeweb/plugins/plugins/theme-arc/index.html | 20 + .../plugins/plugins/theme-arc/manifest.json | 21 + keeweb/plugins/plugins/theme-arc/plugin.css | 10 + .../plugins/theme-cupertino-auto/index.html | 18 + .../theme-cupertino-auto/manifest.json | 21 + .../plugins/theme-cupertino-auto/plugin.css | 1103 + .../plugins/theme-cupertino-dark/index.html | 18 + .../theme-cupertino-dark/manifest.json | 21 + .../plugins/theme-cupertino-dark/plugin.css | 1098 + .../plugins/theme-cupertino-light/index.html | 18 + .../theme-cupertino-light/manifest.json | 21 + .../plugins/theme-cupertino-light/plugin.css | 1054 + .../plugins/plugins/theme-darker/index.html | 22 + .../plugins/theme-darker/manifest.json | 22 + .../plugins/plugins/theme-darker/plugin.css | 20 + .../plugins/plugins/theme-dracula/index.html | 20 + .../plugins/theme-dracula/manifest.json | 21 + .../plugins/plugins/theme-dracula/plugin.css | 34 + keeweb/plugins/plugins/theme-nord/index.html | 20 + .../plugins/plugins/theme-nord/manifest.json | 21 + keeweb/plugins/plugins/theme-nord/plugin.css | 13 + .../plugins/plugins/theme-orange/index.html | 18 + .../plugins/theme-orange/manifest.json | 21 + .../plugins/plugins/theme-orange/plugin.css | 7 + .../plugins/plugins/theme-thgworks/README.md | 3 + .../plugins/theme-thgworks/favicon.ico | Bin 0 -> 1150 bytes .../plugins/plugins/theme-thgworks/index.html | 12 + .../plugins/theme-thgworks/manifest.json | 21 + .../plugins/plugins/theme-thgworks/plugin.css | 32 + keeweb/plugins/siyuan/manifest.json | 18 + keeweb/plugins/siyuan/plugin.css | 20 + keeweb/plugins/siyuan/plugin.js | 7 + keeweb/plugins/translations/ca/ca.json | 474 + keeweb/plugins/translations/ca/index.html | 18 + keeweb/plugins/translations/ca/manifest.json | 21 + keeweb/plugins/translations/cs/cs.json | 776 + keeweb/plugins/translations/cs/index.html | 18 + keeweb/plugins/translations/cs/manifest.json | 22 + keeweb/plugins/translations/da/da.json | 518 + keeweb/plugins/translations/da/index.html | 18 + keeweb/plugins/translations/da/manifest.json | 22 + keeweb/plugins/translations/de-DE/de-DE.json | 695 + keeweb/plugins/translations/de-DE/index.html | 18 + .../plugins/translations/de-DE/manifest.json | 22 + keeweb/plugins/translations/es-ES/es-ES.json | 776 + keeweb/plugins/translations/es-ES/index.html | 18 + .../plugins/translations/es-ES/manifest.json | 22 + keeweb/plugins/translations/et-EE/et-EE.json | 436 + keeweb/plugins/translations/et-EE/index.html | 18 + .../plugins/translations/et-EE/manifest.json | 22 + keeweb/plugins/translations/fi/fi.json | 466 + keeweb/plugins/translations/fi/index.html | 18 + keeweb/plugins/translations/fi/manifest.json | 22 + keeweb/plugins/translations/fr-FR/fr-FR.json | 776 + keeweb/plugins/translations/fr-FR/index.html | 18 + .../plugins/translations/fr-FR/manifest.json | 22 + keeweb/plugins/translations/hu/hu.json | 702 + keeweb/plugins/translations/hu/index.html | 18 + keeweb/plugins/translations/hu/manifest.json | 22 + keeweb/plugins/translations/index.html | 93 + keeweb/plugins/translations/it-IT/index.html | 18 + keeweb/plugins/translations/it-IT/it-IT.json | 707 + .../plugins/translations/it-IT/manifest.json | 22 + keeweb/plugins/translations/ja/index.html | 18 + keeweb/plugins/translations/ja/ja.json | 776 + keeweb/plugins/translations/ja/manifest.json | 22 + keeweb/plugins/translations/ko/index.html | 18 + keeweb/plugins/translations/ko/ko.json | 487 + keeweb/plugins/translations/ko/manifest.json | 22 + keeweb/plugins/translations/meta.json | 104 + keeweb/plugins/translations/nl-NL/index.html | 18 + .../plugins/translations/nl-NL/manifest.json | 22 + keeweb/plugins/translations/nl-NL/nl-NL.json | 776 + keeweb/plugins/translations/no/index.html | 18 + keeweb/plugins/translations/no/manifest.json | 22 + keeweb/plugins/translations/no/no.json | 534 + keeweb/plugins/translations/pl/index.html | 18 + keeweb/plugins/translations/pl/manifest.json | 22 + keeweb/plugins/translations/pl/pl.json | 776 + keeweb/plugins/translations/pt-BR/index.html | 18 + .../plugins/translations/pt-BR/manifest.json | 22 + keeweb/plugins/translations/pt-BR/pt-BR.json | 776 + keeweb/plugins/translations/pt-PT/index.html | 18 + .../plugins/translations/pt-PT/manifest.json | 22 + keeweb/plugins/translations/pt-PT/pt-PT.json | 683 + keeweb/plugins/translations/ru-RU/index.html | 18 + .../plugins/translations/ru-RU/manifest.json | 22 + keeweb/plugins/translations/ru-RU/ru-RU.json | 776 + keeweb/plugins/translations/sk/index.html | 18 + keeweb/plugins/translations/sk/manifest.json | 21 + keeweb/plugins/translations/sk/sk.json | 702 + keeweb/plugins/translations/sv-SE/index.html | 18 + .../plugins/translations/sv-SE/manifest.json | 22 + keeweb/plugins/translations/sv-SE/sv-SE.json | 502 + keeweb/plugins/translations/tr/index.html | 18 + keeweb/plugins/translations/tr/manifest.json | 22 + keeweb/plugins/translations/tr/tr.json | 776 + keeweb/plugins/translations/uk/index.html | 18 + keeweb/plugins/translations/uk/manifest.json | 22 + keeweb/plugins/translations/uk/uk.json | 776 + keeweb/plugins/translations/zh-CN/index.html | 18 + .../plugins/translations/zh-CN/manifest.json | 22 + keeweb/plugins/translations/zh-CN/zh-CN.json | 776 + keeweb/plugins/translations/zh-TW/index.html | 18 + .../plugins/translations/zh-TW/manifest.json | 22 + keeweb/plugins/translations/zh-TW/zh-TW.json | 713 + plugin.json | 37 + preview.png | Bin 0 -> 106261 bytes 155 files changed, 101683 insertions(+) create mode 100644 README.md create mode 100644 README_zh_CN.md create mode 100644 i18n/en_US.json create mode 100644 i18n/zh_CHT.json create mode 100644 i18n/zh_CN.json create mode 100644 icon.png create mode 100644 index.css create mode 100644 index.js create mode 100644 keeweb/app/404.html create mode 100644 keeweb/app/browserconfig.xml create mode 100644 keeweb/app/icons/android-chrome-192x192.png create mode 100644 keeweb/app/icons/android-chrome-512x512.png create mode 100644 keeweb/app/icons/apple-touch-icon.png create mode 100644 keeweb/app/icons/favicon-16x16.png create mode 100644 keeweb/app/icons/favicon-32x32.png create mode 100644 keeweb/app/icons/mstile-150x150.png create mode 100644 keeweb/app/icons/mstile-310x150.png create mode 100644 keeweb/app/icons/mstile-310x310.png create mode 100644 keeweb/app/icons/mstile-70x70.png create mode 100644 keeweb/app/icons/safari-pinned-tab.svg create mode 100644 keeweb/app/icons/splash-1125x2436.png create mode 100644 keeweb/app/icons/splash-1242x2148.png create mode 100644 keeweb/app/icons/splash-1536x2048.png create mode 100644 keeweb/app/icons/splash-1668x2224.png create mode 100644 keeweb/app/icons/splash-2048x2732.png create mode 100644 keeweb/app/icons/splash-640x1136.png create mode 100644 keeweb/app/icons/splash-750x1294.png create mode 100644 keeweb/app/index.html create mode 100644 keeweb/app/manifest.json create mode 100644 keeweb/app/oauth-result/dropbox.html create mode 100644 keeweb/app/oauth-result/gdrive.html create mode 100644 keeweb/app/oauth-result/onedrive.html create mode 100644 keeweb/app/oauth-result/teams.html create mode 100644 keeweb/app/service-worker.js create mode 100644 keeweb/app/update.json create mode 100644 keeweb/plugins/404.html create mode 100644 keeweb/plugins/create.html create mode 100644 keeweb/plugins/css/site.css create mode 100644 keeweb/plugins/favicon.png create mode 100644 keeweb/plugins/img/install.png create mode 100644 keeweb/plugins/img/logo.png create mode 100644 keeweb/plugins/index.html create mode 100644 keeweb/plugins/lib/FileSaver.min.js create mode 100644 keeweb/plugins/lib/jszip.min.js create mode 100644 keeweb/plugins/plugins.json create mode 100644 keeweb/plugins/plugins/external-selection-menu/manifest.json create mode 100644 keeweb/plugins/plugins/external-selection-menu/plugin.js create mode 100644 keeweb/plugins/plugins/theme-arc/index.html create mode 100644 keeweb/plugins/plugins/theme-arc/manifest.json create mode 100644 keeweb/plugins/plugins/theme-arc/plugin.css create mode 100644 keeweb/plugins/plugins/theme-cupertino-auto/index.html create mode 100644 keeweb/plugins/plugins/theme-cupertino-auto/manifest.json create mode 100644 keeweb/plugins/plugins/theme-cupertino-auto/plugin.css create mode 100644 keeweb/plugins/plugins/theme-cupertino-dark/index.html create mode 100644 keeweb/plugins/plugins/theme-cupertino-dark/manifest.json create mode 100644 keeweb/plugins/plugins/theme-cupertino-dark/plugin.css create mode 100644 keeweb/plugins/plugins/theme-cupertino-light/index.html create mode 100644 keeweb/plugins/plugins/theme-cupertino-light/manifest.json create mode 100644 keeweb/plugins/plugins/theme-cupertino-light/plugin.css create mode 100644 keeweb/plugins/plugins/theme-darker/index.html create mode 100644 keeweb/plugins/plugins/theme-darker/manifest.json create mode 100644 keeweb/plugins/plugins/theme-darker/plugin.css create mode 100644 keeweb/plugins/plugins/theme-dracula/index.html create mode 100644 keeweb/plugins/plugins/theme-dracula/manifest.json create mode 100644 keeweb/plugins/plugins/theme-dracula/plugin.css create mode 100644 keeweb/plugins/plugins/theme-nord/index.html create mode 100644 keeweb/plugins/plugins/theme-nord/manifest.json create mode 100644 keeweb/plugins/plugins/theme-nord/plugin.css create mode 100644 keeweb/plugins/plugins/theme-orange/index.html create mode 100644 keeweb/plugins/plugins/theme-orange/manifest.json create mode 100644 keeweb/plugins/plugins/theme-orange/plugin.css create mode 100644 keeweb/plugins/plugins/theme-thgworks/README.md create mode 100644 keeweb/plugins/plugins/theme-thgworks/favicon.ico create mode 100644 keeweb/plugins/plugins/theme-thgworks/index.html create mode 100644 keeweb/plugins/plugins/theme-thgworks/manifest.json create mode 100644 keeweb/plugins/plugins/theme-thgworks/plugin.css create mode 100644 keeweb/plugins/siyuan/manifest.json create mode 100644 keeweb/plugins/siyuan/plugin.css create mode 100644 keeweb/plugins/siyuan/plugin.js create mode 100644 keeweb/plugins/translations/ca/ca.json create mode 100644 keeweb/plugins/translations/ca/index.html create mode 100644 keeweb/plugins/translations/ca/manifest.json create mode 100644 keeweb/plugins/translations/cs/cs.json create mode 100644 keeweb/plugins/translations/cs/index.html create mode 100644 keeweb/plugins/translations/cs/manifest.json create mode 100644 keeweb/plugins/translations/da/da.json create mode 100644 keeweb/plugins/translations/da/index.html create mode 100644 keeweb/plugins/translations/da/manifest.json create mode 100644 keeweb/plugins/translations/de-DE/de-DE.json create mode 100644 keeweb/plugins/translations/de-DE/index.html create mode 100644 keeweb/plugins/translations/de-DE/manifest.json create mode 100644 keeweb/plugins/translations/es-ES/es-ES.json create mode 100644 keeweb/plugins/translations/es-ES/index.html create mode 100644 keeweb/plugins/translations/es-ES/manifest.json create mode 100644 keeweb/plugins/translations/et-EE/et-EE.json create mode 100644 keeweb/plugins/translations/et-EE/index.html create mode 100644 keeweb/plugins/translations/et-EE/manifest.json create mode 100644 keeweb/plugins/translations/fi/fi.json create mode 100644 keeweb/plugins/translations/fi/index.html create mode 100644 keeweb/plugins/translations/fi/manifest.json create mode 100644 keeweb/plugins/translations/fr-FR/fr-FR.json create mode 100644 keeweb/plugins/translations/fr-FR/index.html create mode 100644 keeweb/plugins/translations/fr-FR/manifest.json create mode 100644 keeweb/plugins/translations/hu/hu.json create mode 100644 keeweb/plugins/translations/hu/index.html create mode 100644 keeweb/plugins/translations/hu/manifest.json create mode 100644 keeweb/plugins/translations/index.html create mode 100644 keeweb/plugins/translations/it-IT/index.html create mode 100644 keeweb/plugins/translations/it-IT/it-IT.json create mode 100644 keeweb/plugins/translations/it-IT/manifest.json create mode 100644 keeweb/plugins/translations/ja/index.html create mode 100644 keeweb/plugins/translations/ja/ja.json create mode 100644 keeweb/plugins/translations/ja/manifest.json create mode 100644 keeweb/plugins/translations/ko/index.html create mode 100644 keeweb/plugins/translations/ko/ko.json create mode 100644 keeweb/plugins/translations/ko/manifest.json create mode 100644 keeweb/plugins/translations/meta.json create mode 100644 keeweb/plugins/translations/nl-NL/index.html create mode 100644 keeweb/plugins/translations/nl-NL/manifest.json create mode 100644 keeweb/plugins/translations/nl-NL/nl-NL.json create mode 100644 keeweb/plugins/translations/no/index.html create mode 100644 keeweb/plugins/translations/no/manifest.json create mode 100644 keeweb/plugins/translations/no/no.json create mode 100644 keeweb/plugins/translations/pl/index.html create mode 100644 keeweb/plugins/translations/pl/manifest.json create mode 100644 keeweb/plugins/translations/pl/pl.json create mode 100644 keeweb/plugins/translations/pt-BR/index.html create mode 100644 keeweb/plugins/translations/pt-BR/manifest.json create mode 100644 keeweb/plugins/translations/pt-BR/pt-BR.json create mode 100644 keeweb/plugins/translations/pt-PT/index.html create mode 100644 keeweb/plugins/translations/pt-PT/manifest.json create mode 100644 keeweb/plugins/translations/pt-PT/pt-PT.json create mode 100644 keeweb/plugins/translations/ru-RU/index.html create mode 100644 keeweb/plugins/translations/ru-RU/manifest.json create mode 100644 keeweb/plugins/translations/ru-RU/ru-RU.json create mode 100644 keeweb/plugins/translations/sk/index.html create mode 100644 keeweb/plugins/translations/sk/manifest.json create mode 100644 keeweb/plugins/translations/sk/sk.json create mode 100644 keeweb/plugins/translations/sv-SE/index.html create mode 100644 keeweb/plugins/translations/sv-SE/manifest.json create mode 100644 keeweb/plugins/translations/sv-SE/sv-SE.json create mode 100644 keeweb/plugins/translations/tr/index.html create mode 100644 keeweb/plugins/translations/tr/manifest.json create mode 100644 keeweb/plugins/translations/tr/tr.json create mode 100644 keeweb/plugins/translations/uk/index.html create mode 100644 keeweb/plugins/translations/uk/manifest.json create mode 100644 keeweb/plugins/translations/uk/uk.json create mode 100644 keeweb/plugins/translations/zh-CN/index.html create mode 100644 keeweb/plugins/translations/zh-CN/manifest.json create mode 100644 keeweb/plugins/translations/zh-CN/zh-CN.json create mode 100644 keeweb/plugins/translations/zh-TW/index.html create mode 100644 keeweb/plugins/translations/zh-TW/manifest.json create mode 100644 keeweb/plugins/translations/zh-TW/zh-TW.json create mode 100644 plugin.json create mode 100644 preview.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..59363f2 --- /dev/null +++ b/README.md @@ -0,0 +1,228 @@ +
*.kdbx
from SiYuan workspace*.kdbx
to SiYuan workspacesiyuan
"
+ },
+ "title": "Plugins"
+ },
+ "title": "KeeWeb Settings",
+ "windowTab": {
+ "center": {
+ "description": "Display new windows in the center of the screen",
+ "title": "Window Center"
+ },
+ "height": {
+ "description": "Default height of new windows",
+ "title": "Window Height"
+ },
+ "title": "Window",
+ "top": {
+ "description": "Whether new windows opened are set to be always on top by default",
+ "title": "Window Always-on-Top"
+ },
+ "width": {
+ "description": "Default width of new windows",
+ "title": "Window Width"
+ }
+ }
+ }
+ }
+}
diff --git a/i18n/zh_CHT.json b/i18n/zh_CHT.json
new file mode 100644
index 0000000..b34c448
--- /dev/null
+++ b/i18n/zh_CHT.json
@@ -0,0 +1,59 @@
+{
+ "menu": {
+ "command": {
+ "openKeeWebBrowser": {
+ "text": "在瀏覽器中打開 KeeWeb"
+ },
+ "openKeeWebTab": {
+ "text": "在新頁籤中打開 KeeWeb"
+ },
+ "openKeeWebWindow": {
+ "text": "在新窗口中打開 KeeWeb"
+ }
+ }
+ },
+ "settings": {
+ "generalSettings": {
+ "reset": {
+ "description": "重置本插件所有設置選項為默認選項(重置後將刷新頁面)",
+ "text": "重置",
+ "title": "重置設置選項"
+ },
+ "deleteKeeWebConfig": {
+ "description": "刪除所有 KeeWeb 用戶配置(初始化 KeeWeb 應用)",
+ "text": "刪除",
+ "title": "刪除 KeeWeb 用戶配置"
+ },
+ "title": "常規設置"
+ },
+ "keewebSettings": {
+ "pluginTab": {
+ "siyuan": {
+ "description": "開啟 KeeWeb 的思源筆記支持*.kdbx
*.kdbx
至思源筆記工作空間siyuan
"
+ },
+ "title": "插件設置"
+ },
+ "title": "KeeWeb 設置",
+ "windowTab": {
+ "center": {
+ "description": "在屏幕中央顯示新窗口",
+ "title": "窗口居中"
+ },
+ "height": {
+ "description": "新窗口的默認高度",
+ "title": "窗口高度"
+ },
+ "title": "窗口設置",
+ "top": {
+ "description": "打開的新窗口是否默認置頂",
+ "title": "窗口置頂"
+ },
+ "width": {
+ "description": "新窗口的默認寬度",
+ "title": "窗口寬度"
+ }
+ }
+ }
+ }
+}
diff --git a/i18n/zh_CN.json b/i18n/zh_CN.json
new file mode 100644
index 0000000..150479b
--- /dev/null
+++ b/i18n/zh_CN.json
@@ -0,0 +1,59 @@
+{
+ "menu": {
+ "command": {
+ "openKeeWebBrowser": {
+ "text": "在浏览器中打开 KeeWeb"
+ },
+ "openKeeWebTab": {
+ "text": "在新页签中打开 KeeWeb"
+ },
+ "openKeeWebWindow": {
+ "text": "在新窗口中打开 KeeWeb"
+ }
+ }
+ },
+ "settings": {
+ "generalSettings": {
+ "reset": {
+ "description": "重置本插件所有设置选项为默认选项(重置后将刷新页面)",
+ "text": "重置",
+ "title": "重置设置选项"
+ },
+ "deleteKeeWebConfig": {
+ "description": "刪除所有 KeeWeb 用户配置(初始化 KeeWeb 应用)",
+ "text": "删除",
+ "title": "删除 KeeWeb 用户配置"
+ },
+ "title": "常规设置"
+ },
+ "keewebSettings": {
+ "pluginTab": {
+ "siyuan": {
+ "description": "开启 KeeWeb 的思源笔记支持*.kdbx
*.kdbx
至思源笔记工作空间siyuan
"
+ },
+ "title": "插件设置"
+ },
+ "title": "KeeWeb 设置",
+ "windowTab": {
+ "center": {
+ "description": "在屏幕中央显示新窗口",
+ "title": "窗口居中"
+ },
+ "height": {
+ "description": "新窗口的默认高度",
+ "title": "窗口高度"
+ },
+ "title": "窗口设置",
+ "top": {
+ "description": "打开的新窗口是否默认置顶",
+ "title": "窗口置顶"
+ },
+ "width": {
+ "description": "新窗口的默认宽度",
+ "title": "窗口宽度"
+ }
+ }
+ }
+ }
+}
diff --git a/icon.png b/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..589634e739f9428758129553faef5bf27006e4cf
GIT binary patch
literal 20254
zcmV)=K!m@EP)*.kdbx
",zh_CN:"基于 KeeWeb 的密码管理器,兼容 KeePass 3.x 与 4.x 数据库 *.kdbx
",zh_CHT:"基於 KeeWeb 的密碼管理器,兼容 KeePass 3.x 與 4.x 數據庫 *.kdbx
"},os={default:"README.md",zh_CN:"README_zh_CN.md",zh_CHT:"README_zh_CN.md"},ss={openCollective:"",patreon:"",github:"",custom:["https://afdian.net/a/zuoqiu","https://ko-fi.com/zuoqiu"]},rs={name:Yo,author:Xo,url:Qo,version:Zo,minAppVersion:xo,backends:$o,frontends:es,displayName:ts,description:ns,readme:os,funding:ss},is=(t,e)=>e.some(n=>t instanceof n);let Xt,Qt;function as(){return Xt||(Xt=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function ls(){return Qt||(Qt=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const co=new WeakMap,Et=new WeakMap,uo=new WeakMap,ut=new WeakMap,Mt=new WeakMap;function cs(t){const e=new Promise((n,o)=>{const s=()=>{t.removeEventListener("success",r),t.removeEventListener("error",i)},r=()=>{n(_e(t.result)),s()},i=()=>{o(t.error),s()};t.addEventListener("success",r),t.addEventListener("error",i)});return e.then(n=>{n instanceof IDBCursor&&co.set(n,t)}).catch(()=>{}),Mt.set(e,t),e}function us(t){if(Et.has(t))return;const e=new Promise((n,o)=>{const s=()=>{t.removeEventListener("complete",r),t.removeEventListener("error",i),t.removeEventListener("abort",i)},r=()=>{n(),s()},i=()=>{o(t.error||new DOMException("AbortError","AbortError")),s()};t.addEventListener("complete",r),t.addEventListener("error",i),t.addEventListener("abort",i)});Et.set(t,e)}let St={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return Et.get(t);if(e==="objectStoreNames")return t.objectStoreNames||uo.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return _e(t[e])},set(t,e,n){return t[e]=n,!0},has(t,e){return t instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in t}};function fs(t){St=t(St)}function hs(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const o=t.call(ft(this),e,...n);return uo.set(o,e.sort?e.sort():[e]),_e(o)}:ls().includes(t)?function(...e){return t.apply(ft(this),e),_e(co.get(this))}:function(...e){return _e(t.apply(ft(this),e))}}function ds(t){return typeof t=="function"?hs(t):(t instanceof IDBTransaction&&us(t),is(t,as())?new Proxy(t,St):t)}function _e(t){if(t instanceof IDBRequest)return cs(t);if(ut.has(t))return ut.get(t);const e=ds(t);return e!==t&&(ut.set(t,e),Mt.set(e,t)),e}const ft=t=>Mt.get(t);function Zt(t,e,{blocked:n,upgrade:o,blocking:s,terminated:r}={}){const i=indexedDB.open(t,e),a=_e(i);return o&&i.addEventListener("upgradeneeded",l=>{o(_e(i.result),l.oldVersion,l.newVersion,_e(i.transaction),l)}),n&&i.addEventListener("blocked",l=>n(l.oldVersion,l.newVersion,l)),a.then(l=>{r&&l.addEventListener("close",()=>r()),s&&l.addEventListener("versionchange",u=>s(u.oldVersion,u.newVersion,u))}).catch(()=>{}),a}const ps=["get","getKey","getAll","getAllKeys","count"],ms=["put","add","delete","clear"],ht=new Map;function xt(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(ht.get(e))return ht.get(e);const n=e.replace(/FromIndex$/,""),o=e!==n,s=ms.includes(n);if(!(n in(o?IDBIndex:IDBObjectStore).prototype)||!(s||ps.includes(n)))return;const r=async function(i,...a){const l=this.transaction(i,s?"readwrite":"readonly");let u=l.store;return o&&(u=u.index(a.shift())),(await Promise.all([u[n](...a),s&&l.done]))[0]};return ht.set(e,r),r}fs(t=>({...t,get:(e,n,o)=>xt(e,n)||t.get(e,n,o),has:(e,n)=>!!xt(e,n)||t.has(e,n)}));var gs=Object.defineProperty,bs=(t,e,n)=>e in t?gs(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,he=(t,e,n)=>(bs(t,typeof e!="symbol"?e+"":e,n),n);const _s=/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,ys=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,ws=/^\s*["[{]|^\s*-?\d[\d.]{0,14}\s*$/;function ks(t,e){if(t==="__proto__"||t==="constructor"&&e&&typeof e=="object"&&"prototype"in e){Es(t);return}return e}function Es(t){console.warn(`[destr] Dropping "${t}" key to prevent prototype pollution.`)}function Ss(t,e={}){if(typeof t!="string")return t;const n=t.trim();if(t[0]==='"'&&t[t.length-1]==='"')return n.slice(1,-1);if(n.length<=9){const o=n.toLowerCase();if(o==="true")return!0;if(o==="false")return!1;if(o==="undefined")return;if(o==="null")return null;if(o==="nan")return Number.NaN;if(o==="infinity")return Number.POSITIVE_INFINITY;if(o==="-infinity")return Number.NEGATIVE_INFINITY}if(!ws.test(t)){if(e.strict)throw new SyntaxError("[destr] Invalid JSON");return t}try{if(_s.test(t)||ys.test(t)){if(e.strict)throw new Error("[destr] Possible prototype pollution");return JSON.parse(t,ks)}return JSON.parse(t)}catch(o){if(e.strict)throw o;return t}}const Ts=/#/g,vs=/&/g,As=/=/g,jt=/\+/g,Os=/%5e/gi,Ps=/%60/gi,Cs=/%7c/gi,Bs=/%20/gi;function Ds(t){return encodeURI(""+t).replace(Cs,"|")}function Tt(t){return Ds(typeof t=="string"?t:JSON.stringify(t)).replace(jt,"%2B").replace(Bs,"+").replace(Ts,"%23").replace(vs,"%26").replace(Ps,"`").replace(Os,"^")}function dt(t){return Tt(t).replace(As,"%3D")}function fo(t=""){try{return decodeURIComponent(""+t)}catch{return""+t}}function Ns(t){return fo(t.replace(jt," "))}function Ls(t){return fo(t.replace(jt," "))}function Is(t=""){const e={};t[0]==="?"&&(t=t.slice(1));for(const n of t.split("&")){const o=n.match(/([^=]+)=?(.*)/)||[];if(o.length<2)continue;const s=Ns(o[1]);if(s==="__proto__"||s==="constructor")continue;const r=Ls(o[2]||"");e[s]===void 0?e[s]=r:Array.isArray(e[s])?e[s].push(r):e[s]=[e[s],r]}return e}function Rs(t,e){return(typeof e=="number"||typeof e=="boolean")&&(e=String(e)),e?Array.isArray(e)?e.map(n=>`${dt(t)}=${Tt(n)}`).join("&"):`${dt(t)}=${Tt(e)}`:dt(t)}function Ms(t){return Object.keys(t).filter(e=>t[e]!==void 0).map(e=>Rs(e,t[e])).filter(Boolean).join("&")}const js=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,Fs=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,Us=/^([/\\]\s*){2,}[^/\\]/;function ho(t,e={}){return typeof e=="boolean"&&(e={acceptRelative:e}),e.strict?js.test(t):Fs.test(t)||(e.acceptRelative?Us.test(t):!1)}const qs=/\/$|\/\?/;function vt(t="",e=!1){return e?qs.test(t):t.endsWith("/")}function Ws(t="",e=!1){if(!e)return(vt(t)?t.slice(0,-1):t)||"/";if(!vt(t,!0))return t||"/";const[n,...o]=t.split("?");return(n.slice(0,-1)||"/")+(o.length>0?`?${o.join("?")}`:"")}function Ks(t="",e=!1){if(!e)return t.endsWith("/")?t:t+"/";if(vt(t,!0))return t||"/";const[n,...o]=t.split("?");return n+"/"+(o.length>0?`?${o.join("?")}`:"")}function Hs(t,e){if(Gs(e)||ho(t))return t;const n=Ws(e);return t.startsWith(n)?t:Ys(n,t)}function zs(t,e){const n=po(t),o={...Is(n.search),...e};return n.search=Ms(o),Xs(n)}function Gs(t){return!t||t==="/"}function Vs(t){return t&&t!=="/"}const Js=/^\.?\//;function Ys(t,...e){let n=t||"";for(const o of e.filter(s=>Vs(s)))if(n){const s=o.replace(Js,"");n=Ks(n)+s}else n=o;return n}function po(t="",e){const n=t.match(/^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/);if(n){const[,f,p=""]=n;return{protocol:f,pathname:p,href:f+p,auth:"",host:"",search:"",hash:""}}if(!ho(t,{acceptRelative:!0}))return e?po(e+t):$t(t);const[,o="",s,r=""]=t.replace(/\\/g,"/").match(/^[\s\0]*([\w+.-]{2,}:)?\/\/([^/@]+@)?(.*)/)||[],[,i="",a=""]=r.match(/([^#/?]*)(.*)?/)||[],{pathname:l,search:u,hash:c}=$t(a.replace(/\/(?=[A-Za-z]:)/,""));return{protocol:o,auth:s?s.slice(0,Math.max(0,s.length-1)):"",host:i,pathname:l,search:u,hash:c}}function $t(t=""){const[e="",n="",o=""]=(t.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:e,search:n,hash:o}}function Xs(t){const e=t.pathname||"",n=t.search?(t.search.startsWith("?")?"":"?")+t.search:"",o=t.hash||"",s=t.auth?t.auth+"@":"",r=t.host||"";return(t.protocol?t.protocol+"//":"")+s+r+e+n+o}class Qs extends Error{constructor(e,n){super(e,n),this.name="FetchError",n!=null&&n.cause&&!this.cause&&(this.cause=n.cause)}}function Zs(t){var e,n,o,s,r;const i=((e=t.error)==null?void 0:e.message)||((n=t.error)==null?void 0:n.toString())||"",a=((o=t.request)==null?void 0:o.method)||((s=t.options)==null?void 0:s.method)||"GET",l=((r=t.request)==null?void 0:r.url)||String(t.request)||"/",u=`[${a}] ${JSON.stringify(l)}`,c=t.response?`${t.response.status} ${t.response.statusText}`:"${this.name}
`,content:``,width:so?"92vw":"720px",height:so?void 0:"640px"}).element.querySelector(`#${n.SETTINGS_DIALOG_ID}`);s&&new $a({target:s,props:{config:this.config,plugin:this}})}async initIDB(){this.idb={FilesCache:await Zt(A.IDB_SCHEMA.FilesCache.name,void 0,this.createOpenDBCallbacks(A.IDB_SCHEMA.FilesCache.name)),PluginFiles:await Zt(A.IDB_SCHEMA.PluginFiles.name,void 0,this.createOpenDBCallbacks(A.IDB_SCHEMA.PluginFiles.name))}}async initFiles(){await Promise.allSettled(A.IDB_ENTRIES.map(({db:n,store:o})=>this.client.putFile({path:ee(this.PLUGIN_STORAGE_IDB_PATH,n,o),isDir:!0}))),await this.loadKeeWebPluginManifest()}async resetConfig(){return this.updateConfig(Ge(Ve))}async updateConfig(n){return n&&n!==this.config&&(this.config=n),await this.updateKeeWebPluginStatus(),this.saveData(A.GLOBAL_CONFIG_NAME,JSON.stringify(this.config,void 0,4))}async deleteKeeWebUserConfig(){this.removeLocalStorageItems(),await Promise.allSettled([this.idb.FilesCache.clear(A.IDB_SCHEMA.FilesCache.stores.files.name),this.idb.PluginFiles.clear(A.IDB_SCHEMA.PluginFiles.stores.files.name)]),await Promise.allSettled([this.saveLocalStorage(),this.saveIDB()]),await this.updateKeeWebPluginStatus()}async updateKeeWebPluginStatus(){switch(!0){case(!this.isKeeWebSiyuanPluginInstalled&&this.config.keeweb.plugin.siyuan.enable):await this.installKeeWebPlugin();break;case(this.isKeeWebSiyuanPluginInstalled&&!this.config.keeweb.plugin.siyuan.enable):await this.uninstallKeeWebPlugin();break}}async loadLocalStorage(){const n=await this.loadLocal(),o=this.getLocalStorageItems(),s=Object.keys(n),r=Object.keys(o),i=kt(s,r);return this.logger.debug(i),i.delete.forEach(a=>globalThis.localStorage.removeItem(a)),this.setLocalStorageItems(this.local),n}async saveLocalStorage(){return this.local=this.getLocalStorageItems(),this.saveLocal(this.local)}async loadLocal(){try{const n=await this.loadData(A.LOCAL_STORAGE_NAME);return this.local=n instanceof Object?n:{},this.local}catch(n){throw this.logger.error(n),n}}async saveLocal(n=this.local){try{return await this.saveData(A.LOCAL_STORAGE_NAME,JSON.stringify(n,void 0,4)),!0}catch(o){return this.logger.error(o),!1}}setLocalStorageItem(n,o){globalThis.localStorage.setItem(n,JSON.stringify(o))}setLocalStorageItems(n=this.local){for(const[o,s]of Object.entries(n))this.setLocalStorageItem(o,s)}getLocalStorageItem(n){const o=globalThis.localStorage.getItem(n);return o===null?o:JSON.parse(o)}getLocalStorageItems(){const n={};for(const[o,s]of Object.entries(globalThis.localStorage))this.isLocalStorageKey(o)&&(n[o]=JSON.parse(s));return n}removeLocalStorageItems(){for(const n of Object.keys(globalThis.localStorage))this.isLocalStorageKey(n)&&globalThis.localStorage.removeItem(n)}async loadIDB(){for(const n of A.IDB_ENTRIES)try{const o=ee(this.PLUGIN_STORAGE_IDB_PATH,n.db,n.store),r=(await this.client.readDir({path:o})).data.filter(f=>!f.isDir).map(f=>f.name),i=await this.idb[n.db].getAllKeys(n.store),a=kt(r,i),l=this.idb[n.db].transaction(n.store,"readwrite"),u=l.objectStore(n.store);(await Promise.allSettled([...[...a.delete].map(f=>u.delete(f)),...r.map(f=>(async()=>{const p=await this.client.getFile({path:ee(o,f)},"arraybuffer");await this.idb[n.db].put(n.store,p,f)})()),l.done])).forEach(f=>{f.status==="rejected"&&this.logger.warn(f.reason)})}catch(o){this.logger.warn(o)}}async saveIDB(...n){const o=new Set(n),s=o.size>0?A.IDB_ENTRIES.filter(r=>o.has(r.db)):A.IDB_ENTRIES;for(const r of s)try{const i=ee(this.PLUGIN_STORAGE_IDB_PATH,r.db,r.store),l=(await this.client.readDir({path:i})).data.filter(d=>!d.isDir).map(d=>d.name),u=await this.idb[r.db].getAllKeys(r.store),c=kt(u,l),f=this.idb[r.db].transaction(r.store),p=f.objectStore(r.store);(await Promise.allSettled([...[...c.delete].map(d=>this.client.removeFile({path:ee(i,d)})),...u.map(d=>(async()=>{const b=await p.get(d);return b?this.client.putFile({path:ee(i,d),file:b}):void 0})()),f.done])).forEach(d=>{d.status==="rejected"&&this.logger.warn(d.reason)})}catch(i){this.logger.warn(i)}}isLocalStorageKey(n,o=A.LOCAL_STORAGE_KEY_PREFIX){return n.startsWith(o)}createOpenDBCallbacks(n){return{upgrade(o){for(const[s,r]of Object.entries(A.IDB_SCHEMA[n].stores))o.createObjectStore(r.name)}}}async copyKeeWebPluginFile(n){const o=`plugin.${n}`,s=ee(this.PLUGIN_INSTALL_PATH,"keeweb/plugins/siyuan",o),r=await this.client.getFile({path:s},"blob");return this.client.putFile({path:ee(this.PLUGIN_STORAGE_IDB_PATH,A.IDB_SCHEMA.PluginFiles.name,A.IDB_SCHEMA.PluginFiles.stores.files.name,`siyuan_${o}`),file:r})}async putKeeWebPluginFile(n){const o=`plugin.${n}`,s=`${this.manifest.name}_${o}`,r=ee(this.PLUGIN_INSTALL_PATH,"keeweb/plugins/siyuan",o),i=await this.client.getFile({path:r},"arraybuffer");await this.idb.PluginFiles.put(A.IDB_SCHEMA.PluginFiles.stores.files.name,i,s)}async deleteKeeWebPluginFile(n){const o=`${this.manifest.name}_plugin.${n}`;await this.idb.PluginFiles.delete(A.IDB_SCHEMA.PluginFiles.stores.files.name,o)}async loadKeeWebPluginManifest(){return this.manifest||(this.manifest=await this.client.getFile({path:ee(this.PLUGIN_INSTALL_PATH,"keeweb/plugins/siyuan","manifest.json")},"json")),this.manifest}saveKeeWebPluginConfig(){var s;const n=this.local[A.LOCAL_STORAGE_KEY_PLUGINS];((s=n==null?void 0:n.plugins)==null?void 0:s.find(r=>{var i;return((i=r==null?void 0:r.manifest)==null?void 0:i.name)===this.manifest.name}))?this.config.keeweb.plugin.siyuan.enable=!0:this.config.keeweb.plugin.siyuan.enable=!1}getKeeWebSiyuanPlugin(){var n=this.local[A.LOCAL_STORAGE_KEY_PLUGINS],o;return n?Array.isArray(n.plugins)?o=n.plugins.find(s=>{var r;return((r=s==null?void 0:s.manifest)==null?void 0:r.name)===this.manifest.name}):n.plugins=[]:(n={autoUpdateDate:null,autoUpdateAppVersion:null,plugins:[]},this.local[A.LOCAL_STORAGE_KEY_PLUGINS]=n),{plugins:n,plugin:o}}get isKeeWebSiyuanPluginInstalled(){const{plugin:n}=this.getKeeWebSiyuanPlugin();return!!n}async installKeeWebPlugin(){var{plugins:n,plugin:o}=this.getKeeWebSiyuanPlugin();o||n.plugins.push({manifest:this.manifest,url:this.KEEWEB_PLUGIN_PATHANEM,enabled:!0,autoUpdate:!0}),this.config.keeweb.plugin.siyuan.enable=!0,this.setLocalStorageItem(A.LOCAL_STORAGE_KEY_PLUGINS,n),await Promise.allSettled([this.putKeeWebPluginFile("js"),this.putKeeWebPluginFile("css")]),await Promise.allSettled([this.saveIDB(A.IDB_SCHEMA.PluginFiles.name),this.saveLocal(),this.updateConfig()])}async uninstallKeeWebPlugin(){const{plugins:n,plugin:o}=this.getKeeWebSiyuanPlugin();if(o){const s=n.plugins.indexOf(o);n.plugins.splice(s,1)}this.config.keeweb.plugin.siyuan.enable=!1,this.setLocalStorageItem(A.LOCAL_STORAGE_KEY_PLUGINS,n),await Promise.allSettled([this.deleteKeeWebPluginFile("js"),this.deleteKeeWebPluginFile("css")]),await Promise.allSettled([this.saveIDB(A.IDB_SCHEMA.PluginFiles.name),this.saveLocal(),this.updateConfig()])}};B(A,"GLOBAL_CONFIG_NAME","config.json"),B(A,"LOCAL_STORAGE_NAME","local.json"),B(A,"LOCAL_STORAGE_KEY_PREFIX","plugin-keepass-"),B(A,"LOCAL_STORAGE_KEY_PLUGINS",`${A.LOCAL_STORAGE_KEY_PREFIX}plugins`),B(A,"LOCAL_STORAGE_KEY_FILE_INFO",`${A.LOCAL_STORAGE_KEY_PREFIX}file-info`),B(A,"CUSTOM_TAB_TYPE_KEEWEB","-keeweb-tab"),B(A,"IDB_SCHEMA",{FilesCache:{name:"FilesCache",stores:{files:{name:"files"}}},PluginFiles:{name:"PluginFiles",stores:{files:{name:"files"}}}}),B(A,"IDB_ENTRIES",A.iterateIDB());let Rt=A;module.exports=Rt;
diff --git a/keeweb/app/404.html b/keeweb/app/404.html
new file mode 100644
index 0000000..dc38b79
--- /dev/null
+++ b/keeweb/app/404.html
@@ -0,0 +1,28 @@
+
+
+
+
+ Sorry, the page you're looking for was not found.
+ + diff --git a/keeweb/app/browserconfig.xml b/keeweb/app/browserconfig.xml new file mode 100644 index 0000000..57b24d9 --- /dev/null +++ b/keeweb/app/browserconfig.xml @@ -0,0 +1,12 @@ + +J@TgA=2~Q(
zO9lo8=S`j)2~#U`jyL)|B#QR{oRbS^)bM0NvPjgOGSIA_=rB?RaXe%J9M0$NMh5{&
zxgmkLWwm4VBv`XC@&I%v?UumbVclIs#qhTzQ5R5$Y&(uTk%&=~p4=R#3vPrQNm1gR
zq?RHzZ|`zlI}%@=sV)WJ*_UF;t)vKY2Zu+NT71RLwx466WgmV1fvet|si%Fd|C%4I
zkIwIbe{5`MpCj)%aeQ+2LzLi9VIA%2Vf4HMtmgrxJI)T{g8?3fHV80H4tGhXh#`GI
z1c5vO%1+lRN(|3nRT5YZ%^wxiNMwYiD%X?} dtRM^kX`kB(fv?Y%cO1me2Q{qtbv2eb7jpA)Io&qPQs2)
z&9cc-t8V%7W4B%Y(x0sUHq!(U`2Wc8?sUYR2TlHe?xRv>5TqPiH@Y!)8Ia1>0;r05
zB`s1pCL%;-6viqOdIK~Rjf!DL)3-#iFxLRetpSGzfanOc9S?9h*NKDFKuo|7zk#11
z1_iKyo$ioYFkAH=jd_=APy==CNIREcU0tsw8C8fxo*xSp6B)95aEIX+;!6Vnb|)H*
zd$^iZL>Bf|M4?eRd+TNs|C@93+2>v6o);dv>K*ap&&Q!NLx4X5|0erfvfk|TtZ