diff --git a/esbuild.config.mjs b/esbuild.config.mjs index 5f7b79e..16ca66e 100644 --- a/esbuild.config.mjs +++ b/esbuild.config.mjs @@ -25,14 +25,16 @@ esbuild "MANIFEST_VERSION": `"${manifestJson.version}"`, "PACKAGE_VERSION": `"${packageJson.version}"`, "UPDATE_INFO": `${updateInfo}`, + "global":"window", }, - external: ["obsidian", "electron", ...builtins], + external: ["obsidian", "electron", "crypto"], format: "cjs", watch: !prod, target: "es2018", logLevel: "info", sourcemap: prod ? false : "inline", treeShaking: true, + platform: "browser", plugins: [ sveltePlugin({ preprocess: sveltePreprocess(), diff --git a/package-lock.json b/package-lock.json index 886928e..0a803c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,11 +27,20 @@ "eslint": "^8.28.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-import": "^2.26.0", + "events": "^3.3.0", "obsidian": "^0.16.3", "postcss": "^8.4.19", "postcss-load-config": "^4.0.1", + "pouchdb-adapter-http": "^8.0.0", + "pouchdb-adapter-idb": "^8.0.0", + "pouchdb-core": "^8.0.0", + "pouchdb-find": "^8.0.0", + "pouchdb-mapreduce": "^8.0.0", + "pouchdb-replication": "^8.0.0", + "pouchdb-utils": "file:src/lib/src/patches/pouchdb-utils", "svelte": "^3.53.1", "svelte-preprocess": "^4.10.7", + "transform-pouch": "^2.0.0", "tslib": "^2.4.1", "typescript": "^4.9.3" } @@ -629,6 +638,18 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, "node_modules/acorn": { "version": "8.8.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", @@ -778,6 +799,12 @@ "node": "*" } }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, "node_modules/builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", @@ -828,6 +855,15 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1715,6 +1751,24 @@ "node": ">=0.10.0" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -1770,6 +1824,18 @@ "reusify": "^1.0.4" } }, + "node_modules/fetch-cookie": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.11.0.tgz", + "integrity": "sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA==", + "dev": true, + "dependencies": { + "tough-cookie": "^2.3.3 || ^3.0.1 || ^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -2021,6 +2087,12 @@ "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 + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -2492,6 +2564,26 @@ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/object-inspect": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz", @@ -2754,6 +2846,243 @@ } } }, + "node_modules/pouchdb-abstract-mapreduce": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-8.0.0.tgz", + "integrity": "sha512-LUf+xb1zFyrIEk8KK01xbv5WQiRyDJhPieFvf9nYfvemRFzD78+1ho90pIKoDVYqiu+Q3PckLzm/VLcJGWn9Vw==", + "dev": true, + "dependencies": { + "pouchdb-binary-utils": "8.0.0", + "pouchdb-collate": "8.0.0", + "pouchdb-collections": "8.0.0", + "pouchdb-errors": "8.0.0", + "pouchdb-fetch": "8.0.0", + "pouchdb-mapreduce-utils": "8.0.0", + "pouchdb-md5": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "node_modules/pouchdb-adapter-http": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-adapter-http/-/pouchdb-adapter-http-8.0.0.tgz", + "integrity": "sha512-SbbGjb4f6+WuuX301LXNcqnvKtmV8SxPNyzG4TAKLxggzRdki/JlLqBxt2tm5qAzKYa8z0VX/HjSJtgzgcX4hw==", + "dev": true, + "dependencies": { + "pouchdb-binary-utils": "8.0.0", + "pouchdb-errors": "8.0.0", + "pouchdb-fetch": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "node_modules/pouchdb-adapter-idb": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-adapter-idb/-/pouchdb-adapter-idb-8.0.0.tgz", + "integrity": "sha512-AzpgfrkSGIvo0MrdxkaPEqMzwJd+xB6F78XN/K++Tdhww6l5eZZ15eFGmZCzJ5IoohtAtm28v8lSMTYo6elEoA==", + "dev": true, + "dependencies": { + "pouchdb-adapter-utils": "8.0.0", + "pouchdb-binary-utils": "8.0.0", + "pouchdb-collections": "8.0.0", + "pouchdb-errors": "8.0.0", + "pouchdb-json": "8.0.0", + "pouchdb-merge": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "node_modules/pouchdb-adapter-utils": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-adapter-utils/-/pouchdb-adapter-utils-8.0.0.tgz", + "integrity": "sha512-SHk4Q3SXcXOw4Rf2yXBozDFP6nlSJC7rWjovWk+P7vcauQhxCnpQDVP9fOh4JWmbUp+S7vsJza4kf6akR5trRw==", + "dev": true, + "dependencies": { + "pouchdb-binary-utils": "8.0.0", + "pouchdb-collections": "8.0.0", + "pouchdb-errors": "8.0.0", + "pouchdb-md5": "8.0.0", + "pouchdb-merge": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "node_modules/pouchdb-binary-utils": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-8.0.0.tgz", + "integrity": "sha512-MDp0VE0SIxzjjnqOST2dI8w65k2HFdau3Sp885rgYgCe4TIDCGeSbKiL3EyyBKC+mob1kLSJaQsXfSAOqg8vUg==", + "dev": true, + "dependencies": { + "buffer-from": "1.1.2" + } + }, + "node_modules/pouchdb-changes-filter": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-changes-filter/-/pouchdb-changes-filter-8.0.0.tgz", + "integrity": "sha512-AZSlvfSgKNUsCW6OdxU3ZZRk+q2bfoDmpGQBn3QrGGlVP8sf4QYIOmy48XseKCQazlKOcP6is8NUuqrlCx7b5w==", + "dev": true, + "dependencies": { + "pouchdb-errors": "8.0.0", + "pouchdb-selector-core": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "node_modules/pouchdb-checkpointer": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-checkpointer/-/pouchdb-checkpointer-8.0.0.tgz", + "integrity": "sha512-yNobJXhbuPYnsr4eOSQlz8HPcdczUAQkr8/AR67JCLlDB2lZ7lrUU7lcK0t6d4Ok9ocTGvot8dwixlPBc0gtOg==", + "dev": true, + "dependencies": { + "pouchdb-collate": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "node_modules/pouchdb-collate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-collate/-/pouchdb-collate-8.0.0.tgz", + "integrity": "sha512-kgJCzB1yZl/u1rWLbftJth7w9Wm0RwetDsHNolFgplZO33DtzCmU3vSxZC5ly68ZScWNAuEiqz1ExF1gFwq+eA==", + "dev": true + }, + "node_modules/pouchdb-collections": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-8.0.0.tgz", + "integrity": "sha512-s2N1HDBixnjIt7E9TyatOIOsHciiF0iTIb3BtExHNSpkPkjYVhSX2EOnPICEONcmNaLmf/ljue7m+mgLP7IYfA==", + "dev": true + }, + "node_modules/pouchdb-core": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-core/-/pouchdb-core-8.0.0.tgz", + "integrity": "sha512-tQCzpMjfPRDnPmT1l/TppGomVEQbAAezoqWfwXQmN3Bqytx7vnJtliZ+tlwZWqULnDD7piQnTgqQNSWgKjv02w==", + "dev": true, + "dependencies": { + "pouchdb-changes-filter": "8.0.0", + "pouchdb-collections": "8.0.0", + "pouchdb-errors": "8.0.0", + "pouchdb-fetch": "8.0.0", + "pouchdb-merge": "8.0.0", + "pouchdb-utils": "8.0.0", + "uuid": "8.3.2" + } + }, + "node_modules/pouchdb-errors": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-8.0.0.tgz", + "integrity": "sha512-OZ8pUQrYTuCLAKepBgmb/Cw1+NY4qS7KrJX827c9C7ed6ZhSsRKdePjO56yWJrD3VbH1EJo9I87VBdCApkKGTw==", + "dev": true + }, + "node_modules/pouchdb-fetch": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-fetch/-/pouchdb-fetch-8.0.0.tgz", + "integrity": "sha512-EZRZ7m9RFk7gLKpmdKxRPFEKh7n555/rUPnCDIhcd4wqxC3RDRervKtjIBYS9X/xQYZv/BG/ZyXIrigIYJBo3A==", + "dev": true, + "dependencies": { + "abort-controller": "3.0.0", + "fetch-cookie": "0.11.0", + "node-fetch": "2.6.7" + } + }, + "node_modules/pouchdb-find": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-find/-/pouchdb-find-8.0.0.tgz", + "integrity": "sha512-PVpTABPn8Fia2o3Z8z7BN9q93yxdi0fLRB+0lTbSHZP0tMD9z9FdtBkwHBuNja+gr9hZl95QgfJFB45z4Fj+0g==", + "dev": true, + "dependencies": { + "pouchdb-abstract-mapreduce": "8.0.0", + "pouchdb-collate": "8.0.0", + "pouchdb-errors": "8.0.0", + "pouchdb-fetch": "8.0.0", + "pouchdb-md5": "8.0.0", + "pouchdb-selector-core": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "node_modules/pouchdb-generate-replication-id": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-generate-replication-id/-/pouchdb-generate-replication-id-8.0.0.tgz", + "integrity": "sha512-+LDJkmO9TcGP6zgk3NjR9lWvHH+J6yFHx0P2p6QXBRhw4wI088b01jR9HxOlsd6km0jF6yQnUtxaWSTRs3XRRw==", + "dev": true, + "dependencies": { + "pouchdb-collate": "8.0.0", + "pouchdb-md5": "8.0.0" + } + }, + "node_modules/pouchdb-json": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-json/-/pouchdb-json-8.0.0.tgz", + "integrity": "sha512-2c5hyc2xKVbiyZ++mpPRbcsL8PmIRlbj/xTgFtwcX1Np22V/+TRMWiOLqKUXyEJwyJM7wqNOhvMVOYttHPy1cA==", + "dev": true, + "dependencies": { + "vuvuzela": "1.0.3" + } + }, + "node_modules/pouchdb-mapreduce": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-mapreduce/-/pouchdb-mapreduce-8.0.0.tgz", + "integrity": "sha512-c+fq5umXxhn1VTTq90QcKog35QyfjmM006SsV88Kn7cgq5q6dDwNzOkeYpjPRnCVlrvXiOhFEkLRt91mhL7Sdw==", + "dev": true, + "dependencies": { + "pouchdb-abstract-mapreduce": "8.0.0", + "pouchdb-mapreduce-utils": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "node_modules/pouchdb-mapreduce-utils": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-8.0.0.tgz", + "integrity": "sha512-29pIuc7ndDHa7M8KydaolZvbYlAeW29BdR9Zcb3YqGYAz+tGy0RLP4z9qVqmrsSxdn9IM99fH5K8x87Uza2Ruw==", + "dev": true, + "dependencies": { + "pouchdb-collections": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "node_modules/pouchdb-md5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-8.0.0.tgz", + "integrity": "sha512-xOEcmtpmL5uvgQNUVkD6ND+eb8sUIN64PF94rGXCA9m4ewzropDlLoEfmXnFcdAx9fYlcgT8dBimCHpMCenNyA==", + "dev": true, + "dependencies": { + "pouchdb-binary-utils": "8.0.0", + "spark-md5": "3.0.2" + } + }, + "node_modules/pouchdb-merge": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-merge/-/pouchdb-merge-8.0.0.tgz", + "integrity": "sha512-U9epMB7A1re+CsSC/1lLScKCTUHnHIYfYUupfIPbhue12FOaoSOOLJAyQgFcrbMgu+oV0vsCkyLMrRuvjcLwEQ==", + "dev": true, + "dependencies": { + "pouchdb-utils": "8.0.0" + } + }, + "node_modules/pouchdb-replication": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-replication/-/pouchdb-replication-8.0.0.tgz", + "integrity": "sha512-+MpUet4HALgLs2la65p6d9+TuTA+mdTGXnkshg5f6QAWkLorIOzjoJyPIzV8c3JteJWv3FT/7pSag+Oy2PncHw==", + "dev": true, + "dependencies": { + "pouchdb-checkpointer": "8.0.0", + "pouchdb-errors": "8.0.0", + "pouchdb-generate-replication-id": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "node_modules/pouchdb-selector-core": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-selector-core/-/pouchdb-selector-core-8.0.0.tgz", + "integrity": "sha512-oHN3pftwDrzKNwz7UoyFw8rtX6W7LFChLHV1bzdKDP3XjJsNHzW0uGjs6EfuEFxbFgCvzav5u7SDHCefwKDRjg==", + "dev": true, + "dependencies": { + "pouchdb-collate": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "node_modules/pouchdb-utils": { + "resolved": "src/lib/src/patches/pouchdb-utils", + "link": true + }, + "node_modules/pouchdb-wrappers": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-wrappers/-/pouchdb-wrappers-5.0.0.tgz", + "integrity": "sha512-fXqsVn+rmlPtxaAIGaQP5TkiaT39OMwvMk+ScLLtHrmfXD2KBO6fe/qBl38N/rpTn0h/A058dPN4fLAHt550zA==", + "dev": true + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -2763,6 +3092,12 @@ "node": ">= 0.8.0" } }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -2772,6 +3107,12 @@ "node": ">=6" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -2804,6 +3145,12 @@ "url": "https://github.com/sponsors/mysticatea" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -2991,6 +3338,12 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, + "node_modules/spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==", + "dev": true + }, "node_modules/string.prototype.trimend": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", @@ -3186,6 +3539,36 @@ "node": ">=8.0" } }, + "node_modules/tough-cookie": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/transform-pouch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/transform-pouch/-/transform-pouch-2.0.0.tgz", + "integrity": "sha512-nDZovo0U5o0UdMNL93fMQgGjrwH9h4F/a7qqRTnF6cVA+FfgyXiJPTrSuD+LmWSO7r2deZt0P0oeCD8hkgxl5g==", + "dev": true, + "dependencies": { + "pouchdb-wrappers": "^5.0.0" + } + }, "node_modules/tsconfig-paths": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", @@ -3277,6 +3660,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -3286,6 +3678,31 @@ "punycode": "^2.1.0" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vuvuzela": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/vuvuzela/-/vuvuzela-1.0.3.tgz", + "integrity": "sha512-Tm7jR1xTzBbPW+6y1tknKiEhz04Wf/1iZkcTJjSFcpNko43+dFW6+OOeQe9taJIug3NdfUAjFKgUSyQrIKaDvQ==", + "dev": true + }, "node_modules/w3c-keyname": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.4.tgz", @@ -3293,6 +3710,22 @@ "dev": true, "peer": true }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3370,6 +3803,19 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "src/lib/src/patches/pouchdb-utils": { + "version": "8.0.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "clone-buffer": "1.0.0", + "immediate": "3.3.0", + "pouchdb-collections": "8.0.0", + "pouchdb-errors": "8.0.0", + "pouchdb-md5": "8.0.0", + "uuid": "8.3.2" + } } }, "dependencies": { @@ -3834,6 +4280,15 @@ "eslint-visitor-keys": "^3.3.0" } }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, "acorn": { "version": "8.8.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", @@ -3941,6 +4396,12 @@ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", "dev": true }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, "builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", @@ -3973,6 +4434,12 @@ "supports-color": "^7.1.0" } }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "dev": true + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -4555,6 +5022,18 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -4606,6 +5085,15 @@ "reusify": "^1.0.4" } }, + "fetch-cookie": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.11.0.tgz", + "integrity": "sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA==", + "dev": true, + "requires": { + "tough-cookie": "^2.3.3 || ^3.0.1 || ^4.0.0" + } + }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -4788,6 +5276,12 @@ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "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.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -5126,6 +5620,15 @@ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, "object-inspect": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz", @@ -5295,18 +5798,274 @@ "yaml": "^2.1.1" } }, + "pouchdb-abstract-mapreduce": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-8.0.0.tgz", + "integrity": "sha512-LUf+xb1zFyrIEk8KK01xbv5WQiRyDJhPieFvf9nYfvemRFzD78+1ho90pIKoDVYqiu+Q3PckLzm/VLcJGWn9Vw==", + "dev": true, + "requires": { + "pouchdb-binary-utils": "8.0.0", + "pouchdb-collate": "8.0.0", + "pouchdb-collections": "8.0.0", + "pouchdb-errors": "8.0.0", + "pouchdb-fetch": "8.0.0", + "pouchdb-mapreduce-utils": "8.0.0", + "pouchdb-md5": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "pouchdb-adapter-http": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-adapter-http/-/pouchdb-adapter-http-8.0.0.tgz", + "integrity": "sha512-SbbGjb4f6+WuuX301LXNcqnvKtmV8SxPNyzG4TAKLxggzRdki/JlLqBxt2tm5qAzKYa8z0VX/HjSJtgzgcX4hw==", + "dev": true, + "requires": { + "pouchdb-binary-utils": "8.0.0", + "pouchdb-errors": "8.0.0", + "pouchdb-fetch": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "pouchdb-adapter-idb": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-adapter-idb/-/pouchdb-adapter-idb-8.0.0.tgz", + "integrity": "sha512-AzpgfrkSGIvo0MrdxkaPEqMzwJd+xB6F78XN/K++Tdhww6l5eZZ15eFGmZCzJ5IoohtAtm28v8lSMTYo6elEoA==", + "dev": true, + "requires": { + "pouchdb-adapter-utils": "8.0.0", + "pouchdb-binary-utils": "8.0.0", + "pouchdb-collections": "8.0.0", + "pouchdb-errors": "8.0.0", + "pouchdb-json": "8.0.0", + "pouchdb-merge": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "pouchdb-adapter-utils": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-adapter-utils/-/pouchdb-adapter-utils-8.0.0.tgz", + "integrity": "sha512-SHk4Q3SXcXOw4Rf2yXBozDFP6nlSJC7rWjovWk+P7vcauQhxCnpQDVP9fOh4JWmbUp+S7vsJza4kf6akR5trRw==", + "dev": true, + "requires": { + "pouchdb-binary-utils": "8.0.0", + "pouchdb-collections": "8.0.0", + "pouchdb-errors": "8.0.0", + "pouchdb-md5": "8.0.0", + "pouchdb-merge": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "pouchdb-binary-utils": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-8.0.0.tgz", + "integrity": "sha512-MDp0VE0SIxzjjnqOST2dI8w65k2HFdau3Sp885rgYgCe4TIDCGeSbKiL3EyyBKC+mob1kLSJaQsXfSAOqg8vUg==", + "dev": true, + "requires": { + "buffer-from": "1.1.2" + } + }, + "pouchdb-changes-filter": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-changes-filter/-/pouchdb-changes-filter-8.0.0.tgz", + "integrity": "sha512-AZSlvfSgKNUsCW6OdxU3ZZRk+q2bfoDmpGQBn3QrGGlVP8sf4QYIOmy48XseKCQazlKOcP6is8NUuqrlCx7b5w==", + "dev": true, + "requires": { + "pouchdb-errors": "8.0.0", + "pouchdb-selector-core": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "pouchdb-checkpointer": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-checkpointer/-/pouchdb-checkpointer-8.0.0.tgz", + "integrity": "sha512-yNobJXhbuPYnsr4eOSQlz8HPcdczUAQkr8/AR67JCLlDB2lZ7lrUU7lcK0t6d4Ok9ocTGvot8dwixlPBc0gtOg==", + "dev": true, + "requires": { + "pouchdb-collate": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "pouchdb-collate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-collate/-/pouchdb-collate-8.0.0.tgz", + "integrity": "sha512-kgJCzB1yZl/u1rWLbftJth7w9Wm0RwetDsHNolFgplZO33DtzCmU3vSxZC5ly68ZScWNAuEiqz1ExF1gFwq+eA==", + "dev": true + }, + "pouchdb-collections": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-8.0.0.tgz", + "integrity": "sha512-s2N1HDBixnjIt7E9TyatOIOsHciiF0iTIb3BtExHNSpkPkjYVhSX2EOnPICEONcmNaLmf/ljue7m+mgLP7IYfA==", + "dev": true + }, + "pouchdb-core": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-core/-/pouchdb-core-8.0.0.tgz", + "integrity": "sha512-tQCzpMjfPRDnPmT1l/TppGomVEQbAAezoqWfwXQmN3Bqytx7vnJtliZ+tlwZWqULnDD7piQnTgqQNSWgKjv02w==", + "dev": true, + "requires": { + "pouchdb-changes-filter": "8.0.0", + "pouchdb-collections": "8.0.0", + "pouchdb-errors": "8.0.0", + "pouchdb-fetch": "8.0.0", + "pouchdb-merge": "8.0.0", + "pouchdb-utils": "8.0.0", + "uuid": "8.3.2" + } + }, + "pouchdb-errors": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-8.0.0.tgz", + "integrity": "sha512-OZ8pUQrYTuCLAKepBgmb/Cw1+NY4qS7KrJX827c9C7ed6ZhSsRKdePjO56yWJrD3VbH1EJo9I87VBdCApkKGTw==", + "dev": true + }, + "pouchdb-fetch": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-fetch/-/pouchdb-fetch-8.0.0.tgz", + "integrity": "sha512-EZRZ7m9RFk7gLKpmdKxRPFEKh7n555/rUPnCDIhcd4wqxC3RDRervKtjIBYS9X/xQYZv/BG/ZyXIrigIYJBo3A==", + "dev": true, + "requires": { + "abort-controller": "3.0.0", + "fetch-cookie": "0.11.0", + "node-fetch": "2.6.7" + } + }, + "pouchdb-find": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-find/-/pouchdb-find-8.0.0.tgz", + "integrity": "sha512-PVpTABPn8Fia2o3Z8z7BN9q93yxdi0fLRB+0lTbSHZP0tMD9z9FdtBkwHBuNja+gr9hZl95QgfJFB45z4Fj+0g==", + "dev": true, + "requires": { + "pouchdb-abstract-mapreduce": "8.0.0", + "pouchdb-collate": "8.0.0", + "pouchdb-errors": "8.0.0", + "pouchdb-fetch": "8.0.0", + "pouchdb-md5": "8.0.0", + "pouchdb-selector-core": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "pouchdb-generate-replication-id": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-generate-replication-id/-/pouchdb-generate-replication-id-8.0.0.tgz", + "integrity": "sha512-+LDJkmO9TcGP6zgk3NjR9lWvHH+J6yFHx0P2p6QXBRhw4wI088b01jR9HxOlsd6km0jF6yQnUtxaWSTRs3XRRw==", + "dev": true, + "requires": { + "pouchdb-collate": "8.0.0", + "pouchdb-md5": "8.0.0" + } + }, + "pouchdb-json": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-json/-/pouchdb-json-8.0.0.tgz", + "integrity": "sha512-2c5hyc2xKVbiyZ++mpPRbcsL8PmIRlbj/xTgFtwcX1Np22V/+TRMWiOLqKUXyEJwyJM7wqNOhvMVOYttHPy1cA==", + "dev": true, + "requires": { + "vuvuzela": "1.0.3" + } + }, + "pouchdb-mapreduce": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-mapreduce/-/pouchdb-mapreduce-8.0.0.tgz", + "integrity": "sha512-c+fq5umXxhn1VTTq90QcKog35QyfjmM006SsV88Kn7cgq5q6dDwNzOkeYpjPRnCVlrvXiOhFEkLRt91mhL7Sdw==", + "dev": true, + "requires": { + "pouchdb-abstract-mapreduce": "8.0.0", + "pouchdb-mapreduce-utils": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "pouchdb-mapreduce-utils": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-8.0.0.tgz", + "integrity": "sha512-29pIuc7ndDHa7M8KydaolZvbYlAeW29BdR9Zcb3YqGYAz+tGy0RLP4z9qVqmrsSxdn9IM99fH5K8x87Uza2Ruw==", + "dev": true, + "requires": { + "pouchdb-collections": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "pouchdb-md5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-8.0.0.tgz", + "integrity": "sha512-xOEcmtpmL5uvgQNUVkD6ND+eb8sUIN64PF94rGXCA9m4ewzropDlLoEfmXnFcdAx9fYlcgT8dBimCHpMCenNyA==", + "dev": true, + "requires": { + "pouchdb-binary-utils": "8.0.0", + "spark-md5": "3.0.2" + } + }, + "pouchdb-merge": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-merge/-/pouchdb-merge-8.0.0.tgz", + "integrity": "sha512-U9epMB7A1re+CsSC/1lLScKCTUHnHIYfYUupfIPbhue12FOaoSOOLJAyQgFcrbMgu+oV0vsCkyLMrRuvjcLwEQ==", + "dev": true, + "requires": { + "pouchdb-utils": "8.0.0" + } + }, + "pouchdb-replication": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-replication/-/pouchdb-replication-8.0.0.tgz", + "integrity": "sha512-+MpUet4HALgLs2la65p6d9+TuTA+mdTGXnkshg5f6QAWkLorIOzjoJyPIzV8c3JteJWv3FT/7pSag+Oy2PncHw==", + "dev": true, + "requires": { + "pouchdb-checkpointer": "8.0.0", + "pouchdb-errors": "8.0.0", + "pouchdb-generate-replication-id": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "pouchdb-selector-core": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-selector-core/-/pouchdb-selector-core-8.0.0.tgz", + "integrity": "sha512-oHN3pftwDrzKNwz7UoyFw8rtX6W7LFChLHV1bzdKDP3XjJsNHzW0uGjs6EfuEFxbFgCvzav5u7SDHCefwKDRjg==", + "dev": true, + "requires": { + "pouchdb-collate": "8.0.0", + "pouchdb-utils": "8.0.0" + } + }, + "pouchdb-utils": { + "version": "file:src/lib/src/patches/pouchdb-utils", + "requires": { + "clone-buffer": "1.0.0", + "immediate": "3.3.0", + "pouchdb-collections": "8.0.0", + "pouchdb-errors": "8.0.0", + "pouchdb-md5": "8.0.0", + "uuid": "8.3.2" + } + }, + "pouchdb-wrappers": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pouchdb-wrappers/-/pouchdb-wrappers-5.0.0.tgz", + "integrity": "sha512-fXqsVn+rmlPtxaAIGaQP5TkiaT39OMwvMk+ScLLtHrmfXD2KBO6fe/qBl38N/rpTn0h/A058dPN4fLAHt550zA==", + "dev": true + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5319,6 +6078,12 @@ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, "resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -5448,6 +6213,12 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, + "spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==", + "dev": true + }, "string.prototype.trimend": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", @@ -5555,6 +6326,33 @@ "is-number": "^7.0.0" } }, + "tough-cookie": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "transform-pouch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/transform-pouch/-/transform-pouch-2.0.0.tgz", + "integrity": "sha512-nDZovo0U5o0UdMNL93fMQgGjrwH9h4F/a7qqRTnF6cVA+FfgyXiJPTrSuD+LmWSO7r2deZt0P0oeCD8hkgxl5g==", + "dev": true, + "requires": { + "pouchdb-wrappers": "^5.0.0" + } + }, "tsconfig-paths": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", @@ -5623,6 +6421,12 @@ "which-boxed-primitive": "^1.0.2" } }, + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -5632,6 +6436,28 @@ "punycode": "^2.1.0" } }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "vuvuzela": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/vuvuzela/-/vuvuzela-1.0.3.tgz", + "integrity": "sha512-Tm7jR1xTzBbPW+6y1tknKiEhz04Wf/1iZkcTJjSFcpNko43+dFW6+OOeQe9taJIug3NdfUAjFKgUSyQrIKaDvQ==", + "dev": true + }, "w3c-keyname": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.4.tgz", @@ -5639,6 +6465,22 @@ "dev": true, "peer": true }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 427906d..66727e5 100644 --- a/package.json +++ b/package.json @@ -24,11 +24,20 @@ "eslint": "^8.28.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-import": "^2.26.0", + "events": "^3.3.0", "obsidian": "^0.16.3", "postcss": "^8.4.19", "postcss-load-config": "^4.0.1", + "pouchdb-adapter-http": "^8.0.0", + "pouchdb-adapter-idb": "^8.0.0", + "pouchdb-core": "^8.0.0", + "pouchdb-find": "^8.0.0", + "pouchdb-mapreduce": "^8.0.0", + "pouchdb-replication": "^8.0.0", + "pouchdb-utils": "file:src/lib/src/patches/pouchdb-utils", "svelte": "^3.53.1", "svelte-preprocess": "^4.10.7", + "transform-pouch": "^2.0.0", "tslib": "^2.4.1", "typescript": "^4.9.3" }, diff --git a/src/ObsidianLiveSyncSettingTab.ts b/src/ObsidianLiveSyncSettingTab.ts index 52cbcc2..2abd22b 100644 --- a/src/ObsidianLiveSyncSettingTab.ts +++ b/src/ObsidianLiveSyncSettingTab.ts @@ -133,6 +133,7 @@ export class ObsidianLiveSyncSettingTab extends PluginSettingTab { if (this.plugin.settings.syncOnFileOpen) return true; if (this.plugin.settings.syncOnSave) return true; if (this.plugin.settings.syncOnStart) return true; + if (this.plugin.settings.syncAfterMerge) return true; if (this.plugin.localDatabase.syncStatus == "CONNECTED") return true; if (this.plugin.localDatabase.syncStatus == "PAUSED") return true; return false; @@ -144,7 +145,7 @@ export class ObsidianLiveSyncSettingTab extends PluginSettingTab { new Setting(setupWizardEl) .setName("Discard the existing configuration and set up") .addButton((text) => { - text.setButtonText("Next").onClick(async () => { + text.setButtonText("Next").onClick(() => { if (JSON.stringify(this.plugin.settings) != JSON.stringify(DEFAULT_SETTINGS)) { this.plugin.localDatabase.closeReplication(); this.plugin.settings = { ...DEFAULT_SETTINGS }; @@ -170,6 +171,7 @@ export class ObsidianLiveSyncSettingTab extends PluginSettingTab { this.plugin.settings.syncOnSave = false; this.plugin.settings.syncOnStart = false; this.plugin.settings.syncOnFileOpen = false; + this.plugin.settings.syncAfterMerge = false; this.plugin.localDatabase.closeReplication(); await this.plugin.saveSettings(); containerEl.addClass("isWizard"); @@ -226,7 +228,7 @@ export class ObsidianLiveSyncSettingTab extends PluginSettingTab { syncLive.forEach((e) => { e.setDisabled(false).setTooltip(""); }); - } else if (this.plugin.settings.syncOnFileOpen || this.plugin.settings.syncOnSave || this.plugin.settings.syncOnStart || this.plugin.settings.periodicReplication) { + } else if (this.plugin.settings.syncOnFileOpen || this.plugin.settings.syncOnSave || this.plugin.settings.syncOnStart || this.plugin.settings.periodicReplication || this.plugin.settings.syncAfterMerge) { syncNonLive.forEach((e) => { e.setDisabled(false).setTooltip(""); }); @@ -387,6 +389,7 @@ export class ObsidianLiveSyncSettingTab extends PluginSettingTab { this.plugin.settings.syncOnSave = false; this.plugin.settings.syncOnStart = false; this.plugin.settings.syncOnFileOpen = false; + this.plugin.settings.syncAfterMerge = false; this.plugin.settings.encrypt = this.plugin.settings.workingEncrypt; this.plugin.settings.passphrase = this.plugin.settings.workingPassphrase; this.plugin.settings.useDynamicIterationCount = this.plugin.settings.workingUseDynamicIterationCount; @@ -433,7 +436,7 @@ export class ObsidianLiveSyncSettingTab extends PluginSettingTab { this.plugin.settings.syncOnSave = false; this.plugin.settings.syncOnStart = false; this.plugin.settings.syncOnFileOpen = false; - + this.plugin.settings.syncAfterMerge = false; await this.plugin.saveSettings(); applyDisplayEnabled(); @@ -693,7 +696,7 @@ export class ObsidianLiveSyncSettingTab extends PluginSettingTab { .setButtonText("Next") .setClass("mod-cta") .setDisabled(false) - .onClick(async () => { + .onClick(() => { if (!this.plugin.settings.encrypt) { this.plugin.settings.passphrase = ""; } @@ -714,7 +717,7 @@ export class ObsidianLiveSyncSettingTab extends PluginSettingTab { .setButtonText("Discard exist database and proceed") .setDisabled(false) .setWarning() - .onClick(async () => { + .onClick(() => { if (!this.plugin.settings.encrypt) { this.plugin.settings.passphrase = ""; } @@ -793,7 +796,7 @@ export class ObsidianLiveSyncSettingTab extends PluginSettingTab { button .setButtonText("Next") .setDisabled(false) - .onClick(async () => { + .onClick(() => { changeDisplay("40"); }) ); @@ -949,7 +952,17 @@ export class ObsidianLiveSyncSettingTab extends PluginSettingTab { await this.plugin.saveSettings(); applyDisplayEnabled(); }) - ) + ), + new Setting(containerSyncSettingEl) + .setName("Sync after merging file") + .setDesc("Sync automatically after merging files") + .addToggle((toggle) => + toggle.setValue(this.plugin.settings.syncAfterMerge).onChange(async (value) => { + this.plugin.settings.syncAfterMerge = value; + await this.plugin.saveSettings(); + applyDisplayEnabled(); + }) + ), ); new Setting(containerSyncSettingEl) @@ -1272,6 +1285,7 @@ export class ObsidianLiveSyncSettingTab extends PluginSettingTab { this.plugin.settings.syncOnSave = false; this.plugin.settings.syncOnStart = false; this.plugin.settings.syncOnFileOpen = false; + this.plugin.settings.syncAfterMerge = false; if (currentPreset == "LIVESYNC") { this.plugin.settings.liveSync = true; Logger("Synchronization setting configured as LiveSync.", LOG_LEVEL.NOTICE); @@ -1281,6 +1295,7 @@ export class ObsidianLiveSyncSettingTab extends PluginSettingTab { this.plugin.settings.syncOnSave = false; this.plugin.settings.syncOnStart = true; this.plugin.settings.syncOnFileOpen = true; + this.plugin.settings.syncAfterMerge = true; Logger("Synchronization setting configured as Periodic sync with batch database update.", LOG_LEVEL.NOTICE); } else { Logger("All synchronization disabled.", LOG_LEVEL.NOTICE); diff --git a/src/lib b/src/lib index bfad1f8..4ef5986 160000 --- a/src/lib +++ b/src/lib @@ -1 +1 @@ -Subproject commit bfad1f86d3b291bf0c742fe6e6464c22b87affb2 +Subproject commit 4ef5986b4d5b498334cc1870ef981fd646c8ba4a diff --git a/src/main.ts b/src/main.ts index ef6559e..fbf4f02 100644 --- a/src/main.ts +++ b/src/main.ts @@ -309,6 +309,7 @@ export default class ObsidianLiveSyncPlugin extends Plugin { this.settings.syncOnSave = false; this.settings.syncOnStart = false; this.settings.syncOnFileOpen = false; + this.settings.syncAfterMerge = false; this.settings.periodicReplication = false; this.settings.versionUpFlash = "Self-hosted LiveSync has been upgraded and some behaviors have changed incompatibly. All automatic synchronization is now disabled temporary. Ensure that other devices are also upgraded, and enable synchronization again."; this.saveSettings(); @@ -375,6 +376,7 @@ export default class ObsidianLiveSyncPlugin extends Plugin { this.settings.syncOnSave = false; this.settings.syncOnStart = false; this.settings.syncOnFileOpen = false; + this.settings.syncAfterMerge = false; this.settings.autoSweepPlugins = false; this.settings.usePluginSync = false; this.settings.suspendFileWatching = true; @@ -2297,6 +2299,9 @@ export default class ObsidianLiveSyncPlugin extends Plugin { } await this.pullFile(filename); Logger("concat both file"); + if (this.settings.syncAfterMerge && !this.suspended) { + await this.replicate(); + } setTimeout(() => { //resolved, check again. this.showIfConflicted(filename); @@ -2304,9 +2309,12 @@ export default class ObsidianLiveSyncPlugin extends Plugin { } else if (toDelete == null) { Logger("Leave it still conflicted"); } else { - Logger(`Conflict resolved:${filename}`); await this.localDatabase.deleteDBEntry(filename, { rev: toDelete }); await this.pullFile(filename, null, true, toKeep); + Logger(`Conflict resolved:${filename}`); + if (this.settings.syncAfterMerge && !this.suspended) { + await this.replicate(); + } setTimeout(() => { //resolved, check again. this.showIfConflicted(filename); @@ -2354,6 +2362,9 @@ export default class ObsidianLiveSyncPlugin extends Plugin { } if (conflictCheckResult === true) { //auto resolved, but need check again; + if (this.settings.syncAfterMerge && !this.suspended) { + await this.replicate(); + } Logger("conflict:Automatically merged, but we have to check it again"); setTimeout(() => { this.showIfConflicted(filename); @@ -2970,7 +2981,7 @@ export default class ObsidianLiveSyncPlugin extends Plugin { const conflictedRevNo = Number(conflictedRev.split("-")[0]); //Search const revFrom = (await this.localDatabase.localDatabase.get(id, { revs_info: true })) as unknown as LoadedEntry & PouchDB.Core.GetMeta; - const commonBase = revFrom._revs_info.filter(e => e.status == "available" && Number(e.rev.split("-")[0]) < conflictedRevNo).first().rev ?? ""; + const commonBase = revFrom._revs_info.filter(e => e.status == "available" && Number(e.rev.split("-")[0]) < conflictedRevNo).first()?.rev ?? ""; const result = await this.mergeObject(id, commonBase, doc._rev, conflictedRev); if (result) { Logger(`Object merge:${id}`, LOG_LEVEL.INFO);