diff --git a/apps/web/package-lock.json b/apps/web/package-lock.json index 879585857..24adc21ba 100644 --- a/apps/web/package-lock.json +++ b/apps/web/package-lock.json @@ -21,7 +21,6 @@ "@notesnook/common": "file:../../packages/common", "@notesnook/core": "file:../../packages/core", "@notesnook/crypto": "file:../../packages/crypto", - "@notesnook/crypto-worker": "file:../../packages/crypto-worker", "@notesnook/desktop": "file:../desktop", "@notesnook/editor": "file:../../packages/editor", "@notesnook/logger": "file:../../packages/logger", @@ -2180,7 +2179,7 @@ }, "../../extensions/web-clipper/node_modules/@gar/promisify": { "version": "1.1.3", - "dev": true, + "devOptional": true, "license": "MIT" }, "../../extensions/web-clipper/node_modules/@hot-loader/react-dom": { @@ -3358,7 +3357,7 @@ }, "../../extensions/web-clipper/node_modules/@npmcli/fs": { "version": "2.1.2", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "@gar/promisify": "^1.1.3", @@ -3370,7 +3369,7 @@ }, "../../extensions/web-clipper/node_modules/@npmcli/fs/node_modules/semver": { "version": "7.3.8", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -3384,7 +3383,7 @@ }, "../../extensions/web-clipper/node_modules/@npmcli/move-file": { "version": "2.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", @@ -3396,7 +3395,7 @@ }, "../../extensions/web-clipper/node_modules/@npmcli/move-file/node_modules/mkdirp": { "version": "1.0.4", - "dev": true, + "devOptional": true, "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" @@ -3407,7 +3406,7 @@ }, "../../extensions/web-clipper/node_modules/@npmcli/move-file/node_modules/rimraf": { "version": "3.0.2", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "glob": "^7.1.3" @@ -4022,7 +4021,7 @@ }, "../../extensions/web-clipper/node_modules/@tootallnate/once": { "version": "2.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 10" @@ -4258,7 +4257,7 @@ }, "../../extensions/web-clipper/node_modules/@types/minimist": { "version": "1.2.2", - "dev": true, + "devOptional": true, "license": "MIT" }, "../../extensions/web-clipper/node_modules/@types/node": { @@ -4267,7 +4266,7 @@ }, "../../extensions/web-clipper/node_modules/@types/normalize-package-data": { "version": "2.4.1", - "dev": true, + "devOptional": true, "license": "MIT" }, "../../extensions/web-clipper/node_modules/@types/parse-json": { @@ -4288,7 +4287,7 @@ }, "../../extensions/web-clipper/node_modules/@types/prop-types": { "version": "15.7.5", - "dev": true, + "devOptional": true, "license": "MIT" }, "../../extensions/web-clipper/node_modules/@types/q": { @@ -4305,7 +4304,7 @@ }, "../../extensions/web-clipper/node_modules/@types/react": { "version": "17.0.45", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -4350,7 +4349,7 @@ }, "../../extensions/web-clipper/node_modules/@types/scheduler": { "version": "0.16.2", - "dev": true, + "devOptional": true, "license": "MIT" }, "../../extensions/web-clipper/node_modules/@types/serve-index": { @@ -4813,7 +4812,7 @@ }, "../../extensions/web-clipper/node_modules/abbrev": { "version": "1.1.1", - "dev": true, + "devOptional": true, "license": "ISC" }, "../../extensions/web-clipper/node_modules/accepts": { @@ -4925,7 +4924,7 @@ }, "../../extensions/web-clipper/node_modules/agentkeepalive": { "version": "4.2.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "debug": "^4.1.0", @@ -4938,7 +4937,7 @@ }, "../../extensions/web-clipper/node_modules/agentkeepalive/node_modules/depd": { "version": "1.1.2", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -4946,7 +4945,7 @@ }, "../../extensions/web-clipper/node_modules/aggregate-error": { "version": "3.1.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", @@ -5073,12 +5072,12 @@ }, "../../extensions/web-clipper/node_modules/aproba": { "version": "2.0.0", - "dev": true, + "devOptional": true, "license": "ISC" }, "../../extensions/web-clipper/node_modules/are-we-there-yet": { "version": "3.0.1", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "delegates": "^1.0.0", @@ -5090,7 +5089,7 @@ }, "../../extensions/web-clipper/node_modules/are-we-there-yet/node_modules/readable-stream": { "version": "3.6.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -5190,7 +5189,7 @@ }, "../../extensions/web-clipper/node_modules/arrify": { "version": "1.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -5210,7 +5209,7 @@ }, "../../extensions/web-clipper/node_modules/async-foreach": { "version": "0.1.3", - "dev": true, + "devOptional": true, "engines": { "node": "*" } @@ -5763,7 +5762,7 @@ }, "../../extensions/web-clipper/node_modules/cacache": { "version": "16.1.3", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "@npmcli/fs": "^2.1.0", @@ -5791,7 +5790,7 @@ }, "../../extensions/web-clipper/node_modules/cacache/node_modules/brace-expansion": { "version": "2.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -5799,7 +5798,7 @@ }, "../../extensions/web-clipper/node_modules/cacache/node_modules/glob": { "version": "8.0.3", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -5817,7 +5816,7 @@ }, "../../extensions/web-clipper/node_modules/cacache/node_modules/lru-cache": { "version": "7.14.1", - "dev": true, + "devOptional": true, "license": "ISC", "engines": { "node": ">=12" @@ -5825,7 +5824,7 @@ }, "../../extensions/web-clipper/node_modules/cacache/node_modules/minimatch": { "version": "5.1.1", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -5836,7 +5835,7 @@ }, "../../extensions/web-clipper/node_modules/cacache/node_modules/mkdirp": { "version": "1.0.4", - "dev": true, + "devOptional": true, "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" @@ -5847,7 +5846,7 @@ }, "../../extensions/web-clipper/node_modules/cacache/node_modules/p-map": { "version": "4.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" @@ -5861,7 +5860,7 @@ }, "../../extensions/web-clipper/node_modules/cacache/node_modules/rimraf": { "version": "3.0.2", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "glob": "^7.1.3" @@ -5875,7 +5874,7 @@ }, "../../extensions/web-clipper/node_modules/cacache/node_modules/rimraf/node_modules/brace-expansion": { "version": "1.1.11", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -5884,7 +5883,7 @@ }, "../../extensions/web-clipper/node_modules/cacache/node_modules/rimraf/node_modules/glob": { "version": "7.2.3", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -5903,7 +5902,7 @@ }, "../../extensions/web-clipper/node_modules/cacache/node_modules/rimraf/node_modules/minimatch": { "version": "3.1.2", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -5954,7 +5953,7 @@ }, "../../extensions/web-clipper/node_modules/camelcase-keys": { "version": "6.2.2", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "camelcase": "^5.3.1", @@ -6063,7 +6062,7 @@ }, "../../extensions/web-clipper/node_modules/chownr": { "version": "2.0.0", - "dev": true, + "devOptional": true, "license": "ISC", "engines": { "node": ">=10" @@ -6103,7 +6102,7 @@ }, "../../extensions/web-clipper/node_modules/clean-stack": { "version": "2.2.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -6193,7 +6192,7 @@ }, "../../extensions/web-clipper/node_modules/color-support": { "version": "1.1.3", - "dev": true, + "devOptional": true, "license": "ISC", "bin": { "color-support": "bin.js" @@ -6304,7 +6303,7 @@ }, "../../extensions/web-clipper/node_modules/console-control-strings": { "version": "1.1.0", - "dev": true, + "devOptional": true, "license": "ISC" }, "../../extensions/web-clipper/node_modules/content-disposition": { @@ -6861,7 +6860,7 @@ }, "../../extensions/web-clipper/node_modules/decamelize": { "version": "1.2.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -6869,7 +6868,7 @@ }, "../../extensions/web-clipper/node_modules/decamelize-keys": { "version": "1.1.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "decamelize": "^1.1.0", @@ -6881,7 +6880,7 @@ }, "../../extensions/web-clipper/node_modules/decamelize-keys/node_modules/map-obj": { "version": "1.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -7008,7 +7007,7 @@ }, "../../extensions/web-clipper/node_modules/delegates": { "version": "1.0.0", - "dev": true, + "devOptional": true, "license": "MIT" }, "../../extensions/web-clipper/node_modules/depd": { @@ -7286,7 +7285,7 @@ }, "../../extensions/web-clipper/node_modules/env-paths": { "version": "2.2.1", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -7305,7 +7304,7 @@ }, "../../extensions/web-clipper/node_modules/err-code": { "version": "2.0.3", - "dev": true, + "devOptional": true, "license": "MIT" }, "../../extensions/web-clipper/node_modules/error-ex": { @@ -8667,7 +8666,7 @@ }, "../../extensions/web-clipper/node_modules/fs-minipass": { "version": "2.1.0", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "minipass": "^3.0.0" @@ -8717,7 +8716,7 @@ }, "../../extensions/web-clipper/node_modules/gauge": { "version": "4.0.4", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", @@ -8735,7 +8734,7 @@ }, "../../extensions/web-clipper/node_modules/gaze": { "version": "1.1.3", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "globule": "^1.0.0" @@ -8783,7 +8782,7 @@ }, "../../extensions/web-clipper/node_modules/get-stdin": { "version": "4.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -8912,7 +8911,7 @@ }, "../../extensions/web-clipper/node_modules/globule": { "version": "1.3.3", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "glob": "~7.1.1", @@ -8925,7 +8924,7 @@ }, "../../extensions/web-clipper/node_modules/globule/node_modules/glob": { "version": "7.1.7", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -8944,7 +8943,7 @@ }, "../../extensions/web-clipper/node_modules/globule/node_modules/minimatch": { "version": "3.0.8", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -8976,7 +8975,7 @@ }, "../../extensions/web-clipper/node_modules/hard-rejection": { "version": "2.1.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -9045,7 +9044,7 @@ }, "../../extensions/web-clipper/node_modules/has-unicode": { "version": "2.0.1", - "dev": true, + "devOptional": true, "license": "ISC" }, "../../extensions/web-clipper/node_modules/he": { @@ -9071,7 +9070,7 @@ }, "../../extensions/web-clipper/node_modules/hosted-git-info": { "version": "4.1.0", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -9176,7 +9175,7 @@ }, "../../extensions/web-clipper/node_modules/http-cache-semantics": { "version": "4.1.0", - "dev": true, + "devOptional": true, "license": "BSD-2-Clause" }, "../../extensions/web-clipper/node_modules/http-deceiver": { @@ -9215,7 +9214,7 @@ }, "../../extensions/web-clipper/node_modules/http-proxy-agent": { "version": "5.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@tootallnate/once": "2", @@ -9278,7 +9277,7 @@ }, "../../extensions/web-clipper/node_modules/humanize-ms": { "version": "1.2.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ms": "^2.0.0" @@ -9377,7 +9376,7 @@ }, "../../extensions/web-clipper/node_modules/indent-string": { "version": "4.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -9385,7 +9384,7 @@ }, "../../extensions/web-clipper/node_modules/infer-owner": { "version": "1.0.4", - "dev": true, + "devOptional": true, "license": "ISC" }, "../../extensions/web-clipper/node_modules/inflight": { @@ -9426,7 +9425,7 @@ }, "../../extensions/web-clipper/node_modules/ip": { "version": "2.0.0", - "dev": true, + "devOptional": true, "license": "MIT" }, "../../extensions/web-clipper/node_modules/ipaddr.js": { @@ -9553,7 +9552,7 @@ }, "../../extensions/web-clipper/node_modules/is-lambda": { "version": "1.0.1", - "dev": true, + "devOptional": true, "license": "MIT" }, "../../extensions/web-clipper/node_modules/is-module": { @@ -9629,7 +9628,7 @@ }, "../../extensions/web-clipper/node_modules/is-plain-obj": { "version": "1.1.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12932,7 +12931,7 @@ }, "../../extensions/web-clipper/node_modules/js-base64": { "version": "2.6.4", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause" }, "../../extensions/web-clipper/node_modules/js-tokens": { @@ -13181,7 +13180,7 @@ }, "../../extensions/web-clipper/node_modules/make-fetch-happen": { "version": "10.2.1", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", @@ -13207,7 +13206,7 @@ }, "../../extensions/web-clipper/node_modules/make-fetch-happen/node_modules/lru-cache": { "version": "7.14.1", - "dev": true, + "devOptional": true, "license": "ISC", "engines": { "node": ">=12" @@ -13222,7 +13221,7 @@ }, "../../extensions/web-clipper/node_modules/map-obj": { "version": "4.3.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -13254,7 +13253,7 @@ }, "../../extensions/web-clipper/node_modules/meow": { "version": "9.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@types/minimist": "^1.2.0", @@ -13342,7 +13341,7 @@ }, "../../extensions/web-clipper/node_modules/min-indent": { "version": "1.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=4" @@ -13430,7 +13429,7 @@ }, "../../extensions/web-clipper/node_modules/minimist-options": { "version": "4.1.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "arrify": "^1.0.1", @@ -13443,7 +13442,7 @@ }, "../../extensions/web-clipper/node_modules/minipass": { "version": "3.3.6", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -13454,7 +13453,7 @@ }, "../../extensions/web-clipper/node_modules/minipass-collect": { "version": "1.0.2", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "minipass": "^3.0.0" @@ -13465,7 +13464,7 @@ }, "../../extensions/web-clipper/node_modules/minipass-fetch": { "version": "2.1.2", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "minipass": "^3.1.6", @@ -13481,7 +13480,7 @@ }, "../../extensions/web-clipper/node_modules/minipass-flush": { "version": "1.0.5", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "minipass": "^3.0.0" @@ -13492,7 +13491,7 @@ }, "../../extensions/web-clipper/node_modules/minipass-pipeline": { "version": "1.2.4", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "minipass": "^3.0.0" @@ -13503,7 +13502,7 @@ }, "../../extensions/web-clipper/node_modules/minipass-sized": { "version": "1.0.3", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "minipass": "^3.0.0" @@ -13514,7 +13513,7 @@ }, "../../extensions/web-clipper/node_modules/minizlib": { "version": "2.1.2", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "minipass": "^3.0.0", @@ -13551,7 +13550,7 @@ }, "../../extensions/web-clipper/node_modules/nan": { "version": "2.17.0", - "dev": true, + "devOptional": true, "license": "MIT" }, "../../extensions/web-clipper/node_modules/nanoid": { @@ -13596,7 +13595,7 @@ }, "../../extensions/web-clipper/node_modules/node-gyp": { "version": "8.4.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "env-paths": "^2.2.0", @@ -13619,7 +13618,7 @@ }, "../../extensions/web-clipper/node_modules/node-gyp/node_modules/@npmcli/fs": { "version": "1.1.1", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "@gar/promisify": "^1.0.1", @@ -13628,7 +13627,7 @@ }, "../../extensions/web-clipper/node_modules/node-gyp/node_modules/@npmcli/move-file": { "version": "1.1.2", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", @@ -13640,7 +13639,7 @@ }, "../../extensions/web-clipper/node_modules/node-gyp/node_modules/@tootallnate/once": { "version": "1.1.2", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 6" @@ -13648,7 +13647,7 @@ }, "../../extensions/web-clipper/node_modules/node-gyp/node_modules/cacache": { "version": "15.3.0", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "@npmcli/fs": "^1.0.0", @@ -13676,7 +13675,7 @@ }, "../../extensions/web-clipper/node_modules/node-gyp/node_modules/http-proxy-agent": { "version": "4.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@tootallnate/once": "1", @@ -13689,7 +13688,7 @@ }, "../../extensions/web-clipper/node_modules/node-gyp/node_modules/make-fetch-happen": { "version": "9.1.0", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "agentkeepalive": "^4.1.3", @@ -13715,7 +13714,7 @@ }, "../../extensions/web-clipper/node_modules/node-gyp/node_modules/minipass-fetch": { "version": "1.4.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "minipass": "^3.1.0", @@ -13731,7 +13730,7 @@ }, "../../extensions/web-clipper/node_modules/node-gyp/node_modules/mkdirp": { "version": "1.0.4", - "dev": true, + "devOptional": true, "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" @@ -13742,7 +13741,7 @@ }, "../../extensions/web-clipper/node_modules/node-gyp/node_modules/p-map": { "version": "4.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" @@ -13756,7 +13755,7 @@ }, "../../extensions/web-clipper/node_modules/node-gyp/node_modules/rimraf": { "version": "3.0.2", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "glob": "^7.1.3" @@ -13770,7 +13769,7 @@ }, "../../extensions/web-clipper/node_modules/node-gyp/node_modules/semver": { "version": "7.3.8", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -13784,7 +13783,7 @@ }, "../../extensions/web-clipper/node_modules/node-gyp/node_modules/socks-proxy-agent": { "version": "6.2.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "agent-base": "^6.0.2", @@ -13797,7 +13796,7 @@ }, "../../extensions/web-clipper/node_modules/node-gyp/node_modules/ssri": { "version": "8.0.1", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "minipass": "^3.1.1" @@ -13808,7 +13807,7 @@ }, "../../extensions/web-clipper/node_modules/node-gyp/node_modules/unique-filename": { "version": "1.1.1", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "unique-slug": "^2.0.0" @@ -13816,7 +13815,7 @@ }, "../../extensions/web-clipper/node_modules/node-gyp/node_modules/unique-slug": { "version": "2.0.2", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" @@ -13832,7 +13831,7 @@ }, "../../extensions/web-clipper/node_modules/node-sass": { "version": "8.0.0", - "dev": true, + "devOptional": true, "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -13860,7 +13859,7 @@ }, "../../extensions/web-clipper/node_modules/node-sass/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13874,7 +13873,7 @@ }, "../../extensions/web-clipper/node_modules/node-sass/node_modules/chalk": { "version": "4.1.2", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13889,7 +13888,7 @@ }, "../../extensions/web-clipper/node_modules/node-sass/node_modules/color-convert": { "version": "2.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13900,12 +13899,12 @@ }, "../../extensions/web-clipper/node_modules/node-sass/node_modules/color-name": { "version": "1.1.4", - "dev": true, + "devOptional": true, "license": "MIT" }, "../../extensions/web-clipper/node_modules/node-sass/node_modules/has-flag": { "version": "4.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -13913,7 +13912,7 @@ }, "../../extensions/web-clipper/node_modules/node-sass/node_modules/supports-color": { "version": "7.2.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13924,7 +13923,7 @@ }, "../../extensions/web-clipper/node_modules/nopt": { "version": "5.0.0", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "abbrev": "1" @@ -13938,7 +13937,7 @@ }, "../../extensions/web-clipper/node_modules/normalize-package-data": { "version": "3.0.3", - "dev": true, + "devOptional": true, "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^4.0.1", @@ -13952,7 +13951,7 @@ }, "../../extensions/web-clipper/node_modules/normalize-package-data/node_modules/semver": { "version": "7.3.7", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -14000,7 +13999,7 @@ }, "../../extensions/web-clipper/node_modules/npmlog": { "version": "6.0.2", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "are-we-there-yet": "^3.0.0", @@ -15707,12 +15706,12 @@ }, "../../extensions/web-clipper/node_modules/promise-inflight": { "version": "1.0.1", - "dev": true, + "devOptional": true, "license": "ISC" }, "../../extensions/web-clipper/node_modules/promise-retry": { "version": "2.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "err-code": "^2.0.2", @@ -15724,7 +15723,7 @@ }, "../../extensions/web-clipper/node_modules/promise-retry/node_modules/retry": { "version": "0.12.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 4" @@ -15807,7 +15806,7 @@ }, "../../extensions/web-clipper/node_modules/quick-lru": { "version": "4.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -16277,7 +16276,7 @@ }, "../../extensions/web-clipper/node_modules/read-pkg": { "version": "5.2.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.0", @@ -16291,7 +16290,7 @@ }, "../../extensions/web-clipper/node_modules/read-pkg-up": { "version": "7.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "find-up": "^4.1.0", @@ -16307,7 +16306,7 @@ }, "../../extensions/web-clipper/node_modules/read-pkg-up/node_modules/find-up": { "version": "4.1.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", @@ -16319,7 +16318,7 @@ }, "../../extensions/web-clipper/node_modules/read-pkg-up/node_modules/locate-path": { "version": "5.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" @@ -16330,7 +16329,7 @@ }, "../../extensions/web-clipper/node_modules/read-pkg-up/node_modules/p-limit": { "version": "2.3.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -16344,7 +16343,7 @@ }, "../../extensions/web-clipper/node_modules/read-pkg-up/node_modules/p-locate": { "version": "4.1.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" @@ -16355,7 +16354,7 @@ }, "../../extensions/web-clipper/node_modules/read-pkg-up/node_modules/path-exists": { "version": "4.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -16363,7 +16362,7 @@ }, "../../extensions/web-clipper/node_modules/read-pkg-up/node_modules/type-fest": { "version": "0.8.1", - "dev": true, + "devOptional": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" @@ -16371,12 +16370,12 @@ }, "../../extensions/web-clipper/node_modules/read-pkg/node_modules/hosted-git-info": { "version": "2.8.9", - "dev": true, + "devOptional": true, "license": "ISC" }, "../../extensions/web-clipper/node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", - "dev": true, + "devOptional": true, "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", @@ -16387,7 +16386,7 @@ }, "../../extensions/web-clipper/node_modules/read-pkg/node_modules/semver": { "version": "5.7.1", - "dev": true, + "devOptional": true, "license": "ISC", "bin": { "semver": "bin/semver" @@ -16395,7 +16394,7 @@ }, "../../extensions/web-clipper/node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", - "dev": true, + "devOptional": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" @@ -16457,7 +16456,7 @@ }, "../../extensions/web-clipper/node_modules/redent": { "version": "3.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "indent-string": "^4.0.0", @@ -16855,7 +16854,7 @@ }, "../../extensions/web-clipper/node_modules/sass-graph": { "version": "4.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "glob": "^7.0.0", @@ -16872,7 +16871,7 @@ }, "../../extensions/web-clipper/node_modules/sass-graph/node_modules/cliui": { "version": "8.0.1", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -16885,7 +16884,7 @@ }, "../../extensions/web-clipper/node_modules/sass-graph/node_modules/yargs": { "version": "17.6.2", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -16902,7 +16901,7 @@ }, "../../extensions/web-clipper/node_modules/sass-graph/node_modules/yargs-parser": { "version": "21.1.1", - "dev": true, + "devOptional": true, "license": "ISC", "engines": { "node": ">=12" @@ -16985,7 +16984,7 @@ }, "../../extensions/web-clipper/node_modules/scss-tokenizer": { "version": "0.4.3", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "js-base64": "^2.4.9", @@ -16994,7 +16993,7 @@ }, "../../extensions/web-clipper/node_modules/scss-tokenizer/node_modules/source-map": { "version": "0.7.4", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause", "engines": { "node": ">= 8" @@ -17153,7 +17152,7 @@ }, "../../extensions/web-clipper/node_modules/set-blocking": { "version": "2.0.0", - "dev": true, + "devOptional": true, "license": "ISC" }, "../../extensions/web-clipper/node_modules/setprototypeof": { @@ -17225,7 +17224,7 @@ }, "../../extensions/web-clipper/node_modules/smart-buffer": { "version": "4.2.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 6.0.0", @@ -17250,7 +17249,7 @@ }, "../../extensions/web-clipper/node_modules/socks": { "version": "2.7.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ip": "^2.0.0", @@ -17263,7 +17262,7 @@ }, "../../extensions/web-clipper/node_modules/socks-proxy-agent": { "version": "7.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "agent-base": "^6.0.2", @@ -17347,7 +17346,7 @@ }, "../../extensions/web-clipper/node_modules/spdx-correct": { "version": "3.1.1", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", @@ -17356,12 +17355,12 @@ }, "../../extensions/web-clipper/node_modules/spdx-exceptions": { "version": "2.3.0", - "dev": true, + "devOptional": true, "license": "CC-BY-3.0" }, "../../extensions/web-clipper/node_modules/spdx-expression-parse": { "version": "3.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", @@ -17370,7 +17369,7 @@ }, "../../extensions/web-clipper/node_modules/spdx-license-ids": { "version": "3.0.11", - "dev": true, + "devOptional": true, "license": "CC0-1.0" }, "../../extensions/web-clipper/node_modules/spdy": { @@ -17417,7 +17416,7 @@ }, "../../extensions/web-clipper/node_modules/ssri": { "version": "9.0.1", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "minipass": "^3.1.1" @@ -17460,7 +17459,7 @@ }, "../../extensions/web-clipper/node_modules/stdout-stream": { "version": "1.4.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "readable-stream": "^2.0.1" @@ -17590,7 +17589,7 @@ }, "../../extensions/web-clipper/node_modules/strip-indent": { "version": "3.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "min-indent": "^1.0.0" @@ -17914,7 +17913,7 @@ }, "../../extensions/web-clipper/node_modules/tar": { "version": "6.1.12", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "chownr": "^2.0.0", @@ -17930,7 +17929,7 @@ }, "../../extensions/web-clipper/node_modules/tar/node_modules/mkdirp": { "version": "1.0.4", - "dev": true, + "devOptional": true, "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" @@ -18175,7 +18174,7 @@ }, "../../extensions/web-clipper/node_modules/trim-newlines": { "version": "3.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -18183,7 +18182,7 @@ }, "../../extensions/web-clipper/node_modules/true-case-path": { "version": "2.2.1", - "dev": true, + "devOptional": true, "license": "Apache-2.0" }, "../../extensions/web-clipper/node_modules/tryer": { @@ -18353,7 +18352,7 @@ }, "../../extensions/web-clipper/node_modules/type-fest": { "version": "0.18.1", - "dev": true, + "devOptional": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -18427,7 +18426,7 @@ }, "../../extensions/web-clipper/node_modules/unique-filename": { "version": "2.0.1", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "unique-slug": "^3.0.0" @@ -18438,7 +18437,7 @@ }, "../../extensions/web-clipper/node_modules/unique-slug": { "version": "3.0.0", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" @@ -18554,7 +18553,7 @@ }, "../../extensions/web-clipper/node_modules/validate-npm-package-license": { "version": "3.0.4", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", @@ -19022,7 +19021,7 @@ }, "../../extensions/web-clipper/node_modules/wide-align": { "version": "1.1.5", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" @@ -20316,6 +20315,7 @@ "../../packages/crypto-worker": { "name": "@notesnook/crypto-worker", "version": "1.0.0", + "extraneous": true, "license": "GPL-3.0-or-later", "dependencies": { "@notesnook/crypto": "file:../crypto", @@ -20323,14 +20323,6 @@ }, "devDependencies": {} }, - "../../packages/crypto-worker/node_modules/@notesnook/crypto": { - "resolved": "../../packages/crypto", - "link": true - }, - "../../packages/crypto-worker/node_modules/comlink": { - "version": "4.3.1", - "license": "Apache-2.0" - }, "../../packages/crypto/node_modules/@notesnook/sodium": { "resolved": "../../packages/sodium", "link": true @@ -22814,7 +22806,6 @@ }, "../../packages/editor/node_modules/react": { "version": "17.0.2", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", @@ -22834,7 +22825,6 @@ }, "../../packages/editor/node_modules/react-dom": { "version": "17.0.2", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", @@ -22961,7 +22951,6 @@ }, "../../packages/editor/node_modules/scheduler": { "version": "0.20.2", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", @@ -26660,7 +26649,6 @@ }, "../../packages/ui/node_modules/react": { "version": "17.0.2", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", @@ -26672,7 +26660,6 @@ }, "../../packages/ui/node_modules/react-dom": { "version": "17.0.2", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", @@ -26736,7 +26723,6 @@ }, "../../packages/ui/node_modules/scheduler": { "version": "0.20.2", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", @@ -27012,7 +26998,6 @@ }, "../desktop/node_modules/@electron/get": { "version": "2.0.2", - "dev": true, "license": "MIT", "dependencies": { "debug": "^4.1.1", @@ -27032,7 +27017,6 @@ }, "../desktop/node_modules/@electron/get/node_modules/fs-extra": { "version": "8.1.0", - "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -27045,7 +27029,6 @@ }, "../desktop/node_modules/@electron/get/node_modules/jsonfile": { "version": "4.0.0", - "dev": true, "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -27053,7 +27036,6 @@ }, "../desktop/node_modules/@electron/get/node_modules/semver": { "version": "6.3.0", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -27061,7 +27043,6 @@ }, "../desktop/node_modules/@electron/get/node_modules/universalify": { "version": "0.1.2", - "dev": true, "license": "MIT", "engines": { "node": ">= 4.0.0" @@ -27381,7 +27362,6 @@ }, "../desktop/node_modules/@sindresorhus/is": { "version": "4.6.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -27392,7 +27372,6 @@ }, "../desktop/node_modules/@szmarczak/http-timer": { "version": "4.0.6", - "dev": true, "license": "MIT", "dependencies": { "defer-to-connect": "^2.0.0" @@ -27432,7 +27411,6 @@ }, "../desktop/node_modules/@types/cacheable-request": { "version": "6.0.3", - "dev": true, "license": "MIT", "dependencies": { "@types/http-cache-semantics": "*", @@ -27459,12 +27437,10 @@ }, "../desktop/node_modules/@types/http-cache-semantics": { "version": "4.0.1", - "dev": true, "license": "MIT" }, "../desktop/node_modules/@types/keyv": { "version": "3.1.4", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -27477,7 +27453,6 @@ }, "../desktop/node_modules/@types/node": { "version": "18.16.18", - "dev": true, "license": "MIT" }, "../desktop/node_modules/@types/normalize-package-data": { @@ -27487,7 +27462,6 @@ }, "../desktop/node_modules/@types/responselike": { "version": "1.0.0", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -27508,7 +27482,6 @@ }, "../desktop/node_modules/@types/yauzl": { "version": "2.10.0", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -27787,7 +27760,6 @@ }, "../desktop/node_modules/boolean": { "version": "3.2.0", - "dev": true, "license": "MIT", "optional": true }, @@ -27836,7 +27808,6 @@ }, "../desktop/node_modules/buffer-crc32": { "version": "0.2.13", - "dev": true, "license": "MIT", "engines": { "node": "*" @@ -27967,7 +27938,6 @@ }, "../desktop/node_modules/cacheable-lookup": { "version": "5.0.4", - "dev": true, "license": "MIT", "engines": { "node": ">=10.6.0" @@ -27975,7 +27945,6 @@ }, "../desktop/node_modules/cacheable-request": { "version": "7.0.4", - "dev": true, "license": "MIT", "dependencies": { "clone-response": "^1.0.2", @@ -28110,7 +28079,6 @@ }, "../desktop/node_modules/clone-response": { "version": "1.0.3", - "dev": true, "license": "MIT", "dependencies": { "mimic-response": "^1.0.0" @@ -28248,7 +28216,6 @@ }, "../desktop/node_modules/decompress-response": { "version": "6.0.0", - "dev": true, "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" @@ -28262,7 +28229,6 @@ }, "../desktop/node_modules/decompress-response/node_modules/mimic-response": { "version": "3.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -28284,7 +28250,6 @@ }, "../desktop/node_modules/defer-to-connect": { "version": "2.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -28292,7 +28257,6 @@ }, "../desktop/node_modules/define-properties": { "version": "1.2.0", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -28337,7 +28301,6 @@ }, "../desktop/node_modules/detect-node": { "version": "2.1.0", - "dev": true, "license": "MIT", "optional": true }, @@ -28400,7 +28363,6 @@ }, "../desktop/node_modules/electron": { "version": "24.5.1", - "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -28563,7 +28525,6 @@ }, "../desktop/node_modules/end-of-stream": { "version": "1.4.4", - "dev": true, "license": "MIT", "dependencies": { "once": "^1.4.0" @@ -28571,7 +28532,6 @@ }, "../desktop/node_modules/env-paths": { "version": "2.2.1", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -28592,7 +28552,6 @@ }, "../desktop/node_modules/es6-error": { "version": "4.1.1", - "dev": true, "license": "MIT", "optional": true }, @@ -28641,7 +28600,6 @@ }, "../desktop/node_modules/escape-string-regexp": { "version": "4.0.0", - "dev": true, "license": "MIT", "optional": true, "engines": { @@ -28670,7 +28628,6 @@ }, "../desktop/node_modules/extract-zip": { "version": "2.0.1", - "dev": true, "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", @@ -28699,7 +28656,6 @@ }, "../desktop/node_modules/fd-slicer": { "version": "1.1.0", - "dev": true, "license": "MIT", "dependencies": { "pend": "~1.2.0" @@ -28860,7 +28816,7 @@ }, "../desktop/node_modules/function-bind": { "version": "1.1.1", - "dev": true, + "devOptional": true, "license": "MIT" }, "../desktop/node_modules/gauge": { @@ -28890,7 +28846,6 @@ }, "../desktop/node_modules/get-intrinsic": { "version": "1.2.1", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -28905,7 +28860,6 @@ }, "../desktop/node_modules/get-stream": { "version": "5.2.0", - "dev": true, "license": "MIT", "dependencies": { "pump": "^3.0.0" @@ -28949,7 +28903,6 @@ }, "../desktop/node_modules/global-agent": { "version": "3.0.0", - "dev": true, "license": "BSD-3-Clause", "optional": true, "dependencies": { @@ -28966,7 +28919,6 @@ }, "../desktop/node_modules/globalthis": { "version": "1.0.3", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -28981,7 +28933,6 @@ }, "../desktop/node_modules/got": { "version": "11.8.6", - "dev": true, "license": "MIT", "dependencies": { "@sindresorhus/is": "^4.0.0", @@ -29009,7 +28960,7 @@ }, "../desktop/node_modules/has": { "version": "1.0.3", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.1" @@ -29028,7 +28979,6 @@ }, "../desktop/node_modules/has-property-descriptors": { "version": "1.0.0", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -29040,7 +28990,6 @@ }, "../desktop/node_modules/has-proto": { "version": "1.0.1", - "dev": true, "license": "MIT", "optional": true, "engines": { @@ -29052,7 +29001,6 @@ }, "../desktop/node_modules/has-symbols": { "version": "1.0.3", - "dev": true, "license": "MIT", "optional": true, "engines": { @@ -29080,7 +29028,6 @@ }, "../desktop/node_modules/http-cache-semantics": { "version": "4.1.1", - "dev": true, "license": "BSD-2-Clause" }, "../desktop/node_modules/http-proxy-agent": { @@ -29098,7 +29045,6 @@ }, "../desktop/node_modules/http2-wrapper": { "version": "1.0.3", - "dev": true, "license": "MIT", "dependencies": { "quick-lru": "^5.1.1", @@ -29373,7 +29319,6 @@ }, "../desktop/node_modules/json-buffer": { "version": "3.0.1", - "dev": true, "license": "MIT" }, "../desktop/node_modules/json-parse-even-better-errors": { @@ -29388,7 +29333,6 @@ }, "../desktop/node_modules/json-stringify-safe": { "version": "5.0.1", - "dev": true, "license": "ISC", "optional": true }, @@ -29415,7 +29359,6 @@ }, "../desktop/node_modules/keyv": { "version": "4.5.2", - "dev": true, "license": "MIT", "dependencies": { "json-buffer": "3.0.1" @@ -29460,7 +29403,6 @@ }, "../desktop/node_modules/lowercase-keys": { "version": "2.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -29511,7 +29453,6 @@ }, "../desktop/node_modules/matcher": { "version": "3.0.0", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -29561,7 +29502,6 @@ }, "../desktop/node_modules/mimic-response": { "version": "1.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -29870,7 +29810,6 @@ }, "../desktop/node_modules/normalize-url": { "version": "6.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -29895,7 +29834,6 @@ }, "../desktop/node_modules/object-keys": { "version": "1.1.1", - "dev": true, "license": "MIT", "optional": true, "engines": { @@ -29904,7 +29842,6 @@ }, "../desktop/node_modules/once": { "version": "1.4.0", - "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -29948,7 +29885,6 @@ }, "../desktop/node_modules/p-cancelable": { "version": "2.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -30058,7 +29994,6 @@ }, "../desktop/node_modules/pend": { "version": "1.2.0", - "dev": true, "license": "MIT" }, "../desktop/node_modules/picomatch": { @@ -30093,7 +30028,6 @@ }, "../desktop/node_modules/progress": { "version": "2.0.3", - "dev": true, "license": "MIT", "engines": { "node": ">=0.4.0" @@ -30113,7 +30047,6 @@ }, "../desktop/node_modules/pump": { "version": "3.0.0", - "dev": true, "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", @@ -30130,7 +30063,6 @@ }, "../desktop/node_modules/quick-lru": { "version": "5.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -30311,12 +30243,10 @@ }, "../desktop/node_modules/resolve-alpn": { "version": "1.2.1", - "dev": true, "license": "MIT" }, "../desktop/node_modules/responselike": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "lowercase-keys": "^2.0.0" @@ -30361,7 +30291,6 @@ }, "../desktop/node_modules/roarr": { "version": "2.15.4", - "dev": true, "license": "BSD-3-Clause", "optional": true, "dependencies": { @@ -30434,13 +30363,11 @@ }, "../desktop/node_modules/semver-compare": { "version": "1.0.0", - "dev": true, "license": "MIT", "optional": true }, "../desktop/node_modules/serialize-error": { "version": "7.0.1", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -30455,7 +30382,6 @@ }, "../desktop/node_modules/serialize-error/node_modules/type-fest": { "version": "0.13.1", - "dev": true, "license": "(MIT OR CC0-1.0)", "optional": true, "engines": { @@ -30595,7 +30521,6 @@ }, "../desktop/node_modules/sprintf-js": { "version": "1.1.2", - "dev": true, "license": "BSD-3-Clause", "optional": true }, @@ -30690,7 +30615,6 @@ }, "../desktop/node_modules/sumchecker": { "version": "3.0.1", - "dev": true, "license": "Apache-2.0", "dependencies": { "debug": "^4.1.0" @@ -30992,7 +30916,6 @@ }, "../desktop/node_modules/wrappy": { "version": "1.0.2", - "dev": true, "license": "ISC" }, "../desktop/node_modules/xmlbuilder": { @@ -31039,7 +30962,6 @@ }, "../desktop/node_modules/yauzl": { "version": "2.10.0", - "dev": true, "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", @@ -32822,6 +32744,68 @@ "version": "2.5.0", "license": "0BSD" }, + "node_modules/@electron/get": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.2.tgz", + "integrity": "sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==", + "peer": true, + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^11.8.5", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "global-agent": "^3.0.0" + } + }, + "node_modules/@electron/get/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@electron/get/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/get/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@electron/get/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/@emotion/babel-plugin": { "version": "11.11.0", "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", @@ -33280,10 +33264,6 @@ "resolved": "../../packages/crypto", "link": true }, - "node_modules/@notesnook/crypto-worker": { - "resolved": "../../packages/crypto-worker", - "link": true - }, "node_modules/@notesnook/desktop": { "resolved": "../desktop", "link": true @@ -33541,6 +33521,18 @@ "react-dom": ">=16.8.0" } }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, "node_modules/@standardnotes/auth": { "version": "3.19.4", "license": "AGPL-3.0-or-later", @@ -33929,6 +33921,18 @@ "node": ">=10" } }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "peer": true, + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@tanstack/query-core": { "version": "4.32.1", "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.32.1.tgz", @@ -34049,7 +34053,6 @@ }, "node_modules/@trpc/server": { "version": "10.31.0", - "dev": true, "funding": [ "https://trpc.io/sponsor" ], @@ -34092,6 +34095,18 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "peer": true, + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, "node_modules/@types/chai": { "version": "4.3.5", "dev": true, @@ -34105,6 +34120,28 @@ "@types/chai": "*" } }, + "node_modules/@types/eslint": { + "version": "8.44.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", + "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.0", "dev": true, @@ -34115,11 +34152,26 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "peer": true + }, "node_modules/@types/json-schema": { "version": "7.0.11", "dev": true, "license": "MIT" }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/marked": { "version": "4.0.8", "dev": true, @@ -34127,7 +34179,6 @@ }, "node_modules/@types/node": { "version": "18.14.0", - "dev": true, "license": "MIT" }, "node_modules/@types/node-fetch": { @@ -34188,6 +34239,15 @@ "@types/node": "*" } }, + "node_modules/@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/styled-system": { "version": "5.1.16", "license": "MIT", @@ -34206,6 +34266,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "optional": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@vitejs/plugin-react-swc": { "version": "3.3.2", "dev": true, @@ -34292,6 +34362,181 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "peer": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "peer": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "peer": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "peer": true + }, "node_modules/abbrev": { "version": "1.1.1", "license": "ISC", @@ -34308,6 +34553,16 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peer": true, + "peerDependencies": { + "acorn": "^8" + } + }, "node_modules/agent-base": { "version": "6.0.2", "license": "MIT", @@ -34616,6 +34871,13 @@ "version": "1.0.0", "license": "ISC" }, + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "optional": true, + "peer": true + }, "node_modules/brace-expansion": { "version": "1.1.11", "devOptional": true, @@ -34686,6 +34948,15 @@ "ieee754": "^1.2.1" } }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "peer": true, + "engines": { + "node": "*" + } + }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "license": "BSD-3-Clause" @@ -34715,6 +34986,33 @@ "node": ">=8" } }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "peer": true, + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "peer": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/call-bind": { "version": "1.0.2", "dev": true, @@ -34855,6 +35153,16 @@ "license": "ISC", "optional": true }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.0" + } + }, "node_modules/classnames": { "version": "2.3.2", "license": "MIT" @@ -34876,6 +35184,27 @@ "node": ">=12" } }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "peer": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clone-response/node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/color-convert": { "version": "2.0.1", "dev": true, @@ -35099,7 +35428,6 @@ "node_modules/decompress-response": { "version": "6.0.0", "license": "MIT", - "optional": true, "dependencies": { "mimic-response": "^3.1.0" }, @@ -35136,6 +35464,15 @@ "node": ">=0.10.0" } }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "peer": true, + "engines": { + "node": ">=10" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "dev": true, @@ -35146,7 +35483,7 @@ }, "node_modules/define-properties": { "version": "1.2.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-property-descriptors": "^1.0.0", @@ -35179,6 +35516,13 @@ "node": ">=8" } }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "optional": true, + "peer": true + }, "node_modules/dom-serializer": { "version": "2.0.0", "license": "MIT", @@ -35255,6 +35599,24 @@ "node": ">=0.10.0" } }, + "node_modules/electron": { + "version": "26.1.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-26.1.0.tgz", + "integrity": "sha512-qEh19H09Pysn3ibms5nZ0haIh5pFoOd7/5Ww7gzmAwDQOulRi8Sa2naeueOyIb1GKpf+6L4ix3iceYRAuA5r5Q==", + "hasInstallScript": true, + "peer": true, + "dependencies": { + "@electron/get": "^2.0.0", + "@types/node": "^18.11.18", + "extract-zip": "^2.0.1" + }, + "bin": { + "electron": "cli.js" + }, + "engines": { + "node": ">= 12.20.55" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.302", "dev": true, @@ -35288,11 +35650,24 @@ "node_modules/end-of-stream": { "version": "1.4.4", "license": "MIT", - "optional": true, "dependencies": { "once": "^1.4.0" } }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/entities": { "version": "4.4.0", "license": "BSD-2-Clause", @@ -35303,6 +35678,15 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "peer": true, + "engines": { + "node": ">=6" + } + }, "node_modules/error-ex": { "version": "1.3.2", "license": "MIT", @@ -35356,6 +35740,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-module-lexer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "dev": true, + "peer": true + }, "node_modules/es-set-tostringtag": { "version": "2.0.1", "dev": true, @@ -35385,6 +35776,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "optional": true, + "peer": true + }, "node_modules/esbuild": { "version": "0.17.19", "dev": true, @@ -35775,6 +36173,53 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "peer": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/estree-walker": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", @@ -35797,6 +36242,16 @@ "version": "5.0.0", "license": "MIT" }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/exenv": { "version": "1.2.2", "license": "BSD-3-Clause" @@ -35809,6 +36264,26 @@ "node": ">=6" } }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "peer": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "dev": true, @@ -35858,6 +36333,15 @@ "reusify": "^1.0.4" } }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "peer": true, + "dependencies": { + "pend": "~1.2.0" + } + }, "node_modules/fflate": { "version": "0.8.0", "license": "MIT" @@ -36187,7 +36671,7 @@ }, "node_modules/get-intrinsic": { "version": "1.2.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.1", @@ -36203,6 +36687,21 @@ "dev": true, "license": "ISC" }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "peer": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-symbol-description": { "version": "1.0.0", "dev": true, @@ -36242,6 +36741,31 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "peer": true + }, + "node_modules/global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "optional": true, + "peer": true, + "dependencies": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, "node_modules/globals": { "version": "11.12.0", "dev": true, @@ -36252,7 +36776,7 @@ }, "node_modules/globalthis": { "version": "1.0.3", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "define-properties": "^1.1.3" @@ -36282,9 +36806,33 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "peer": true, + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, "node_modules/graceful-fs": { "version": "4.2.10", - "dev": true, "license": "ISC" }, "node_modules/happy-dom": { @@ -36356,7 +36904,7 @@ }, "node_modules/has-property-descriptors": { "version": "1.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.1" @@ -36378,7 +36926,7 @@ }, "node_modules/has-symbols": { "version": "1.0.3", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -36450,6 +36998,25 @@ "entities": "^4.3.0" } }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "peer": true + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "peer": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "license": "MIT", @@ -36869,6 +37436,37 @@ "node": ">=10" } }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/js-string-escape": { "version": "1.0.1", "dev": true, @@ -36892,6 +37490,12 @@ "node": ">=4" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "peer": true + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "license": "MIT" @@ -36906,6 +37510,13 @@ "dev": true, "license": "MIT" }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "optional": true, + "peer": true + }, "node_modules/json5": { "version": "2.2.3", "dev": true, @@ -37001,6 +37612,15 @@ "license": "MIT", "optional": true }, + "node_modules/keyv": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "peer": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/leven": { "version": "3.1.0", "dev": true, @@ -37020,6 +37640,16 @@ "version": "1.2.4", "license": "MIT" }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.11.5" + } + }, "node_modules/loader-utils": { "version": "2.0.4", "dev": true, @@ -37141,6 +37771,15 @@ "get-func-name": "^2.0.0" } }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "peer": true, + "engines": { + "node": ">=8" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "dev": true, @@ -37193,6 +37832,19 @@ "node": ">= 12" } }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "optional": true, + "peer": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/md5-hex": { "version": "3.0.1", "dev": true, @@ -37250,7 +37902,6 @@ "node_modules/mimic-response": { "version": "3.1.0", "license": "MIT", - "optional": true, "engines": { "node": ">=10" }, @@ -37371,6 +38022,13 @@ "license": "MIT", "optional": true }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "peer": true + }, "node_modules/node-abi": { "version": "3.33.0", "license": "MIT", @@ -37432,6 +38090,18 @@ "node": ">=0.10.0" } }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/npmlog": { "version": "5.0.1", "license": "ISC", @@ -37470,7 +38140,7 @@ }, "node_modules/object-keys": { "version": "1.1.1", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -37495,7 +38165,6 @@ }, "node_modules/once": { "version": "1.4.0", - "devOptional": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -37527,6 +38196,15 @@ "@otplib/preset-v11": "^12.0.1" } }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "peer": true, + "engines": { + "node": ">=8" + } + }, "node_modules/p-limit": { "version": "4.0.0", "dev": true, @@ -37628,6 +38306,12 @@ "canvas": "^2.11.2" } }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "peer": true + }, "node_modules/phone": { "version": "3.1.34", "license": "MIT", @@ -37788,6 +38472,15 @@ "dev": true, "license": "MIT" }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "peer": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/prop-types": { "version": "15.8.1", "license": "MIT", @@ -37804,7 +38497,6 @@ "node_modules/pump": { "version": "3.0.0", "license": "MIT", - "optional": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -37845,6 +38537,18 @@ ], "license": "MIT" }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -37870,7 +38574,6 @@ }, "node_modules/react": { "version": "17.0.2", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", @@ -37882,7 +38585,6 @@ }, "node_modules/react-dom": { "version": "17.0.2", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", @@ -38115,6 +38817,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "peer": true + }, "node_modules/resolve-from": { "version": "4.0.0", "license": "MIT", @@ -38122,6 +38830,18 @@ "node": ">=4" } }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "peer": true, + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/reusify": { "version": "1.0.4", "dev": true, @@ -38145,6 +38865,24 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "optional": true, + "peer": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/rollup": { "version": "3.27.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.27.0.tgz", @@ -38254,7 +38992,6 @@ }, "node_modules/scheduler": { "version": "0.20.2", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", @@ -38319,6 +39056,13 @@ "node": ">=10" } }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "optional": true, + "peer": true + }, "node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", "license": "ISC", @@ -38333,6 +39077,32 @@ "version": "4.0.0", "license": "ISC" }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "optional": true, + "peer": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/set-blocking": { "version": "2.0.0", "license": "ISC", @@ -38465,6 +39235,13 @@ "version": "3.0.2", "license": "(WTFPL OR MIT)" }, + "node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "optional": true, + "peer": true + }, "node_modules/stackback": { "version": "0.0.2", "dev": true, @@ -38627,6 +39404,18 @@ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" }, + "node_modules/sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "peer": true, + "dependencies": { + "debug": "^4.1.0" + }, + "engines": { + "node": ">= 8.0" + } + }, "node_modules/supports-color": { "version": "7.2.0", "dev": true, @@ -38658,6 +39447,16 @@ "dev": true, "license": "MIT" }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, "node_modules/tar": { "version": "6.1.15", "license": "ISC", @@ -38766,6 +39565,41 @@ "node": ">=10" } }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "dev": true, @@ -38857,6 +39691,19 @@ "node": ">=4" } }, + "node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/typed-array-length": { "version": "1.0.4", "dev": true, @@ -39814,6 +40661,20 @@ "loose-envify": "^1.0.0" } }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "peer": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/web-streams-polyfill": { "version": "3.2.1", "license": "MIT", @@ -39821,6 +40682,64 @@ "node": ">= 8" } }, + "node_modules/webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/well-known-symbols": { "version": "2.0.0", "dev": true, @@ -39981,7 +40900,6 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "devOptional": true, "license": "ISC" }, "node_modules/y18n": { @@ -40030,6 +40948,16 @@ "node": ">=12" } }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "peer": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, "node_modules/yocto-queue": { "version": "1.0.0", "dev": true, diff --git a/apps/web/package.json b/apps/web/package.json index cf0f45950..30491364a 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -20,7 +20,6 @@ "@notesnook/common": "file:../../packages/common", "@notesnook/core": "file:../../packages/core", "@notesnook/crypto": "file:../../packages/crypto", - "@notesnook/crypto-worker": "file:../../packages/crypto-worker", "@notesnook/desktop": "file:../desktop", "@notesnook/editor": "file:../../packages/editor", "@notesnook/logger": "file:../../packages/logger", diff --git a/apps/web/src/interfaces/fs.ts b/apps/web/src/interfaces/fs.ts index 1f5b952e8..62066048b 100644 --- a/apps/web/src/interfaces/fs.ts +++ b/apps/web/src/interfaces/fs.ts @@ -22,7 +22,7 @@ import { xxhash64, createXXHash64 } from "hash-wasm"; import axios, { AxiosProgressEvent } from "axios"; import { AppEventManager, AppEvents } from "../common/app-events"; import { StreamableFS } from "@notesnook/streamable-fs"; -import { getNNCrypto } from "./nncrypto.stub"; +import { NNCrypto } from "./nncrypto"; import hosts from "@notesnook/core/dist/utils/constants"; import { sendAttachmentsProgressEvent } from "@notesnook/core/dist/common"; import { saveAs } from "file-saver"; @@ -34,7 +34,7 @@ import { ProgressStream } from "../utils/streams/progress-stream"; import { consumeReadableStream } from "../utils/stream"; import { Base64DecoderStream } from "../utils/streams/base64-decoder-stream"; import { toBlob } from "@notesnook-importer/core/dist/src/utils/stream"; -import { Cipher, OutputFormat, SerializedKey } from "@notesnook/crypto"; +import { Cipher, DataFormat, SerializedKey } from "@notesnook/crypto"; import { IDataType } from "hash-wasm/dist/lib/util"; import { IndexedDBKVStore } from "./key-value"; import FileHandle from "@notesnook/streamable-fs/dist/src/filehandle"; @@ -53,8 +53,6 @@ async function writeEncryptedFile( key: SerializedKey, hash: string ) { - const crypto = await getNNCrypto(); - if (!IndexedDBKVStore.isIndexedDBSupported()) throw new Error("This browser does not support IndexedDB."); @@ -65,7 +63,7 @@ async function writeEncryptedFile( const fileHandle = await streamablefs.createFile(hash, file.size, file.type); sendAttachmentsProgressEvent("encrypt", hash, 1, 0); - const { iv, stream } = await crypto.createEncryptionStream(key); + const { iv, stream } = await NNCrypto.createEncryptionStream(key); await file .stream() .pipeThrough(new ChunkedStream(CHUNK_SIZE)) @@ -84,7 +82,7 @@ async function writeEncryptedFile( ) .pipeTo(fileHandle.writeable); - sendAttachmentsProgressEvent("encrypt", hash, 1); + sendAttachmentsProgressEvent("encrypt", hash, 1, 1); return { chunkSize: CHUNK_SIZE, @@ -155,15 +153,14 @@ async function hashStream(reader: ReadableStreamDefaultReader) { async function readEncrypted( filename: string, key: SerializedKey, - cipherData: Cipher & { outputType: OutputFormat } + cipherData: Cipher & { outputType: DataFormat } ) { const fileHandle = await streamablefs.readFile(filename); if (!fileHandle) { console.error(`File not found. (File hash: ${filename})`); return null; } - const crypto = await getNNCrypto(); - const decryptionStream = await crypto.createDecryptionStream( + const decryptionStream = await NNCrypto.createDecryptionStream( key, cipherData.iv ); @@ -527,8 +524,7 @@ export async function decryptFile( const { key, iv } = fileMetadata; - const crypto = await getNNCrypto(); - const decryptionStream = await crypto.createDecryptionStream(key, iv); + const decryptionStream = await NNCrypto.createDecryptionStream(key, iv); return await toBlob(fileHandle.readable.pipeThrough(decryptionStream)); } diff --git a/apps/web/src/interfaces/nncrypto.stub.ts b/apps/web/src/interfaces/nncrypto.stub.ts deleted file mode 100644 index 7e8c834a2..000000000 --- a/apps/web/src/interfaces/nncrypto.stub.ts +++ /dev/null @@ -1,67 +0,0 @@ -/* -This file is part of the Notesnook project (https://notesnook.com/) - -Copyright (C) 2023 Streetwriters (Private) Limited - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -import { INNCrypto } from "@notesnook/crypto/dist/src/interfaces"; -import CryptoWorker from "@notesnook/crypto-worker/dist/src/worker.js?worker"; - -async function loadNNCrypto() { - const hasWorker = "Worker" in window || "Worker" in global; - // if (IS_DESKTOP_APP && window.NativeNNCrypto) { - // return window.NativeNNCrypto; - // } else - if (hasWorker) { - const { NNCryptoWorker } = await import("@notesnook/crypto-worker"); - return NNCryptoWorker; - } else { - const { NNCrypto } = await import("@notesnook/crypto"); - return NNCrypto; - } -} - -let instance: INNCrypto | null = null; - -export function getNNCrypto(): Promise { - if (instance) return Promise.resolve(instance); - return queueify(async () => { - const NNCrypto = await loadNNCrypto(); - instance = new NNCrypto(new CryptoWorker()); - return instance; - }); -} - -let processing = false; -type PromiseResolve = (value: Awaited) => void; -const queue: Array = []; -async function queueify(action: () => Promise): Promise { - if (processing) - return new Promise((resolve) => { - queue.push(resolve as PromiseResolve); - }); - - processing = true; - const result = await action(); - processing = false; - - while (queue.length > 0) { - const resolve = queue.pop(); - if (!resolve) continue; - resolve(result); - } - return result; -} diff --git a/apps/web/src/interfaces/nncrypto.ts b/apps/web/src/interfaces/nncrypto.ts new file mode 100644 index 000000000..0ac94ad90 --- /dev/null +++ b/apps/web/src/interfaces/nncrypto.ts @@ -0,0 +1,24 @@ +/* +This file is part of the Notesnook project (https://notesnook.com/) + +Copyright (C) 2023 Streetwriters (Private) Limited + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +import { INNCrypto } from "@notesnook/crypto"; +import CryptoWorker from "./crypto.worker?worker"; +import { wrap } from "comlink"; + +export const NNCrypto = wrap(new CryptoWorker()) as INNCrypto; diff --git a/apps/web/src/interfaces/nncrypto.worker.ts b/apps/web/src/interfaces/nncrypto.worker.ts new file mode 100644 index 000000000..216064e5c --- /dev/null +++ b/apps/web/src/interfaces/nncrypto.worker.ts @@ -0,0 +1,40 @@ +/* +This file is part of the Notesnook project (https://notesnook.com/) + +Copyright (C) 2023 Streetwriters (Private) Limited + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +import { NNCrypto, Chunk, SerializedKey } from "@notesnook/crypto"; +import { expose, transfer } from "comlink"; + +class NNCryptoWorker extends NNCrypto { + override async createDecryptionStream( + key: SerializedKey, + iv: string + ): Promise> { + const stream = await super.createDecryptionStream(key, iv); + return transfer(stream, [stream]); + } + + override async createEncryptionStream( + key: SerializedKey + ): Promise<{ iv: string; stream: TransformStream }> { + const result = await super.createEncryptionStream(key); + return transfer(result, [result.stream]); + } +} + +expose(new NNCryptoWorker()); diff --git a/apps/web/src/interfaces/storage.ts b/apps/web/src/interfaces/storage.ts index bd216dca2..a353a9993 100644 --- a/apps/web/src/interfaces/storage.ts +++ b/apps/web/src/interfaces/storage.ts @@ -23,7 +23,7 @@ import { MemoryKVStore, IKVStore } from "./key-value"; -import { getNNCrypto } from "./nncrypto.stub"; +import { NNCrypto } from "./nncrypto"; import type { Cipher, SerializedKey } from "@notesnook/crypto/dist/src/types"; type EncryptedKey = { iv: Uint8Array; cipher: BufferSource }; @@ -82,8 +82,7 @@ export class NNStorage { const { password, salt } = credentials; if (!password) throw new Error("Invalid data provided to deriveCryptoKey."); - const crypto = await getNNCrypto(); - const keyData = await crypto.exportKey(password, salt); + const keyData = await NNCrypto.exportKey(password, salt); if ( (await IndexedDBKVStore.isIndexedDBSupported()) && @@ -124,41 +123,39 @@ export class NNStorage { ): Promise { if (!password) throw new Error("Invalid data provided to generateCryptoKey."); - const crypto = await getNNCrypto(); - return await crypto.exportKey(password, salt); + + return await NNCrypto.exportKey(password, salt); } async hash(password: string, email: string): Promise { - const crypto = await getNNCrypto(); - return await crypto.hash(password, `${APP_SALT}${email}`); + return await NNCrypto.hash(password, `${APP_SALT}${email}`); } - async encrypt(key: SerializedKey, plainText: string): Promise { - const crypto = await getNNCrypto(); - return await crypto.encrypt( - key, - { format: "text", data: plainText }, - "base64" - ); + encrypt(key: SerializedKey, plainText: string): Promise> { + return NNCrypto.encrypt(key, plainText, "text", "base64"); } - async decrypt( + encryptMulti( key: SerializedKey, - cipherData: Cipher + items: string[] + ): Promise[]> { + return NNCrypto.encryptMulti(key, items, "text", "base64"); + } + + decrypt( + key: SerializedKey, + cipherData: Cipher<"base64"> ): Promise { - const crypto = await getNNCrypto(); cipherData.format = "base64"; - return await crypto.decrypt(key, cipherData, "text"); + return NNCrypto.decrypt(key, cipherData, "text"); } - async decryptMulti( + decryptMulti( key: SerializedKey, - items: Cipher[] + items: Cipher<"base64">[] ): Promise { - const crypto = await getNNCrypto(); - items.forEach((c) => (c.format = "base64")); - return await crypto.decryptMulti(key, items, "text"); + return NNCrypto.decryptMulti(key, items, "text"); } } @@ -226,23 +223,3 @@ async function aesDecrypt( ); return dec.decode(plainText); } - -// async function main() { -// const nncrypto = await getNNCrypto(); -// const electronNNCrypto = new NNCryptoElectron(); - -// console.time("nncrypto"); -// for (let i = 0; i < 100; ++i) { -// await nncrypto.hash("mypassword", APP_SALT); -// } -// console.timeEnd("nncrypto"); - -// console.time("electron"); -// for (let i = 0; i < 100; ++i) { -// await electronNNCrypto.hash("mypassword", APP_SALT); -// } -// console.timeEnd("electron"); -// } - -// main(); -// setTimeout(main, 10000); diff --git a/packages/crypto-worker/README.md b/packages/crypto-worker/README.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/crypto-worker/index.ts b/packages/crypto-worker/index.ts deleted file mode 100644 index cd2884e7a..000000000 --- a/packages/crypto-worker/index.ts +++ /dev/null @@ -1,191 +0,0 @@ -/* -This file is part of the Notesnook project (https://notesnook.com/) - -Copyright (C) 2023 Streetwriters (Private) Limited - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -import { - SerializedKey, - Plaintext, - OutputFormat, - Cipher, - EncryptionKey, - INNCrypto, - Output -} from "@notesnook/crypto"; -import { NNCryptoWorkerModule } from "./src/worker"; -import { wrap } from "comlink"; - -export class NNCryptoWorker implements INNCrypto { - private workermodule?: NNCryptoWorkerModule; - private isReady = false; - - constructor(private readonly worker?: Worker) {} - - private async init() { - if (!this.worker) throw new Error("worker cannot be undefined."); - if (this.isReady) return; - - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - this.workermodule = wrap(this.worker); - // this.workermodule = await spawn(this.worker); - this.isReady = true; - } - - async encrypt( - key: SerializedKey, - plaintext: Plaintext, - outputFormat: OutputFormat = "uint8array" - ): Promise { - await this.init(); - if (!this.workermodule) throw new Error("Worker module is not ready."); - - return this.workermodule.encrypt(key, plaintext, outputFormat); - } - - async decrypt( - key: SerializedKey, - cipherData: Cipher, - outputFormat: TOutputFormat = "text" as TOutputFormat - ): Promise> { - await this.init(); - if (!this.workermodule) throw new Error("Worker module is not ready."); - - return this.workermodule.decrypt(key, cipherData, outputFormat); - } - - async decryptMulti( - key: SerializedKey, - items: Cipher[], - outputFormat: TOutputFormat = "text" as TOutputFormat - ): Promise[]> { - await this.init(); - if (!this.workermodule) throw new Error("Worker module is not ready."); - - return this.workermodule.decryptMulti(key, items, outputFormat); - } - - async hash(password: string, salt: string): Promise { - await this.init(); - if (!this.workermodule) throw new Error("Worker module is not ready."); - - return this.workermodule.hash(password, salt); - } - - async deriveKey(password: string, salt?: string): Promise { - await this.init(); - if (!this.workermodule) throw new Error("Worker module is not ready."); - - return this.workermodule.deriveKey(password, salt); - } - - async exportKey(password: string, salt?: string): Promise { - await this.init(); - if (!this.workermodule) throw new Error("Worker module is not ready."); - - return this.workermodule.exportKey(password, salt); - } - - async createEncryptionStream(key: SerializedKey) { - await this.init(); - if (!this.workermodule) throw new Error("Worker module is not ready."); - return this.workermodule.createEncryptionStream(key); - } - - async createDecryptionStream(key: SerializedKey, iv: string) { - await this.init(); - if (!this.workermodule) throw new Error("Worker module is not ready."); - const { stream } = await this.workermodule.createDecryptionStream(key, iv); - return stream; - } - // async encryptStream( - // key: SerializedKey, - // stream: IStreamable, - // streamId?: string - // ): Promise { - // if (!streamId) throw new Error("streamId is required."); - // await this.init(); - // if (!this.workermodule) throw new Error("Worker module is not ready."); - // if (!this.worker) throw new Error("Worker is not ready."); - - // const eventListener = await this.createWorkerStream( - // streamId, - // stream, - // () => { - // if (this.worker) - // this.worker.removeEventListener("message", eventListener); - // } - // ); - // this.worker.addEventListener("message", eventListener); - // const iv = await this.workermodule.createEncryptionStream(streamId, key); - // this.worker.removeEventListener("message", eventListener); - // return iv; - // } - - // async decryptStream( - // key: SerializedKey, - // iv: string, - // stream: IStreamable, - // streamId?: string - // ): Promise { - // if (!streamId) throw new Error("streamId is required."); - // await this.init(); - // if (!this.workermodule) throw new Error("Worker module is not ready."); - // if (!this.worker) throw new Error("Worker is not ready."); - - // const eventListener = await this.createWorkerStream( - // streamId, - // stream, - // () => { - // if (this.worker) - // this.worker.removeEventListener("message", eventListener); - // } - // ); - // this.worker.addEventListener("message", eventListener); - // await this.workermodule.createDecryptionStream(streamId, iv, key); - // this.worker.removeEventListener("message", eventListener); - // } - - // private async createWorkerStream( - // streamId: string, - // stream: IStreamable, - // done: () => void - // ): Promise { - // const readEventType = `${streamId}:read`; - // const writeEventType = `${streamId}:write`; - // let finished = false; - // return { - // handleEvent: async (ev: MessageEvent) => { - // if (finished) return; - - // const { type } = ev.data; - // if (type === readEventType) { - // const chunk = await stream.read(); - // if (!chunk || !this.worker || !chunk.data) return; - // this.worker.postMessage({ type, data: chunk }, [chunk.data.buffer]); - // } else if (type === writeEventType) { - // const chunk = ev.data.data as Chunk; - // await stream.write(chunk); - // if (chunk.final) { - // finished = true; - // done(); - // } - // } - // } - // }; - // } -} diff --git a/packages/crypto-worker/package-lock.json b/packages/crypto-worker/package-lock.json deleted file mode 100644 index 0bc724f53..000000000 --- a/packages/crypto-worker/package-lock.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "@notesnook/crypto-worker", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@notesnook/crypto-worker", - "version": "1.0.0", - "license": "GPL-3.0-or-later", - "dependencies": { - "@notesnook/crypto": "file:../crypto", - "comlink": "^4.3.1" - }, - "devDependencies": {} - }, - "../crypto": { - "name": "@notesnook/crypto", - "version": "1.1.1", - "license": "GPL-3.0-or-later", - "dependencies": { - "@notesnook/sodium": "file:../sodium" - }, - "devDependencies": {} - }, - "node_modules/@notesnook/crypto": { - "resolved": "../crypto", - "link": true - }, - "node_modules/comlink": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.3.1.tgz", - "integrity": "sha512-+YbhUdNrpBZggBAHWcgQMLPLH1KDF3wJpeqrCKieWQ8RL7atmgsgTQko1XEBK6PsecfopWNntopJ+ByYG1lRaA==" - } - }, - "dependencies": { - "@notesnook/crypto": { - "version": "file:../crypto", - "requires": { - "@notesnook/sodium": "file:../sodium" - } - }, - "comlink": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.3.1.tgz", - "integrity": "sha512-+YbhUdNrpBZggBAHWcgQMLPLH1KDF3wJpeqrCKieWQ8RL7atmgsgTQko1XEBK6PsecfopWNntopJ+ByYG1lRaA==" - } - } -} diff --git a/packages/crypto-worker/package.json b/packages/crypto-worker/package.json deleted file mode 100644 index fbb63b5b3..000000000 --- a/packages/crypto-worker/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "@notesnook/crypto-worker", - "version": "1.0.0", - "description": "", - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "scripts": { - "build": "tsc --declaration --outDir ./dist" - }, - "author": "", - "license": "GPL-3.0-or-later", - "dependencies": { - "@notesnook/crypto": "file:../crypto", - "comlink": "^4.3.1" - }, - "devDependencies": {} -} diff --git a/packages/crypto-worker/src/worker.ts b/packages/crypto-worker/src/worker.ts deleted file mode 100644 index af89d09b9..000000000 --- a/packages/crypto-worker/src/worker.ts +++ /dev/null @@ -1,103 +0,0 @@ -/* -This file is part of the Notesnook project (https://notesnook.com/) - -Copyright (C) 2023 Streetwriters (Private) Limited - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -import { - Cipher, - OutputFormat, - Plaintext, - SerializedKey -} from "@notesnook/crypto/dist/src/types"; -import { expose, transfer } from "comlink"; -import type { Decryption, NNCrypto, Output } from "@notesnook/crypto"; - -let crypto: NNCrypto | null = null; -let decryption: typeof Decryption | null = null; - -async function loadNNCrypto(): Promise { - if (crypto) return crypto; - const { NNCrypto } = await import("@notesnook/crypto"); - return (crypto = new NNCrypto()); -} - -async function loadDecryptionModule(): Promise { - if (decryption) return decryption; - const { Decryption } = await import("@notesnook/crypto"); - return (decryption = Decryption); -} - -const module = { - exportKey: async function (password: string, salt?: string) { - const crypto = await loadNNCrypto(); - return crypto.exportKey(password, salt); - }, - deriveKey: async function (password: string, salt?: string) { - const crypto = await loadNNCrypto(); - return crypto.deriveKey(password, salt); - }, - hash: async function (password: string, salt: string) { - const crypto = await loadNNCrypto(); - return crypto.hash(password, salt); - }, - encrypt: async function ( - key: SerializedKey, - plaintext: Plaintext, - outputFormat?: OutputFormat - ) { - const crypto = await loadNNCrypto(); - return crypto.encrypt(key, plaintext, outputFormat); - }, - decrypt: async function ( - key: SerializedKey, - cipherData: Cipher, - outputFormat: TOutputFormat = "text" as TOutputFormat - ) { - const decryption = await loadDecryptionModule(); - return decryption.decrypt(key, cipherData, outputFormat); - }, - decryptMulti: async function ( - key: SerializedKey, - items: Cipher[], - outputFormat: TOutputFormat = "text" as TOutputFormat - ) { - const decryption = await loadDecryptionModule(); - const decryptedItems: Output[] = []; - for (const cipherData of items) { - decryptedItems.push(decryption.decrypt(key, cipherData, outputFormat)); - } - return decryptedItems; - }, - createEncryptionStream: async function (key: SerializedKey) { - const crypto = await loadNNCrypto(); - const stream = await crypto.createEncryptionStream(key); - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - return transfer(stream, [stream.stream]); - }, - createDecryptionStream: async function (key: SerializedKey, iv: string) { - const crypto = await loadNNCrypto(); - const obj = { stream: await crypto.createDecryptionStream(key, iv) }; - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - return transfer(obj, [obj.stream]); - } -}; - -export type NNCryptoWorkerModule = typeof module; - -expose(module); diff --git a/packages/crypto-worker/tsconfig.json b/packages/crypto-worker/tsconfig.json deleted file mode 100644 index f1772531f..000000000 --- a/packages/crypto-worker/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../../tsconfig", - "compilerOptions": { - "lib": ["DOM", "WebWorker", "ES2015"], - "outDir": "./dist" - }, - "include": ["./index.ts", "./src/"] -} diff --git a/packages/crypto/index.ts b/packages/crypto/index.ts index 5c34f9903..3c05087d5 100644 --- a/packages/crypto/index.ts +++ b/packages/crypto/index.ts @@ -26,9 +26,9 @@ import Password from "./src/password"; import { Cipher, EncryptionKey, + Input, Output, - OutputFormat, - Plaintext, + DataFormat, SerializedKey } from "./src/types"; @@ -41,27 +41,45 @@ export class NNCrypto implements INNCrypto { this.isReady = true; } - async encrypt( + async encrypt( key: SerializedKey, - plaintext: Plaintext, - outputFormat: OutputFormat = "uint8array" - ): Promise { + input: Input, + format: DataFormat, + outputFormat: TOutputFormat = "uint8array" as TOutputFormat + ): Promise> { await this.init(); - return Encryption.encrypt(key, plaintext, outputFormat); + return Encryption.encrypt( + key, + input, + format, + outputFormat + ) as Cipher; } - async decrypt( + async encryptMulti( key: SerializedKey, - cipherData: Cipher, + items: Input[], + format: DataFormat, + outputFormat = "uint8array" as TOutputFormat + ): Promise[]> { + await this.init(); + return items.map((data) => + Encryption.encrypt(key, data, format, outputFormat) + ); + } + + async decrypt( + key: SerializedKey, + cipherData: Cipher, outputFormat: TOutputFormat = "text" as TOutputFormat ): Promise> { await this.init(); return Decryption.decrypt(key, cipherData, outputFormat); } - async decryptMulti( + async decryptMulti( key: SerializedKey, - items: Cipher[], + items: Cipher[], outputFormat: TOutputFormat = "text" as TOutputFormat ): Promise[]> { await this.init(); diff --git a/packages/crypto/src/decryption.ts b/packages/crypto/src/decryption.ts index ae642f0aa..15a10659e 100644 --- a/packages/crypto/src/decryption.ts +++ b/packages/crypto/src/decryption.ts @@ -29,10 +29,10 @@ import { from_hex } from "@notesnook/sodium"; import KeyUtils from "./keyutils"; -import { Cipher, Output, OutputFormat, SerializedKey } from "./types"; +import { Cipher, Output, DataFormat, SerializedKey } from "./types"; export default class Decryption { - private static transformInput(cipherData: Cipher): Uint8Array { + private static transformInput(cipherData: Cipher): Uint8Array { let input: Uint8Array | null = null; if ( typeof cipherData.cipher === "string" && @@ -54,9 +54,9 @@ export default class Decryption { return input; } - static decrypt( + static decrypt( key: SerializedKey, - cipherData: Cipher, + cipherData: Cipher, outputFormat: TOutputFormat = "text" as TOutputFormat ): Output { if (!key.salt && cipherData.salt) key.salt = cipherData.salt; diff --git a/packages/crypto/src/encryption.ts b/packages/crypto/src/encryption.ts index 39f082835..ad4b15d50 100644 --- a/packages/crypto/src/encryption.ts +++ b/packages/crypto/src/encryption.ts @@ -30,32 +30,34 @@ import { base64_variants } from "@notesnook/sodium"; import KeyUtils from "./keyutils"; -import { Chunk, Cipher, OutputFormat, Plaintext, SerializedKey } from "./types"; +import { Chunk, Cipher, Input, DataFormat, SerializedKey } from "./types"; const encoder = new TextEncoder(); export default class Encryption { private static transformInput( - plaintext: Plaintext + input: Input, + format: DataFormat ): Uint8Array { let data: Uint8Array | null = null; - if (typeof plaintext.data === "string" && plaintext.format === "base64") { - data = from_base64(plaintext.data, base64_variants.ORIGINAL); - } else if (typeof plaintext.data === "string") { - data = encoder.encode(plaintext.data); - } else if (plaintext.data instanceof Uint8Array) { - data = plaintext.data; + if (typeof input === "string" && format === "base64") { + data = from_base64(input, base64_variants.ORIGINAL); + } else if (typeof input === "string") { + data = encoder.encode(input); + } else if (input instanceof Uint8Array) { + data = input; } if (!data) throw new Error("Data cannot be null."); return data; } - static encrypt( + static encrypt( key: SerializedKey, - plaintext: Plaintext, - outputFormat: OutputFormat = "uint8array" - ): Cipher { + input: Input, + format: DataFormat, + outputFormat: TOutputFormat = "uint8array" as TOutputFormat + ): Cipher { const encryptionKey = KeyUtils.transform(key); - const data = this.transformInput(plaintext); + const data = this.transformInput(input, format); const nonce = randombytes_buf(crypto_aead_xchacha20poly1305_ietf_NPUBBYTES); @@ -81,7 +83,7 @@ export default class Encryption { iv, salt: encryptionKey.salt, length: data.length - }; + } as Cipher; } static createStream(key: SerializedKey): { diff --git a/packages/crypto/src/interfaces.ts b/packages/crypto/src/interfaces.ts index acf734025..3921ea2af 100644 --- a/packages/crypto/src/interfaces.ts +++ b/packages/crypto/src/interfaces.ts @@ -20,11 +20,11 @@ along with this program. If not, see . import { Cipher, EncryptionKey, - OutputFormat, - Plaintext, + DataFormat, SerializedKey, Chunk, - Output + Output, + Input } from "./types"; export interface IStreamable { @@ -33,21 +33,29 @@ export interface IStreamable { } export interface INNCrypto { - encrypt( + encrypt( key: SerializedKey, - plaintext: Plaintext, - outputFormat?: OutputFormat - ): Promise; + data: Input, + format: DataFormat, + outputFormat?: TOutputFormat + ): Promise>; - decrypt( + encryptMulti( key: SerializedKey, - cipherData: Cipher, + data: Input[], + format: DataFormat, + outputFormat?: TOutputFormat + ): Promise[]>; + + decrypt( + key: SerializedKey, + cipherData: Cipher, outputFormat?: TOutputFormat ): Promise>; - decryptMulti( + decryptMulti( key: SerializedKey, - cipherData: Cipher[], + cipherData: Cipher[], outputFormat?: TOutputFormat ): Promise[]>; diff --git a/packages/crypto/src/types.ts b/packages/crypto/src/types.ts index 6728cfaad..8031364a9 100644 --- a/packages/crypto/src/types.ts +++ b/packages/crypto/src/types.ts @@ -19,23 +19,20 @@ along with this program. If not, see . import { StringOutputFormat, Uint8ArrayOutputFormat } from "@notesnook/sodium"; -export type OutputFormat = Uint8ArrayOutputFormat | StringOutputFormat; +export type DataFormat = Uint8ArrayOutputFormat | StringOutputFormat; -export type Cipher = { - format: OutputFormat; +export type Cipher = { + format: TFormat; alg: string; - cipher: string | Uint8Array; + cipher: Output; iv: string; salt: string; length: number; }; -export type Plaintext = { - format: TFormat; - data: TFormat extends StringOutputFormat ? string : Uint8Array; -}; -export type Output = +export type Output = TFormat extends StringOutputFormat ? string : Uint8Array; +export type Input = Output; export type SerializedKey = { password?: string;