From f996e056af7c8fe4ed0c17b104debfdf8271b7ef Mon Sep 17 00:00:00 2001 From: vorotamoroz Date: Sat, 9 Aug 2025 01:45:41 +0900 Subject: [PATCH] ### Fixed - Storage scanning no longer occurs when `Suspend file watching` is enabled (including boot-sequence). ### Improved - Saving notes and files now consumes less memory. - Chunk caching is now more efficient. - 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. - The `Compute revisions for chunks` setting has also been removed. - As mentioned, `Memory cache size (by total characters)` has been removed. ### Refactored - A significant refactoring of the core codebase is underway (please refer the release-note). --- package-lock.json | 836 +++++++++++++++--- package.json | 7 +- src/common/KeyValueDB.ts | 10 +- src/common/utils.ts | 3 +- .../CmdLocalDatabaseMainte.ts | 2 +- src/lib | 2 +- src/main.ts | 10 +- src/modules/core/ModuleDatabaseFileAccess.ts | 2 +- src/modules/core/ModuleRebuilder.ts | 4 +- src/modules/core/ModuleReplicator.ts | 8 +- .../essential/ModuleInitializerFile.ts | 20 +- .../ObsidianLiveSyncSettingTab.ts | 4 +- .../features/SettingDialogue/PaneAdvanced.ts | 2 +- .../features/SettingDialogue/PaneHatch.ts | 2 +- .../features/SettingDialogue/PanePatches.ts | 20 +- tsconfig.json | 2 +- 16 files changed, 760 insertions(+), 174 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1cc1055..c04d5d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,6 +32,7 @@ "@eslint/eslintrc": "^3.3.0", "@eslint/js": "^9.21.0", "@tsconfig/svelte": "^5.0.4", + "@types/deno": "^2.3.0", "@types/diff-match-patch": "^1.0.36", "@types/node": "^22.13.8", "@types/pouchdb": "^6.4.2", @@ -58,6 +59,7 @@ "pouchdb-adapter-http": "^9.0.0", "pouchdb-adapter-idb": "^9.0.0", "pouchdb-adapter-indexeddb": "^9.0.0", + "pouchdb-adapter-memory": "^9.0.0", "pouchdb-core": "^9.0.0", "pouchdb-errors": "^9.0.0", "pouchdb-find": "^9.0.0", @@ -4047,6 +4049,13 @@ "@types/ms": "*" } }, + "node_modules/@types/deno": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@types/deno/-/deno-2.3.0.tgz", + "integrity": "sha512-/4SyefQpKjwNKGkq9qG3Ln7MazfbWKvydyVFBnXzP5OQA4u1paoFtaOe1iHKycIWHHkhYag0lPxyheThV1ijzw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/diff-match-patch": { "version": "1.0.36", "resolved": "https://registry.npmjs.org/@types/diff-match-patch/-/diff-match-patch-1.0.36.tgz", @@ -4841,6 +4850,17 @@ "integrity": "sha512-fxqCblJiIPdSXIUrxI0PL+eJG49QdP9SQ70qtB65MVAoMr2rASlOyAbJFOylfB467F/f+5BCLJJq58RYi7mGfg==", "license": "Apache-2.0 OR MIT" }, + "node_modules/abstract-leveldown": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "~4.0.0" + } + }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -5398,6 +5418,13 @@ "node": ">= 6" } }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -5533,6 +5560,64 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/deferred-leveldown": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz", + "integrity": "sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==", + "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", + "dev": true, + "license": "MIT", + "dependencies": { + "abstract-leveldown": "~6.2.1", + "inherits": "^2.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deferred-leveldown/node_modules/abstract-leveldown": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", + "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", + "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "immediate": "^3.2.3", + "level-concat-iterator": "~2.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deferred-leveldown/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -5619,6 +5704,13 @@ "node": ">=6" } }, + "node_modules/double-ended-queue": { + "version": "2.1.0-0", + "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", + "integrity": "sha512-+BNfZ+deCo8hMNpDqDnvT+c0XpJ5cUa6mqYq89bho2Ifze4URTqRkcwR399hWoTrTkbZ/XJYDgP6rc7pRgffEQ==", + "dev": true, + "license": "MIT" + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -5647,6 +5739,19 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, "node_modules/es-abstract": { "version": "1.23.3", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", @@ -6634,6 +6739,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true, + "license": "MIT" + }, "node_modules/functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", @@ -6960,6 +7072,13 @@ "node": ">= 4" } }, + "node_modules/immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", + "dev": true, + "license": "MIT" + }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", @@ -7732,6 +7851,131 @@ "dev": true, "license": "MIT" }, + "node_modules/level-codec": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz", + "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==", + "deprecated": "Superseded by level-transcoder (https://github.com/Level/community#faq)", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/level-codec/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/level-concat-iterator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", + "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", + "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/level-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", + "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", + "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", + "dev": true, + "license": "MIT", + "dependencies": { + "errno": "~0.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/level-iterator-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz", + "integrity": "sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.4.0", + "xtend": "^4.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/level-iterator-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/level-supports": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", + "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "^4.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/levelup": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz", + "integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==", + "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", + "dev": true, + "license": "MIT", + "dependencies": { + "deferred-leveldown": "~5.3.0", + "level-errors": "~2.0.0", + "level-iterator-stream": "~4.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -7880,6 +8124,13 @@ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "license": "ISC" }, + "node_modules/ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", + "dev": true, + "license": "MIT" + }, "node_modules/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", @@ -7927,6 +8178,29 @@ "node": ">= 0.4" } }, + "node_modules/memdown": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==", + "deprecated": "Superseded by memory-level (https://github.com/Level/community#faq)", + "dev": true, + "license": "MIT", + "dependencies": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/memdown/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, "node_modules/merge-options": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", @@ -8737,16 +9011,6 @@ "pouchdb-utils": "9.0.0" } }, - "node_modules/pouchdb-abstract-mapreduce/node_modules/pouchdb-md5": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-9.0.0.tgz", - "integrity": "sha512-58xUYBvW3/s+aH0j4uOhhN8yCk0LQ254cxBzI/gbKA9PrfwHpe4zrr0L/ia5ml3A30oH1f8aTnuVMwWDkFcuww==", - "dev": true, - "dependencies": { - "pouchdb-binary-utils": "9.0.0", - "spark-md5": "3.0.2" - } - }, "node_modules/pouchdb-adapter-http": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/pouchdb-adapter-http/-/pouchdb-adapter-http-9.0.0.tgz", @@ -8787,14 +9051,36 @@ "pouchdb-utils": "9.0.0" } }, - "node_modules/pouchdb-adapter-indexeddb/node_modules/pouchdb-md5": { + "node_modules/pouchdb-adapter-leveldb-core": { "version": "9.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-9.0.0.tgz", - "integrity": "sha512-58xUYBvW3/s+aH0j4uOhhN8yCk0LQ254cxBzI/gbKA9PrfwHpe4zrr0L/ia5ml3A30oH1f8aTnuVMwWDkFcuww==", + "resolved": "https://registry.npmjs.org/pouchdb-adapter-leveldb-core/-/pouchdb-adapter-leveldb-core-9.0.0.tgz", + "integrity": "sha512-b3ZGPtVXyivGL5SK3AIDG7PrNsZdoDpGFkmTytDTtctkVhxOg71gnXXP+CrupENPqSNG/eGbKW4w+bbMpxy6aA==", "dev": true, + "license": "Apache-2.0", "dependencies": { + "double-ended-queue": "2.1.0-0", + "levelup": "4.4.0", + "pouchdb-adapter-utils": "9.0.0", "pouchdb-binary-utils": "9.0.0", - "spark-md5": "3.0.2" + "pouchdb-core": "9.0.0", + "pouchdb-errors": "9.0.0", + "pouchdb-json": "9.0.0", + "pouchdb-md5": "9.0.0", + "pouchdb-merge": "9.0.0", + "pouchdb-utils": "9.0.0", + "sublevel-pouchdb": "9.0.0", + "through2": "3.0.2" + } + }, + "node_modules/pouchdb-adapter-memory": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-adapter-memory/-/pouchdb-adapter-memory-9.0.0.tgz", + "integrity": "sha512-XbCwJ5f5U9dGdkiDikzYjTebdPHuA6Ghylx1Pq0lDe4y6l8R9xhjDSUy56pJ8G2F4Z+8QdB5FBY9EQoFlFSXWQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "memdown": "1.4.1", + "pouchdb-adapter-leveldb-core": "9.0.0" } }, "node_modules/pouchdb-adapter-utils": { @@ -8810,16 +9096,6 @@ "pouchdb-utils": "9.0.0" } }, - "node_modules/pouchdb-adapter-utils/node_modules/pouchdb-md5": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-9.0.0.tgz", - "integrity": "sha512-58xUYBvW3/s+aH0j4uOhhN8yCk0LQ254cxBzI/gbKA9PrfwHpe4zrr0L/ia5ml3A30oH1f8aTnuVMwWDkFcuww==", - "dev": true, - "dependencies": { - "pouchdb-binary-utils": "9.0.0", - "spark-md5": "3.0.2" - } - }, "node_modules/pouchdb-binary-utils": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-9.0.0.tgz", @@ -8898,16 +9174,6 @@ "pouchdb-utils": "9.0.0" } }, - "node_modules/pouchdb-find/node_modules/pouchdb-md5": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-9.0.0.tgz", - "integrity": "sha512-58xUYBvW3/s+aH0j4uOhhN8yCk0LQ254cxBzI/gbKA9PrfwHpe4zrr0L/ia5ml3A30oH1f8aTnuVMwWDkFcuww==", - "dev": true, - "dependencies": { - "pouchdb-binary-utils": "9.0.0", - "spark-md5": "3.0.2" - } - }, "node_modules/pouchdb-generate-replication-id": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/pouchdb-generate-replication-id/-/pouchdb-generate-replication-id-9.0.0.tgz", @@ -8918,16 +9184,6 @@ "pouchdb-md5": "9.0.0" } }, - "node_modules/pouchdb-generate-replication-id/node_modules/pouchdb-md5": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-9.0.0.tgz", - "integrity": "sha512-58xUYBvW3/s+aH0j4uOhhN8yCk0LQ254cxBzI/gbKA9PrfwHpe4zrr0L/ia5ml3A30oH1f8aTnuVMwWDkFcuww==", - "dev": true, - "dependencies": { - "pouchdb-binary-utils": "9.0.0", - "spark-md5": "3.0.2" - } - }, "node_modules/pouchdb-json": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/pouchdb-json/-/pouchdb-json-9.0.0.tgz", @@ -8957,6 +9213,17 @@ "pouchdb-utils": "9.0.0" } }, + "node_modules/pouchdb-md5": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-9.0.0.tgz", + "integrity": "sha512-58xUYBvW3/s+aH0j4uOhhN8yCk0LQ254cxBzI/gbKA9PrfwHpe4zrr0L/ia5ml3A30oH1f8aTnuVMwWDkFcuww==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "pouchdb-binary-utils": "9.0.0", + "spark-md5": "3.0.2" + } + }, "node_modules/pouchdb-merge": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/pouchdb-merge/-/pouchdb-merge-9.0.0.tgz", @@ -8999,16 +9266,6 @@ "uuid": "8.3.2" } }, - "node_modules/pouchdb-utils/node_modules/pouchdb-md5": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-9.0.0.tgz", - "integrity": "sha512-58xUYBvW3/s+aH0j4uOhhN8yCk0LQ254cxBzI/gbKA9PrfwHpe4zrr0L/ia5ml3A30oH1f8aTnuVMwWDkFcuww==", - "dev": true, - "dependencies": { - "pouchdb-binary-utils": "9.0.0", - "spark-md5": "3.0.2" - } - }, "node_modules/pouchdb-wrappers": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/pouchdb-wrappers/-/pouchdb-wrappers-5.0.0.tgz", @@ -9096,6 +9353,13 @@ "uint8arrays": "^5.0.1" } }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "license": "MIT" + }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -9777,6 +10041,45 @@ "dev": true, "peer": true }, + "node_modules/sublevel-pouchdb": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/sublevel-pouchdb/-/sublevel-pouchdb-9.0.0.tgz", + "integrity": "sha512-pX4r8+F7wuts0C81kUJ341h4bl2aRe7qV572FE8X1FMz9VkKlmi2nPD1vfeiOJXz5Y09I4MHjGULAbqvTfQZEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "level-codec": "9.0.2", + "ltgt": "2.2.1", + "readable-stream": "1.1.14" + } + }, + "node_modules/sublevel-pouchdb/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/sublevel-pouchdb/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/sublevel-pouchdb/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true, + "license": "MIT" + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -9993,6 +10296,32 @@ "node": ">=10" } }, + "node_modules/through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -10550,6 +10879,16 @@ } } }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, "node_modules/xxhash-wasm-102": { "name": "xxhash-wasm", "version": "1.0.2", @@ -10566,9 +10905,9 @@ } }, "node_modules/yaml": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", - "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", "dev": true, "license": "ISC", "bin": { @@ -13476,6 +13815,12 @@ "@types/ms": "*" } }, + "@types/deno": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@types/deno/-/deno-2.3.0.tgz", + "integrity": "sha512-/4SyefQpKjwNKGkq9qG3Ln7MazfbWKvydyVFBnXzP5OQA4u1paoFtaOe1iHKycIWHHkhYag0lPxyheThV1ijzw==", + "dev": true + }, "@types/diff-match-patch": { "version": "1.0.36", "resolved": "https://registry.npmjs.org/@types/diff-match-patch/-/diff-match-patch-1.0.36.tgz", @@ -14080,6 +14425,15 @@ "resolved": "https://registry.npmjs.org/abort-error/-/abort-error-1.0.1.tgz", "integrity": "sha512-fxqCblJiIPdSXIUrxI0PL+eJG49QdP9SQ70qtB65MVAoMr2rASlOyAbJFOylfB467F/f+5BCLJJq58RYi7mGfg==" }, + "abstract-leveldown": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, "acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -14447,6 +14801,12 @@ } } }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, "cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -14536,6 +14896,41 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "deferred-leveldown": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz", + "integrity": "sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==", + "dev": true, + "requires": { + "abstract-leveldown": "~6.2.1", + "inherits": "^2.0.3" + }, + "dependencies": { + "abstract-leveldown": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", + "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "immediate": "^3.2.3", + "level-concat-iterator": "~2.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + } + } + }, "define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -14591,6 +14986,12 @@ "@leichtgewicht/ip-codec": "^2.0.1" } }, + "double-ended-queue": { + "version": "2.1.0-0", + "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", + "integrity": "sha512-+BNfZ+deCo8hMNpDqDnvT+c0XpJ5cUa6mqYq89bho2Ifze4URTqRkcwR399hWoTrTkbZ/XJYDgP6rc7pRgffEQ==", + "dev": true + }, "dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -14613,6 +15014,15 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, "es-abstract": { "version": "1.23.3", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", @@ -15327,6 +15737,12 @@ "functions-have-names": "^1.2.3" } }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, "functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", @@ -15533,6 +15949,12 @@ "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true }, + "immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", + "dev": true + }, "import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", @@ -16100,6 +16522,88 @@ "integrity": "sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==", "dev": true }, + "level-codec": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz", + "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==", + "dev": true, + "requires": { + "buffer": "^5.6.0" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + } + } + }, + "level-concat-iterator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", + "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", + "dev": true + }, + "level-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", + "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", + "dev": true, + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz", + "integrity": "sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.4.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "level-supports": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", + "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", + "dev": true, + "requires": { + "xtend": "^4.0.2" + } + }, + "levelup": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz", + "integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==", + "dev": true, + "requires": { + "deferred-leveldown": "~5.3.0", + "level-errors": "~2.0.0", + "level-iterator-stream": "~4.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + } + }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -16226,6 +16730,12 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" }, + "ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", + "dev": true + }, "magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", @@ -16260,6 +16770,28 @@ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true }, + "memdown": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==", + "dev": true, + "requires": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, "merge-options": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", @@ -16744,18 +17276,6 @@ "pouchdb-mapreduce-utils": "9.0.0", "pouchdb-md5": "9.0.0", "pouchdb-utils": "9.0.0" - }, - "dependencies": { - "pouchdb-md5": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-9.0.0.tgz", - "integrity": "sha512-58xUYBvW3/s+aH0j4uOhhN8yCk0LQ254cxBzI/gbKA9PrfwHpe4zrr0L/ia5ml3A30oH1f8aTnuVMwWDkFcuww==", - "dev": true, - "requires": { - "pouchdb-binary-utils": "9.0.0", - "spark-md5": "3.0.2" - } - } } }, "pouchdb-adapter-http": { @@ -16796,18 +17316,36 @@ "pouchdb-md5": "9.0.0", "pouchdb-merge": "9.0.0", "pouchdb-utils": "9.0.0" - }, - "dependencies": { - "pouchdb-md5": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-9.0.0.tgz", - "integrity": "sha512-58xUYBvW3/s+aH0j4uOhhN8yCk0LQ254cxBzI/gbKA9PrfwHpe4zrr0L/ia5ml3A30oH1f8aTnuVMwWDkFcuww==", - "dev": true, - "requires": { - "pouchdb-binary-utils": "9.0.0", - "spark-md5": "3.0.2" - } - } + } + }, + "pouchdb-adapter-leveldb-core": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-adapter-leveldb-core/-/pouchdb-adapter-leveldb-core-9.0.0.tgz", + "integrity": "sha512-b3ZGPtVXyivGL5SK3AIDG7PrNsZdoDpGFkmTytDTtctkVhxOg71gnXXP+CrupENPqSNG/eGbKW4w+bbMpxy6aA==", + "dev": true, + "requires": { + "double-ended-queue": "2.1.0-0", + "levelup": "4.4.0", + "pouchdb-adapter-utils": "9.0.0", + "pouchdb-binary-utils": "9.0.0", + "pouchdb-core": "9.0.0", + "pouchdb-errors": "9.0.0", + "pouchdb-json": "9.0.0", + "pouchdb-md5": "9.0.0", + "pouchdb-merge": "9.0.0", + "pouchdb-utils": "9.0.0", + "sublevel-pouchdb": "9.0.0", + "through2": "3.0.2" + } + }, + "pouchdb-adapter-memory": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-adapter-memory/-/pouchdb-adapter-memory-9.0.0.tgz", + "integrity": "sha512-XbCwJ5f5U9dGdkiDikzYjTebdPHuA6Ghylx1Pq0lDe4y6l8R9xhjDSUy56pJ8G2F4Z+8QdB5FBY9EQoFlFSXWQ==", + "dev": true, + "requires": { + "memdown": "1.4.1", + "pouchdb-adapter-leveldb-core": "9.0.0" } }, "pouchdb-adapter-utils": { @@ -16821,18 +17359,6 @@ "pouchdb-md5": "9.0.0", "pouchdb-merge": "9.0.0", "pouchdb-utils": "9.0.0" - }, - "dependencies": { - "pouchdb-md5": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-9.0.0.tgz", - "integrity": "sha512-58xUYBvW3/s+aH0j4uOhhN8yCk0LQ254cxBzI/gbKA9PrfwHpe4zrr0L/ia5ml3A30oH1f8aTnuVMwWDkFcuww==", - "dev": true, - "requires": { - "pouchdb-binary-utils": "9.0.0", - "spark-md5": "3.0.2" - } - } } }, "pouchdb-binary-utils": { @@ -16911,18 +17437,6 @@ "pouchdb-md5": "9.0.0", "pouchdb-selector-core": "9.0.0", "pouchdb-utils": "9.0.0" - }, - "dependencies": { - "pouchdb-md5": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-9.0.0.tgz", - "integrity": "sha512-58xUYBvW3/s+aH0j4uOhhN8yCk0LQ254cxBzI/gbKA9PrfwHpe4zrr0L/ia5ml3A30oH1f8aTnuVMwWDkFcuww==", - "dev": true, - "requires": { - "pouchdb-binary-utils": "9.0.0", - "spark-md5": "3.0.2" - } - } } }, "pouchdb-generate-replication-id": { @@ -16933,18 +17447,6 @@ "requires": { "pouchdb-collate": "9.0.0", "pouchdb-md5": "9.0.0" - }, - "dependencies": { - "pouchdb-md5": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-9.0.0.tgz", - "integrity": "sha512-58xUYBvW3/s+aH0j4uOhhN8yCk0LQ254cxBzI/gbKA9PrfwHpe4zrr0L/ia5ml3A30oH1f8aTnuVMwWDkFcuww==", - "dev": true, - "requires": { - "pouchdb-binary-utils": "9.0.0", - "spark-md5": "3.0.2" - } - } } }, "pouchdb-json": { @@ -16976,6 +17478,16 @@ "pouchdb-utils": "9.0.0" } }, + "pouchdb-md5": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-9.0.0.tgz", + "integrity": "sha512-58xUYBvW3/s+aH0j4uOhhN8yCk0LQ254cxBzI/gbKA9PrfwHpe4zrr0L/ia5ml3A30oH1f8aTnuVMwWDkFcuww==", + "dev": true, + "requires": { + "pouchdb-binary-utils": "9.0.0", + "spark-md5": "3.0.2" + } + }, "pouchdb-merge": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/pouchdb-merge/-/pouchdb-merge-9.0.0.tgz", @@ -17016,18 +17528,6 @@ "pouchdb-errors": "9.0.0", "pouchdb-md5": "9.0.0", "uuid": "8.3.2" - }, - "dependencies": { - "pouchdb-md5": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-9.0.0.tgz", - "integrity": "sha512-58xUYBvW3/s+aH0j4uOhhN8yCk0LQ254cxBzI/gbKA9PrfwHpe4zrr0L/ia5ml3A30oH1f8aTnuVMwWDkFcuww==", - "dev": true, - "requires": { - "pouchdb-binary-utils": "9.0.0", - "spark-md5": "3.0.2" - } - } } }, "pouchdb-wrappers": { @@ -17092,6 +17592,12 @@ "uint8arrays": "^5.0.1" } }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true + }, "psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -17523,6 +18029,43 @@ "dev": true, "peer": true }, + "sublevel-pouchdb": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/sublevel-pouchdb/-/sublevel-pouchdb-9.0.0.tgz", + "integrity": "sha512-pX4r8+F7wuts0C81kUJ341h4bl2aRe7qV572FE8X1FMz9VkKlmi2nPD1vfeiOJXz5Y09I4MHjGULAbqvTfQZEQ==", + "dev": true, + "requires": { + "level-codec": "9.0.2", + "ltgt": "2.2.1", + "readable-stream": "1.1.14" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + } + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -17627,6 +18170,29 @@ "source-map-support": "~0.5.20" } }, + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -18034,6 +18600,12 @@ "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", "requires": {} }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, "xxhash-wasm-102": { "version": "npm:xxhash-wasm@1.0.2", "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.0.2.tgz", @@ -18045,9 +18617,9 @@ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, "yaml": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", - "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", "dev": true }, "yargs": { diff --git a/package.json b/package.json index 8ac0501..3084d8c 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,8 @@ "pretty": "npm run prettyNoWrite -- --write --log-level error", "prettyCheck": "npm run prettyNoWrite -- --check", "prettyNoWrite": "prettier --config ./.prettierrc \"**/*.js\" \"**/*.ts\" \"**/*.json\" ", - "check": "npm run lint && npm run svelte-check && npm run tsc-check" + "check": "npm run lint && npm run svelte-check && npm run tsc-check", + "unittest": "deno test -A --no-check --coverage=cov_profile --v8-flags=--expose-gc --trace-leaks ./src/" }, "keywords": [], "author": "vorotamoroz", @@ -60,6 +61,7 @@ "pouchdb-adapter-http": "^9.0.0", "pouchdb-adapter-idb": "^9.0.0", "pouchdb-adapter-indexeddb": "^9.0.0", + "pouchdb-adapter-memory": "^9.0.0", "pouchdb-core": "^9.0.0", "pouchdb-errors": "^9.0.0", "pouchdb-find": "^9.0.0", @@ -75,7 +77,8 @@ "tslib": "^2.8.1", "tsx": "^4.19.4", "typescript": "5.7.3", - "yaml": "^2.8.0" + "yaml": "^2.8.0", + "@types/deno": "^2.3.0" }, "dependencies": { "@aws-sdk/client-s3": "^3.808.0", diff --git a/src/common/KeyValueDB.ts b/src/common/KeyValueDB.ts index 9029fb3..bdb236f 100644 --- a/src/common/KeyValueDB.ts +++ b/src/common/KeyValueDB.ts @@ -1,13 +1,5 @@ import { deleteDB, type IDBPDatabase, openDB } from "idb"; -export interface KeyValueDatabase { - get(key: IDBValidKey): Promise; - set(key: IDBValidKey, value: T): Promise; - del(key: IDBValidKey): Promise; - clear(): Promise; - keys(query?: IDBValidKey | IDBKeyRange, count?: number): Promise; - close(): void; - destroy(): Promise; -} +import type { KeyValueDatabase } from "../lib/src/interfaces/KeyValueDatabase.ts"; const databaseCache: { [key: string]: IDBPDatabase } = {}; export const OpenKeyValueDatabase = async (dbKey: string): Promise => { if (dbKey in databaseCache) { diff --git a/src/common/utils.ts b/src/common/utils.ts index 5c6c98d..2785d3e 100644 --- a/src/common/utils.ts +++ b/src/common/utils.ts @@ -28,11 +28,12 @@ import type ObsidianLiveSyncPlugin from "../main.ts"; import { writeString } from "../lib/src/string_and_binary/convert.ts"; import { fireAndForget } from "../lib/src/common/utils.ts"; import { sameChangePairs } from "./stores.ts"; -import type { KeyValueDatabase } from "./KeyValueDB.ts"; + import { scheduleTask } from "octagonal-wheels/concurrency/task"; import { EVENT_PLUGIN_UNLOADED, eventHub } from "./events.ts"; import { promiseWithResolver, type PromiseWithResolvers } from "octagonal-wheels/promises"; import { AuthorizationHeaderGenerator } from "../lib/src/replication/httplib.ts"; +import type { KeyValueDatabase } from "../lib/src/interfaces/KeyValueDatabase.ts"; export { scheduleTask, cancelTask, cancelAllTasks } from "../lib/src/concurrency/task.ts"; diff --git a/src/features/LocalDatabaseMainte/CmdLocalDatabaseMainte.ts b/src/features/LocalDatabaseMainte/CmdLocalDatabaseMainte.ts index 2ac4e1c..f2557f1 100644 --- a/src/features/LocalDatabaseMainte/CmdLocalDatabaseMainte.ts +++ b/src/features/LocalDatabaseMainte/CmdLocalDatabaseMainte.ts @@ -28,7 +28,7 @@ export class LocalDatabaseMaintenance extends LiveSyncCommands implements IObsid return this.localDatabase.localDatabase; } clearHash() { - this.localDatabase.hashCaches.clear(); + this.localDatabase.clearCaches(); } async confirm(title: string, message: string, affirmative = "Yes", negative = "No") { diff --git a/src/lib b/src/lib index a5ac735..7d1597e 160000 --- a/src/lib +++ b/src/lib @@ -1 +1 @@ -Subproject commit a5ac735c6f69296c7691c7eb543ebc44ea3bdced +Subproject commit 7d1597edcfd8cede3364c4f0bf43395bbc8eaffd diff --git a/src/main.ts b/src/main.ts index 5e0a1ea..d0be337 100644 --- a/src/main.ts +++ b/src/main.ts @@ -27,7 +27,7 @@ import { LiveSyncAbstractReplicator, type LiveSyncReplicatorEnv, } from "./lib/src/replication/LiveSyncAbstractReplicator.js"; -import { type KeyValueDatabase } from "./common/KeyValueDB.ts"; +import { type KeyValueDatabase } from "./lib/src/interfaces/KeyValueDatabase.ts"; import { LiveSyncCommands } from "./features/LiveSyncCommands.ts"; import { HiddenFileSync } from "./features/HiddenFileSync/CmdHiddenFileSync.ts"; import { ConfigSync } from "./features/ConfigSync/CmdConfigSync.ts"; @@ -591,7 +591,11 @@ export default class ObsidianLiveSyncPlugin throwShouldBeOverridden(); } - $$initializeDatabase(showingNotice: boolean = false, reopenDatabase = true): Promise { + $$initializeDatabase( + showingNotice: boolean = false, + reopenDatabase = true, + ignoreSuspending: boolean = false + ): Promise { throwShouldBeOverridden(); } @@ -628,7 +632,7 @@ export default class ObsidianLiveSyncPlugin throwShouldBeOverridden(); } - $$performFullScan(showingNotice?: boolean): Promise { + $$performFullScan(showingNotice?: boolean, ignoreSuspending?: boolean): Promise { throwShouldBeOverridden(); } diff --git a/src/modules/core/ModuleDatabaseFileAccess.ts b/src/modules/core/ModuleDatabaseFileAccess.ts index d186c62..1f0d36a 100644 --- a/src/modules/core/ModuleDatabaseFileAccess.ts +++ b/src/modules/core/ModuleDatabaseFileAccess.ts @@ -53,7 +53,7 @@ export class ModuleDatabaseFileAccess extends AbstractModule implements IObsidia async () => await this.storeContent("autoTest.md" as FilePathWithPrefix, testString) ); // For test, we need to clear the caches. - await this.localDatabase.hashCaches.clear(); + this.localDatabase.clearCaches(); await this._test("readContent", async () => { const content = await this.fetch("autoTest.md" as FilePathWithPrefix); if (!content) return "File not found"; diff --git a/src/modules/core/ModuleRebuilder.ts b/src/modules/core/ModuleRebuilder.ts index 8ad38a9..1979e81 100644 --- a/src/modules/core/ModuleRebuilder.ts +++ b/src/modules/core/ModuleRebuilder.ts @@ -73,7 +73,7 @@ export class ModuleRebuilder extends AbstractModule implements ICoreModule, Rebu await this.core.$$realizeSettingSyncMode(); await this.resetLocalDatabase(); await delay(1000); - await this.core.$$initializeDatabase(true); + await this.core.$$initializeDatabase(true, true, true); await this.core.$$markRemoteLocked(); await this.core.$$tryResetRemoteDatabase(); await this.core.$$markRemoteLocked(); @@ -190,7 +190,7 @@ export class ModuleRebuilder extends AbstractModule implements ICoreModule, Rebu if (makeLocalChunkBeforeSync) { await this.core.fileHandler.createAllChunks(true); } else if (!preventMakeLocalFilesBeforeSync) { - await this.core.$$initializeDatabase(true); + await this.core.$$initializeDatabase(true, true, true); } else { // Do not create local file entries before sync (Means use remote information) } diff --git a/src/modules/core/ModuleReplicator.ts b/src/modules/core/ModuleReplicator.ts index 17ade8f..39ce7e0 100644 --- a/src/modules/core/ModuleReplicator.ts +++ b/src/modules/core/ModuleReplicator.ts @@ -30,7 +30,7 @@ import { import { isAnyNote } from "../../lib/src/common/utils"; import { EVENT_FILE_SAVED, EVENT_SETTING_SAVED, eventHub } from "../../common/events"; import type { LiveSyncAbstractReplicator } from "../../lib/src/replication/LiveSyncAbstractReplicator"; -import { globalSlipBoard } from "../../lib/src/bureau/bureau"; + import { $msg } from "../../lib/src/common/i18n"; import { clearHandlers } from "../../lib/src/replication/SyncParamsHandler"; @@ -150,12 +150,12 @@ Even if you choose to clean up, you will see this option again if you exit Obsid } await purgeUnreferencedChunks(this.localDatabase.localDatabase, false); - this.localDatabase.hashCaches.clear(); + this.localDatabase.clearCaches(); // Perform the synchronisation once. if (await this.core.replicator.openReplication(this.settings, false, showMessage, true)) { await balanceChunkPurgedDBs(this.localDatabase.localDatabase, remoteDB.db); await purgeUnreferencedChunks(this.localDatabase.localDatabase, false); - this.localDatabase.hashCaches.clear(); + this.localDatabase.clearCaches(); await this.core.$$getReplicator().markRemoteResolved(this.settings); Logger("The local database has been cleaned up.", showMessage ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO); } else { @@ -310,7 +310,7 @@ Even if you choose to clean up, you will see this option again if you exit Obsid const change = docs[0]; if (!change) return; if (isChunk(change._id)) { - globalSlipBoard.submit("read-chunk", change._id, change as EntryLeaf); + this.localDatabase.onNewLeaf(change as EntryLeaf); return; } if (await this.core.$anyModuleParsedReplicationResultItem(change)) return; diff --git a/src/modules/essential/ModuleInitializerFile.ts b/src/modules/essential/ModuleInitializerFile.ts index dde5fb9..57f6985 100644 --- a/src/modules/essential/ModuleInitializerFile.ts +++ b/src/modules/essential/ModuleInitializerFile.ts @@ -20,7 +20,7 @@ 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 { + async $$performFullScan(showingNotice?: boolean, ignoreSuspending: boolean = false): Promise { this._log("Opening the key-value database", LOG_LEVEL_VERBOSE); const isInitialized = (await this.core.kvDB.get("initialized")) || false; // synchronize all files between database and storage. @@ -34,6 +34,16 @@ export class ModuleInitializerFile extends AbstractModule implements ICoreModule } return; } + if (!ignoreSuspending && this.settings.suspendFileWatching) { + if (showingNotice) { + this._log( + "Now suspending file watching. Synchronising between the storage and the local database is now prevented.", + LOG_LEVEL_NOTICE, + "syncAll" + ); + } + return; + } if (showingNotice) { this._log("Initializing", LOG_LEVEL_NOTICE, "syncAll"); @@ -355,11 +365,15 @@ export class ModuleInitializerFile extends AbstractModule implements ICoreModule this._log(`Checking expired file history done`); } - async $$initializeDatabase(showingNotice: boolean = false, reopenDatabase = true): Promise { + async $$initializeDatabase( + showingNotice: boolean = false, + reopenDatabase = true, + ignoreSuspending: boolean = false + ): Promise { this.core.$$resetIsReady(); if (!reopenDatabase || (await this.core.$$openDatabase())) { if (this.localDatabase.isReady) { - await this.core.$$performFullScan(showingNotice); + await this.core.$$performFullScan(showingNotice, ignoreSuspending); } if (!(await this.core.$everyOnDatabaseInitialized(showingNotice))) { this._log(`Initializing database has been failed on some module`, LOG_LEVEL_NOTICE); diff --git a/src/modules/features/SettingDialogue/ObsidianLiveSyncSettingTab.ts b/src/modules/features/SettingDialogue/ObsidianLiveSyncSettingTab.ts index d5c232e..21d82ca 100644 --- a/src/modules/features/SettingDialogue/ObsidianLiveSyncSettingTab.ts +++ b/src/modules/features/SettingDialogue/ObsidianLiveSyncSettingTab.ts @@ -875,7 +875,7 @@ export class ObsidianLiveSyncSettingTab extends PluginSettingTab { } await purgeUnreferencedChunks(remoteDBConn.db, true, this.plugin.settings, false); await purgeUnreferencedChunks(this.plugin.localDatabase.localDatabase, true); - this.plugin.localDatabase.hashCaches.clear(); + this.plugin.localDatabase.clearCaches(); }); } @@ -895,7 +895,7 @@ export class ObsidianLiveSyncSettingTab extends PluginSettingTab { } await purgeUnreferencedChunks(remoteDBConnection.db, false, this.plugin.settings, true); await purgeUnreferencedChunks(this.plugin.localDatabase.localDatabase, false); - this.plugin.localDatabase.hashCaches.clear(); + this.plugin.localDatabase.clearCaches(); await balanceChunkPurgedDBs(this.plugin.localDatabase.localDatabase, remoteDBConnection.db); this.plugin.localDatabase.refreshSettings(); Logger( diff --git a/src/modules/features/SettingDialogue/PaneAdvanced.ts b/src/modules/features/SettingDialogue/PaneAdvanced.ts index 5cbf666..0c78a82 100644 --- a/src/modules/features/SettingDialogue/PaneAdvanced.ts +++ b/src/modules/features/SettingDialogue/PaneAdvanced.ts @@ -6,7 +6,7 @@ import type { PageFunctions } from "./SettingPane.ts"; export function paneAdvanced(this: ObsidianLiveSyncSettingTab, paneEl: HTMLElement, { addPanel }: PageFunctions): void { void addPanel(paneEl, "Memory cache").then((paneEl) => { new Setting(paneEl).autoWireNumeric("hashCacheMaxCount", { clampMin: 10 }); - new Setting(paneEl).autoWireNumeric("hashCacheMaxAmount", { clampMin: 1 }); + // new Setting(paneEl).autoWireNumeric("hashCacheMaxAmount", { clampMin: 1 }); }); void addPanel(paneEl, "Local Database Tweak").then((paneEl) => { paneEl.addClass("wizardHidden"); diff --git a/src/modules/features/SettingDialogue/PaneHatch.ts b/src/modules/features/SettingDialogue/PaneHatch.ts index 7fe06ed..648b2c5 100644 --- a/src/modules/features/SettingDialogue/PaneHatch.ts +++ b/src/modules/features/SettingDialogue/PaneHatch.ts @@ -335,7 +335,7 @@ ${stringifyYaml({ Logger("Start verifying all files", LOG_LEVEL_NOTICE, "verify"); const ignorePatterns = getFileRegExp(this.plugin.settings, "syncInternalFilesIgnorePatterns"); const targetPatterns = getFileRegExp(this.plugin.settings, "syncInternalFilesTargetPatterns"); - this.plugin.localDatabase.hashCaches.clear(); + this.plugin.localDatabase.clearCaches(); Logger("Start verifying all files", LOG_LEVEL_NOTICE, "verify"); const files = this.plugin.settings.syncInternalFiles ? await this.plugin.storageAccess.getFilesIncludeHidden("/", targetPatterns, ignorePatterns) diff --git a/src/modules/features/SettingDialogue/PanePatches.ts b/src/modules/features/SettingDialogue/PanePatches.ts index c4234bd..b4256de 100644 --- a/src/modules/features/SettingDialogue/PanePatches.ts +++ b/src/modules/features/SettingDialogue/PanePatches.ts @@ -28,9 +28,9 @@ export function panePatches(this: ObsidianLiveSyncSettingTab, paneEl: HTMLElemen void addPanel(paneEl, "Compatibility (Database structure)").then((paneEl) => { new Setting(paneEl).autoWireToggle("useIndexedDBAdapter", { invert: true, holdValue: true }); - new Setting(paneEl) - .autoWireToggle("doNotUseFixedRevisionForChunks", { holdValue: true }) - .setClass("wizardHidden"); + // new Setting(paneEl) + // .autoWireToggle("doNotUseFixedRevisionForChunks", { holdValue: true }) + // .setClass("wizardHidden"); new Setting(paneEl).autoWireToggle("handleFilenameCaseSensitive", { holdValue: true }).setClass("wizardHidden"); this.addOnSaved("useIndexedDBAdapter", async () => { @@ -99,13 +99,13 @@ export function panePatches(this: ObsidianLiveSyncSettingTab, paneEl: HTMLElemen }); void addPanel(paneEl, "Remote Database Tweak (In sunset)").then((paneEl) => { - new Setting(paneEl).autoWireToggle("useEden").setClass("wizardHidden"); - const onlyUsingEden = visibleOnly(() => this.isConfiguredAs("useEden", true)); - new Setting(paneEl).autoWireNumeric("maxChunksInEden", { onUpdate: onlyUsingEden }).setClass("wizardHidden"); - new Setting(paneEl) - .autoWireNumeric("maxTotalLengthInEden", { onUpdate: onlyUsingEden }) - .setClass("wizardHidden"); - new Setting(paneEl).autoWireNumeric("maxAgeInEden", { onUpdate: onlyUsingEden }).setClass("wizardHidden"); + // new Setting(paneEl).autoWireToggle("useEden").setClass("wizardHidden"); + // const onlyUsingEden = visibleOnly(() => this.isConfiguredAs("useEden", true)); + // new Setting(paneEl).autoWireNumeric("maxChunksInEden", { onUpdate: onlyUsingEden }).setClass("wizardHidden"); + // new Setting(paneEl) + // .autoWireNumeric("maxTotalLengthInEden", { onUpdate: onlyUsingEden }) + // .setClass("wizardHidden"); + // new Setting(paneEl).autoWireNumeric("maxAgeInEden", { onUpdate: onlyUsingEden }).setClass("wizardHidden"); new Setting(paneEl).autoWireToggle("enableCompression").setClass("wizardHidden"); }); diff --git a/tsconfig.json b/tsconfig.json index f13cbac..2223967 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,5 +23,5 @@ } }, "include": ["**/*.ts"], - "exclude": ["pouchdb-browser-webpack", "utils", "src/lib/apps"] + "exclude": ["pouchdb-browser-webpack", "utils", "src/lib/apps", "**/*.test.ts"] }