Compare commits

...

3 Commits

Author SHA1 Message Date
vorotamoroz
3e657b38a9 bump 2024-12-12 11:12:04 +00:00
vorotamoroz
21861d8c51 ## 0.24.4
### Fixed

-   Fixed so many inefficient and buggy modules inherited from the past.

### Improved

-   Tasks are now executed in an efficient asynchronous library.
-   On-demand chunk fetching is now more efficient and keeps the interval between requests.
    -   This will reduce the load on the server and the network.
    -   And, safe for the Cloudant.
2024-12-12 11:10:50 +00:00
vorotamoroz
3bb4aba395 Update dependencies 2024-12-12 11:10:29 +00:00
7 changed files with 53 additions and 47 deletions

View File

@@ -1,7 +1,7 @@
{
"id": "obsidian-livesync",
"name": "Self-hosted LiveSync",
"version": "0.24.3",
"version": "0.24.4",
"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",

30
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "obsidian-livesync",
"version": "0.24.3",
"version": "0.24.4",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "obsidian-livesync",
"version": "0.24.3",
"version": "0.24.4",
"license": "MIT",
"dependencies": {
"@aws-sdk/client-s3": "^3.645.0",
@@ -18,7 +18,7 @@
"fflate": "^0.8.2",
"idb": "^8.0.0",
"minimatch": "^10.0.1",
"octagonal-wheels": "^0.1.15",
"octagonal-wheels": "^0.1.19",
"svelte-check": "^4.0.4",
"xxhash-wasm": "0.4.2",
"xxhash-wasm-102": "npm:xxhash-wasm@^1.0.2"
@@ -4944,9 +4944,9 @@
"dev": true
},
"node_modules/nanoid": {
"version": "3.3.7",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
"version": "3.3.8",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
"integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
"dev": true,
"funding": [
{
@@ -5105,9 +5105,9 @@
}
},
"node_modules/octagonal-wheels": {
"version": "0.1.15",
"resolved": "https://registry.npmjs.org/octagonal-wheels/-/octagonal-wheels-0.1.15.tgz",
"integrity": "sha512-rl6y/3/+tqeiDmBmW2RgYQh85D4xVHQIGg14DyC4/sUnO6UDLuVUULIO+00E2jfA/o4coKnPOPEB8Tt6BE9SEA==",
"version": "0.1.19",
"resolved": "https://registry.npmjs.org/octagonal-wheels/-/octagonal-wheels-0.1.19.tgz",
"integrity": "sha512-typj8QfDuiiZd4x7OB619XfLP3VYEcwr0hQdS4Tt7nLiebWfw7qsQdBBhLVsSDNd1fEtgOBdE6S02NBcuFl9xw==",
"dependencies": {
"idb": "^8.0.0",
"xxhash-wasm": "0.4.2",
@@ -10216,9 +10216,9 @@
"dev": true
},
"nanoid": {
"version": "3.3.7",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
"version": "3.3.8",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
"integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
"dev": true
},
"natural-compare": {
@@ -10316,9 +10316,9 @@
}
},
"octagonal-wheels": {
"version": "0.1.15",
"resolved": "https://registry.npmjs.org/octagonal-wheels/-/octagonal-wheels-0.1.15.tgz",
"integrity": "sha512-rl6y/3/+tqeiDmBmW2RgYQh85D4xVHQIGg14DyC4/sUnO6UDLuVUULIO+00E2jfA/o4coKnPOPEB8Tt6BE9SEA==",
"version": "0.1.19",
"resolved": "https://registry.npmjs.org/octagonal-wheels/-/octagonal-wheels-0.1.19.tgz",
"integrity": "sha512-typj8QfDuiiZd4x7OB619XfLP3VYEcwr0hQdS4Tt7nLiebWfw7qsQdBBhLVsSDNd1fEtgOBdE6S02NBcuFl9xw==",
"requires": {
"idb": "^8.0.0",
"xxhash-wasm": "0.4.2",

View File

@@ -1,6 +1,6 @@
{
"name": "obsidian-livesync",
"version": "0.24.3",
"version": "0.24.4",
"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",
@@ -72,7 +72,7 @@
"fflate": "^0.8.2",
"idb": "^8.0.0",
"minimatch": "^10.0.1",
"octagonal-wheels": "^0.1.15",
"octagonal-wheels": "^0.1.19",
"svelte-check": "^4.0.4",
"xxhash-wasm": "0.4.2",
"xxhash-wasm-102": "npm:xxhash-wasm@^1.0.2"

Submodule src/lib updated: 2e156a988b...b299a4255c

View File

@@ -13,15 +13,16 @@ import {
VER,
type EntryBody,
type EntryDoc,
type EntryLeaf,
type LoadedEntry,
type MetaEntry,
} from "../../lib/src/common/types";
import { QueueProcessor } from "octagonal-wheels/concurrency/processor";
import { getPath, isChunk, isValidPath, scheduleTask } from "../../common/utils";
import { sendValue } from "octagonal-wheels/messagepassing/signal";
import { isAnyNote } from "../../lib/src/common/utils";
import { EVENT_FILE_SAVED, eventHub } from "../../common/events";
import type { LiveSyncAbstractReplicator } from "../../lib/src/replication/LiveSyncAbstractReplicator";
import { globalSlipBoard } from "../../lib/src/bureau/bureau";
export class ModuleReplicator extends AbstractModule implements ICoreModule {
$everyOnloadAfterLoadSettings(): Promise<boolean> {
@@ -242,9 +243,7 @@ Or if you are sure know what had been happened, we can unlock the database from
const change = docs[0];
if (!change) return;
if (isChunk(change._id)) {
// SendSignal?
// this.parseIncomingChunk(change);
sendValue(`leaf-${change._id}`, change);
globalSlipBoard.submit("read-chunk", change._id, change as EntryLeaf);
return;
}
if (await this.core.$anyModuleParsedReplicationResultItem(change)) return;

View File

@@ -1,5 +1,4 @@
import { unique } from "octagonal-wheels/collection";
import { QueueProcessor } from "octagonal-wheels/concurrency/processor";
import { throttle } from "octagonal-wheels/function";
import { eventHub } from "../../common/events.ts";
import { BASE_IS_NEW, compareFileFreshness, EVEN, getPath, isValidPath, TARGET_IS_NEW } from "../../common/utils.ts";
@@ -19,7 +18,7 @@ import { isAnyNote } from "../../lib/src/common/utils.ts";
import { stripAllPrefixes } from "../../lib/src/string_and_binary/path.ts";
import { AbstractModule } from "../AbstractModule.ts";
import type { ICoreModule } from "../ModuleTypes.ts";
import { withConcurrency } from "octagonal-wheels/iterable/map";
export class ModuleInitializerFile extends AbstractModule implements ICoreModule {
async $$performFullScan(showingNotice?: boolean): Promise<void> {
this._log("Opening the key-value database", LOG_LEVEL_VERBOSE);
@@ -152,35 +151,30 @@ export class ModuleInitializerFile extends AbstractModule implements ICoreModule
if (!this.localDatabase.isReady) throw Error("Database is not ready!");
let success = 0;
let failed = 0;
const step = 10;
const processor = new QueueProcessor(
let total = 0;
for await (const result of withConcurrency(
objects,
async (e) => {
try {
await callback(e[0]);
success++;
// return
await callback(e);
return true;
} catch (ex) {
this._log(`Error while ${procedureName}`, LOG_LEVEL_NOTICE);
this._log(ex, LOG_LEVEL_VERBOSE);
failed++;
return false;
}
if ((success + failed) % step == 0) {
const msg = `${procedureName}: DONE:${success}, FAILED:${failed}, LAST:${processor._queue.length}`;
updateLog(procedureName, msg);
}
return;
},
{
batchSize: 1,
concurrentLimit: 10,
delay: 0,
suspended: true,
maintainDelay: false,
interval: 0,
},
objects
);
await processor.waitForAllDoneAndTerminate();
10
)) {
if (result) {
success++;
} else {
failed++;
}
total++;
const msg = `${procedureName}: DONE:${success}, FAILED:${failed}, LAST:${objects.length - total}`;
updateLog(procedureName, msg);
}
const msg = `${procedureName} All done: DONE:${success}, FAILED:${failed}`;
updateLog(procedureName, msg);
};

View File

@@ -14,6 +14,19 @@ Thank you, and I hope your troubles will be resolved!
---
## 0.24.4
### Fixed
- Fixed so many inefficient and buggy modules inherited from the past.
### Improved
- Tasks are now executed in an efficient asynchronous library.
- On-demand chunk fetching is now more efficient and keeps the interval between requests.
- This will reduce the load on the server and the network.
- And, safe for the Cloudant.
## 0.24.3
### Improved