This commit is contained in:
vorotamoroz
2025-08-26 11:17:09 +01:00
parent 2221d8c4e8
commit 18d1ce8ec8
5 changed files with 215 additions and 196 deletions

View File

@@ -1,7 +1,7 @@
{
"id": "obsidian-livesync",
"name": "Self-hosted LiveSync",
"version": "0.25.9",
"version": "0.25.10",
"minAppVersion": "0.9.12",
"description": "Community implementation of self-hosted livesync. Reflect your vault changes to some other devices immediately. Please make sure to disable other synchronize solutions to avoid content corruption or duplication.",
"author": "vorotamoroz",

286
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "obsidian-livesync",
"version": "0.25.9",
"version": "0.25.10",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "obsidian-livesync",
"version": "0.25.9",
"version": "0.25.10",
"license": "MIT",
"dependencies": {
"@aws-sdk/client-s3": "^3.808.0",
@@ -2498,9 +2498,9 @@
}
},
"node_modules/@isaacs/cliui/node_modules/ansi-regex": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
"integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz",
"integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2659,12 +2659,12 @@
}
},
"node_modules/@libp2p/crypto": {
"version": "5.1.7",
"resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-5.1.7.tgz",
"integrity": "sha512-7DO0piidLEKfCuNfS420BlHG0e2tH7W/zugdsPSiC/1Apa/s1B1dBkaIEgfDkGjrRP4S/8Or86Rtq7zXeEu67g==",
"version": "5.1.8",
"resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-5.1.8.tgz",
"integrity": "sha512-zkfWd2x12E0NbSRU52Wb0A5I9v5a1uLgCauR8uuTqnC21OVznXUGkMg4A2Xoj90M98lReDHo+Khc/hlQFbJ5Vw==",
"license": "Apache-2.0 OR MIT",
"dependencies": {
"@libp2p/interface": "^2.10.5",
"@libp2p/interface": "^2.11.0",
"@noble/curves": "^1.9.1",
"@noble/hashes": "^1.8.0",
"multiformats": "^13.3.6",
@@ -2697,9 +2697,9 @@
}
},
"node_modules/@libp2p/interface": {
"version": "2.10.5",
"resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-2.10.5.tgz",
"integrity": "sha512-Z52n04Mph/myGdwyExbFi5S/HqrmZ9JOmfLc2v4r2Cik3GRdw98vrGH19PFvvwjLwAjaqsweCtlGaBzAz09YDw==",
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-2.11.0.tgz",
"integrity": "sha512-0MUFKoXWHTQW3oWIgSHApmYMUKWO/Y02+7Hpyp+n3z+geD4Xo2Rku2gYWmxcq+Pyjkz6Q9YjDWz3Yb2SoV2E8Q==",
"license": "Apache-2.0 OR MIT",
"dependencies": {
"@multiformats/dns": "^1.0.6",
@@ -2713,24 +2713,24 @@
}
},
"node_modules/@libp2p/interface-internal": {
"version": "2.3.18",
"resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-2.3.18.tgz",
"integrity": "sha512-tnZ20IFASXLbDc2JxeUPZNIXDuN5Ge7be6BU458WLvmquf93NlSqZkWs6xFdi+0yXUrw7GGTgzIP5v+1LnDUmA==",
"version": "2.3.19",
"resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-2.3.19.tgz",
"integrity": "sha512-v335EB0i5CaNF+0SqT01CTBp0VyjJizpy46KprcshFFjX16UQ8+/QzoTZqmot9WiAmAzwR0b87oKmlAE9cpxzQ==",
"license": "Apache-2.0 OR MIT",
"dependencies": {
"@libp2p/interface": "^2.10.5",
"@libp2p/peer-collections": "^6.0.34",
"@libp2p/interface": "^2.11.0",
"@libp2p/peer-collections": "^6.0.35",
"@multiformats/multiaddr": "^12.4.4",
"progress-events": "^1.0.1"
}
},
"node_modules/@libp2p/logger": {
"version": "5.1.21",
"resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-5.1.21.tgz",
"integrity": "sha512-V1TWlZM5BuKkiGQ7En4qOnseVP82JwDIpIfNjceUZz1ArL32A5HXJjLQnJchkZ3VW8PVciJzUos/vP6slhPY6Q==",
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-5.2.0.tgz",
"integrity": "sha512-OEFS529CnIKfbWEHmuCNESw9q0D0hL8cQ8klQfjIVPur15RcgAEgc1buQ7Y6l0B6tCYg120bp55+e9tGvn8c0g==",
"license": "Apache-2.0 OR MIT",
"dependencies": {
"@libp2p/interface": "^2.10.5",
"@libp2p/interface": "^2.11.0",
"@multiformats/multiaddr": "^12.4.4",
"interface-datastore": "^8.3.1",
"multiformats": "^13.3.6",
@@ -2754,12 +2754,12 @@
}
},
"node_modules/@libp2p/multistream-select": {
"version": "6.0.28",
"resolved": "https://registry.npmjs.org/@libp2p/multistream-select/-/multistream-select-6.0.28.tgz",
"integrity": "sha512-ILu65FAX2Hak7x40DXb0gYptF6BmlGGW2kNgGeKIcNeseuvsAkBPO8k0CHwr8MU5mnHamTiweLJh5jD0iVZJ1A==",
"version": "6.0.29",
"resolved": "https://registry.npmjs.org/@libp2p/multistream-select/-/multistream-select-6.0.29.tgz",
"integrity": "sha512-SWQbPcABOIpznEY7+vAp0Y3HNrE2PlaVY4EywN0lUZ7zvTv9VnAb7av3/gMvfaLI+YrOvhCr1mZ9qbSB93k4kA==",
"license": "Apache-2.0 OR MIT",
"dependencies": {
"@libp2p/interface": "^2.10.5",
"@libp2p/interface": "^2.11.0",
"it-length-prefixed": "^10.0.1",
"it-length-prefixed-stream": "^2.0.2",
"it-stream-types": "^2.0.2",
@@ -2825,39 +2825,39 @@
}
},
"node_modules/@libp2p/peer-collections": {
"version": "6.0.34",
"resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-6.0.34.tgz",
"integrity": "sha512-rw8gDGhou4sF6W6i9ntmRARFePX19Dw9MMVpZHr6Kx9q2kvBJq91IXUzsXP06roexEOu1CUlZwxtUAqOBy+Eww==",
"version": "6.0.35",
"resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-6.0.35.tgz",
"integrity": "sha512-QiloK3T7DXW7R2cpL38dBnALCHf5pMzs/TyFzlEK33WezA2YFVoj7CtOJKqbn29bmV9uspWOxMgfmLUXf8ALvA==",
"license": "Apache-2.0 OR MIT",
"dependencies": {
"@libp2p/interface": "^2.10.5",
"@libp2p/peer-id": "^5.1.8",
"@libp2p/utils": "^6.7.1",
"@libp2p/interface": "^2.11.0",
"@libp2p/peer-id": "^5.1.9",
"@libp2p/utils": "^6.7.2",
"multiformats": "^13.3.6"
}
},
"node_modules/@libp2p/peer-id": {
"version": "5.1.8",
"resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-5.1.8.tgz",
"integrity": "sha512-pGaM4BwjnXdGtAtd84L4/wuABpsnFYE+AQ+h3GxNFme0IsTaTVKWd1jBBE5YFeKHBHGUOhF3TlHsdjFfjQA7TA==",
"version": "5.1.9",
"resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-5.1.9.tgz",
"integrity": "sha512-cVDp7lX187Epmi/zr0Qq2RsEMmueswP9eIxYSFoMcHL/qcvRFhsxOfUGB8361E26s2WJvC9sXZ0oJS9XVueJhQ==",
"license": "Apache-2.0 OR MIT",
"dependencies": {
"@libp2p/crypto": "^5.1.7",
"@libp2p/interface": "^2.10.5",
"@libp2p/crypto": "^5.1.8",
"@libp2p/interface": "^2.11.0",
"multiformats": "^13.3.6",
"uint8arrays": "^5.1.0"
}
},
"node_modules/@libp2p/peer-record": {
"version": "8.0.34",
"resolved": "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-8.0.34.tgz",
"integrity": "sha512-GqvRBpvclscoKuF0JUfLyZTv+BwzICBBe50LFiAKio8LijZMBr43b+AcEaSEwFWDwlWmaKU73q8EQLrCb/e67Q==",
"version": "8.0.35",
"resolved": "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-8.0.35.tgz",
"integrity": "sha512-0818zvjKbucq5XBnusG8oSWxJ992rVry/2qlfcn/nyK/uDrZ12tjDYHNMCoOWTNeFvFUVkMg9pRkvXvTNp6Yiw==",
"license": "Apache-2.0 OR MIT",
"dependencies": {
"@libp2p/crypto": "^5.1.7",
"@libp2p/interface": "^2.10.5",
"@libp2p/peer-id": "^5.1.8",
"@libp2p/utils": "^6.7.1",
"@libp2p/crypto": "^5.1.8",
"@libp2p/interface": "^2.11.0",
"@libp2p/peer-id": "^5.1.9",
"@libp2p/utils": "^6.7.2",
"@multiformats/multiaddr": "^12.4.4",
"multiformats": "^13.3.6",
"protons-runtime": "^5.5.0",
@@ -2867,16 +2867,16 @@
}
},
"node_modules/@libp2p/peer-store": {
"version": "11.2.6",
"resolved": "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-11.2.6.tgz",
"integrity": "sha512-3Lc982/7drqlXa51s9l1/DFHD48zzIjMMYajxFM2KbobyStH+lztYnFc3kNGB9sZijULaW1480PvbTMm9WaJ0g==",
"version": "11.2.7",
"resolved": "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-11.2.7.tgz",
"integrity": "sha512-dwTM+0i7mAgAnZvMHghgGcFoWPGaTbKx2nBueMd2Yg38mCs9WeambmR6gQdjwvYpybvNgFDAA+XesCKCotuczg==",
"license": "Apache-2.0 OR MIT",
"dependencies": {
"@libp2p/crypto": "^5.1.7",
"@libp2p/interface": "^2.10.5",
"@libp2p/peer-collections": "^6.0.34",
"@libp2p/peer-id": "^5.1.8",
"@libp2p/peer-record": "^8.0.34",
"@libp2p/crypto": "^5.1.8",
"@libp2p/interface": "^2.11.0",
"@libp2p/peer-collections": "^6.0.35",
"@libp2p/peer-id": "^5.1.9",
"@libp2p/peer-record": "^8.0.35",
"@multiformats/multiaddr": "^12.4.4",
"interface-datastore": "^8.3.1",
"it-all": "^3.0.8",
@@ -2904,16 +2904,16 @@
}
},
"node_modules/@libp2p/utils": {
"version": "6.7.1",
"resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-6.7.1.tgz",
"integrity": "sha512-x3WImvw4unmx1ZeAedj8AkRe4UImUlkw0ZItYAiKiekElMNUXwv+Yt48dI/LmB38JIof8sng29XvUeCVU3F6OA==",
"version": "6.7.2",
"resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-6.7.2.tgz",
"integrity": "sha512-yglVPcYErb4al3MMTdedVLLsdUvr5KaqrrxohxTl/FXMFBvBs0o3w8lo29nfnTUpnNSHFhWZ9at0ZGNnpT/C/w==",
"license": "Apache-2.0 OR MIT",
"dependencies": {
"@chainsafe/is-ip": "^2.1.0",
"@chainsafe/netmask": "^2.0.0",
"@libp2p/crypto": "^5.1.7",
"@libp2p/interface": "^2.10.5",
"@libp2p/logger": "^5.1.21",
"@libp2p/crypto": "^5.1.8",
"@libp2p/interface": "^2.11.0",
"@libp2p/logger": "^5.2.0",
"@multiformats/multiaddr": "^12.4.4",
"@sindresorhus/fnv1a": "^3.1.0",
"any-signal": "^4.1.1",
@@ -7990,22 +7990,22 @@
}
},
"node_modules/libp2p": {
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/libp2p/-/libp2p-2.9.0.tgz",
"integrity": "sha512-gzRnhLY+k9KjYifWQCYbdEfmWqCFdM0TZ5Q7qqdY13sAUKXixK0MF5+Z9LMrm5ELGDPWX7pRVLGK8BOSv5/v3Q==",
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/libp2p/-/libp2p-2.10.0.tgz",
"integrity": "sha512-tgDz7YuGg1XX7UfxebCUii+IGsly/8V0ZRZdFJSDySY2i3UuqpCTsEbRApH3cBKFhcAf00nx9xj8GL9zfo+XWw==",
"license": "Apache-2.0 OR MIT",
"dependencies": {
"@chainsafe/is-ip": "^2.1.0",
"@chainsafe/netmask": "^2.0.0",
"@libp2p/crypto": "^5.1.7",
"@libp2p/interface": "^2.10.5",
"@libp2p/interface-internal": "^2.3.18",
"@libp2p/logger": "^5.1.21",
"@libp2p/multistream-select": "^6.0.28",
"@libp2p/peer-collections": "^6.0.34",
"@libp2p/peer-id": "^5.1.8",
"@libp2p/peer-store": "^11.2.6",
"@libp2p/utils": "^6.7.1",
"@libp2p/crypto": "^5.1.8",
"@libp2p/interface": "^2.11.0",
"@libp2p/interface-internal": "^2.3.19",
"@libp2p/logger": "^5.2.0",
"@libp2p/multistream-select": "^6.0.29",
"@libp2p/peer-collections": "^6.0.35",
"@libp2p/peer-id": "^5.1.9",
"@libp2p/peer-store": "^11.2.7",
"@libp2p/utils": "^6.7.2",
"@multiformats/dns": "^1.0.6",
"@multiformats/multiaddr": "^12.4.4",
"@multiformats/multiaddr-matcher": "^2.0.0",
@@ -10661,12 +10661,12 @@
}
},
"node_modules/weald/node_modules/ms": {
"version": "3.0.0-canary.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-3.0.0-canary.1.tgz",
"integrity": "sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g==",
"version": "3.0.0-canary.202508252038",
"resolved": "https://registry.npmjs.org/ms/-/ms-3.0.0-canary.202508252038.tgz",
"integrity": "sha512-tX5/UFOaz3ebD/EFEghYRZOR+zHXA2jQaooMrO8oJv6j1xxAMTz6y7A/B/kM5TF1xdDYl/LEGx0KBoFULds37A==",
"license": "MIT",
"engines": {
"node": ">=12.13"
"node": ">=18"
}
},
"node_modules/weald/node_modules/supports-color": {
@@ -12619,9 +12619,9 @@
},
"dependencies": {
"ansi-regex": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
"integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz",
"integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==",
"dev": true
},
"ansi-styles": {
@@ -12732,11 +12732,11 @@
}
},
"@libp2p/crypto": {
"version": "5.1.7",
"resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-5.1.7.tgz",
"integrity": "sha512-7DO0piidLEKfCuNfS420BlHG0e2tH7W/zugdsPSiC/1Apa/s1B1dBkaIEgfDkGjrRP4S/8Or86Rtq7zXeEu67g==",
"version": "5.1.8",
"resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-5.1.8.tgz",
"integrity": "sha512-zkfWd2x12E0NbSRU52Wb0A5I9v5a1uLgCauR8uuTqnC21OVznXUGkMg4A2Xoj90M98lReDHo+Khc/hlQFbJ5Vw==",
"requires": {
"@libp2p/interface": "^2.10.5",
"@libp2p/interface": "^2.11.0",
"@noble/curves": "^1.9.1",
"@noble/hashes": "^1.8.0",
"multiformats": "^13.3.6",
@@ -12768,9 +12768,9 @@
}
},
"@libp2p/interface": {
"version": "2.10.5",
"resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-2.10.5.tgz",
"integrity": "sha512-Z52n04Mph/myGdwyExbFi5S/HqrmZ9JOmfLc2v4r2Cik3GRdw98vrGH19PFvvwjLwAjaqsweCtlGaBzAz09YDw==",
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-2.11.0.tgz",
"integrity": "sha512-0MUFKoXWHTQW3oWIgSHApmYMUKWO/Y02+7Hpyp+n3z+geD4Xo2Rku2gYWmxcq+Pyjkz6Q9YjDWz3Yb2SoV2E8Q==",
"requires": {
"@multiformats/dns": "^1.0.6",
"@multiformats/multiaddr": "^12.4.4",
@@ -12783,22 +12783,22 @@
}
},
"@libp2p/interface-internal": {
"version": "2.3.18",
"resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-2.3.18.tgz",
"integrity": "sha512-tnZ20IFASXLbDc2JxeUPZNIXDuN5Ge7be6BU458WLvmquf93NlSqZkWs6xFdi+0yXUrw7GGTgzIP5v+1LnDUmA==",
"version": "2.3.19",
"resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-2.3.19.tgz",
"integrity": "sha512-v335EB0i5CaNF+0SqT01CTBp0VyjJizpy46KprcshFFjX16UQ8+/QzoTZqmot9WiAmAzwR0b87oKmlAE9cpxzQ==",
"requires": {
"@libp2p/interface": "^2.10.5",
"@libp2p/peer-collections": "^6.0.34",
"@libp2p/interface": "^2.11.0",
"@libp2p/peer-collections": "^6.0.35",
"@multiformats/multiaddr": "^12.4.4",
"progress-events": "^1.0.1"
}
},
"@libp2p/logger": {
"version": "5.1.21",
"resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-5.1.21.tgz",
"integrity": "sha512-V1TWlZM5BuKkiGQ7En4qOnseVP82JwDIpIfNjceUZz1ArL32A5HXJjLQnJchkZ3VW8PVciJzUos/vP6slhPY6Q==",
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-5.2.0.tgz",
"integrity": "sha512-OEFS529CnIKfbWEHmuCNESw9q0D0hL8cQ8klQfjIVPur15RcgAEgc1buQ7Y6l0B6tCYg120bp55+e9tGvn8c0g==",
"requires": {
"@libp2p/interface": "^2.10.5",
"@libp2p/interface": "^2.11.0",
"@multiformats/multiaddr": "^12.4.4",
"interface-datastore": "^8.3.1",
"multiformats": "^13.3.6",
@@ -12821,11 +12821,11 @@
}
},
"@libp2p/multistream-select": {
"version": "6.0.28",
"resolved": "https://registry.npmjs.org/@libp2p/multistream-select/-/multistream-select-6.0.28.tgz",
"integrity": "sha512-ILu65FAX2Hak7x40DXb0gYptF6BmlGGW2kNgGeKIcNeseuvsAkBPO8k0CHwr8MU5mnHamTiweLJh5jD0iVZJ1A==",
"version": "6.0.29",
"resolved": "https://registry.npmjs.org/@libp2p/multistream-select/-/multistream-select-6.0.29.tgz",
"integrity": "sha512-SWQbPcABOIpznEY7+vAp0Y3HNrE2PlaVY4EywN0lUZ7zvTv9VnAb7av3/gMvfaLI+YrOvhCr1mZ9qbSB93k4kA==",
"requires": {
"@libp2p/interface": "^2.10.5",
"@libp2p/interface": "^2.11.0",
"it-length-prefixed": "^10.0.1",
"it-length-prefixed-stream": "^2.0.2",
"it-stream-types": "^2.0.2",
@@ -12885,36 +12885,36 @@
}
},
"@libp2p/peer-collections": {
"version": "6.0.34",
"resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-6.0.34.tgz",
"integrity": "sha512-rw8gDGhou4sF6W6i9ntmRARFePX19Dw9MMVpZHr6Kx9q2kvBJq91IXUzsXP06roexEOu1CUlZwxtUAqOBy+Eww==",
"version": "6.0.35",
"resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-6.0.35.tgz",
"integrity": "sha512-QiloK3T7DXW7R2cpL38dBnALCHf5pMzs/TyFzlEK33WezA2YFVoj7CtOJKqbn29bmV9uspWOxMgfmLUXf8ALvA==",
"requires": {
"@libp2p/interface": "^2.10.5",
"@libp2p/peer-id": "^5.1.8",
"@libp2p/utils": "^6.7.1",
"@libp2p/interface": "^2.11.0",
"@libp2p/peer-id": "^5.1.9",
"@libp2p/utils": "^6.7.2",
"multiformats": "^13.3.6"
}
},
"@libp2p/peer-id": {
"version": "5.1.8",
"resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-5.1.8.tgz",
"integrity": "sha512-pGaM4BwjnXdGtAtd84L4/wuABpsnFYE+AQ+h3GxNFme0IsTaTVKWd1jBBE5YFeKHBHGUOhF3TlHsdjFfjQA7TA==",
"version": "5.1.9",
"resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-5.1.9.tgz",
"integrity": "sha512-cVDp7lX187Epmi/zr0Qq2RsEMmueswP9eIxYSFoMcHL/qcvRFhsxOfUGB8361E26s2WJvC9sXZ0oJS9XVueJhQ==",
"requires": {
"@libp2p/crypto": "^5.1.7",
"@libp2p/interface": "^2.10.5",
"@libp2p/crypto": "^5.1.8",
"@libp2p/interface": "^2.11.0",
"multiformats": "^13.3.6",
"uint8arrays": "^5.1.0"
}
},
"@libp2p/peer-record": {
"version": "8.0.34",
"resolved": "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-8.0.34.tgz",
"integrity": "sha512-GqvRBpvclscoKuF0JUfLyZTv+BwzICBBe50LFiAKio8LijZMBr43b+AcEaSEwFWDwlWmaKU73q8EQLrCb/e67Q==",
"version": "8.0.35",
"resolved": "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-8.0.35.tgz",
"integrity": "sha512-0818zvjKbucq5XBnusG8oSWxJ992rVry/2qlfcn/nyK/uDrZ12tjDYHNMCoOWTNeFvFUVkMg9pRkvXvTNp6Yiw==",
"requires": {
"@libp2p/crypto": "^5.1.7",
"@libp2p/interface": "^2.10.5",
"@libp2p/peer-id": "^5.1.8",
"@libp2p/utils": "^6.7.1",
"@libp2p/crypto": "^5.1.8",
"@libp2p/interface": "^2.11.0",
"@libp2p/peer-id": "^5.1.9",
"@libp2p/utils": "^6.7.2",
"@multiformats/multiaddr": "^12.4.4",
"multiformats": "^13.3.6",
"protons-runtime": "^5.5.0",
@@ -12924,15 +12924,15 @@
}
},
"@libp2p/peer-store": {
"version": "11.2.6",
"resolved": "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-11.2.6.tgz",
"integrity": "sha512-3Lc982/7drqlXa51s9l1/DFHD48zzIjMMYajxFM2KbobyStH+lztYnFc3kNGB9sZijULaW1480PvbTMm9WaJ0g==",
"version": "11.2.7",
"resolved": "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-11.2.7.tgz",
"integrity": "sha512-dwTM+0i7mAgAnZvMHghgGcFoWPGaTbKx2nBueMd2Yg38mCs9WeambmR6gQdjwvYpybvNgFDAA+XesCKCotuczg==",
"requires": {
"@libp2p/crypto": "^5.1.7",
"@libp2p/interface": "^2.10.5",
"@libp2p/peer-collections": "^6.0.34",
"@libp2p/peer-id": "^5.1.8",
"@libp2p/peer-record": "^8.0.34",
"@libp2p/crypto": "^5.1.8",
"@libp2p/interface": "^2.11.0",
"@libp2p/peer-collections": "^6.0.35",
"@libp2p/peer-id": "^5.1.9",
"@libp2p/peer-record": "^8.0.35",
"@multiformats/multiaddr": "^12.4.4",
"interface-datastore": "^8.3.1",
"it-all": "^3.0.8",
@@ -12959,15 +12959,15 @@
}
},
"@libp2p/utils": {
"version": "6.7.1",
"resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-6.7.1.tgz",
"integrity": "sha512-x3WImvw4unmx1ZeAedj8AkRe4UImUlkw0ZItYAiKiekElMNUXwv+Yt48dI/LmB38JIof8sng29XvUeCVU3F6OA==",
"version": "6.7.2",
"resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-6.7.2.tgz",
"integrity": "sha512-yglVPcYErb4al3MMTdedVLLsdUvr5KaqrrxohxTl/FXMFBvBs0o3w8lo29nfnTUpnNSHFhWZ9at0ZGNnpT/C/w==",
"requires": {
"@chainsafe/is-ip": "^2.1.0",
"@chainsafe/netmask": "^2.0.0",
"@libp2p/crypto": "^5.1.7",
"@libp2p/interface": "^2.10.5",
"@libp2p/logger": "^5.1.21",
"@libp2p/crypto": "^5.1.8",
"@libp2p/interface": "^2.11.0",
"@libp2p/logger": "^5.2.0",
"@multiformats/multiaddr": "^12.4.4",
"@sindresorhus/fnv1a": "^3.1.0",
"any-signal": "^4.1.1",
@@ -16615,21 +16615,21 @@
}
},
"libp2p": {
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/libp2p/-/libp2p-2.9.0.tgz",
"integrity": "sha512-gzRnhLY+k9KjYifWQCYbdEfmWqCFdM0TZ5Q7qqdY13sAUKXixK0MF5+Z9LMrm5ELGDPWX7pRVLGK8BOSv5/v3Q==",
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/libp2p/-/libp2p-2.10.0.tgz",
"integrity": "sha512-tgDz7YuGg1XX7UfxebCUii+IGsly/8V0ZRZdFJSDySY2i3UuqpCTsEbRApH3cBKFhcAf00nx9xj8GL9zfo+XWw==",
"requires": {
"@chainsafe/is-ip": "^2.1.0",
"@chainsafe/netmask": "^2.0.0",
"@libp2p/crypto": "^5.1.7",
"@libp2p/interface": "^2.10.5",
"@libp2p/interface-internal": "^2.3.18",
"@libp2p/logger": "^5.1.21",
"@libp2p/multistream-select": "^6.0.28",
"@libp2p/peer-collections": "^6.0.34",
"@libp2p/peer-id": "^5.1.8",
"@libp2p/peer-store": "^11.2.6",
"@libp2p/utils": "^6.7.1",
"@libp2p/crypto": "^5.1.8",
"@libp2p/interface": "^2.11.0",
"@libp2p/interface-internal": "^2.3.19",
"@libp2p/logger": "^5.2.0",
"@libp2p/multistream-select": "^6.0.29",
"@libp2p/peer-collections": "^6.0.35",
"@libp2p/peer-id": "^5.1.9",
"@libp2p/peer-store": "^11.2.7",
"@libp2p/utils": "^6.7.2",
"@multiformats/dns": "^1.0.6",
"@multiformats/multiaddr": "^12.4.4",
"@multiformats/multiaddr-matcher": "^2.0.0",
@@ -18454,9 +18454,9 @@
},
"dependencies": {
"ms": {
"version": "3.0.0-canary.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-3.0.0-canary.1.tgz",
"integrity": "sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g=="
"version": "3.0.0-canary.202508252038",
"resolved": "https://registry.npmjs.org/ms/-/ms-3.0.0-canary.202508252038.tgz",
"integrity": "sha512-tX5/UFOaz3ebD/EFEghYRZOR+zHXA2jQaooMrO8oJv6j1xxAMTz6y7A/B/kM5TF1xdDYl/LEGx0KBoFULds37A=="
},
"supports-color": {
"version": "9.4.0",

View File

@@ -1,6 +1,6 @@
{
"name": "obsidian-livesync",
"version": "0.25.9",
"version": "0.25.10",
"description": "Reflect your vault changes to some other devices immediately. Please make sure to disable other synchronize solutions to avoid content corruption or duplication.",
"main": "main.js",
"type": "module",

View File

@@ -1,3 +1,22 @@
## 0.25.10
26th August, 2025
### New experimental feature
- We can perform Garbage Collection (Beta2) without rebuilding the entire database, and also fetch the database.
- Note that this feature is very experimental and should be used with caution.
- This feature requires disabling `Fetch chunks on demand`.
### Fixed
- Resetting the bucket now properly clears all uploaded files.
### Refactored
- Some files have been moved to better reflect their purpose and improve maintainability.
- The extensive LiveSyncLocalDB has been split into separate files for each role.
## 0.25.9
20th August, 2025
@@ -67,57 +86,6 @@ In next version, insecure chunk detection will be implemented.
- Files prefixed `bgWorker.` are now also controls these worker threads. (I know what you want to say... I will rename them).
- Removed unused code.
## ~~0.25.5~~ 0.25.6
(0.25.5 has been withdrawn due to a bug in the `Fetch chunks on demand` feature).
9th August, 2025
### Fixed
- Storage scanning no longer occurs when `Suspend file watching` is enabled (including boot-sequence).
- This change improves safety when troubleshooting or fetching the remote database.
- `Fetch chunks on demand` is now working again (if you installed 0.25.5, other versions are not affected).
### Improved
- Saving notes and files now consumes less memory.
- Data is no longer fully buffered in memory and written at once; instead, it is now written in each over-2MB increments.
- Chunk caching is now more efficient.
- Chunks are now managed solely by their count (still maintained as LRU). If memory usage becomes excessive, they will be automatically released by the system-runtime.
- Reverse-indexing is also no longer used. It is performed as scanning caches and act also as a WeakRef thinning.
- Both of them (may) are effective for #692, #680, and some more.
### Changed
- `Incubate Chunks in Document` (also known as `Eden`) is now fully sunset.
- Existing chunks can still be read, but new ones will no longer be created.
- The `Compute revisions for chunks` setting has also been removed.
- This feature is now always enabled and is no longer configurable (restoring the original behaviour).
- As mentioned, `Memory cache size (by total characters)` has been removed.
- The `Memory cache size (by total items)` setting is now the only option available (but it has 10x ratio compared to the previous version).
### Refactored
- A significant refactoring of the core codebase is underway.
- This is part of our ongoing efforts to improve code maintainability, readability, and to unify interfaces.
- Previously, complex files posed a risk due to a low bus factor. Fortunately, as our devices have become faster and more capable, we can now write code that is clearer and more maintainable (And not so much costs on performance).
- Hashing functions have been refactored into the `HashManager` class and its derived classes.
- Chunk splitting functions have been refactored into the `ContentSplitterCore` class and its derived classes.
- Change tracking functions have been refactored into the `ChangeManager` class.
- Chunk read/write functions have been refactored into the `ChunkManager` class.
- Fetching chunks on demand is now handled separately from the `ChunkManager` and chunk reading functions. Chunks are queued by the `ChunkManager` and then processed by the `ChunkFetcher`, simplifying the process and reducing unnecessary complexity.
- Then, local database access via `LiveSyncLocalDB` has been refactored to use the new classes.
- References to external sources from `commonlib` have been corrected.
- Type definitions in `types.ts` have been refined.
- Unit tests are being added incrementally.
- I am using `Deno` for testing, to simplify testing and coverage reporting.
- While this is not identical to the Obsidian environment, `jest` may also have limitations. It is certainly better than having no tests.
- In other words, recent manual scenario testing has highlighted some shortcomings.
- `pouchdb-test`, used for testing PouchDB with Deno, has been added, utilising the `memory` adapter.
Side note: Although class-oriented programming is sometimes considered an outdated style, However, I have come to re-evaluate it as valuable from the perspectives of maintainability and readability.
## 0.25.0
19th July, 2025 (beta1 in 0.25.0-beta1, 13th July, 2025)

View File

@@ -11,6 +11,57 @@ As a result, this is the first time in a while that forward compatibility has be
---
## ~~0.25.5~~ 0.25.6
(0.25.5 has been withdrawn due to a bug in the `Fetch chunks on demand` feature).
9th August, 2025
### Fixed
- Storage scanning no longer occurs when `Suspend file watching` is enabled (including boot-sequence).
- This change improves safety when troubleshooting or fetching the remote database.
- `Fetch chunks on demand` is now working again (if you installed 0.25.5, other versions are not affected).
### Improved
- Saving notes and files now consumes less memory.
- Data is no longer fully buffered in memory and written at once; instead, it is now written in each over-2MB increments.
- Chunk caching is now more efficient.
- Chunks are now managed solely by their count (still maintained as LRU). If memory usage becomes excessive, they will be automatically released by the system-runtime.
- Reverse-indexing is also no longer used. It is performed as scanning caches and act also as a WeakRef thinning.
- Both of them (may) are effective for #692, #680, and some more.
### Changed
- `Incubate Chunks in Document` (also known as `Eden`) is now fully sunset.
- Existing chunks can still be read, but new ones will no longer be created.
- The `Compute revisions for chunks` setting has also been removed.
- This feature is now always enabled and is no longer configurable (restoring the original behaviour).
- As mentioned, `Memory cache size (by total characters)` has been removed.
- The `Memory cache size (by total items)` setting is now the only option available (but it has 10x ratio compared to the previous version).
### Refactored
- A significant refactoring of the core codebase is underway.
- This is part of our ongoing efforts to improve code maintainability, readability, and to unify interfaces.
- Previously, complex files posed a risk due to a low bus factor. Fortunately, as our devices have become faster and more capable, we can now write code that is clearer and more maintainable (And not so much costs on performance).
- Hashing functions have been refactored into the `HashManager` class and its derived classes.
- Chunk splitting functions have been refactored into the `ContentSplitterCore` class and its derived classes.
- Change tracking functions have been refactored into the `ChangeManager` class.
- Chunk read/write functions have been refactored into the `ChunkManager` class.
- Fetching chunks on demand is now handled separately from the `ChunkManager` and chunk reading functions. Chunks are queued by the `ChunkManager` and then processed by the `ChunkFetcher`, simplifying the process and reducing unnecessary complexity.
- Then, local database access via `LiveSyncLocalDB` has been refactored to use the new classes.
- References to external sources from `commonlib` have been corrected.
- Type definitions in `types.ts` have been refined.
- Unit tests are being added incrementally.
- I am using `Deno` for testing, to simplify testing and coverage reporting.
- While this is not identical to the Obsidian environment, `jest` may also have limitations. It is certainly better than having no tests.
- In other words, recent manual scenario testing has highlighted some shortcomings.
- `pouchdb-test`, used for testing PouchDB with Deno, has been added, utilising the `memory` adapter.
Side note: Although class-oriented programming is sometimes considered an outdated style, However, I have come to re-evaluate it as valuable from the perspectives of maintainability and readability.
## 0.25.4
29th July, 2025