diff --git a/package-lock.json b/package-lock.json index 38e8083..f3d0883 100644 --- a/package-lock.json +++ b/package-lock.json @@ -540,8 +540,9 @@ } }, "node_modules/fetch-cookie": { - "version": "0.10.1", - "integrity": "sha512-beB+VEd4cNeVG1PY+ee74+PkuCQnik78pgLi5Ah/7qdUfov8IctU0vLUbBT8/10Ma5GMBeI4wtxhGrEfKNYs2g==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.11.0.tgz", + "integrity": "sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA==", "dependencies": { "tough-cookie": "^2.3.3 || ^3.0.1 || ^4.0.0" }, @@ -786,10 +787,22 @@ "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==" }, "node_modules/node-fetch": { - "version": "2.6.0", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, "engines": { "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, "node_modules/node-gyp-build": { @@ -821,15 +834,16 @@ } }, "node_modules/pouchdb": { - "version": "7.2.2", - "integrity": "sha512-5gf5nw5XH/2H/DJj8b0YkvG9fhA/4Jt6kL0Y8QjtztVjb1y4J19Rg4rG+fUbXu96gsUrlyIvZ3XfM0b4mogGmw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb/-/pouchdb-7.3.0.tgz", + "integrity": "sha512-OwsIQGXsfx3TrU1pLruj6PGSwFH+h5k4hGNxFkZ76Um7/ZI8F5TzUHFrpldVVIhfXYi2vP31q0q7ot1FSLFYOw==", "dependencies": { "abort-controller": "3.0.0", "argsarray": "0.0.1", - "buffer-from": "1.1.1", + "buffer-from": "1.1.2", "clone-buffer": "1.0.0", "double-ended-queue": "2.1.0-0", - "fetch-cookie": "0.10.1", + "fetch-cookie": "0.11.0", "immediate": "3.3.0", "inherits": "2.0.4", "level": "6.0.1", @@ -838,37 +852,170 @@ "leveldown": "5.6.0", "levelup": "4.4.0", "ltgt": "2.2.1", - "node-fetch": "2.6.0", + "node-fetch": "2.6.7", "readable-stream": "1.1.14", - "spark-md5": "3.0.1", + "spark-md5": "3.0.2", "through2": "3.0.2", - "uuid": "8.1.0", + "uuid": "8.3.2", "vuvuzela": "1.0.3" } }, "node_modules/pouchdb-abstract-mapreduce": { - "version": "7.2.2", - "integrity": "sha512-7HWN/2yV2JkwMnGnlp84lGvFtnm0Q55NiBUdbBcaT810+clCGKvhssBCrXnmwShD1SXTwT83aszsgiSfW+SnBA==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.3.0.tgz", + "integrity": "sha512-+2fVt3SDh7D776lIGbYZOsKX5js1aUyUw7iJaTGitxSdQ2ObWSTrr3SUrj5Qo1CkgPXwRM3Tdoq/53JYAa2qCA==", "dependencies": { - "pouchdb-binary-utils": "7.2.2", - "pouchdb-collate": "7.2.2", - "pouchdb-collections": "7.2.2", - "pouchdb-errors": "7.2.2", - "pouchdb-fetch": "7.2.2", - "pouchdb-mapreduce-utils": "7.2.2", - "pouchdb-md5": "7.2.2", - "pouchdb-utils": "7.2.2" + "pouchdb-binary-utils": "7.3.0", + "pouchdb-collate": "7.3.0", + "pouchdb-collections": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-fetch": "7.3.0", + "pouchdb-mapreduce-utils": "7.3.0", + "pouchdb-md5": "7.3.0", + "pouchdb-utils": "7.3.0" + } + }, + "node_modules/pouchdb-abstract-mapreduce/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==" + }, + "node_modules/pouchdb-abstract-mapreduce/node_modules/pouchdb-binary-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz", + "integrity": "sha512-xvBH/XGHGcou2vkEzszJxkCc7YElfRUrkLUg51Jbdmh1mogLDUO0bU3Tj6TOIIJfRkQrU/HV+dDkMAhsil0amQ==", + "dependencies": { + "buffer-from": "1.1.2" + } + }, + "node_modules/pouchdb-abstract-mapreduce/node_modules/pouchdb-collate": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-collate/-/pouchdb-collate-7.3.0.tgz", + "integrity": "sha512-ys7rXKtEr6cfghgUjknwFJiOkITebV6JmeTybJKCzMV0r2luXu0OoPQsKVpE/wbM/3F5LxfpbFKGFpPcfGMvTA==" + }, + "node_modules/pouchdb-abstract-mapreduce/node_modules/pouchdb-collections": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.3.0.tgz", + "integrity": "sha512-Xr54m2+fErShXn+qAT4xwqJ+8NwddNPeTMJT4z4k1sZsrwfHmZsWbsKAyGPMF04eQaaU+7DDRMciu2VzaBUXyg==" + }, + "node_modules/pouchdb-abstract-mapreduce/node_modules/pouchdb-errors": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.3.0.tgz", + "integrity": "sha512-dTBbIC1BbCy6J9W/Csg5xROgb3wJN3HpbgAJHHSEtAkb8oA45KZmU3ZwEpNhf0AfPuQm4XgW1936PvlDlGgJiw==", + "dependencies": { + "inherits": "2.0.4" + } + }, + "node_modules/pouchdb-abstract-mapreduce/node_modules/pouchdb-md5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz", + "integrity": "sha512-wL04QgoKyd/L/TV5gxgcvlEyCJiZoXCOEFJklTzkdza/kBQNJGPH7i0ZhKa7Sb+AvZYoWZHddf1Zgv7rBScHkA==", + "dependencies": { + "pouchdb-binary-utils": "7.3.0", + "spark-md5": "3.0.2" + } + }, + "node_modules/pouchdb-abstract-mapreduce/node_modules/pouchdb-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz", + "integrity": "sha512-HH+5IXXWn/ZgVCSnrlydBMYn6MabT7RS7SNoo9w8qVH9efpZSp3eLchw6yMQNLw8LQefWmbbskiHV9VgJmSVWQ==", + "dependencies": { + "argsarray": "0.0.1", + "clone-buffer": "1.0.0", + "immediate": "3.3.0", + "inherits": "2.0.4", + "pouchdb-collections": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-md5": "7.3.0", + "uuid": "8.3.2" + } + }, + "node_modules/pouchdb-abstract-mapreduce/node_modules/spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" + }, + "node_modules/pouchdb-abstract-mapreduce/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==", + "bin": { + "uuid": "dist/bin/uuid" } }, "node_modules/pouchdb-adapter-http": { - "version": "7.2.2", - "integrity": "sha512-6Z6umJq7b5sRXwDM3CLfHrGhJPMR02M5osUxkwH1PpqcTF0EXPJvX+PtzTjSPcXWfaK6kgH3zNrRKQDdpzjI9A==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-adapter-http/-/pouchdb-adapter-http-7.3.0.tgz", + "integrity": "sha512-7nNfpbvL0MEu3RtwKkhi3VTxWDrSfEKyrWspSAhsFsn980okth5SRsEIQw0eJ4yNgJaVd47B/mUYVNphpyMTyQ==", "dependencies": { "argsarray": "0.0.1", - "pouchdb-binary-utils": "7.2.2", - "pouchdb-errors": "7.2.2", - "pouchdb-fetch": "7.2.2", - "pouchdb-utils": "7.2.2" + "pouchdb-binary-utils": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-fetch": "7.3.0", + "pouchdb-utils": "7.3.0" + } + }, + "node_modules/pouchdb-adapter-http/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==" + }, + "node_modules/pouchdb-adapter-http/node_modules/pouchdb-binary-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz", + "integrity": "sha512-xvBH/XGHGcou2vkEzszJxkCc7YElfRUrkLUg51Jbdmh1mogLDUO0bU3Tj6TOIIJfRkQrU/HV+dDkMAhsil0amQ==", + "dependencies": { + "buffer-from": "1.1.2" + } + }, + "node_modules/pouchdb-adapter-http/node_modules/pouchdb-collections": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.3.0.tgz", + "integrity": "sha512-Xr54m2+fErShXn+qAT4xwqJ+8NwddNPeTMJT4z4k1sZsrwfHmZsWbsKAyGPMF04eQaaU+7DDRMciu2VzaBUXyg==" + }, + "node_modules/pouchdb-adapter-http/node_modules/pouchdb-errors": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.3.0.tgz", + "integrity": "sha512-dTBbIC1BbCy6J9W/Csg5xROgb3wJN3HpbgAJHHSEtAkb8oA45KZmU3ZwEpNhf0AfPuQm4XgW1936PvlDlGgJiw==", + "dependencies": { + "inherits": "2.0.4" + } + }, + "node_modules/pouchdb-adapter-http/node_modules/pouchdb-md5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz", + "integrity": "sha512-wL04QgoKyd/L/TV5gxgcvlEyCJiZoXCOEFJklTzkdza/kBQNJGPH7i0ZhKa7Sb+AvZYoWZHddf1Zgv7rBScHkA==", + "dependencies": { + "pouchdb-binary-utils": "7.3.0", + "spark-md5": "3.0.2" + } + }, + "node_modules/pouchdb-adapter-http/node_modules/pouchdb-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz", + "integrity": "sha512-HH+5IXXWn/ZgVCSnrlydBMYn6MabT7RS7SNoo9w8qVH9efpZSp3eLchw6yMQNLw8LQefWmbbskiHV9VgJmSVWQ==", + "dependencies": { + "argsarray": "0.0.1", + "clone-buffer": "1.0.0", + "immediate": "3.3.0", + "inherits": "2.0.4", + "pouchdb-collections": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-md5": "7.3.0", + "uuid": "8.3.2" + } + }, + "node_modules/pouchdb-adapter-http/node_modules/spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" + }, + "node_modules/pouchdb-adapter-http/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==", + "bin": { + "uuid": "dist/bin/uuid" } }, "node_modules/pouchdb-adapter-leveldb": { @@ -924,12 +1071,76 @@ } }, "node_modules/pouchdb-changes-filter": { - "version": "7.2.2", - "integrity": "sha512-1txJnTtL/C7zrq+spLt3pH9EDHTWmLLwp2zx8zUQrkt6eQtuLuXUI7G84xe+hfpU0rQvUzp/APYMnko0/6Rw0A==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-changes-filter/-/pouchdb-changes-filter-7.3.0.tgz", + "integrity": "sha512-9E/EC9BP9dH9sfqUBdcWlR5HHeDdWqP82MmdEtg5c8spgxttYPwqrPfSHa7T2n55IRnaIoQbVyndmfAoz9GsOw==", "dependencies": { - "pouchdb-errors": "7.2.2", - "pouchdb-selector-core": "7.2.2", - "pouchdb-utils": "7.2.2" + "pouchdb-errors": "7.3.0", + "pouchdb-selector-core": "7.3.0", + "pouchdb-utils": "7.3.0" + } + }, + "node_modules/pouchdb-changes-filter/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==" + }, + "node_modules/pouchdb-changes-filter/node_modules/pouchdb-binary-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz", + "integrity": "sha512-xvBH/XGHGcou2vkEzszJxkCc7YElfRUrkLUg51Jbdmh1mogLDUO0bU3Tj6TOIIJfRkQrU/HV+dDkMAhsil0amQ==", + "dependencies": { + "buffer-from": "1.1.2" + } + }, + "node_modules/pouchdb-changes-filter/node_modules/pouchdb-collections": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.3.0.tgz", + "integrity": "sha512-Xr54m2+fErShXn+qAT4xwqJ+8NwddNPeTMJT4z4k1sZsrwfHmZsWbsKAyGPMF04eQaaU+7DDRMciu2VzaBUXyg==" + }, + "node_modules/pouchdb-changes-filter/node_modules/pouchdb-errors": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.3.0.tgz", + "integrity": "sha512-dTBbIC1BbCy6J9W/Csg5xROgb3wJN3HpbgAJHHSEtAkb8oA45KZmU3ZwEpNhf0AfPuQm4XgW1936PvlDlGgJiw==", + "dependencies": { + "inherits": "2.0.4" + } + }, + "node_modules/pouchdb-changes-filter/node_modules/pouchdb-md5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz", + "integrity": "sha512-wL04QgoKyd/L/TV5gxgcvlEyCJiZoXCOEFJklTzkdza/kBQNJGPH7i0ZhKa7Sb+AvZYoWZHddf1Zgv7rBScHkA==", + "dependencies": { + "pouchdb-binary-utils": "7.3.0", + "spark-md5": "3.0.2" + } + }, + "node_modules/pouchdb-changes-filter/node_modules/pouchdb-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz", + "integrity": "sha512-HH+5IXXWn/ZgVCSnrlydBMYn6MabT7RS7SNoo9w8qVH9efpZSp3eLchw6yMQNLw8LQefWmbbskiHV9VgJmSVWQ==", + "dependencies": { + "argsarray": "0.0.1", + "clone-buffer": "1.0.0", + "immediate": "3.3.0", + "inherits": "2.0.4", + "pouchdb-collections": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-md5": "7.3.0", + "uuid": "8.3.2" + } + }, + "node_modules/pouchdb-changes-filter/node_modules/spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" + }, + "node_modules/pouchdb-changes-filter/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==", + "bin": { + "uuid": "dist/bin/uuid" } }, "node_modules/pouchdb-checkpointer": { @@ -949,17 +1160,86 @@ "integrity": "sha512-6O9zyAYlp3UdtfneiMYuOCWdUCQNo2bgdjvNsMSacQX+3g8WvIoFQCYJjZZCpTttQGb+MHeRMr8m2U95lhJTew==" }, "node_modules/pouchdb-core": { - "version": "7.2.2", - "integrity": "sha512-AnMmSH+xx12Vk6oASDRQoElXfV9fSn8MIwfus0oa2lqkxowx4bvidofZbhZfKEiE6QgKwFEOBzs56MS3znI8TQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-core/-/pouchdb-core-7.3.0.tgz", + "integrity": "sha512-fpEbjrYzmZivSupl7V0Aa2vHivyJHi9gx7+d021Wxajx4br515eYcN6Whk/L0L4xgoDVKoqUwmv+XgEF8EZhwg==", "dependencies": { "argsarray": "0.0.1", "inherits": "2.0.4", - "pouchdb-changes-filter": "7.2.2", - "pouchdb-collections": "7.2.2", - "pouchdb-errors": "7.2.2", - "pouchdb-fetch": "7.2.2", - "pouchdb-merge": "7.2.2", - "pouchdb-utils": "7.2.2" + "pouchdb-changes-filter": "7.3.0", + "pouchdb-collections": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-fetch": "7.3.0", + "pouchdb-merge": "7.3.0", + "pouchdb-utils": "7.3.0" + } + }, + "node_modules/pouchdb-core/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==" + }, + "node_modules/pouchdb-core/node_modules/pouchdb-binary-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz", + "integrity": "sha512-xvBH/XGHGcou2vkEzszJxkCc7YElfRUrkLUg51Jbdmh1mogLDUO0bU3Tj6TOIIJfRkQrU/HV+dDkMAhsil0amQ==", + "dependencies": { + "buffer-from": "1.1.2" + } + }, + "node_modules/pouchdb-core/node_modules/pouchdb-collections": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.3.0.tgz", + "integrity": "sha512-Xr54m2+fErShXn+qAT4xwqJ+8NwddNPeTMJT4z4k1sZsrwfHmZsWbsKAyGPMF04eQaaU+7DDRMciu2VzaBUXyg==" + }, + "node_modules/pouchdb-core/node_modules/pouchdb-errors": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.3.0.tgz", + "integrity": "sha512-dTBbIC1BbCy6J9W/Csg5xROgb3wJN3HpbgAJHHSEtAkb8oA45KZmU3ZwEpNhf0AfPuQm4XgW1936PvlDlGgJiw==", + "dependencies": { + "inherits": "2.0.4" + } + }, + "node_modules/pouchdb-core/node_modules/pouchdb-md5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz", + "integrity": "sha512-wL04QgoKyd/L/TV5gxgcvlEyCJiZoXCOEFJklTzkdza/kBQNJGPH7i0ZhKa7Sb+AvZYoWZHddf1Zgv7rBScHkA==", + "dependencies": { + "pouchdb-binary-utils": "7.3.0", + "spark-md5": "3.0.2" + } + }, + "node_modules/pouchdb-core/node_modules/pouchdb-merge": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-merge/-/pouchdb-merge-7.3.0.tgz", + "integrity": "sha512-E7LmchMzwYFm6V8OBxejzARLisanpksOju2LEfuiYnotGfNDeW7MByP0qBH0/zF8BfUyyjA1cl7ByaEpsapkeQ==" + }, + "node_modules/pouchdb-core/node_modules/pouchdb-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz", + "integrity": "sha512-HH+5IXXWn/ZgVCSnrlydBMYn6MabT7RS7SNoo9w8qVH9efpZSp3eLchw6yMQNLw8LQefWmbbskiHV9VgJmSVWQ==", + "dependencies": { + "argsarray": "0.0.1", + "clone-buffer": "1.0.0", + "immediate": "3.3.0", + "inherits": "2.0.4", + "pouchdb-collections": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-md5": "7.3.0", + "uuid": "8.3.2" + } + }, + "node_modules/pouchdb-core/node_modules/spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" + }, + "node_modules/pouchdb-core/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==", + "bin": { + "uuid": "dist/bin/uuid" } }, "node_modules/pouchdb-errors": { @@ -970,12 +1250,13 @@ } }, "node_modules/pouchdb-fetch": { - "version": "7.2.2", - "integrity": "sha512-lUHmaG6U3zjdMkh8Vob9GvEiRGwJfXKE02aZfjiVQgew+9SLkuOxNw3y2q4d1B6mBd273y1k2Lm0IAziRNxQnA==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-fetch/-/pouchdb-fetch-7.3.0.tgz", + "integrity": "sha512-8/lcg8iMDG+GVs1dHNXA4ktJSEpH71dHU3xesMJ25tNQOqfAaaWrkfz9j71ZYDDkveLYE6UjUzl/sDacu2hSjw==", "dependencies": { "abort-controller": "3.0.0", - "fetch-cookie": "0.10.1", - "node-fetch": "2.6.0" + "fetch-cookie": "0.11.0", + "node-fetch": "2.6.7" } }, "node_modules/pouchdb-find": { @@ -997,51 +1278,6 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "node_modules/pouchdb-find/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==", - "dependencies": { - "tough-cookie": "^2.3.3 || ^3.0.1 || ^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pouchdb-find/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==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/pouchdb-find/node_modules/pouchdb-abstract-mapreduce": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.3.0.tgz", - "integrity": "sha512-+2fVt3SDh7D776lIGbYZOsKX5js1aUyUw7iJaTGitxSdQ2ObWSTrr3SUrj5Qo1CkgPXwRM3Tdoq/53JYAa2qCA==", - "dependencies": { - "pouchdb-binary-utils": "7.3.0", - "pouchdb-collate": "7.3.0", - "pouchdb-collections": "7.3.0", - "pouchdb-errors": "7.3.0", - "pouchdb-fetch": "7.3.0", - "pouchdb-mapreduce-utils": "7.3.0", - "pouchdb-md5": "7.3.0", - "pouchdb-utils": "7.3.0" - } - }, "node_modules/pouchdb-find/node_modules/pouchdb-binary-utils": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz", @@ -1068,27 +1304,6 @@ "inherits": "2.0.4" } }, - "node_modules/pouchdb-find/node_modules/pouchdb-fetch": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/pouchdb-fetch/-/pouchdb-fetch-7.3.0.tgz", - "integrity": "sha512-8/lcg8iMDG+GVs1dHNXA4ktJSEpH71dHU3xesMJ25tNQOqfAaaWrkfz9j71ZYDDkveLYE6UjUzl/sDacu2hSjw==", - "dependencies": { - "abort-controller": "3.0.0", - "fetch-cookie": "0.11.0", - "node-fetch": "2.6.7" - } - }, - "node_modules/pouchdb-find/node_modules/pouchdb-mapreduce-utils": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-7.3.0.tgz", - "integrity": "sha512-KDVSd+H2r+XWTrQfKWV71SknDDYRjYXoeWs0ZQl3xITHCcTl+fIgqyagg/XN+Zy/U9LeLPGMe2JdgPx9H8lJgw==", - "dependencies": { - "argsarray": "0.0.1", - "inherits": "2.0.4", - "pouchdb-collections": "7.3.0", - "pouchdb-utils": "7.3.0" - } - }, "node_modules/pouchdb-find/node_modules/pouchdb-md5": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz", @@ -1098,15 +1313,6 @@ "spark-md5": "3.0.2" } }, - "node_modules/pouchdb-find/node_modules/pouchdb-selector-core": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/pouchdb-selector-core/-/pouchdb-selector-core-7.3.0.tgz", - "integrity": "sha512-sK/cCrIGeL9ImcMhKGcwa54+bzX7Wv4hhVV+oUW3T1Nasaoxh+Muem1GuA+x1+SbTCE8y37rUg8i6DIOhX51ew==", - "dependencies": { - "pouchdb-collate": "7.3.0", - "pouchdb-utils": "7.3.0" - } - }, "node_modules/pouchdb-find/node_modules/pouchdb-utils": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz", @@ -1151,22 +1357,150 @@ } }, "node_modules/pouchdb-mapreduce": { - "version": "7.2.2", - "integrity": "sha512-uDXEzznnZmCz3YJQ2AwVhiUDCYOaIypg1EZ2VmYOCoJnUPfmOp6LY/MPBug/sqq/BDrQCUIEtKs+Sva/L6m8xg==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-mapreduce/-/pouchdb-mapreduce-7.3.0.tgz", + "integrity": "sha512-lhSQvUvHTt9c5Sd1stqqsSB8AYoKx99BHCRy2YxNEKbWCQdEIZqiPfRJcSlm2BtPz8hsA6yHMbPz20nXMep2yg==", "dependencies": { - "pouchdb-abstract-mapreduce": "7.2.2", - "pouchdb-mapreduce-utils": "7.2.2", - "pouchdb-utils": "7.2.2" + "pouchdb-abstract-mapreduce": "7.3.0", + "pouchdb-mapreduce-utils": "7.3.0", + "pouchdb-utils": "7.3.0" } }, "node_modules/pouchdb-mapreduce-utils": { - "version": "7.2.2", - "integrity": "sha512-rAllb73hIkU8rU2LJNbzlcj91KuulpwQu804/F6xF3fhZKC/4JQMClahk+N/+VATkpmLxp1zWmvmgdlwVU4HtQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-7.3.0.tgz", + "integrity": "sha512-KDVSd+H2r+XWTrQfKWV71SknDDYRjYXoeWs0ZQl3xITHCcTl+fIgqyagg/XN+Zy/U9LeLPGMe2JdgPx9H8lJgw==", "dependencies": { "argsarray": "0.0.1", "inherits": "2.0.4", - "pouchdb-collections": "7.2.2", - "pouchdb-utils": "7.2.2" + "pouchdb-collections": "7.3.0", + "pouchdb-utils": "7.3.0" + } + }, + "node_modules/pouchdb-mapreduce-utils/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==" + }, + "node_modules/pouchdb-mapreduce-utils/node_modules/pouchdb-binary-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz", + "integrity": "sha512-xvBH/XGHGcou2vkEzszJxkCc7YElfRUrkLUg51Jbdmh1mogLDUO0bU3Tj6TOIIJfRkQrU/HV+dDkMAhsil0amQ==", + "dependencies": { + "buffer-from": "1.1.2" + } + }, + "node_modules/pouchdb-mapreduce-utils/node_modules/pouchdb-collections": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.3.0.tgz", + "integrity": "sha512-Xr54m2+fErShXn+qAT4xwqJ+8NwddNPeTMJT4z4k1sZsrwfHmZsWbsKAyGPMF04eQaaU+7DDRMciu2VzaBUXyg==" + }, + "node_modules/pouchdb-mapreduce-utils/node_modules/pouchdb-errors": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.3.0.tgz", + "integrity": "sha512-dTBbIC1BbCy6J9W/Csg5xROgb3wJN3HpbgAJHHSEtAkb8oA45KZmU3ZwEpNhf0AfPuQm4XgW1936PvlDlGgJiw==", + "dependencies": { + "inherits": "2.0.4" + } + }, + "node_modules/pouchdb-mapreduce-utils/node_modules/pouchdb-md5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz", + "integrity": "sha512-wL04QgoKyd/L/TV5gxgcvlEyCJiZoXCOEFJklTzkdza/kBQNJGPH7i0ZhKa7Sb+AvZYoWZHddf1Zgv7rBScHkA==", + "dependencies": { + "pouchdb-binary-utils": "7.3.0", + "spark-md5": "3.0.2" + } + }, + "node_modules/pouchdb-mapreduce-utils/node_modules/pouchdb-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz", + "integrity": "sha512-HH+5IXXWn/ZgVCSnrlydBMYn6MabT7RS7SNoo9w8qVH9efpZSp3eLchw6yMQNLw8LQefWmbbskiHV9VgJmSVWQ==", + "dependencies": { + "argsarray": "0.0.1", + "clone-buffer": "1.0.0", + "immediate": "3.3.0", + "inherits": "2.0.4", + "pouchdb-collections": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-md5": "7.3.0", + "uuid": "8.3.2" + } + }, + "node_modules/pouchdb-mapreduce-utils/node_modules/spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" + }, + "node_modules/pouchdb-mapreduce-utils/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==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/pouchdb-mapreduce/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==" + }, + "node_modules/pouchdb-mapreduce/node_modules/pouchdb-binary-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz", + "integrity": "sha512-xvBH/XGHGcou2vkEzszJxkCc7YElfRUrkLUg51Jbdmh1mogLDUO0bU3Tj6TOIIJfRkQrU/HV+dDkMAhsil0amQ==", + "dependencies": { + "buffer-from": "1.1.2" + } + }, + "node_modules/pouchdb-mapreduce/node_modules/pouchdb-collections": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.3.0.tgz", + "integrity": "sha512-Xr54m2+fErShXn+qAT4xwqJ+8NwddNPeTMJT4z4k1sZsrwfHmZsWbsKAyGPMF04eQaaU+7DDRMciu2VzaBUXyg==" + }, + "node_modules/pouchdb-mapreduce/node_modules/pouchdb-errors": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.3.0.tgz", + "integrity": "sha512-dTBbIC1BbCy6J9W/Csg5xROgb3wJN3HpbgAJHHSEtAkb8oA45KZmU3ZwEpNhf0AfPuQm4XgW1936PvlDlGgJiw==", + "dependencies": { + "inherits": "2.0.4" + } + }, + "node_modules/pouchdb-mapreduce/node_modules/pouchdb-md5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz", + "integrity": "sha512-wL04QgoKyd/L/TV5gxgcvlEyCJiZoXCOEFJklTzkdza/kBQNJGPH7i0ZhKa7Sb+AvZYoWZHddf1Zgv7rBScHkA==", + "dependencies": { + "pouchdb-binary-utils": "7.3.0", + "spark-md5": "3.0.2" + } + }, + "node_modules/pouchdb-mapreduce/node_modules/pouchdb-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz", + "integrity": "sha512-HH+5IXXWn/ZgVCSnrlydBMYn6MabT7RS7SNoo9w8qVH9efpZSp3eLchw6yMQNLw8LQefWmbbskiHV9VgJmSVWQ==", + "dependencies": { + "argsarray": "0.0.1", + "clone-buffer": "1.0.0", + "immediate": "3.3.0", + "inherits": "2.0.4", + "pouchdb-collections": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-md5": "7.3.0", + "uuid": "8.3.2" + } + }, + "node_modules/pouchdb-mapreduce/node_modules/spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" + }, + "node_modules/pouchdb-mapreduce/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==", + "bin": { + "uuid": "dist/bin/uuid" } }, "node_modules/pouchdb-md5": { @@ -1182,15 +1516,16 @@ "integrity": "sha512-6yzKJfjIchBaS7Tusuk8280WJdESzFfQ0sb4jeMUNnrqs4Cx3b0DIEOYTRRD9EJDM+je7D3AZZ4AT0tFw8gb4A==" }, "node_modules/pouchdb-node": { - "version": "7.2.2", - "integrity": "sha512-r1JenKn+HWXAK8EMcoWp8rXzeBVGcnPd/IOiOHwac36rUAZkKBFrWnS1jkJcbJcghIFxTn1w9tL0HBdaR1PFSg==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-node/-/pouchdb-node-7.3.0.tgz", + "integrity": "sha512-8UaLY7/7+S1ciQntWs67kB6rJiklaUdjonLSB3dNWtt0WCfel1t7Yh6+Vx1VSCrb4TALRWhqn0Jn0rBoATekjg==", "dependencies": { "abort-controller": "3.0.0", "argsarray": "0.0.1", - "buffer-from": "1.1.1", + "buffer-from": "1.1.2", "clone-buffer": "1.0.0", "double-ended-queue": "2.1.0-0", - "fetch-cookie": "0.10.1", + "fetch-cookie": "0.11.0", "inherits": "2.0.4", "level": "6.0.1", "level-codec": "9.0.2", @@ -1198,13 +1533,18 @@ "leveldown": "5.6.0", "levelup": "4.4.0", "ltgt": "2.2.1", - "node-fetch": "2.6.0", + "node-fetch": "2.6.7", "readable-stream": "1.1.14", "through2": "3.0.2", - "uuid": "8.1.0", + "uuid": "8.3.2", "vuvuzela": "1.0.3" } }, + "node_modules/pouchdb-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==" + }, "node_modules/pouchdb-node/node_modules/readable-stream": { "version": "1.1.14", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", @@ -1219,6 +1559,14 @@ "version": "0.10.31", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, + "node_modules/pouchdb-node/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==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/pouchdb-replication": { "version": "7.2.2", "integrity": "sha512-+Q2zqXWaHPOut0jGMABplmlML+8jUzkefyxZXgU6bXSbC9kEJCBAkjaFeZsF10HpsQZ9tHZ577g5EOqj7V1lTQ==", @@ -1231,11 +1579,80 @@ } }, "node_modules/pouchdb-selector-core": { - "version": "7.2.2", - "integrity": "sha512-XYKCNv9oiNmSXV5+CgR9pkEkTFqxQGWplnVhO3W9P154H08lU0ZoNH02+uf+NjZ2kjse7Q1fxV4r401LEcGMMg==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-selector-core/-/pouchdb-selector-core-7.3.0.tgz", + "integrity": "sha512-sK/cCrIGeL9ImcMhKGcwa54+bzX7Wv4hhVV+oUW3T1Nasaoxh+Muem1GuA+x1+SbTCE8y37rUg8i6DIOhX51ew==", "dependencies": { - "pouchdb-collate": "7.2.2", - "pouchdb-utils": "7.2.2" + "pouchdb-collate": "7.3.0", + "pouchdb-utils": "7.3.0" + } + }, + "node_modules/pouchdb-selector-core/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==" + }, + "node_modules/pouchdb-selector-core/node_modules/pouchdb-binary-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz", + "integrity": "sha512-xvBH/XGHGcou2vkEzszJxkCc7YElfRUrkLUg51Jbdmh1mogLDUO0bU3Tj6TOIIJfRkQrU/HV+dDkMAhsil0amQ==", + "dependencies": { + "buffer-from": "1.1.2" + } + }, + "node_modules/pouchdb-selector-core/node_modules/pouchdb-collate": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-collate/-/pouchdb-collate-7.3.0.tgz", + "integrity": "sha512-ys7rXKtEr6cfghgUjknwFJiOkITebV6JmeTybJKCzMV0r2luXu0OoPQsKVpE/wbM/3F5LxfpbFKGFpPcfGMvTA==" + }, + "node_modules/pouchdb-selector-core/node_modules/pouchdb-collections": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.3.0.tgz", + "integrity": "sha512-Xr54m2+fErShXn+qAT4xwqJ+8NwddNPeTMJT4z4k1sZsrwfHmZsWbsKAyGPMF04eQaaU+7DDRMciu2VzaBUXyg==" + }, + "node_modules/pouchdb-selector-core/node_modules/pouchdb-errors": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.3.0.tgz", + "integrity": "sha512-dTBbIC1BbCy6J9W/Csg5xROgb3wJN3HpbgAJHHSEtAkb8oA45KZmU3ZwEpNhf0AfPuQm4XgW1936PvlDlGgJiw==", + "dependencies": { + "inherits": "2.0.4" + } + }, + "node_modules/pouchdb-selector-core/node_modules/pouchdb-md5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz", + "integrity": "sha512-wL04QgoKyd/L/TV5gxgcvlEyCJiZoXCOEFJklTzkdza/kBQNJGPH7i0ZhKa7Sb+AvZYoWZHddf1Zgv7rBScHkA==", + "dependencies": { + "pouchdb-binary-utils": "7.3.0", + "spark-md5": "3.0.2" + } + }, + "node_modules/pouchdb-selector-core/node_modules/pouchdb-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz", + "integrity": "sha512-HH+5IXXWn/ZgVCSnrlydBMYn6MabT7RS7SNoo9w8qVH9efpZSp3eLchw6yMQNLw8LQefWmbbskiHV9VgJmSVWQ==", + "dependencies": { + "argsarray": "0.0.1", + "clone-buffer": "1.0.0", + "immediate": "3.3.0", + "inherits": "2.0.4", + "pouchdb-collections": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-md5": "7.3.0", + "uuid": "8.3.2" + } + }, + "node_modules/pouchdb-selector-core/node_modules/spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" + }, + "node_modules/pouchdb-selector-core/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==", + "bin": { + "uuid": "dist/bin/uuid" } }, "node_modules/pouchdb-utils": { @@ -1257,6 +1674,11 @@ "resolved": "https://registry.npmjs.org/pouchdb-wrappers/-/pouchdb-wrappers-5.0.0.tgz", "integrity": "sha512-fXqsVn+rmlPtxaAIGaQP5TkiaT39OMwvMk+ScLLtHrmfXD2KBO6fe/qBl38N/rpTn0h/A058dPN4fLAHt550zA==" }, + "node_modules/pouchdb/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==" + }, "node_modules/pouchdb/node_modules/readable-stream": { "version": "1.1.14", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", @@ -1267,10 +1689,23 @@ "string_decoder": "~0.10.x" } }, + "node_modules/pouchdb/node_modules/spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" + }, "node_modules/pouchdb/node_modules/string_decoder": { "version": "0.10.31", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, + "node_modules/pouchdb/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==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/prr": { "version": "1.0.1", "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" @@ -1932,8 +2367,9 @@ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" }, "fetch-cookie": { - "version": "0.10.1", - "integrity": "sha512-beB+VEd4cNeVG1PY+ee74+PkuCQnik78pgLi5Ah/7qdUfov8IctU0vLUbBT8/10Ma5GMBeI4wtxhGrEfKNYs2g==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.11.0.tgz", + "integrity": "sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA==", "requires": { "tough-cookie": "^2.3.3 || ^3.0.1 || ^4.0.0" } @@ -2104,8 +2540,12 @@ "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==" }, "node-fetch": { - "version": "2.6.0", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } }, "node-gyp-build": { "version": "4.1.1", @@ -2122,15 +2562,16 @@ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, "pouchdb": { - "version": "7.2.2", - "integrity": "sha512-5gf5nw5XH/2H/DJj8b0YkvG9fhA/4Jt6kL0Y8QjtztVjb1y4J19Rg4rG+fUbXu96gsUrlyIvZ3XfM0b4mogGmw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb/-/pouchdb-7.3.0.tgz", + "integrity": "sha512-OwsIQGXsfx3TrU1pLruj6PGSwFH+h5k4hGNxFkZ76Um7/ZI8F5TzUHFrpldVVIhfXYi2vP31q0q7ot1FSLFYOw==", "requires": { "abort-controller": "3.0.0", "argsarray": "0.0.1", - "buffer-from": "1.1.1", + "buffer-from": "1.1.2", "clone-buffer": "1.0.0", "double-ended-queue": "2.1.0-0", - "fetch-cookie": "0.10.1", + "fetch-cookie": "0.11.0", "immediate": "3.3.0", "inherits": "2.0.4", "level": "6.0.1", @@ -2139,14 +2580,19 @@ "leveldown": "5.6.0", "levelup": "4.4.0", "ltgt": "2.2.1", - "node-fetch": "2.6.0", + "node-fetch": "2.6.7", "readable-stream": "1.1.14", - "spark-md5": "3.0.1", + "spark-md5": "3.0.2", "through2": "3.0.2", - "uuid": "8.1.0", + "uuid": "8.3.2", "vuvuzela": "1.0.3" }, "dependencies": { + "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==" + }, "readable-stream": { "version": "1.1.14", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", @@ -2157,35 +2603,176 @@ "string_decoder": "~0.10.x" } }, + "spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" + }, "string_decoder": { "version": "0.10.31", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" } } }, "pouchdb-abstract-mapreduce": { - "version": "7.2.2", - "integrity": "sha512-7HWN/2yV2JkwMnGnlp84lGvFtnm0Q55NiBUdbBcaT810+clCGKvhssBCrXnmwShD1SXTwT83aszsgiSfW+SnBA==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.3.0.tgz", + "integrity": "sha512-+2fVt3SDh7D776lIGbYZOsKX5js1aUyUw7iJaTGitxSdQ2ObWSTrr3SUrj5Qo1CkgPXwRM3Tdoq/53JYAa2qCA==", "requires": { - "pouchdb-binary-utils": "7.2.2", - "pouchdb-collate": "7.2.2", - "pouchdb-collections": "7.2.2", - "pouchdb-errors": "7.2.2", - "pouchdb-fetch": "7.2.2", - "pouchdb-mapreduce-utils": "7.2.2", - "pouchdb-md5": "7.2.2", - "pouchdb-utils": "7.2.2" + "pouchdb-binary-utils": "7.3.0", + "pouchdb-collate": "7.3.0", + "pouchdb-collections": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-fetch": "7.3.0", + "pouchdb-mapreduce-utils": "7.3.0", + "pouchdb-md5": "7.3.0", + "pouchdb-utils": "7.3.0" + }, + "dependencies": { + "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==" + }, + "pouchdb-binary-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz", + "integrity": "sha512-xvBH/XGHGcou2vkEzszJxkCc7YElfRUrkLUg51Jbdmh1mogLDUO0bU3Tj6TOIIJfRkQrU/HV+dDkMAhsil0amQ==", + "requires": { + "buffer-from": "1.1.2" + } + }, + "pouchdb-collate": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-collate/-/pouchdb-collate-7.3.0.tgz", + "integrity": "sha512-ys7rXKtEr6cfghgUjknwFJiOkITebV6JmeTybJKCzMV0r2luXu0OoPQsKVpE/wbM/3F5LxfpbFKGFpPcfGMvTA==" + }, + "pouchdb-collections": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.3.0.tgz", + "integrity": "sha512-Xr54m2+fErShXn+qAT4xwqJ+8NwddNPeTMJT4z4k1sZsrwfHmZsWbsKAyGPMF04eQaaU+7DDRMciu2VzaBUXyg==" + }, + "pouchdb-errors": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.3.0.tgz", + "integrity": "sha512-dTBbIC1BbCy6J9W/Csg5xROgb3wJN3HpbgAJHHSEtAkb8oA45KZmU3ZwEpNhf0AfPuQm4XgW1936PvlDlGgJiw==", + "requires": { + "inherits": "2.0.4" + } + }, + "pouchdb-md5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz", + "integrity": "sha512-wL04QgoKyd/L/TV5gxgcvlEyCJiZoXCOEFJklTzkdza/kBQNJGPH7i0ZhKa7Sb+AvZYoWZHddf1Zgv7rBScHkA==", + "requires": { + "pouchdb-binary-utils": "7.3.0", + "spark-md5": "3.0.2" + } + }, + "pouchdb-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz", + "integrity": "sha512-HH+5IXXWn/ZgVCSnrlydBMYn6MabT7RS7SNoo9w8qVH9efpZSp3eLchw6yMQNLw8LQefWmbbskiHV9VgJmSVWQ==", + "requires": { + "argsarray": "0.0.1", + "clone-buffer": "1.0.0", + "immediate": "3.3.0", + "inherits": "2.0.4", + "pouchdb-collections": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-md5": "7.3.0", + "uuid": "8.3.2" + } + }, + "spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } } }, "pouchdb-adapter-http": { - "version": "7.2.2", - "integrity": "sha512-6Z6umJq7b5sRXwDM3CLfHrGhJPMR02M5osUxkwH1PpqcTF0EXPJvX+PtzTjSPcXWfaK6kgH3zNrRKQDdpzjI9A==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-adapter-http/-/pouchdb-adapter-http-7.3.0.tgz", + "integrity": "sha512-7nNfpbvL0MEu3RtwKkhi3VTxWDrSfEKyrWspSAhsFsn980okth5SRsEIQw0eJ4yNgJaVd47B/mUYVNphpyMTyQ==", "requires": { "argsarray": "0.0.1", - "pouchdb-binary-utils": "7.2.2", - "pouchdb-errors": "7.2.2", - "pouchdb-fetch": "7.2.2", - "pouchdb-utils": "7.2.2" + "pouchdb-binary-utils": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-fetch": "7.3.0", + "pouchdb-utils": "7.3.0" + }, + "dependencies": { + "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==" + }, + "pouchdb-binary-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz", + "integrity": "sha512-xvBH/XGHGcou2vkEzszJxkCc7YElfRUrkLUg51Jbdmh1mogLDUO0bU3Tj6TOIIJfRkQrU/HV+dDkMAhsil0amQ==", + "requires": { + "buffer-from": "1.1.2" + } + }, + "pouchdb-collections": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.3.0.tgz", + "integrity": "sha512-Xr54m2+fErShXn+qAT4xwqJ+8NwddNPeTMJT4z4k1sZsrwfHmZsWbsKAyGPMF04eQaaU+7DDRMciu2VzaBUXyg==" + }, + "pouchdb-errors": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.3.0.tgz", + "integrity": "sha512-dTBbIC1BbCy6J9W/Csg5xROgb3wJN3HpbgAJHHSEtAkb8oA45KZmU3ZwEpNhf0AfPuQm4XgW1936PvlDlGgJiw==", + "requires": { + "inherits": "2.0.4" + } + }, + "pouchdb-md5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz", + "integrity": "sha512-wL04QgoKyd/L/TV5gxgcvlEyCJiZoXCOEFJklTzkdza/kBQNJGPH7i0ZhKa7Sb+AvZYoWZHddf1Zgv7rBScHkA==", + "requires": { + "pouchdb-binary-utils": "7.3.0", + "spark-md5": "3.0.2" + } + }, + "pouchdb-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz", + "integrity": "sha512-HH+5IXXWn/ZgVCSnrlydBMYn6MabT7RS7SNoo9w8qVH9efpZSp3eLchw6yMQNLw8LQefWmbbskiHV9VgJmSVWQ==", + "requires": { + "argsarray": "0.0.1", + "clone-buffer": "1.0.0", + "immediate": "3.3.0", + "inherits": "2.0.4", + "pouchdb-collections": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-md5": "7.3.0", + "uuid": "8.3.2" + } + }, + "spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } } }, "pouchdb-adapter-leveldb": { @@ -2241,12 +2828,75 @@ } }, "pouchdb-changes-filter": { - "version": "7.2.2", - "integrity": "sha512-1txJnTtL/C7zrq+spLt3pH9EDHTWmLLwp2zx8zUQrkt6eQtuLuXUI7G84xe+hfpU0rQvUzp/APYMnko0/6Rw0A==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-changes-filter/-/pouchdb-changes-filter-7.3.0.tgz", + "integrity": "sha512-9E/EC9BP9dH9sfqUBdcWlR5HHeDdWqP82MmdEtg5c8spgxttYPwqrPfSHa7T2n55IRnaIoQbVyndmfAoz9GsOw==", "requires": { - "pouchdb-errors": "7.2.2", - "pouchdb-selector-core": "7.2.2", - "pouchdb-utils": "7.2.2" + "pouchdb-errors": "7.3.0", + "pouchdb-selector-core": "7.3.0", + "pouchdb-utils": "7.3.0" + }, + "dependencies": { + "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==" + }, + "pouchdb-binary-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz", + "integrity": "sha512-xvBH/XGHGcou2vkEzszJxkCc7YElfRUrkLUg51Jbdmh1mogLDUO0bU3Tj6TOIIJfRkQrU/HV+dDkMAhsil0amQ==", + "requires": { + "buffer-from": "1.1.2" + } + }, + "pouchdb-collections": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.3.0.tgz", + "integrity": "sha512-Xr54m2+fErShXn+qAT4xwqJ+8NwddNPeTMJT4z4k1sZsrwfHmZsWbsKAyGPMF04eQaaU+7DDRMciu2VzaBUXyg==" + }, + "pouchdb-errors": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.3.0.tgz", + "integrity": "sha512-dTBbIC1BbCy6J9W/Csg5xROgb3wJN3HpbgAJHHSEtAkb8oA45KZmU3ZwEpNhf0AfPuQm4XgW1936PvlDlGgJiw==", + "requires": { + "inherits": "2.0.4" + } + }, + "pouchdb-md5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz", + "integrity": "sha512-wL04QgoKyd/L/TV5gxgcvlEyCJiZoXCOEFJklTzkdza/kBQNJGPH7i0ZhKa7Sb+AvZYoWZHddf1Zgv7rBScHkA==", + "requires": { + "pouchdb-binary-utils": "7.3.0", + "spark-md5": "3.0.2" + } + }, + "pouchdb-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz", + "integrity": "sha512-HH+5IXXWn/ZgVCSnrlydBMYn6MabT7RS7SNoo9w8qVH9efpZSp3eLchw6yMQNLw8LQefWmbbskiHV9VgJmSVWQ==", + "requires": { + "argsarray": "0.0.1", + "clone-buffer": "1.0.0", + "immediate": "3.3.0", + "inherits": "2.0.4", + "pouchdb-collections": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-md5": "7.3.0", + "uuid": "8.3.2" + } + }, + "spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } } }, "pouchdb-checkpointer": { @@ -2266,17 +2916,85 @@ "integrity": "sha512-6O9zyAYlp3UdtfneiMYuOCWdUCQNo2bgdjvNsMSacQX+3g8WvIoFQCYJjZZCpTttQGb+MHeRMr8m2U95lhJTew==" }, "pouchdb-core": { - "version": "7.2.2", - "integrity": "sha512-AnMmSH+xx12Vk6oASDRQoElXfV9fSn8MIwfus0oa2lqkxowx4bvidofZbhZfKEiE6QgKwFEOBzs56MS3znI8TQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-core/-/pouchdb-core-7.3.0.tgz", + "integrity": "sha512-fpEbjrYzmZivSupl7V0Aa2vHivyJHi9gx7+d021Wxajx4br515eYcN6Whk/L0L4xgoDVKoqUwmv+XgEF8EZhwg==", "requires": { "argsarray": "0.0.1", "inherits": "2.0.4", - "pouchdb-changes-filter": "7.2.2", - "pouchdb-collections": "7.2.2", - "pouchdb-errors": "7.2.2", - "pouchdb-fetch": "7.2.2", - "pouchdb-merge": "7.2.2", - "pouchdb-utils": "7.2.2" + "pouchdb-changes-filter": "7.3.0", + "pouchdb-collections": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-fetch": "7.3.0", + "pouchdb-merge": "7.3.0", + "pouchdb-utils": "7.3.0" + }, + "dependencies": { + "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==" + }, + "pouchdb-binary-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz", + "integrity": "sha512-xvBH/XGHGcou2vkEzszJxkCc7YElfRUrkLUg51Jbdmh1mogLDUO0bU3Tj6TOIIJfRkQrU/HV+dDkMAhsil0amQ==", + "requires": { + "buffer-from": "1.1.2" + } + }, + "pouchdb-collections": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.3.0.tgz", + "integrity": "sha512-Xr54m2+fErShXn+qAT4xwqJ+8NwddNPeTMJT4z4k1sZsrwfHmZsWbsKAyGPMF04eQaaU+7DDRMciu2VzaBUXyg==" + }, + "pouchdb-errors": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.3.0.tgz", + "integrity": "sha512-dTBbIC1BbCy6J9W/Csg5xROgb3wJN3HpbgAJHHSEtAkb8oA45KZmU3ZwEpNhf0AfPuQm4XgW1936PvlDlGgJiw==", + "requires": { + "inherits": "2.0.4" + } + }, + "pouchdb-md5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz", + "integrity": "sha512-wL04QgoKyd/L/TV5gxgcvlEyCJiZoXCOEFJklTzkdza/kBQNJGPH7i0ZhKa7Sb+AvZYoWZHddf1Zgv7rBScHkA==", + "requires": { + "pouchdb-binary-utils": "7.3.0", + "spark-md5": "3.0.2" + } + }, + "pouchdb-merge": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-merge/-/pouchdb-merge-7.3.0.tgz", + "integrity": "sha512-E7LmchMzwYFm6V8OBxejzARLisanpksOju2LEfuiYnotGfNDeW7MByP0qBH0/zF8BfUyyjA1cl7ByaEpsapkeQ==" + }, + "pouchdb-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz", + "integrity": "sha512-HH+5IXXWn/ZgVCSnrlydBMYn6MabT7RS7SNoo9w8qVH9efpZSp3eLchw6yMQNLw8LQefWmbbskiHV9VgJmSVWQ==", + "requires": { + "argsarray": "0.0.1", + "clone-buffer": "1.0.0", + "immediate": "3.3.0", + "inherits": "2.0.4", + "pouchdb-collections": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-md5": "7.3.0", + "uuid": "8.3.2" + } + }, + "spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } } }, "pouchdb-errors": { @@ -2287,12 +3005,13 @@ } }, "pouchdb-fetch": { - "version": "7.2.2", - "integrity": "sha512-lUHmaG6U3zjdMkh8Vob9GvEiRGwJfXKE02aZfjiVQgew+9SLkuOxNw3y2q4d1B6mBd273y1k2Lm0IAziRNxQnA==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-fetch/-/pouchdb-fetch-7.3.0.tgz", + "integrity": "sha512-8/lcg8iMDG+GVs1dHNXA4ktJSEpH71dHU3xesMJ25tNQOqfAaaWrkfz9j71ZYDDkveLYE6UjUzl/sDacu2hSjw==", "requires": { "abort-controller": "3.0.0", - "fetch-cookie": "0.10.1", - "node-fetch": "2.6.0" + "fetch-cookie": "0.11.0", + "node-fetch": "2.6.7" } }, "pouchdb-find": { @@ -2314,37 +3033,6 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "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==", - "requires": { - "tough-cookie": "^2.3.3 || ^3.0.1 || ^4.0.0" - } - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "pouchdb-abstract-mapreduce": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.3.0.tgz", - "integrity": "sha512-+2fVt3SDh7D776lIGbYZOsKX5js1aUyUw7iJaTGitxSdQ2ObWSTrr3SUrj5Qo1CkgPXwRM3Tdoq/53JYAa2qCA==", - "requires": { - "pouchdb-binary-utils": "7.3.0", - "pouchdb-collate": "7.3.0", - "pouchdb-collections": "7.3.0", - "pouchdb-errors": "7.3.0", - "pouchdb-fetch": "7.3.0", - "pouchdb-mapreduce-utils": "7.3.0", - "pouchdb-md5": "7.3.0", - "pouchdb-utils": "7.3.0" - } - }, "pouchdb-binary-utils": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz", @@ -2371,27 +3059,6 @@ "inherits": "2.0.4" } }, - "pouchdb-fetch": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/pouchdb-fetch/-/pouchdb-fetch-7.3.0.tgz", - "integrity": "sha512-8/lcg8iMDG+GVs1dHNXA4ktJSEpH71dHU3xesMJ25tNQOqfAaaWrkfz9j71ZYDDkveLYE6UjUzl/sDacu2hSjw==", - "requires": { - "abort-controller": "3.0.0", - "fetch-cookie": "0.11.0", - "node-fetch": "2.6.7" - } - }, - "pouchdb-mapreduce-utils": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-7.3.0.tgz", - "integrity": "sha512-KDVSd+H2r+XWTrQfKWV71SknDDYRjYXoeWs0ZQl3xITHCcTl+fIgqyagg/XN+Zy/U9LeLPGMe2JdgPx9H8lJgw==", - "requires": { - "argsarray": "0.0.1", - "inherits": "2.0.4", - "pouchdb-collections": "7.3.0", - "pouchdb-utils": "7.3.0" - } - }, "pouchdb-md5": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz", @@ -2401,15 +3068,6 @@ "spark-md5": "3.0.2" } }, - "pouchdb-selector-core": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/pouchdb-selector-core/-/pouchdb-selector-core-7.3.0.tgz", - "integrity": "sha512-sK/cCrIGeL9ImcMhKGcwa54+bzX7Wv4hhVV+oUW3T1Nasaoxh+Muem1GuA+x1+SbTCE8y37rUg8i6DIOhX51ew==", - "requires": { - "pouchdb-collate": "7.3.0", - "pouchdb-utils": "7.3.0" - } - }, "pouchdb-utils": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz", @@ -2453,22 +3111,148 @@ } }, "pouchdb-mapreduce": { - "version": "7.2.2", - "integrity": "sha512-uDXEzznnZmCz3YJQ2AwVhiUDCYOaIypg1EZ2VmYOCoJnUPfmOp6LY/MPBug/sqq/BDrQCUIEtKs+Sva/L6m8xg==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-mapreduce/-/pouchdb-mapreduce-7.3.0.tgz", + "integrity": "sha512-lhSQvUvHTt9c5Sd1stqqsSB8AYoKx99BHCRy2YxNEKbWCQdEIZqiPfRJcSlm2BtPz8hsA6yHMbPz20nXMep2yg==", "requires": { - "pouchdb-abstract-mapreduce": "7.2.2", - "pouchdb-mapreduce-utils": "7.2.2", - "pouchdb-utils": "7.2.2" + "pouchdb-abstract-mapreduce": "7.3.0", + "pouchdb-mapreduce-utils": "7.3.0", + "pouchdb-utils": "7.3.0" + }, + "dependencies": { + "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==" + }, + "pouchdb-binary-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz", + "integrity": "sha512-xvBH/XGHGcou2vkEzszJxkCc7YElfRUrkLUg51Jbdmh1mogLDUO0bU3Tj6TOIIJfRkQrU/HV+dDkMAhsil0amQ==", + "requires": { + "buffer-from": "1.1.2" + } + }, + "pouchdb-collections": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.3.0.tgz", + "integrity": "sha512-Xr54m2+fErShXn+qAT4xwqJ+8NwddNPeTMJT4z4k1sZsrwfHmZsWbsKAyGPMF04eQaaU+7DDRMciu2VzaBUXyg==" + }, + "pouchdb-errors": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.3.0.tgz", + "integrity": "sha512-dTBbIC1BbCy6J9W/Csg5xROgb3wJN3HpbgAJHHSEtAkb8oA45KZmU3ZwEpNhf0AfPuQm4XgW1936PvlDlGgJiw==", + "requires": { + "inherits": "2.0.4" + } + }, + "pouchdb-md5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz", + "integrity": "sha512-wL04QgoKyd/L/TV5gxgcvlEyCJiZoXCOEFJklTzkdza/kBQNJGPH7i0ZhKa7Sb+AvZYoWZHddf1Zgv7rBScHkA==", + "requires": { + "pouchdb-binary-utils": "7.3.0", + "spark-md5": "3.0.2" + } + }, + "pouchdb-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz", + "integrity": "sha512-HH+5IXXWn/ZgVCSnrlydBMYn6MabT7RS7SNoo9w8qVH9efpZSp3eLchw6yMQNLw8LQefWmbbskiHV9VgJmSVWQ==", + "requires": { + "argsarray": "0.0.1", + "clone-buffer": "1.0.0", + "immediate": "3.3.0", + "inherits": "2.0.4", + "pouchdb-collections": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-md5": "7.3.0", + "uuid": "8.3.2" + } + }, + "spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } } }, "pouchdb-mapreduce-utils": { - "version": "7.2.2", - "integrity": "sha512-rAllb73hIkU8rU2LJNbzlcj91KuulpwQu804/F6xF3fhZKC/4JQMClahk+N/+VATkpmLxp1zWmvmgdlwVU4HtQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-7.3.0.tgz", + "integrity": "sha512-KDVSd+H2r+XWTrQfKWV71SknDDYRjYXoeWs0ZQl3xITHCcTl+fIgqyagg/XN+Zy/U9LeLPGMe2JdgPx9H8lJgw==", "requires": { "argsarray": "0.0.1", "inherits": "2.0.4", - "pouchdb-collections": "7.2.2", - "pouchdb-utils": "7.2.2" + "pouchdb-collections": "7.3.0", + "pouchdb-utils": "7.3.0" + }, + "dependencies": { + "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==" + }, + "pouchdb-binary-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz", + "integrity": "sha512-xvBH/XGHGcou2vkEzszJxkCc7YElfRUrkLUg51Jbdmh1mogLDUO0bU3Tj6TOIIJfRkQrU/HV+dDkMAhsil0amQ==", + "requires": { + "buffer-from": "1.1.2" + } + }, + "pouchdb-collections": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.3.0.tgz", + "integrity": "sha512-Xr54m2+fErShXn+qAT4xwqJ+8NwddNPeTMJT4z4k1sZsrwfHmZsWbsKAyGPMF04eQaaU+7DDRMciu2VzaBUXyg==" + }, + "pouchdb-errors": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.3.0.tgz", + "integrity": "sha512-dTBbIC1BbCy6J9W/Csg5xROgb3wJN3HpbgAJHHSEtAkb8oA45KZmU3ZwEpNhf0AfPuQm4XgW1936PvlDlGgJiw==", + "requires": { + "inherits": "2.0.4" + } + }, + "pouchdb-md5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz", + "integrity": "sha512-wL04QgoKyd/L/TV5gxgcvlEyCJiZoXCOEFJklTzkdza/kBQNJGPH7i0ZhKa7Sb+AvZYoWZHddf1Zgv7rBScHkA==", + "requires": { + "pouchdb-binary-utils": "7.3.0", + "spark-md5": "3.0.2" + } + }, + "pouchdb-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz", + "integrity": "sha512-HH+5IXXWn/ZgVCSnrlydBMYn6MabT7RS7SNoo9w8qVH9efpZSp3eLchw6yMQNLw8LQefWmbbskiHV9VgJmSVWQ==", + "requires": { + "argsarray": "0.0.1", + "clone-buffer": "1.0.0", + "immediate": "3.3.0", + "inherits": "2.0.4", + "pouchdb-collections": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-md5": "7.3.0", + "uuid": "8.3.2" + } + }, + "spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } } }, "pouchdb-md5": { @@ -2484,15 +3268,16 @@ "integrity": "sha512-6yzKJfjIchBaS7Tusuk8280WJdESzFfQ0sb4jeMUNnrqs4Cx3b0DIEOYTRRD9EJDM+je7D3AZZ4AT0tFw8gb4A==" }, "pouchdb-node": { - "version": "7.2.2", - "integrity": "sha512-r1JenKn+HWXAK8EMcoWp8rXzeBVGcnPd/IOiOHwac36rUAZkKBFrWnS1jkJcbJcghIFxTn1w9tL0HBdaR1PFSg==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-node/-/pouchdb-node-7.3.0.tgz", + "integrity": "sha512-8UaLY7/7+S1ciQntWs67kB6rJiklaUdjonLSB3dNWtt0WCfel1t7Yh6+Vx1VSCrb4TALRWhqn0Jn0rBoATekjg==", "requires": { "abort-controller": "3.0.0", "argsarray": "0.0.1", - "buffer-from": "1.1.1", + "buffer-from": "1.1.2", "clone-buffer": "1.0.0", "double-ended-queue": "2.1.0-0", - "fetch-cookie": "0.10.1", + "fetch-cookie": "0.11.0", "inherits": "2.0.4", "level": "6.0.1", "level-codec": "9.0.2", @@ -2500,13 +3285,18 @@ "leveldown": "5.6.0", "levelup": "4.4.0", "ltgt": "2.2.1", - "node-fetch": "2.6.0", + "node-fetch": "2.6.7", "readable-stream": "1.1.14", "through2": "3.0.2", - "uuid": "8.1.0", + "uuid": "8.3.2", "vuvuzela": "1.0.3" }, "dependencies": { + "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==" + }, "readable-stream": { "version": "1.1.14", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", @@ -2520,6 +3310,11 @@ "string_decoder": { "version": "0.10.31", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" } } }, @@ -2535,11 +3330,79 @@ } }, "pouchdb-selector-core": { - "version": "7.2.2", - "integrity": "sha512-XYKCNv9oiNmSXV5+CgR9pkEkTFqxQGWplnVhO3W9P154H08lU0ZoNH02+uf+NjZ2kjse7Q1fxV4r401LEcGMMg==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-selector-core/-/pouchdb-selector-core-7.3.0.tgz", + "integrity": "sha512-sK/cCrIGeL9ImcMhKGcwa54+bzX7Wv4hhVV+oUW3T1Nasaoxh+Muem1GuA+x1+SbTCE8y37rUg8i6DIOhX51ew==", "requires": { - "pouchdb-collate": "7.2.2", - "pouchdb-utils": "7.2.2" + "pouchdb-collate": "7.3.0", + "pouchdb-utils": "7.3.0" + }, + "dependencies": { + "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==" + }, + "pouchdb-binary-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz", + "integrity": "sha512-xvBH/XGHGcou2vkEzszJxkCc7YElfRUrkLUg51Jbdmh1mogLDUO0bU3Tj6TOIIJfRkQrU/HV+dDkMAhsil0amQ==", + "requires": { + "buffer-from": "1.1.2" + } + }, + "pouchdb-collate": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-collate/-/pouchdb-collate-7.3.0.tgz", + "integrity": "sha512-ys7rXKtEr6cfghgUjknwFJiOkITebV6JmeTybJKCzMV0r2luXu0OoPQsKVpE/wbM/3F5LxfpbFKGFpPcfGMvTA==" + }, + "pouchdb-collections": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.3.0.tgz", + "integrity": "sha512-Xr54m2+fErShXn+qAT4xwqJ+8NwddNPeTMJT4z4k1sZsrwfHmZsWbsKAyGPMF04eQaaU+7DDRMciu2VzaBUXyg==" + }, + "pouchdb-errors": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.3.0.tgz", + "integrity": "sha512-dTBbIC1BbCy6J9W/Csg5xROgb3wJN3HpbgAJHHSEtAkb8oA45KZmU3ZwEpNhf0AfPuQm4XgW1936PvlDlGgJiw==", + "requires": { + "inherits": "2.0.4" + } + }, + "pouchdb-md5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz", + "integrity": "sha512-wL04QgoKyd/L/TV5gxgcvlEyCJiZoXCOEFJklTzkdza/kBQNJGPH7i0ZhKa7Sb+AvZYoWZHddf1Zgv7rBScHkA==", + "requires": { + "pouchdb-binary-utils": "7.3.0", + "spark-md5": "3.0.2" + } + }, + "pouchdb-utils": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz", + "integrity": "sha512-HH+5IXXWn/ZgVCSnrlydBMYn6MabT7RS7SNoo9w8qVH9efpZSp3eLchw6yMQNLw8LQefWmbbskiHV9VgJmSVWQ==", + "requires": { + "argsarray": "0.0.1", + "clone-buffer": "1.0.0", + "immediate": "3.3.0", + "inherits": "2.0.4", + "pouchdb-collections": "7.3.0", + "pouchdb-errors": "7.3.0", + "pouchdb-md5": "7.3.0", + "uuid": "8.3.2" + } + }, + "spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } } }, "pouchdb-utils": { diff --git a/readme.md b/readme.md index 6e8ee1a..8eaf816 100644 --- a/readme.md +++ b/readme.md @@ -4,6 +4,8 @@ The synchronization daemon between filesystem and CouchDB compatible with [Self- Notice: **We're on the bleeding edge.** Please make sure to back your vault up! +Now compatible with Self-hosted LiveSync 0.13.0 or above. + ## How to run ```sh diff --git a/src/e2ee.ts b/src/e2ee.ts deleted file mode 100644 index de94f20..0000000 --- a/src/e2ee.ts +++ /dev/null @@ -1,186 +0,0 @@ -import { Logger } from "./logger"; -import { LOG_LEVEL } from "./types"; -import { webcrypto as crypto_ } from "crypto"; - -let webcrypto: Crypto; - -if (typeof window !== "undefined" && window.crypto) { - webcrypto = window.crypto; -} else { - const crypto = crypto_; - //@ts-ignore - webcrypto = crypto; -} -console.dir(webcrypto); - -export type encodedData = [encryptedData: string, iv: string, salt: string]; -export type KeyBuffer = { - index: string; - key: CryptoKey; - salt: Uint8Array; -}; - -let KeyBuffs: KeyBuffer[] = []; -let decKeyBuffs: KeyBuffer[] = []; - -const KEY_RECYCLE_COUNT = 100; -let recycleCount = KEY_RECYCLE_COUNT; - -let semiStaticFieldBuffer: Uint8Array; -const nonceBuffer: Uint32Array = new Uint32Array(1); - -export async function getKeyForEncrypt(passphrase: string): Promise<[CryptoKey, Uint8Array]> { - // For performance, the plugin reuses the key KEY_RECYCLE_COUNT times. - const f = KeyBuffs.find((e) => e.index == passphrase); - if (f) { - recycleCount--; - if (recycleCount > 0) { - return [f.key, f.salt]; - } - KeyBuffs = KeyBuffs.filter((e) => e != f); - recycleCount = KEY_RECYCLE_COUNT; - } - const xpassphrase = new TextEncoder().encode(passphrase); - const digest = await webcrypto.subtle.digest({ name: "SHA-256" }, xpassphrase); - const keyMaterial = await webcrypto.subtle.importKey("raw", digest, { name: "PBKDF2" }, false, ["deriveKey"]); - const salt = webcrypto.getRandomValues(new Uint8Array(16)); - const key = await webcrypto.subtle.deriveKey( - { - name: "PBKDF2", - salt, - iterations: 100000, - hash: "SHA-256", - }, - keyMaterial, - { name: "AES-GCM", length: 256 }, - false, - ["encrypt"] - ); - KeyBuffs.push({ - index: passphrase, - key, - salt, - }); - while (KeyBuffs.length > 50) { - KeyBuffs.shift(); - } - return [key, salt]; -} - -export async function getKeyForDecryption(passphrase: string, salt: Uint8Array): Promise<[CryptoKey, Uint8Array]> { - const bufKey = passphrase + uint8ArrayToHexString(salt); - const f = decKeyBuffs.find((e) => e.index == bufKey); - if (f) { - return [f.key, f.salt]; - } - const xpassphrase = new TextEncoder().encode(passphrase); - const digest = await webcrypto.subtle.digest({ name: "SHA-256" }, xpassphrase); - const keyMaterial = await webcrypto.subtle.importKey("raw", digest, { name: "PBKDF2" }, false, ["deriveKey"]); - const key = await webcrypto.subtle.deriveKey( - { - name: "PBKDF2", - salt, - iterations: 100000, - hash: "SHA-256", - }, - keyMaterial, - { name: "AES-GCM", length: 256 }, - false, - ["decrypt"] - ); - decKeyBuffs.push({ - index: bufKey, - key, - salt, - }); - while (decKeyBuffs.length > 50) { - decKeyBuffs.shift(); - } - return [key, salt]; -} - -function getSemiStaticField(reset?: boolean) { - // return fixed field of iv. - if (semiStaticFieldBuffer != null && !reset) { - return semiStaticFieldBuffer; - } - semiStaticFieldBuffer = webcrypto.getRandomValues(new Uint8Array(12)); - return semiStaticFieldBuffer; -} - -function getNonce() { - // This is nonce, so do not send same thing. - nonceBuffer[0]++; - if (nonceBuffer[0] > 10000) { - // reset semi-static field. - getSemiStaticField(true); - } - return nonceBuffer; -} - -function uint8ArrayToHexString(src: Uint8Array): string { - return Array.from(src) - .map((e: number): string => `00${e.toString(16)}`.slice(-2)) - .join(""); -} -function hexStringToUint8Array(src: string): Uint8Array { - const srcArr = [...src]; - const arr = srcArr.reduce((acc, _, i) => (i % 2 ? acc : [...acc, srcArr.slice(i, i + 2).join("")]), [] as string[]).map((e) => parseInt(e, 16)); - return Uint8Array.from(arr); -} -function btoa(src: string): string { - return Buffer.from(src, "binary").toString("base64"); -} -function atob(src: string): string { - return Buffer.from(src, "base64").toString("binary"); -} -export async function encrypt(input: string, passphrase: string) { - const [key, salt] = await getKeyForEncrypt(passphrase); - // Create initial vector with semifixed part and incremental part - // I think it's not good against related-key attacks. - const fixedPart = getSemiStaticField(); - const invocationPart = getNonce(); - const iv = Uint8Array.from([...fixedPart, ...new Uint8Array(invocationPart.buffer)]); - const plainStringified: string = JSON.stringify(input); - const plainStringBuffer: Uint8Array = new TextEncoder().encode(plainStringified); - const encryptedDataArrayBuffer = await webcrypto.subtle.encrypt({ name: "AES-GCM", iv }, key, plainStringBuffer); - - const encryptedData = btoa(Array.from(new Uint8Array(encryptedDataArrayBuffer), (char) => String.fromCharCode(char)).join("")); - - //return data with iv and salt. - const response: encodedData = [encryptedData, uint8ArrayToHexString(iv), uint8ArrayToHexString(salt)]; - const ret = JSON.stringify(response); - return ret; -} - -export async function decrypt(encryptedResult: string, passphrase: string): Promise { - try { - const [encryptedData, ivString, salt]: encodedData = JSON.parse(encryptedResult); - const [key] = await getKeyForDecryption(passphrase, hexStringToUint8Array(salt)); - const iv = hexStringToUint8Array(ivString); - // decode base 64, it should increase speed and i should with in MAX_DOC_SIZE_BIN, so it won't OOM. - const encryptedDataBin = atob(encryptedData); - const encryptedDataArrayBuffer = Uint8Array.from(encryptedDataBin.split(""), (char) => char.charCodeAt(0)); - const plainStringBuffer: ArrayBuffer = await webcrypto.subtle.decrypt({ name: "AES-GCM", iv }, key, encryptedDataArrayBuffer); - const plainStringified = new TextDecoder().decode(plainStringBuffer); - const plain = JSON.parse(plainStringified); - return plain; - } catch (ex) { - Logger("Couldn't decode! You should wrong the passphrases", LOG_LEVEL.VERBOSE); - Logger(ex, LOG_LEVEL.VERBOSE); - throw ex; - } -} - -export async function testCrypt() { - const src = "supercalifragilisticexpialidocious"; - const encoded = await encrypt(src, "passwordTest"); - const decrypted = await decrypt(encoded, "passwordTest"); - if (src != decrypted) { - Logger("WARNING! Your device would not support encryption.", LOG_LEVEL.VERBOSE); - return false; - } else { - Logger("CRYPT LOGIC OK", LOG_LEVEL.VERBOSE); - return true; - } -} diff --git a/src/index.ts b/src/index.ts index 96a04c6..b844b50 100644 --- a/src/index.ts +++ b/src/index.ts @@ -10,10 +10,11 @@ import { Logger } from "./logger.js"; //@ts-ignore import { PouchDB as PouchDB_src } from "./pouchdb.js"; -import { configFile, connectConfig, eachConf, Entry, EntryLeaf, LoadedEntry, LOG_LEVEL, MAX_DOC_SIZE, MAX_DOC_SIZE_BIN, NewEntry, PlainEntry, TransferEntry } from "./types.js"; -import { addKnownFile, addTouchedFile, calcDateDiff, DATEDIFF_EVEN, DATEDIFF_NEWER_A, DATEDIFF_OLDER_A, isKnownFile, isPlainText, isTouchedFile, path2unix } from "./util.js"; -import { enableEncryption, runWithLock, shouldSplitAsPlainText, splitPieces2 } from "./lib/src/utils.js"; -import { EntryDoc } from "./lib/src/types.js"; +import { configFile, connectConfig, eachConf, TransferEntry } from "./types.js"; +import { addKnownFile, addTouchedFile, calcDateDiff, DATEDIFF_EVEN, DATEDIFF_NEWER_A, DATEDIFF_OLDER_A, isKnownFile, isTouchedFile, path2unix } from "./util.js"; +import { enableEncryption, runWithLock, shouldSplitAsPlainText, splitPieces2, isPlainText } from "./lib/src/utils.js"; +import { EntryDoc, Entry, EntryLeaf, LoadedEntry, NewEntry, PlainEntry, LOG_LEVEL, MAX_DOC_SIZE, MAX_DOC_SIZE_BIN, } from "./lib/src/types.js"; +import { LRUCache } from "./lib/src/LRUCache.js"; const xxhash = require("xxhash-wasm"); @@ -81,204 +82,9 @@ function triggerProcessor(procs: string) { runEngine(); }, 500); } -class LRUCache { - cache = new Map([]); - revCache = new Map([]); - maxCache = 100; - constructor() {} - get(key: string) { - // debugger - const v = this.cache.get(key); - - if (v) { - // update the key to recently used. - this.cache.delete(key); - this.revCache.delete(v); - this.cache.set(key, v); - this.revCache.set(v, key); - } - return v; - } - revGet(value: string) { - // debugger - const key = this.revCache.get(value); - if (value) { - // update the key to recently used. - this.cache.delete(key); - this.revCache.delete(value); - this.cache.set(key, value); - this.revCache.set(value, key); - } - return key; - } - set(key: string, value: string) { - this.cache.set(key, value); - this.revCache.set(value, key); - if (this.cache.size > this.maxCache) { - for (const kv of this.cache) { - this.revCache.delete(kv[1]); - this.cache.delete(kv[0]); - if (this.cache.size <= this.maxCache) break; - } - } - } -} const hashCaches = new LRUCache(); - -// // putDBEntry:COPIED FROM obsidian-livesync -// async function putDBEntry2(note: LoadedEntry, passphrase: string, database: PouchDB.Database) { -// let leftData = note.data; -// const savenNotes = []; -// let processed = 0; -// let made = 0; -// let skiped = 0; -// let pieceSize = MAX_DOC_SIZE_BIN; -// let plainSplit = false; -// let cacheUsed = 0; -// const userpasswordHash = h32Raw(new TextEncoder().encode(passphrase)); -// if (isPlainText(note._id)) { -// pieceSize = MAX_DOC_SIZE; -// plainSplit = true; -// } -// const newLeafs: EntryLeaf[] = []; -// do { -// // To keep low bandwith and database size, -// // Dedup pieces on database. -// // from 0.1.10, for best performance. we use markdown delimiters -// // 1. \n[^\n]{longLineThreshold}[^\n]*\n -> long sentence shuld break. -// // 2. \n\n shold break -// // 3. \r\n\r\n should break -// // 4. \n# should break. -// let cPieceSize = pieceSize; -// if (plainSplit) { -// let minimumChunkSize = 20; //default -// if (minimumChunkSize < 10) minimumChunkSize = 10; -// let longLineThreshold = 250; //default -// if (longLineThreshold < 100) longLineThreshold = 100; -// cPieceSize = 0; -// // lookup for next splittion . -// // we're standing on "\n" -// do { -// const n1 = leftData.indexOf("\n", cPieceSize + 1); -// const n2 = leftData.indexOf("\n\n", cPieceSize + 1); -// const n3 = leftData.indexOf("\r\n\r\n", cPieceSize + 1); -// const n4 = leftData.indexOf("\n#", cPieceSize + 1); -// if (n1 == -1 && n2 == -1 && n3 == -1 && n4 == -1) { -// cPieceSize = MAX_DOC_SIZE; -// break; -// } - -// if (n1 > longLineThreshold) { -// // long sentence is an established piece -// cPieceSize = n1; -// } else { -// // cPieceSize = Math.min.apply([n2, n3, n4].filter((e) => e > 1)); -// // ^ heavy. -// if (n1 > 0 && cPieceSize < n1) cPieceSize = n1; -// if (n2 > 0 && cPieceSize < n2) cPieceSize = n2 + 1; -// if (n3 > 0 && cPieceSize < n3) cPieceSize = n3 + 3; -// // Choose shorter, empty line and \n# -// if (n4 > 0 && cPieceSize > n4) cPieceSize = n4 + 0; -// cPieceSize++; -// } -// } while (cPieceSize < minimumChunkSize); -// } - -// // piece size determined. -// const piece = leftData.substring(0, cPieceSize); -// leftData = leftData.substring(cPieceSize); -// processed++; -// let leafid = ""; -// // Get hash of piece. -// let hashedPiece = ""; -// if (typeof hashCache[piece] !== "undefined") { -// hashedPiece = ""; -// leafid = hashCache[piece]; -// skiped++; -// cacheUsed++; -// } else { -// if (passphrase != "") { -// // When encryption has been enabled, make hash to be different between each passphrase to avoid inferring password. -// hashedPiece = "+" + (h32Raw(new TextEncoder().encode(piece)) ^ userpasswordHash).toString(16); -// } else { -// hashedPiece = h32(piece); -// } -// leafid = "h:" + hashedPiece; - -// //have to make -// const savePiece = piece; - -// const d: EntryLeaf = { -// _id: leafid, -// data: savePiece, -// type: "leaf", -// }; -// newLeafs.push(d); -// hashCache[piece] = leafid; -// hashCacheRev[leafid] = piece; -// made++; -// } -// savenNotes.push(leafid); -// } while (leftData != ""); -// let saved = true; -// if (newLeafs.length > 0) { -// try { -// const result = await database.bulkDocs(newLeafs); -// for (const item of result) { -// if ((item as any).ok) { -// Logger(`save ok:id:${item.id} rev:${item.rev}`, LOG_LEVEL.VERBOSE); -// } else { -// if ((item as any).status && (item as any).status == 409) { -// // conflicted, but it would be ok in childrens. -// } else { -// Logger(`save failed:id:${item.id} rev:${item.rev}`, LOG_LEVEL.NOTICE); -// Logger(item); -// // disposeHashCache(); -// saved = false; -// } -// } -// } -// } catch (ex) { -// Logger("ERROR ON SAVING LEAVES:", LOG_LEVEL.NOTICE); -// Logger(ex, LOG_LEVEL.NOTICE); -// saved = false; -// } -// } -// if (saved) { -// Logger(`note content saven, pieces:${processed} new:${made}, skip:${skiped}, cache:${cacheUsed}`); -// const newDoc: PlainEntry | NewEntry = { -// NewNote: true, -// children: savenNotes, -// _id: note._id, -// ctime: note.ctime, -// mtime: note.mtime, -// size: note.size, -// type: plainSplit ? "plain" : "newnote", -// }; -// // Here for upsert logic, -// try { -// const old = await database.get(newDoc._id); -// if (!old.type || old.type == "notes" || old.type == "newnote" || old.type == "plain") { -// // simple use rev for new doc -// newDoc._rev = old._rev; -// } -// } catch (ex: any) { -// if (ex.status && ex.status == 404) { -// // NO OP/ -// } else { -// throw ex; -// } -// } -// const ret = await database.put(newDoc, { force: true }); -// Logger(`note saved:${newDoc._id}:${ret.rev}`); -// return ret; -// } else { -// Logger(`note coud not saved:${note._id}`); -// } -// } - -async function putDBEntry(note: LoadedEntry, passphrase: string, database: PouchDB.Database) { +async function putDBEntry(note: LoadedEntry, passphrase: string, saveAsBigChunk: boolean, database: PouchDB.Database) { // let leftData = note.data; const savenNotes = []; let processed = 0; @@ -288,7 +94,7 @@ async function putDBEntry(note: LoadedEntry, passphrase: string, database: Pouch let plainSplit = false; let cacheUsed = 0; const userpasswordHash = h32Raw(new TextEncoder().encode(passphrase)); - if (shouldSplitAsPlainText(note._id)) { + if (saveAsBigChunk && shouldSplitAsPlainText(note._id)) { pieceSize = MAX_DOC_SIZE; plainSplit = true; } @@ -350,7 +156,7 @@ async function putDBEntry(note: LoadedEntry, passphrase: string, database: Pouch leafid = nleafid; tryNextHash = false; } - } catch (ex) { + } catch (ex: any) { if (ex.status && ex.status == 404) { //not found, we can use it. leafid = nleafid; @@ -409,30 +215,29 @@ async function putDBEntry(note: LoadedEntry, passphrase: string, database: Pouch if (saved) { Logger(`note content saven, pieces:${processed} new:${made}, skip:${skiped}, cache:${cacheUsed}`); const newDoc: PlainEntry | NewEntry = { - NewNote: true, children: savenNotes, _id: note._id, ctime: note.ctime, mtime: note.mtime, size: note.size, - type: plainSplit ? "plain" : "newnote", + type: note.datatype, }; // Here for upsert logic, return await runWithLock("file:" + newDoc._id, false, async () => { try { - const old = await database.get(newDoc._id); + const old = await database.get(newDoc._id) as EntryDoc; if (!old.type || old.type == "notes" || old.type == "newnote" || old.type == "plain") { // simple use rev for new doc newDoc._rev = old._rev; } - } catch (ex) { + } catch (ex: any) { if (ex.status && ex.status == 404) { // NO OP/ } else { throw ex; } } - const r = await database.put(newDoc, { force: true }); + const r = await database.put(newDoc, { force: true }); Logger(`note saved:${newDoc._id}:${r.rev}`); return r; }); @@ -452,6 +257,7 @@ async function eachProc(syncKey: string, config: eachConf) { const exportPath = config.local?.path ?? ""; const processor = config.local?.processor ?? ""; + const deleteMetadataOfDeletedFiles = config.deleteMetadataOfDeletedFiles ?? false; const remote = new PouchDB(serverURI, { auth: serverAuth }); if (serverAuth.passphrase != "") { @@ -482,7 +288,7 @@ async function eachProc(syncKey: string, config: eachConf) { .changes({ live: true, include_docs: true, - style: "all_docs", + // style: "all_docs", since: syncStat[syncKey], filter: (doc, _) => { return doc._id.startsWith(e.fromPrefix) && isVaildDoc(doc._id); @@ -490,7 +296,7 @@ async function eachProc(syncKey: string, config: eachConf) { }) .on("change", async function (change) { if (change.doc?._id.indexOf(":") == -1 && change.doc?._id.startsWith(e.fromPrefix) && isVaildDoc(change.doc._id)) { - let x = await transferDoc(e.syncKey, e.fromDB, change.doc, e.fromPrefix, e.passphrase, exportPath); + let x = await transferDoc(e.syncKey, e.fromDB, change.doc, e.fromPrefix, e.passphrase, exportPath, deleteMetadataOfDeletedFiles); if (x) { syncStat[syncKey] = change.seq + ""; triggerSaveStat(); @@ -528,6 +334,7 @@ async function eachProc(syncKey: string, config: eachConf) { fromDB: remote, fromPrefix: serverPath, passphrase: serverAuth.passphrase, + deleteMetadataOfDeletedFiles: deleteMetadataOfDeletedFiles }; function storagePathToVaultPath(strStoragePath: string) { @@ -539,7 +346,7 @@ async function eachProc(syncKey: string, config: eachConf) { return filePath; } - const pushFile = async (pathSrc: string, stat: Stats) => { + const pushFile = async (pathSrc: string, stat: Stats, saveAsBigChunk: boolean) => { const id = serverPath + storagePathToVaultPath(pathSrc); const docId = id.startsWith("_") ? "/" + id : id; try { @@ -575,9 +382,9 @@ async function eachProc(syncKey: string, config: eachConf) { size: stat.size, datatype: datatype, data: content, - // type: "plain", + type: datatype, }; - let ret = await putDBEntry(newNote, conf.passphrase, remote as PouchDB.Database); + let ret = await putDBEntry(newNote, conf.passphrase, saveAsBigChunk, remote as PouchDB.Database); if (ret) { addTouchedFile(pathSrc, 0); addKnownFile(conf.syncKey, ret.id, ret.rev); @@ -588,7 +395,12 @@ async function eachProc(syncKey: string, config: eachConf) { const docId = id.startsWith("_") ? "/" + id : id; try { let oldNote: any = await remote.get(docId); - oldNote._deleted = true; + if (deleteMetadataOfDeletedFiles) { + oldNote._deleted = true; + } else { + oldNote.deleted = true; + oldNote.mtime = Date.now(); + } let ret = await remote.put(oldNote); addKnownFile(conf.syncKey, ret.id, ret.rev); addTouchedFile(pathSrc, 0); @@ -608,11 +420,11 @@ async function eachProc(syncKey: string, config: eachConf) { return false; } } - async function pullFile(id: string, localPath: string) { + async function pullFile(id: string, localPath: string, deleteMetadataOfDeletedFiles: boolean) { let fromDoc = await remote.get(id); const docName = fromDoc._id.substring(serverPath.length); let sendDoc: PouchDB.Core.ExistingDocument & { children?: string[]; type?: string; mtime?: number } = { ...fromDoc, _id: docName.startsWith("_") ? "/" + docName : docName }; - if (await exportDoc(sendDoc, docName, serverAuth.passphrase, remote, exportPath)) { + if (await exportDoc(sendDoc, docName, serverAuth.passphrase, remote, exportPath, deleteMetadataOfDeletedFiles)) { log(`Pull:${localPath}`); } else { log(`Failed:${localPath}`); @@ -642,24 +454,24 @@ async function eachProc(syncKey: string, config: eachConf) { if (diff == DATEDIFF_NEWER_A) { log(`--> ${localPath}`); - await pushFile(storageNewFilePath, stat); + await pushFile(storageNewFilePath, stat, false); // return; } else if (diff == DATEDIFF_OLDER_A) { log(`<-- ${localPath}`); - await pullFile(doc._id, localPath); + await pullFile(doc._id, localPath, deleteMetadataOfDeletedFiles); } else { log(`=== ${localPath}`); } } catch (ex: any) { if (ex.code == "ENOENT") { log(`<<- ${localPath}`); - await pullFile(doc._id, localPath); + await pullFile(doc._id, localPath, deleteMetadataOfDeletedFiles); // return; continue; + } else { + log(`Error on checking file:${localPath}`); + log(`Error:${ex}`); } - - log(`Error on checking file:${localPath}`); - log(`Error:${ex}`); } } log(`Done!`); @@ -683,7 +495,7 @@ async function eachProc(syncKey: string, config: eachConf) { } log(`Detected:change:${filePath}`); addTouchedFile(pathSrc, mtime); - await pushFile(pathSrc, stat); + await pushFile(pathSrc, stat, false); }); watcher.on("unlink", async (pathSrc: string, stat: Stats) => { const filePath = pathSrc; @@ -704,7 +516,7 @@ async function eachProc(syncKey: string, config: eachConf) { } log(`Detected:created:${filePath}`); addTouchedFile(pathSrc, mtime); - await pushFile(pathSrc, stat); + await pushFile(pathSrc, stat, true); // watchVaultChange(path, stat); }); @@ -723,9 +535,9 @@ function isVaildDoc(id: string): boolean { return true; } -async function exportDoc(sendDoc: TransferEntry, docName: string, passphrase: string, db: PouchDB.Database, exportPath: string) { +async function exportDoc(sendDoc: TransferEntry, docName: string, passphrase: string, db: PouchDB.Database, exportPath: string, deleteMetadataOfDeletedFiles: boolean) { const writePath = path.join(exportPath, docName); - if (sendDoc._deleted) { + if (sendDoc._deleted || sendDoc.deleted) { log(`doc:${docName}: Deleted, so delete from ${writePath}`); try { addTouchedFile(writePath, 0); @@ -751,9 +563,11 @@ async function exportDoc(sendDoc: TransferEntry, docName: string, passphrase: st log(`doc:${docName}: Up to date`); return true; } - } catch (ex) { + } catch (ex: any) { // WRAP IT - log(ex); + if (ex.code != "ENOENT") { + log(ex); + } } let cx = sendDoc.children; let children = await getChildren(cx, db); @@ -799,7 +613,7 @@ async function exportDoc(sendDoc: TransferEntry, docName: string, passphrase: st log(`doc:${docName}: Exported`); return true; } -async function transferDoc(syncKey: string, fromDB: PouchDB.Database, fromDoc: PouchDB.Core.ExistingDocument, fromPrefix: string, passphrase: string, exportPath: string): Promise { +async function transferDoc(syncKey: string, fromDB: PouchDB.Database, fromDoc: PouchDB.Core.ExistingDocument, fromPrefix: string, passphrase: string, exportPath: string, deleteMetadataOfDeletedFiles: boolean): Promise { const docKey = `${syncKey}: ${fromDoc._id} (${fromDoc._rev})`; while (running[syncKey]) { await delay(100); @@ -813,7 +627,7 @@ async function transferDoc(syncKey: string, fromDB: PouchDB.Database, fromDoc: P let continue_count = 3; try { const docName = fromDoc._id.substring(fromPrefix.length); - let sendDoc: PouchDB.Core.ExistingDocument & { children?: string[]; type?: string; mtime?: number } = { ...fromDoc, _id: docName.startsWith("_") ? "/" + docName : docName }; + let sendDoc: PouchDB.Core.ExistingDocument & { children?: string[]; type?: string; mtime?: number, deleted?: boolean } = { ...fromDoc, _id: docName.startsWith("_") ? "/" + docName : docName }; let retry = false; do { if (retry) { @@ -824,7 +638,7 @@ async function transferDoc(syncKey: string, fromDB: PouchDB.Database, fromDoc: P } await delay(1500); } - retry = !(await exportDoc(sendDoc, docName, passphrase, fromDB, exportPath)); + retry = !(await exportDoc(sendDoc, docName, passphrase, fromDB, exportPath, deleteMetadataOfDeletedFiles)); } while (retry); } catch (ex) { log("Exception on transfer doc"); @@ -856,4 +670,4 @@ async function main() { } } -main().then((_) => {}); +main().then((_) => { }); diff --git a/src/lib b/src/lib index ae98905..a49a096 160000 --- a/src/lib +++ b/src/lib @@ -1 +1 @@ -Subproject commit ae989051b5fd55db3e9a6b9facf45ee72c0d48c0 +Subproject commit a49a096a6a6d93185bb0a590b3e84e6d7c5431d0 diff --git a/src/pouchdb.js b/src/pouchdb.ts similarity index 87% rename from src/pouchdb.js rename to src/pouchdb.ts index 11eaae5..011cfac 100644 --- a/src/pouchdb.js +++ b/src/pouchdb.ts @@ -5,7 +5,7 @@ const pouchdb_src = require("pouchdb-core") .plugin(require("pouchdb-mapreduce")) .plugin(require("pouchdb-replication")) .plugin(require("transform-pouch")); -const PouchDB = pouchdb_src; +const PouchDB: PouchDB.Static<{}> = pouchdb_src; /** * @type {PouchDB.Static<>} */ diff --git a/src/types.ts b/src/types.ts index 9227842..e8fbf0f 100644 --- a/src/types.ts +++ b/src/types.ts @@ -15,6 +15,7 @@ export interface config { }; path: string; initialScan: boolean; + } export interface localConfig { path: string; @@ -27,6 +28,7 @@ export interface eachConf { local: localConfig; auto_reconnect?: boolean; sync_on_connect: boolean; + deleteMetadataOfDeletedFiles?: boolean; } export interface configFile { @@ -37,65 +39,13 @@ export interface connectConfig { fromDB: PouchDB.Database; fromPrefix: string; passphrase: string; + deleteMetadataOfDeletedFiles: boolean; } -//---LiveSync's data - -export const MAX_DOC_SIZE = 1000; // for .md file, but if delimiters exists. use that before. -export const MAX_DOC_SIZE_BIN = 102400; // 100kb - -export interface EntryLeaf { - _id: string; - data: string; - _deleted?: boolean; - type: "leaf"; - _rev?: string; -} - -export interface Entry { - _id: string; - data: string; - _rev?: string; - ctime: number; - mtime: number; - size: number; - _deleted?: boolean; - _conflicts?: string[]; - type?: "notes"; -} - -export interface NewEntry { - _id: string; - children: string[]; - _rev?: string; - ctime: number; - mtime: number; - size: number; - _deleted?: boolean; - _conflicts?: string[]; - NewNote: true; - type: "newnote"; -} -export interface PlainEntry { - _id: string; - children: string[]; - _rev?: string; - ctime: number; - mtime: number; - size: number; - _deleted?: boolean; - NewNote: true; - _conflicts?: string[]; - type: "plain"; -} - -export type LoadedEntry = Entry & { - children: string[]; - datatype: "plain" | "newnote"; -}; export type TransferEntry = PouchDB.Core.ExistingDocument & { children?: string[]; type?: string; mtime?: number; + deleted?: boolean; };