From 115c2c63b42db55abcae26b534880be6455b381c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Rib=C3=B3?= Date: Mon, 17 Jun 2024 15:55:07 +0200 Subject: [PATCH] feat: add sdk jwt revocation verification (#231) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Javier Ribó --- package-lock.json | 6646 +++++++++----------- package.json | 12 +- patches/rxdb+14.17.1.patch | 3065 +++++++++ postinstall.sh | 14 + preinstall.sh | 21 + src/apollo/utils/Secp256k1PublicKey.ts | 4 +- src/domain/buildingBlocks/Pollux.ts | 2 + src/domain/models/VerifiableCredential.ts | 74 +- src/domain/models/errors/Pollux.ts | 24 + src/domain/models/revocation/index.ts | 374 ++ src/edge-agent/Agent.Credentials.ts | 7 + src/edge-agent/Agent.ts | 4 + src/edge-agent/types/index.ts | 2 + src/pluto/backup/versions/0_0_1/Backup.ts | 12 +- src/pluto/backup/versions/0_0_1/Restore.ts | 21 +- src/pollux/Pollux.ts | 198 +- tests/pollux/Pollux.revocation.test.ts | 536 ++ tests/pollux/Pollux.test.ts | 132 +- 18 files changed, 7381 insertions(+), 3767 deletions(-) create mode 100644 patches/rxdb+14.17.1.patch create mode 100644 postinstall.sh create mode 100644 preinstall.sh create mode 100644 src/domain/models/revocation/index.ts create mode 100644 tests/pollux/Pollux.revocation.test.ts diff --git a/package-lock.json b/package-lock.json index d0db29cac..25db814e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,6 +7,7 @@ "": { "name": "@atala/prism-wallet-sdk", "version": "3.1.0", + "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@atala/apollo": "^1.3.5", @@ -31,8 +32,12 @@ "hash.js": "1.1.7", "isows": "^1.0.3", "jose": "^4.15.5", + "jsonld": "^8.3.2", "jsonwebtoken": "^9.0.0", "multiformats": "^9.9.0", + "pako": "^2.1.0", + "patch-package": "^8.0.0", + "postinstall-postinstall": "^2.1.0", "rxdb": "^14.17.1", "text-encoding": "^0.7.0", "util": "^0.12.5", @@ -66,7 +71,9 @@ "@types/elliptic": "^6.4.16", "@types/google-protobuf": "^3.15.6", "@types/jest": "^29.5.5", + "@types/jsonld": "^1.5.14", "@types/node": "^18.14.2", + "@types/pako": "^2.0.3", "@types/sinon": "^10.0.13", "@types/sinon-chai": "^3.2.9", "@types/uuid": "^9.0.1", @@ -104,7 +111,7 @@ "rollup-plugin-polyfill-node": "^0.12.0", "rollup-plugin-strip-code": "^0.2.7", "rollup-plugin-typescript2": "^0.34.1", - "semantic-release": "^21.1.1", + "semantic-release": "^24.0.0", "semantic-release-slack-bot": "^4.0.2", "sinon": "^15.0.1", "sinon-chai": "^3.7.0", @@ -142,21 +149,13 @@ "dev": true, "license": "Apache-2.0" }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", + "version": "2.3.0", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -164,8 +163,6 @@ }, "node_modules/@atala/apollo": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@atala/apollo/-/apollo-1.3.5.tgz", - "integrity": "sha512-sVaS1G7wBTDXEYcRl9ZhOqIRpgo5BshKr1IoOmx+f/BTuQxqN8Z0TRRbGPFnvVG6ffq6s0GNEOGyqUlOtRnCmQ==", "dependencies": { "@noble/curves": "1.2.0", "@noble/hashes": "1.3.1", @@ -185,20 +182,37 @@ "@types/bn.js": "*" } }, + "node_modules/@atala/apollo/node_modules/bn.js": { + "version": "4.12.0", + "license": "MIT" + }, + "node_modules/@atala/apollo/node_modules/elliptic": { + "version": "6.5.4", + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "node_modules/@babel/code-frame": { - "version": "7.23.5", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.23.5", + "version": "7.24.7", "dev": true, "license": "MIT", "engines": { @@ -206,20 +220,20 @@ } }, "node_modules/@babel/core": { - "version": "7.23.7", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.7", - "@babel/parser": "^7.23.6", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -235,7 +249,7 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { @@ -248,7 +262,7 @@ }, "peerDependencies": { "@babel/core": "^7.11.0", - "eslint": "^7.5.0 || ^8.0.0" + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { @@ -260,13 +274,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.6", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -274,34 +288,35 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -311,18 +326,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.23.7", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", "semver": "^6.3.1" }, "engines": { @@ -333,11 +348,11 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", "semver": "^6.3.1" }, @@ -349,7 +364,7 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.4", + "version": "0.6.2", "dev": true, "license": "MIT", "dependencies": { @@ -364,68 +379,73 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", + "version": "7.24.7", "dev": true, "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.23.0", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.23.0" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -435,18 +455,18 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", + "version": "7.24.7", "dev": true, "license": "MIT", "engines": { @@ -454,13 +474,13 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-wrap-function": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -470,13 +490,13 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -486,40 +506,42 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", + "version": "7.24.7", "dev": true, "license": "MIT", "engines": { @@ -527,7 +549,7 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", + "version": "7.24.7", "dev": true, "license": "MIT", "engines": { @@ -535,7 +557,7 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", + "version": "7.24.7", "dev": true, "license": "MIT", "engines": { @@ -543,46 +565,47 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/helper-function-name": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.23.7", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.23.6", + "version": "7.24.7", "dev": true, "license": "MIT", "bin": { @@ -592,12 +615,27 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.24.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -607,13 +645,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -623,12 +661,12 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.7", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -653,13 +691,13 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.23.7", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.23.7", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-decorators": "^7.23.3" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-decorators": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -788,11 +826,11 @@ } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -824,11 +862,11 @@ } }, "node_modules/@babel/plugin-syntax-flow": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -838,11 +876,11 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -852,11 +890,11 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -888,11 +926,11 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -996,11 +1034,11 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1025,11 +1063,11 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1039,13 +1077,13 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.7", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -1056,13 +1094,13 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1072,11 +1110,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1086,11 +1124,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.4", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1100,12 +1138,12 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1115,12 +1153,12 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.23.4", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -1131,18 +1169,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.5", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", "globals": "^11.1.0" }, "engines": { @@ -1153,12 +1190,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.15" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1168,11 +1205,11 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1182,12 +1219,12 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1197,11 +1234,11 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1211,11 +1248,11 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.23.4", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -1226,12 +1263,12 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1241,11 +1278,11 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.23.4", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1256,12 +1293,12 @@ } }, "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-flow": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-flow": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1271,12 +1308,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.6", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1286,13 +1323,13 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1302,11 +1339,11 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.23.4", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -1317,11 +1354,11 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1331,11 +1368,11 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.4", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1346,11 +1383,11 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1360,12 +1397,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1375,13 +1412,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1391,14 +1428,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1408,12 +1445,12 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1423,12 +1460,12 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1438,11 +1475,11 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1452,11 +1489,11 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.4", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -1467,11 +1504,11 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.23.4", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -1482,15 +1519,14 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.23.4", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.23.3" + "@babel/plugin-transform-parameters": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1500,12 +1536,12 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1515,11 +1551,11 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.4", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -1530,12 +1566,12 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.4", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -1546,11 +1582,11 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1560,12 +1596,12 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1575,13 +1611,13 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.4", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1592,11 +1628,11 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1606,11 +1642,11 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1620,15 +1656,15 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.23.4", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/types": "^7.23.4" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1638,11 +1674,11 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.22.5", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.22.5" + "@babel/plugin-transform-react-jsx": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1652,12 +1688,12 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1667,11 +1703,11 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1682,11 +1718,11 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1696,15 +1732,15 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.23.7", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.7", - "babel-plugin-polyfill-corejs3": "^0.8.7", - "babel-plugin-polyfill-regenerator": "^0.5.4", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.1", + "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, "engines": { @@ -1715,11 +1751,11 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1729,12 +1765,12 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1744,11 +1780,11 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1758,11 +1794,11 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1772,11 +1808,11 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1786,14 +1822,14 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.23.6", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.23.6", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.23.3" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-typescript": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1803,11 +1839,11 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1817,12 +1853,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1832,12 +1868,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1847,12 +1883,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1862,25 +1898,26 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.23.7", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/compat-data": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -1892,58 +1929,58 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.7", - "@babel/plugin-transform-async-to-generator": "^7.23.3", - "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.4", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.4", - "@babel/plugin-transform-classes": "^7.23.5", - "@babel/plugin-transform-computed-properties": "^7.23.3", - "@babel/plugin-transform-destructuring": "^7.23.3", - "@babel/plugin-transform-dotall-regex": "^7.23.3", - "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.4", - "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.4", - "@babel/plugin-transform-for-of": "^7.23.6", - "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.4", - "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", - "@babel/plugin-transform-member-expression-literals": "^7.23.3", - "@babel/plugin-transform-modules-amd": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.3", - "@babel/plugin-transform-modules-umd": "^7.23.3", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", - "@babel/plugin-transform-numeric-separator": "^7.23.4", - "@babel/plugin-transform-object-rest-spread": "^7.23.4", - "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.4", - "@babel/plugin-transform-optional-chaining": "^7.23.4", - "@babel/plugin-transform-parameters": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.4", - "@babel/plugin-transform-property-literals": "^7.23.3", - "@babel/plugin-transform-regenerator": "^7.23.3", - "@babel/plugin-transform-reserved-words": "^7.23.3", - "@babel/plugin-transform-shorthand-properties": "^7.23.3", - "@babel/plugin-transform-spread": "^7.23.3", - "@babel/plugin-transform-sticky-regex": "^7.23.3", - "@babel/plugin-transform-template-literals": "^7.23.3", - "@babel/plugin-transform-typeof-symbol": "^7.23.3", - "@babel/plugin-transform-unicode-escapes": "^7.23.3", - "@babel/plugin-transform-unicode-property-regex": "^7.23.3", - "@babel/plugin-transform-unicode-regex": "^7.23.3", - "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.24.7", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.24.7", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.24.7", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.7", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.24.7", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.24.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-modules-systemjs": "^7.24.7", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.7", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.7", - "babel-plugin-polyfill-corejs3": "^0.8.7", - "babel-plugin-polyfill-regenerator": "^0.5.4", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -1968,16 +2005,16 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-transform-react-display-name": "^7.23.3", - "@babel/plugin-transform-react-jsx": "^7.22.15", - "@babel/plugin-transform-react-jsx-development": "^7.22.5", - "@babel/plugin-transform-react-pure-annotations": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.24.7", + "@babel/plugin-transform-react-jsx-development": "^7.24.7", + "@babel/plugin-transform-react-pure-annotations": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1987,15 +2024,15 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.23.3", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-typescript": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2010,7 +2047,7 @@ "license": "MIT" }, "node_modules/@babel/runtime": { - "version": "7.23.7", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { @@ -2021,31 +2058,31 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.7", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2054,12 +2091,12 @@ } }, "node_modules/@babel/types": { - "version": "7.23.6", + "version": "7.24.7", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2080,6 +2117,18 @@ "node": ">=0.1.90" } }, + "node_modules/@digitalbazaar/http-client": { + "version": "3.4.1", + "license": "BSD-3-Clause", + "dependencies": { + "ky": "^0.33.3", + "ky-universal": "^0.11.0", + "undici": "^5.21.2" + }, + "engines": { + "node": ">=14.0" + } + }, "node_modules/@droppedcode/typedoc-plugin-relative-includes": { "version": "1.0.5", "dev": true, @@ -2103,7 +2152,7 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", + "version": "4.10.1", "dev": true, "license": "MIT", "engines": { @@ -2158,799 +2207,177 @@ } }, "node_modules/@eslint/js": { - "version": "8.56.0", + "version": "8.57.0", "dev": true, "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@firebase/analytics": { - "version": "0.10.0", + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, - "peerDependencies": { - "@firebase/app": "0.x" + "engines": { + "node": ">=10.10.0" } }, - "node_modules/@firebase/analytics-compat": { - "version": "0.2.6", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "dev": true, "license": "Apache-2.0", - "dependencies": { - "@firebase/analytics": "0.10.0", - "@firebase/analytics-types": "0.8.0", - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" + "engines": { + "node": ">=12.22" }, - "peerDependencies": { - "@firebase/app-compat": "0.x" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@firebase/analytics-types": { - "version": "0.8.0", - "license": "Apache-2.0" + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "dev": true, + "license": "BSD-3-Clause" }, - "node_modules/@firebase/app": { - "version": "0.9.13", - "license": "Apache-2.0", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "dev": true, + "license": "ISC", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "idb": "7.1.1", - "tslib": "^2.1.0" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@firebase/app-check": { - "version": "0.8.0", - "license": "Apache-2.0", + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" + "sprintf-js": "~1.0.2" } }, - "node_modules/@firebase/app-check-compat": { - "version": "0.3.7", - "license": "Apache-2.0", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/app-check": "0.8.0", - "@firebase/app-check-types": "0.5.0", - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, - "peerDependencies": { - "@firebase/app-compat": "0.x" + "engines": { + "node": ">=8" } }, - "node_modules/@firebase/app-check-interop-types": { - "version": "0.3.0", - "license": "Apache-2.0" - }, - "node_modules/@firebase/app-check-types": { - "version": "0.5.0", - "license": "Apache-2.0" - }, - "node_modules/@firebase/app-compat": { - "version": "0.2.13", - "license": "Apache-2.0", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/app": "0.9.13", - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@firebase/app-types": { - "version": "0.9.0", - "license": "Apache-2.0" - }, - "node_modules/@firebase/auth": { - "version": "0.23.2", - "license": "Apache-2.0", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" + "p-locate": "^4.1.0" }, - "peerDependencies": { - "@firebase/app": "0.x" + "engines": { + "node": ">=8" } }, - "node_modules/@firebase/auth-compat": { - "version": "0.4.2", - "license": "Apache-2.0", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/auth": "0.23.2", - "@firebase/auth-types": "0.12.0", - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" + "p-try": "^2.0.0" }, - "peerDependencies": { - "@firebase/app-compat": "0.x" + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@firebase/auth-compat/node_modules/node-fetch": { - "version": "2.6.7", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": ">=8" } }, - "node_modules/@firebase/auth-interop-types": { - "version": "0.2.1", - "license": "Apache-2.0" + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/@firebase/auth-types": { - "version": "0.12.0", - "license": "Apache-2.0", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "1.x" + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/@firebase/auth/node_modules/node-fetch": { - "version": "2.6.7", + "node_modules/@jest/console": { + "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@firebase/component": { - "version": "0.6.4", - "license": "Apache-2.0", + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/database": { - "version": "0.14.4", - "license": "Apache-2.0", - "dependencies": { - "@firebase/auth-interop-types": "0.2.1", - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "faye-websocket": "0.11.4", - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/database-compat": { - "version": "0.3.4", - "license": "Apache-2.0", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/database": "0.14.4", - "@firebase/database-types": "0.10.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/database-types": { - "version": "0.10.4", - "license": "Apache-2.0", - "dependencies": { - "@firebase/app-types": "0.9.0", - "@firebase/util": "1.9.3" - } - }, - "node_modules/@firebase/firestore": { - "version": "3.13.0", - "license": "Apache-2.0", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "@firebase/webchannel-wrapper": "0.10.1", - "@grpc/grpc-js": "~1.7.0", - "@grpc/proto-loader": "^0.6.13", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=10.10.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/firestore-compat": { - "version": "0.3.12", - "license": "Apache-2.0", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/firestore": "3.13.0", - "@firebase/firestore-types": "2.5.1", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/firestore-types": { - "version": "2.5.1", - "license": "Apache-2.0", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "1.x" - } - }, - "node_modules/@firebase/firestore/node_modules/node-fetch": { - "version": "2.6.7", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@firebase/functions": { - "version": "0.10.0", - "license": "Apache-2.0", - "dependencies": { - "@firebase/app-check-interop-types": "0.3.0", - "@firebase/auth-interop-types": "0.2.1", - "@firebase/component": "0.6.4", - "@firebase/messaging-interop-types": "0.2.0", - "@firebase/util": "1.9.3", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/functions-compat": { - "version": "0.3.5", - "license": "Apache-2.0", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/functions": "0.10.0", - "@firebase/functions-types": "0.6.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/functions-types": { - "version": "0.6.0", - "license": "Apache-2.0" - }, - "node_modules/@firebase/functions/node_modules/node-fetch": { - "version": "2.6.7", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@firebase/installations": { - "version": "0.6.4", - "license": "Apache-2.0", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", - "idb": "7.0.1", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/installations-compat": { - "version": "0.2.4", - "license": "Apache-2.0", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/installations-types": "0.5.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/installations-types": { - "version": "0.5.0", - "license": "Apache-2.0", - "peerDependencies": { - "@firebase/app-types": "0.x" - } - }, - "node_modules/@firebase/installations/node_modules/idb": { - "version": "7.0.1", - "license": "ISC" - }, - "node_modules/@firebase/logger": { - "version": "0.4.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/messaging": { - "version": "0.12.4", - "license": "Apache-2.0", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/messaging-interop-types": "0.2.0", - "@firebase/util": "1.9.3", - "idb": "7.0.1", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/messaging-compat": { - "version": "0.2.4", - "license": "Apache-2.0", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/messaging": "0.12.4", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/messaging-interop-types": { - "version": "0.2.0", - "license": "Apache-2.0" - }, - "node_modules/@firebase/messaging/node_modules/idb": { - "version": "7.0.1", - "license": "ISC" - }, - "node_modules/@firebase/performance": { - "version": "0.6.4", - "license": "Apache-2.0", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/performance-compat": { - "version": "0.2.4", - "license": "Apache-2.0", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/performance": "0.6.4", - "@firebase/performance-types": "0.2.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/performance-types": { - "version": "0.2.0", - "license": "Apache-2.0" - }, - "node_modules/@firebase/remote-config": { - "version": "0.4.4", - "license": "Apache-2.0", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/remote-config-compat": { - "version": "0.2.4", - "license": "Apache-2.0", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/remote-config": "0.4.4", - "@firebase/remote-config-types": "0.3.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/remote-config-types": { - "version": "0.3.0", - "license": "Apache-2.0" - }, - "node_modules/@firebase/storage": { - "version": "0.11.2", - "license": "Apache-2.0", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/storage-compat": { - "version": "0.3.2", - "license": "Apache-2.0", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/storage": "0.11.2", - "@firebase/storage-types": "0.8.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/storage-types": { - "version": "0.8.0", - "license": "Apache-2.0", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "1.x" - } - }, - "node_modules/@firebase/storage/node_modules/node-fetch": { - "version": "2.6.7", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@firebase/util": { - "version": "1.9.3", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/webchannel-wrapper": { - "version": "0.10.1", - "license": "Apache-2.0" - }, - "node_modules/@grpc/grpc-js": { - "version": "1.7.3", - "license": "Apache-2.0", - "dependencies": { - "@grpc/proto-loader": "^0.7.0", - "@types/node": ">=12.12.47" - }, - "engines": { - "node": "^8.13.0 || >=10.10.0" - } - }, - "node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader": { - "version": "0.7.10", - "license": "Apache-2.0", - "dependencies": { - "lodash.camelcase": "^4.3.0", - "long": "^5.0.0", - "protobufjs": "^7.2.4", - "yargs": "^17.7.2" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@grpc/grpc-js/node_modules/long": { - "version": "5.2.3", - "license": "Apache-2.0" - }, - "node_modules/@grpc/grpc-js/node_modules/protobufjs": { - "version": "7.2.6", - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@grpc/proto-loader": { - "version": "0.6.13", - "license": "Apache-2.0", - "dependencies": { - "@types/long": "^4.0.1", - "lodash.camelcase": "^4.3.0", - "long": "^4.0.0", - "protobufjs": "^6.11.3", - "yargs": "^16.2.0" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@grpc/proto-loader/node_modules/cliui": { - "version": "7.0.4", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/@grpc/proto-loader/node_modules/yargs": { - "version": "16.2.0", - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/console/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/@jest/console/node_modules/chalk": { @@ -3532,20 +2959,20 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", + "version": "0.3.5", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", + "version": "3.1.2", "dev": true, "license": "MIT", "engines": { @@ -3553,7 +2980,7 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", + "version": "1.2.1", "dev": true, "license": "MIT", "engines": { @@ -3561,12 +2988,12 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.5", + "version": "0.3.6", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { @@ -3575,7 +3002,7 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", + "version": "0.3.25", "dev": true, "license": "MIT", "dependencies": { @@ -3600,7 +3027,7 @@ } }, "node_modules/@mongodb-js/saslprep": { - "version": "1.1.4", + "version": "1.1.7", "license": "MIT", "dependencies": { "sparse-bitfield": "^3.0.3" @@ -3685,7 +3112,7 @@ } }, "node_modules/@octokit/auth-token": { - "version": "4.0.0", + "version": "5.1.1", "dev": true, "license": "MIT", "engines": { @@ -3693,130 +3120,128 @@ } }, "node_modules/@octokit/core": { - "version": "5.0.2", + "version": "6.1.2", "dev": true, "license": "MIT", "dependencies": { - "@octokit/auth-token": "^4.0.0", - "@octokit/graphql": "^7.0.0", - "@octokit/request": "^8.0.2", - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^12.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "@octokit/auth-token": "^5.0.0", + "@octokit/graphql": "^8.0.0", + "@octokit/request": "^9.0.0", + "@octokit/request-error": "^6.0.1", + "@octokit/types": "^13.0.0", + "before-after-hook": "^3.0.2", + "universal-user-agent": "^7.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/endpoint": { - "version": "9.0.4", + "version": "10.1.1", "dev": true, "license": "MIT", "dependencies": { - "@octokit/types": "^12.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/types": "^13.0.0", + "universal-user-agent": "^7.0.2" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/graphql": { - "version": "7.0.2", + "version": "8.1.1", "dev": true, "license": "MIT", "dependencies": { - "@octokit/request": "^8.0.1", - "@octokit/types": "^12.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/request": "^9.0.0", + "@octokit/types": "^13.0.0", + "universal-user-agent": "^7.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/openapi-types": { - "version": "19.1.0", + "version": "22.2.0", "dev": true, "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "9.1.5", + "version": "11.3.0", "dev": true, "license": "MIT", "dependencies": { - "@octokit/types": "^12.4.0" + "@octokit/types": "^13.5.0" }, "engines": { "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=5" + "@octokit/core": ">=6" } }, "node_modules/@octokit/plugin-retry": { - "version": "6.0.1", + "version": "7.1.1", "dev": true, "license": "MIT", "dependencies": { - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^12.0.0", + "@octokit/request-error": "^6.0.0", + "@octokit/types": "^13.0.0", "bottleneck": "^2.15.3" }, "engines": { "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=5" + "@octokit/core": ">=6" } }, "node_modules/@octokit/plugin-throttling": { - "version": "8.1.3", + "version": "9.3.0", "dev": true, "license": "MIT", "dependencies": { - "@octokit/types": "^12.2.0", + "@octokit/types": "^13.0.0", "bottleneck": "^2.15.3" }, "engines": { "node": ">= 18" }, "peerDependencies": { - "@octokit/core": "^5.0.0" + "@octokit/core": "^6.0.0" } }, "node_modules/@octokit/request": { - "version": "8.1.6", + "version": "9.1.1", "dev": true, "license": "MIT", "dependencies": { - "@octokit/endpoint": "^9.0.0", - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^12.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/endpoint": "^10.0.0", + "@octokit/request-error": "^6.0.1", + "@octokit/types": "^13.1.0", + "universal-user-agent": "^7.0.2" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/request-error": { - "version": "5.0.1", + "version": "6.1.1", "dev": true, "license": "MIT", "dependencies": { - "@octokit/types": "^12.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "@octokit/types": "^13.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/types": { - "version": "12.4.0", + "version": "13.5.0", "dev": true, "license": "MIT", "dependencies": { - "@octokit/openapi-types": "^19.1.0" + "@octokit/openapi-types": "^22.2.0" } }, "node_modules/@pluto-encrypted/encryption": { @@ -3834,18 +3259,18 @@ } }, "node_modules/@pluto-encrypted/encryption/node_modules/@noble/curves": { - "version": "1.3.0", + "version": "1.4.0", "dev": true, "license": "MIT", "dependencies": { - "@noble/hashes": "1.3.3" + "@noble/hashes": "1.4.0" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@pluto-encrypted/encryption/node_modules/@noble/hashes": { - "version": "1.3.3", + "version": "1.4.0", "dev": true, "license": "MIT", "engines": { @@ -3867,11 +3292,6 @@ "uuid": "^9.0.1" } }, - "node_modules/@pluto-encrypted/inmemory/node_modules/array-push-at-sort-position": { - "version": "4.0.1", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/@pluto-encrypted/shared": { "version": "1.11.3", "dev": true, @@ -3919,52 +3339,8 @@ "node": ">=12" } }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, "node_modules/@rollup/plugin-commonjs": { - "version": "25.0.7", + "version": "25.0.8", "dev": true, "license": "MIT", "dependencies": { @@ -4052,7 +3428,7 @@ } }, "node_modules/@rollup/plugin-replace": { - "version": "5.0.5", + "version": "5.0.7", "dev": true, "license": "MIT", "dependencies": { @@ -4133,41 +3509,41 @@ } }, "node_modules/@rushstack/eslint-patch": { - "version": "1.6.1", + "version": "1.10.3", "dev": true, "license": "MIT" }, "node_modules/@scure/base": { - "version": "1.1.5", + "version": "1.1.7", "license": "MIT", "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@scure/bip32": { - "version": "1.3.3", + "version": "1.4.0", "license": "MIT", "dependencies": { - "@noble/curves": "~1.3.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@scure/bip32/node_modules/@noble/curves": { - "version": "1.3.0", + "version": "1.4.0", "license": "MIT", "dependencies": { - "@noble/hashes": "1.3.3" + "@noble/hashes": "1.4.0" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@scure/bip32/node_modules/@noble/hashes": { - "version": "1.3.3", + "version": "1.4.0", "license": "MIT", "engines": { "node": ">= 16" @@ -4177,18 +3553,18 @@ } }, "node_modules/@scure/bip39": { - "version": "1.2.2", + "version": "1.3.0", "license": "MIT", "dependencies": { - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@scure/bip39/node_modules/@noble/hashes": { - "version": "1.3.3", + "version": "1.4.0", "license": "MIT", "engines": { "node": ">= 16" @@ -4275,9 +3651,10 @@ "node": ">=18" } }, - "node_modules/@sd-jwt/utils/node_modules/js-base64": { - "version": "3.7.7", - "license": "BSD-3-Clause" + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "dev": true, + "license": "MIT" }, "node_modules/@semantic-release/changelog": { "version": "6.0.3", @@ -4365,14 +3742,14 @@ } }, "node_modules/@semantic-release/github": { - "version": "9.2.6", + "version": "10.0.6", "dev": true, "license": "MIT", "dependencies": { - "@octokit/core": "^5.0.0", - "@octokit/plugin-paginate-rest": "^9.0.0", - "@octokit/plugin-retry": "^6.0.0", - "@octokit/plugin-throttling": "^8.0.0", + "@octokit/core": "^6.0.0", + "@octokit/plugin-paginate-rest": "^11.0.0", + "@octokit/plugin-retry": "^7.0.0", + "@octokit/plugin-throttling": "^9.0.0", "@semantic-release/error": "^4.0.0", "aggregate-error": "^5.0.0", "debug": "^4.3.4", @@ -4380,14 +3757,14 @@ "globby": "^14.0.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", - "issue-parser": "^6.0.0", + "issue-parser": "^7.0.0", "lodash-es": "^4.17.21", "mime": "^4.0.0", "p-filter": "^4.0.0", "url-join": "^5.0.0" }, "engines": { - "node": ">=18" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" @@ -4442,11 +3819,11 @@ } }, "node_modules/@semantic-release/github/node_modules/globby": { - "version": "14.0.0", + "version": "14.0.1", "dev": true, "license": "MIT", "dependencies": { - "@sindresorhus/merge-streams": "^1.0.0", + "@sindresorhus/merge-streams": "^2.1.0", "fast-glob": "^3.3.2", "ignore": "^5.2.4", "path-type": "^5.0.0", @@ -4494,26 +3871,26 @@ } }, "node_modules/@semantic-release/npm": { - "version": "10.0.6", + "version": "12.0.1", "dev": true, "license": "MIT", "dependencies": { "@semantic-release/error": "^4.0.0", "aggregate-error": "^5.0.0", - "execa": "^8.0.0", + "execa": "^9.0.0", "fs-extra": "^11.0.0", "lodash-es": "^4.17.21", "nerf-dart": "^1.0.0", "normalize-url": "^8.0.0", - "npm": "^9.5.0", + "npm": "^10.5.0", "rc": "^1.2.8", - "read-pkg": "^8.0.0", + "read-pkg": "^9.0.0", "registry-auth-token": "^5.0.0", "semver": "^7.1.2", "tempy": "^3.0.0" }, "engines": { - "node": ">=18" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" @@ -4527,6 +3904,17 @@ "node": ">=18" } }, + "node_modules/@semantic-release/npm/node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@semantic-release/npm/node_modules/aggregate-error": { "version": "5.0.0", "dev": true, @@ -4568,40 +3956,47 @@ } }, "node_modules/@semantic-release/npm/node_modules/execa": { - "version": "8.0.1", + "version": "9.2.0", "dev": true, "license": "MIT", "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^7.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^5.2.0", + "pretty-ms": "^9.0.0", "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" }, "engines": { - "node": ">=16.17" + "node": "^18.19.0 || >=20.5.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, "node_modules/@semantic-release/npm/node_modules/get-stream": { - "version": "8.0.1", + "version": "9.0.1", "dev": true, "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@semantic-release/npm/node_modules/hosted-git-info": { - "version": "7.0.1", + "version": "7.0.2", "dev": true, "license": "ISC", "dependencies": { @@ -4612,11 +4007,11 @@ } }, "node_modules/@semantic-release/npm/node_modules/human-signals": { - "version": "5.0.0", + "version": "7.0.0", "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=16.17.0" + "node": ">=18.18.0" } }, "node_modules/@semantic-release/npm/node_modules/indent-string": { @@ -4630,54 +4025,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/is-stream": { - "version": "3.0.0", + "node_modules/@semantic-release/npm/node_modules/is-plain-obj": { + "version": "4.1.0", "dev": true, "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/json-parse-even-better-errors": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@semantic-release/npm/node_modules/lines-and-columns": { - "version": "2.0.4", + "node_modules/@semantic-release/npm/node_modules/is-stream": { + "version": "4.0.1", "dev": true, "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@semantic-release/npm/node_modules/lru-cache": { - "version": "10.1.0", + "version": "10.2.2", "dev": true, "license": "ISC", "engines": { "node": "14 || >=16.14" } }, - "node_modules/@semantic-release/npm/node_modules/mimic-fn": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@semantic-release/npm/node_modules/normalize-package-data": { - "version": "6.0.0", + "version": "6.0.1", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -4691,7 +4070,7 @@ } }, "node_modules/@semantic-release/npm/node_modules/npm-run-path": { - "version": "5.2.0", + "version": "5.3.0", "dev": true, "license": "MIT", "dependencies": { @@ -4704,44 +4083,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/onetime": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@semantic-release/npm/node_modules/parse-json": { - "version": "7.1.1", + "version": "8.1.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.21.4", - "error-ex": "^1.3.2", - "json-parse-even-better-errors": "^3.0.0", - "lines-and-columns": "^2.0.3", - "type-fest": "^3.8.0" - }, - "engines": { - "node": ">=16" + "@babel/code-frame": "^7.22.13", + "index-to-position": "^0.1.2", + "type-fest": "^4.7.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/parse-json/node_modules/type-fest": { - "version": "3.13.1", - "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=14.16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4759,29 +4111,27 @@ } }, "node_modules/@semantic-release/npm/node_modules/read-pkg": { - "version": "8.1.0", + "version": "9.0.1", "dev": true, "license": "MIT", "dependencies": { - "@types/normalize-package-data": "^2.4.1", + "@types/normalize-package-data": "^2.4.3", "normalize-package-data": "^6.0.0", - "parse-json": "^7.0.0", - "type-fest": "^4.2.0" + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@semantic-release/npm/node_modules/semver": { - "version": "7.5.4", + "version": "7.6.2", "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -4789,17 +4139,6 @@ "node": ">=10" } }, - "node_modules/@semantic-release/npm/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@semantic-release/npm/node_modules/signal-exit": { "version": "4.1.0", "dev": true, @@ -4812,18 +4151,18 @@ } }, "node_modules/@semantic-release/npm/node_modules/strip-final-newline": { - "version": "3.0.0", + "version": "4.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@semantic-release/npm/node_modules/type-fest": { - "version": "4.9.0", + "version": "4.20.0", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -4833,11 +4172,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/@semantic-release/release-notes-generator": { "version": "10.0.3", "dev": true, @@ -4862,11 +4196,22 @@ } }, "node_modules/@sinclair/typebox": { - "version": "0.32.31", + "version": "0.32.32", "license": "MIT" }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, "node_modules/@sindresorhus/merge-streams": { - "version": "1.0.0", + "version": "2.3.0", "dev": true, "license": "MIT", "engines": { @@ -4877,7 +4222,7 @@ } }, "node_modules/@sinonjs/commons": { - "version": "3.0.0", + "version": "3.0.1", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -4916,7 +4261,7 @@ "license": "(Unlicense OR Apache-2.0)" }, "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", + "version": "3.1.2", "license": "MIT" }, "node_modules/@stablelib/aead": { @@ -5096,7 +4441,7 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.5", + "version": "7.20.6", "dev": true, "license": "MIT", "dependencies": { @@ -5119,7 +4464,7 @@ } }, "node_modules/@types/chai": { - "version": "4.3.11", + "version": "4.3.16", "dev": true, "license": "MIT" }, @@ -5162,7 +4507,7 @@ } }, "node_modules/@types/eslint": { - "version": "8.56.1", + "version": "8.56.10", "dev": true, "license": "MIT", "peer": true, @@ -5197,7 +4542,7 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.43", + "version": "4.19.3", "license": "MIT", "dependencies": { "@types/node": "*", @@ -5262,7 +4607,7 @@ } }, "node_modules/@types/jest": { - "version": "29.5.11", + "version": "29.5.12", "dev": true, "license": "MIT", "dependencies": { @@ -5280,12 +4625,13 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/lokijs": { - "version": "1.5.10", + "node_modules/@types/jsonld": { + "version": "1.5.14", + "dev": true, "license": "MIT" }, - "node_modules/@types/long": { - "version": "4.0.2", + "node_modules/@types/lokijs": { + "version": "1.5.10", "license": "MIT" }, "node_modules/@types/mdast": { @@ -5311,7 +4657,7 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "18.19.4", + "version": "18.19.34", "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -5322,13 +4668,18 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/pako": { + "version": "2.0.3", + "dev": true, + "license": "MIT" + }, "node_modules/@types/parse-json": { "version": "4.0.2", "dev": true, "license": "MIT" }, "node_modules/@types/qs": { - "version": "6.9.11", + "version": "6.9.15", "license": "MIT" }, "node_modules/@types/range-parser": { @@ -5341,7 +4692,7 @@ "license": "MIT" }, "node_modules/@types/semver": { - "version": "7.5.6", + "version": "7.5.8", "dev": true, "license": "MIT" }, @@ -5354,12 +4705,12 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.5", + "version": "1.15.7", "license": "MIT", "dependencies": { "@types/http-errors": "*", - "@types/mime": "*", - "@types/node": "*" + "@types/node": "*", + "@types/send": "*" } }, "node_modules/@types/simple-peer": { @@ -5402,7 +4753,7 @@ "license": "MIT" }, "node_modules/@types/uuid": { - "version": "9.0.7", + "version": "9.0.8", "dev": true, "license": "MIT" }, @@ -5471,24 +4822,10 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.5.4", + "version": "7.6.2", "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -5496,11 +4833,6 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/@typescript-eslint/experimental-utils": { "version": "5.62.0", "dev": true, @@ -5625,24 +4957,10 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.5.4", + "version": "7.6.2", "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -5650,11 +4968,6 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/@typescript-eslint/utils": { "version": "5.62.0", "dev": true, @@ -5680,24 +4993,10 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.5.4", + "version": "7.6.2", "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -5705,11 +5004,6 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/utils/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/@typescript-eslint/visitor-keys": { "version": "5.62.0", "dev": true, @@ -5732,7 +5026,7 @@ "license": "ISC" }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", + "version": "1.12.1", "dev": true, "license": "MIT", "peer": true, @@ -5754,7 +5048,7 @@ "peer": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", + "version": "1.12.1", "dev": true, "license": "MIT", "peer": true @@ -5777,15 +5071,15 @@ "peer": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", + "version": "1.12.1", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" + "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { @@ -5813,28 +5107,28 @@ "peer": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", + "version": "1.12.1", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@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" + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", + "version": "1.12.1", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", "@webassemblyjs/leb128": "1.11.6", @@ -5842,24 +5136,24 @@ } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", + "version": "1.12.1", "dev": true, "license": "MIT", "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" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", + "version": "1.12.1", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", @@ -5868,12 +5162,12 @@ } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", + "version": "1.12.1", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, @@ -5889,8 +5183,22 @@ "license": "Apache-2.0", "peer": true }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "license": "BSD-2-Clause" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, "node_modules/acorn": { - "version": "8.11.3", + "version": "8.12.0", "dev": true, "license": "MIT", "bin": { @@ -5900,8 +5208,8 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", + "node_modules/acorn-import-attributes": { + "version": "1.9.5", "dev": true, "license": "MIT", "peer": true, @@ -5918,7 +5226,7 @@ } }, "node_modules/agent-base": { - "version": "7.1.0", + "version": "7.1.1", "dev": true, "license": "MIT", "dependencies": { @@ -5972,14 +5280,14 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", + "version": "8.16.0", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -6024,6 +5332,7 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -6045,15 +5354,15 @@ "node": ">=4" } }, - "node_modules/ansicolors": { - "version": "0.3.2", - "dev": true, - "license": "MIT" - }, "node_modules/antlr4ts": { "version": "0.5.0-alpha.4", "license": "BSD-3-Clause" }, + "node_modules/any-promise": { + "version": "1.3.0", + "dev": true, + "license": "MIT" + }, "node_modules/anymatch": { "version": "3.1.3", "dev": true, @@ -6085,12 +5394,15 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", + "version": "1.0.1", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6102,14 +5414,15 @@ "license": "MIT" }, "node_modules/array-includes": { - "version": "3.1.7", + "version": "3.1.8", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -6120,7 +5433,8 @@ } }, "node_modules/array-push-at-sort-position": { - "version": "3.0.0", + "version": "4.0.1", + "dev": true, "license": "Apache-2.0" }, "node_modules/array-union": { @@ -6139,16 +5453,36 @@ "node": ">=0.10.0" } }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.findlastindex": { - "version": "1.2.3", + "version": "1.2.5", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6191,7 +5525,7 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.tosorted": { + "node_modules/array.prototype.toreversed": { "version": "1.1.2", "dev": true, "license": "MIT", @@ -6199,21 +5533,36 @@ "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" + "es-shim-unscopables": "^1.0.0" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", + "version": "1.0.3", "dev": true, "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" }, "engines": { @@ -6259,21 +5608,23 @@ "dev": true, "license": "MIT" }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - } - }, "node_modules/asynckit": { "version": "0.4.0", "license": "MIT" }, + "node_modules/at-least-node": { + "version": "1.0.0", + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/available-typed-arrays": { - "version": "1.0.5", + "version": "1.0.7", "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -6290,10 +5641,10 @@ } }, "node_modules/axios": { - "version": "1.6.4", + "version": "1.7.2", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.4", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -6449,12 +5800,12 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.7", + "version": "0.4.11", "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.4", + "@babel/helper-define-polyfill-provider": "^0.6.2", "semver": "^6.3.1" }, "peerDependencies": { @@ -6462,23 +5813,23 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.7", + "version": "0.10.4", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.4", - "core-js-compat": "^3.33.1" + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.4", + "version": "0.6.2", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.4" + "@babel/helper-define-polyfill-provider": "^0.6.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -6580,7 +5931,6 @@ }, "node_modules/balanced-match": { "version": "1.0.2", - "dev": true, "license": "MIT" }, "node_modules/base64-js": { @@ -6613,7 +5963,7 @@ "license": "MIT" }, "node_modules/before-after-hook": { - "version": "2.2.3", + "version": "3.0.2", "dev": true, "license": "Apache-2.0" }, @@ -6632,7 +5982,6 @@ }, "node_modules/brace-expansion": { "version": "1.1.11", - "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -6641,9 +5990,7 @@ }, "node_modules/braces": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -6679,7 +6026,7 @@ "license": "MIT" }, "node_modules/browserslist": { - "version": "4.22.2", + "version": "4.23.1", "dev": true, "funding": [ { @@ -6697,10 +6044,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "update-browserslist-db": "^1.0.16" }, "bin": { "browserslist": "cli.js" @@ -6718,7 +6065,7 @@ } }, "node_modules/bson": { - "version": "6.3.0", + "version": "6.7.0", "license": "Apache-2.0", "engines": { "node": ">=16.20.1" @@ -6767,31 +6114,17 @@ } }, "node_modules/builtins": { - "version": "5.0.1", + "version": "5.1.0", "dev": true, "license": "MIT", "dependencies": { "semver": "^7.0.0" } }, - "node_modules/builtins/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/builtins/node_modules/semver": { - "version": "7.5.4", + "version": "7.6.2", "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -6799,18 +6132,18 @@ "node": ">=10" } }, - "node_modules/builtins/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/call-bind": { - "version": "1.0.5", + "version": "1.0.7", "license": "MIT", "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6849,7 +6182,7 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001574", + "version": "1.0.30001634", "dev": true, "funding": [ { @@ -6871,18 +6204,6 @@ "version": "2.0.0", "license": "Apache-2.0" }, - "node_modules/cardinal": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - }, - "bin": { - "cdl": "bin/cdl.js" - } - }, "node_modules/ccount": { "version": "1.1.0", "dev": true, @@ -6893,7 +6214,7 @@ } }, "node_modules/chai": { - "version": "4.3.10", + "version": "4.4.1", "dev": true, "license": "MIT", "dependencies": { @@ -6910,14 +6231,14 @@ } }, "node_modules/chai-as-promised": { - "version": "7.1.1", + "version": "7.1.2", "dev": true, "license": "WTFPL", "dependencies": { "check-error": "^1.0.2" }, "peerDependencies": { - "chai": ">= 2.1.2 < 5" + "chai": ">= 2.1.2 < 6" } }, "node_modules/chai/node_modules/get-func-name": { @@ -6996,7 +6317,7 @@ } }, "node_modules/chrome-trace-event": { - "version": "1.0.3", + "version": "1.0.4", "dev": true, "license": "MIT", "peer": true, @@ -7006,7 +6327,6 @@ }, "node_modules/ci-info": { "version": "3.9.0", - "dev": true, "funding": [ { "type": "github", @@ -7019,7 +6339,7 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.2.3", + "version": "1.3.1", "dev": true, "license": "MIT" }, @@ -7045,8 +6365,119 @@ "webpack": ">=4.0.0 <6.0.0" } }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "dev": true, + "license": "ISC", + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/cliui": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cli-highlight/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cli-highlight/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-highlight/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/yargs": { + "version": "16.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/cli-table3": { - "version": "0.6.3", + "version": "0.6.5", "dev": true, "license": "MIT", "dependencies": { @@ -7061,6 +6492,7 @@ }, "node_modules/cliui": { "version": "8.0.1", + "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -7148,7 +6580,6 @@ }, "node_modules/concat-map": { "version": "0.0.1", - "dev": true, "license": "MIT" }, "node_modules/config-chain": { @@ -7230,6 +6661,17 @@ "node": ">=10" } }, + "node_modules/convert-hrtime": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/convert-source-map": { "version": "2.0.0", "dev": true, @@ -7288,7 +6730,7 @@ } }, "node_modules/core-js": { - "version": "3.35.0", + "version": "3.37.1", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -7298,11 +6740,11 @@ } }, "node_modules/core-js-compat": { - "version": "3.35.0", + "version": "3.37.1", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.22.2" + "browserslist": "^4.23.0" }, "funding": { "type": "opencollective", @@ -7415,7 +6857,6 @@ }, "node_modules/cross-spawn": { "version": "7.0.3", - "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -7426,10 +6867,6 @@ "node": ">= 8" } }, - "node_modules/crypto-js": { - "version": "4.2.0", - "license": "MIT" - }, "node_modules/crypto-random-string": { "version": "4.0.0", "dev": true, @@ -7478,6 +6915,61 @@ "dev": true, "license": "BSD-2-Clause" }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/dateformat": { "version": "3.0.3", "dev": true, @@ -7487,7 +6979,7 @@ } }, "node_modules/debug": { - "version": "4.3.4", + "version": "4.3.5", "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -7533,7 +7025,7 @@ } }, "node_modules/dedent": { - "version": "1.5.1", + "version": "1.5.3", "dev": true, "license": "MIT", "peerDependencies": { @@ -7546,7 +7038,7 @@ } }, "node_modules/deep-eql": { - "version": "4.1.3", + "version": "4.1.4", "dev": true, "license": "MIT", "dependencies": { @@ -7600,15 +7092,18 @@ "license": "MIT" }, "node_modules/define-data-property": { - "version": "1.1.1", + "version": "1.1.4", "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-properties": { @@ -7703,11 +7198,6 @@ "node": ">=0.4.0" } }, - "node_modules/deprecation": { - "version": "2.3.1", - "dev": true, - "license": "ISC" - }, "node_modules/dequal": { "version": "2.0.3", "dev": true, @@ -7762,7 +7252,7 @@ "link": true }, "node_modules/diff": { - "version": "5.1.0", + "version": "5.2.0", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -7826,12 +7316,12 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.620", + "version": "1.4.803", "dev": true, "license": "ISC" }, "node_modules/elliptic": { - "version": "6.5.4", + "version": "6.5.5", "license": "MIT", "dependencies": { "bn.js": "^4.11.9", @@ -7863,6 +7353,11 @@ "dev": true, "license": "MIT" }, + "node_modules/emojilib": { + "version": "2.4.0", + "dev": true, + "license": "MIT" + }, "node_modules/engine.io-client": { "version": "6.5.3", "license": "MIT", @@ -7874,6 +7369,25 @@ "xmlhttprequest-ssl": "~2.0.0" } }, + "node_modules/engine.io-client/node_modules/ws": { + "version": "8.11.0", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/engine.io-parser": { "version": "5.2.2", "license": "MIT", @@ -7882,7 +7396,7 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.15.0", + "version": "5.17.0", "dev": true, "license": "MIT", "peer": true, @@ -7895,45 +7409,56 @@ } }, "node_modules/env-ci": { - "version": "9.1.1", + "version": "11.0.0", "dev": true, "license": "MIT", "dependencies": { - "execa": "^7.0.0", + "execa": "^8.0.0", "java-properties": "^1.0.2" }, "engines": { - "node": "^16.14 || >=18" + "node": "^18.17 || >=20.6.1" } }, "node_modules/env-ci/node_modules/execa": { - "version": "7.2.0", + "version": "8.0.1", "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", - "signal-exit": "^3.0.7", + "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" }, "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/env-ci/node_modules/get-stream": { + "version": "8.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/env-ci/node_modules/human-signals": { - "version": "4.3.1", + "version": "5.0.0", "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=14.18.0" + "node": ">=16.17.0" } }, "node_modules/env-ci/node_modules/is-stream": { @@ -7959,7 +7484,7 @@ } }, "node_modules/env-ci/node_modules/npm-run-path": { - "version": "5.2.0", + "version": "5.3.0", "dev": true, "license": "MIT", "dependencies": { @@ -7997,6 +7522,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/env-ci/node_modules/signal-exit": { + "version": "4.1.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/env-ci/node_modules/strip-final-newline": { "version": "3.0.0", "dev": true, @@ -8008,6 +7544,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/env-paths": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/err-code": { "version": "3.0.1", "license": "MIT" @@ -8021,49 +7576,56 @@ } }, "node_modules/es-abstract": { - "version": "1.22.3", + "version": "1.23.3", "dev": true, "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -8072,41 +7634,72 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-iterator-helpers": { - "version": "1.0.15", + "version": "1.0.19", "dev": true, "license": "MIT", "dependencies": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.22.1", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", + "internal-slot": "^1.0.7", "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.0.1" + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-module-lexer": { - "version": "1.4.1", + "version": "1.5.3", "dev": true, "license": "MIT", "peer": true }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { - "version": "2.0.2", + "version": "2.0.3", "dev": true, "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -8137,7 +7730,8 @@ } }, "node_modules/escalade": { - "version": "3.1.1", + "version": "3.1.2", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -8152,15 +7746,15 @@ } }, "node_modules/eslint": { - "version": "8.56.0", + "version": "8.57.0", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -8293,7 +7887,7 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.8.0", + "version": "2.8.1", "dev": true, "license": "MIT", "dependencies": { @@ -8498,24 +8092,10 @@ "eslint": ">=7.0.0" } }, - "node_modules/eslint-plugin-n/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "7.5.4", + "version": "7.6.2", "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -8523,43 +8103,43 @@ "node": ">=10" } }, - "node_modules/eslint-plugin-n/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/eslint-plugin-promise": { - "version": "6.1.1", + "version": "6.2.0", "dev": true, "license": "ISC", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/eslint-plugin-react": { - "version": "7.33.2", + "version": "7.34.2", "dev": true, "license": "MIT", "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", + "es-iterator-helpers": "^1.0.19", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.hasown": "^1.1.4", + "object.values": "^1.2.0", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", + "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" + "string.prototype.matchall": "^4.0.11" }, "engines": { "node": ">=4" @@ -8569,7 +8149,7 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", + "version": "4.6.2", "dev": true, "license": "MIT", "engines": { @@ -8623,9 +8203,8 @@ }, "node_modules/eslint-plugin-unused-imports": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-2.0.0.tgz", - "integrity": "sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==", "dev": true, + "license": "MIT", "dependencies": { "eslint-rule-composer": "^0.3.0" }, @@ -8644,9 +8223,8 @@ }, "node_modules/eslint-rule-composer": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", - "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0.0" } @@ -8901,6 +8479,17 @@ "binary-decision-diagram": "2.0.1" } }, + "node_modules/event-reduce-js/node_modules/array-push-at-sort-position": { + "version": "3.0.0", + "license": "Apache-2.0" + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/eventemitter3": { "version": "4.0.7", "license": "MIT" @@ -9004,23 +8593,13 @@ "license": "MIT" }, "node_modules/fastq": { - "version": "1.16.0", + "version": "1.17.1", "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "license": "Apache-2.0", - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/fb-watchman": { "version": "2.0.2", "dev": true, @@ -9029,27 +8608,36 @@ "bser": "2.1.1" } }, - "node_modules/figures": { - "version": "5.0.0", - "dev": true, + "node_modules/fetch-blob": { + "version": "3.2.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], "license": "MIT", "dependencies": { - "escape-string-regexp": "^5.0.0", - "is-unicode-supported": "^1.2.0" + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^12.20 || >= 14.13" } }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "5.0.0", + "node_modules/figures": { + "version": "6.1.0", "dev": true, "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -9068,9 +8656,7 @@ }, "node_modules/fill-range": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -9123,50 +8709,37 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-up-simple": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/find-versions": { - "version": "5.1.0", + "version": "6.0.0", "dev": true, "license": "MIT", "dependencies": { - "semver-regex": "^4.0.5" + "semver-regex": "^4.0.5", + "super-regex": "^1.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/firebase": { - "version": "9.23.0", + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", "license": "Apache-2.0", "dependencies": { - "@firebase/analytics": "0.10.0", - "@firebase/analytics-compat": "0.2.6", - "@firebase/app": "0.9.13", - "@firebase/app-check": "0.8.0", - "@firebase/app-check-compat": "0.3.7", - "@firebase/app-compat": "0.2.13", - "@firebase/app-types": "0.9.0", - "@firebase/auth": "0.23.2", - "@firebase/auth-compat": "0.4.2", - "@firebase/database": "0.14.4", - "@firebase/database-compat": "0.3.4", - "@firebase/firestore": "3.13.0", - "@firebase/firestore-compat": "0.3.12", - "@firebase/functions": "0.10.0", - "@firebase/functions-compat": "0.3.5", - "@firebase/installations": "0.6.4", - "@firebase/installations-compat": "0.2.4", - "@firebase/messaging": "0.12.4", - "@firebase/messaging-compat": "0.2.4", - "@firebase/performance": "0.6.4", - "@firebase/performance-compat": "0.2.4", - "@firebase/remote-config": "0.4.4", - "@firebase/remote-config-compat": "0.2.4", - "@firebase/storage": "0.11.2", - "@firebase/storage-compat": "0.3.2", - "@firebase/util": "1.9.3" + "micromatch": "^4.0.2" } }, "node_modules/flat-cache": { @@ -9216,7 +8789,7 @@ } }, "node_modules/flatted": { - "version": "3.2.9", + "version": "3.3.1", "dev": true, "license": "ISC" }, @@ -9261,6 +8834,16 @@ "version": "1.0.5", "license": "MIT" }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/from2": { "version": "2.3.0", "dev": true, @@ -9285,7 +8868,6 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "dev": true, "license": "ISC" }, "node_modules/fsevents": { @@ -9307,6 +8889,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/function-timeout": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/function.prototype.name": { "version": "1.1.6", "dev": true, @@ -9359,6 +8952,7 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", + "dev": true, "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" @@ -9387,14 +8981,18 @@ "license": "MIT" }, "node_modules/get-intrinsic": { - "version": "1.2.2", + "version": "1.2.4", "license": "MIT", "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9419,12 +9017,13 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", + "version": "1.0.2", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -9526,11 +9125,12 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", + "version": "1.0.4", "dev": true, "license": "MIT", "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -9574,7 +9174,6 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "dev": true, "license": "ISC" }, "node_modules/graphemer": { @@ -9647,17 +9246,17 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.1", + "version": "1.0.2", "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.2" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", + "version": "1.0.3", "license": "MIT", "engines": { "node": ">= 0.4" @@ -9677,10 +9276,10 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", + "version": "1.0.2", "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -9698,7 +9297,7 @@ } }, "node_modules/hasown": { - "version": "2.0.0", + "version": "2.0.2", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -9707,6 +9306,14 @@ "node": ">= 0.4" } }, + "node_modules/highlight.js": { + "version": "10.7.3", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, "node_modules/hmac-drbg": { "version": "1.0.1", "license": "MIT", @@ -9759,12 +9366,8 @@ "dev": true, "license": "MIT" }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "license": "MIT" - }, "node_modules/http-proxy-agent": { - "version": "7.0.0", + "version": "7.0.2", "dev": true, "license": "MIT", "dependencies": { @@ -9776,7 +9379,7 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.2", + "version": "7.0.4", "dev": true, "license": "MIT", "dependencies": { @@ -9797,9 +9400,8 @@ }, "node_modules/husky": { "version": "9.0.11", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.11.tgz", - "integrity": "sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==", "dev": true, + "license": "MIT", "bin": { "husky": "bin.mjs" }, @@ -9810,10 +9412,6 @@ "url": "https://github.com/sponsors/typicode" } }, - "node_modules/idb": { - "version": "7.1.1", - "license": "ISC" - }, "node_modules/ieee754": { "version": "1.2.1", "funding": [ @@ -9833,7 +9431,7 @@ "license": "BSD-3-Clause" }, "node_modules/ignore": { - "version": "5.3.0", + "version": "5.3.1", "dev": true, "license": "MIT", "engines": { @@ -9866,6 +9464,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-from-esm": { + "version": "1.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "import-meta-resolve": "^4.0.0" + }, + "engines": { + "node": ">=16.20" + } + }, "node_modules/import-local": { "version": "3.1.0", "dev": true, @@ -9884,6 +9494,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "dev": true, @@ -9892,17 +9511,27 @@ "node": ">=0.8.19" } }, - "node_modules/indent-string": { - "version": "4.0.0", + "node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/index-to-position": { + "version": "0.1.2", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/inflight": { "version": "1.0.6", - "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -9919,11 +9548,11 @@ "license": "ISC" }, "node_modules/internal-slot": { - "version": "1.0.6", + "version": "1.0.7", "dev": true, "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.2", + "es-errors": "^1.3.0", "hasown": "^2.0.0", "side-channel": "^1.0.4" }, @@ -9983,13 +9612,15 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.2", + "version": "3.0.4", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10097,6 +9728,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-date-object": { "version": "1.0.5", "license": "MIT", @@ -10119,6 +9764,19 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-docker": { + "version": "2.2.1", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "dev": true, @@ -10140,6 +9798,7 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10187,9 +9846,12 @@ } }, "node_modules/is-map": { - "version": "2.0.2", + "version": "2.0.3", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10229,7 +9891,7 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.2", + "version": "2.0.3", "dev": true, "license": "MIT", "engines": { @@ -10241,9 +9903,7 @@ }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -10351,19 +10011,25 @@ } }, "node_modules/is-set": { - "version": "2.0.2", + "version": "2.0.3", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", + "version": "1.0.3", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10420,10 +10086,10 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", + "version": "1.1.13", "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -10433,20 +10099,23 @@ } }, "node_modules/is-unicode-supported": { - "version": "1.3.0", + "version": "2.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-weakmap": { - "version": "2.0.1", + "version": "2.0.2", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10463,25 +10132,36 @@ } }, "node_modules/is-weakset": { - "version": "2.0.2", + "version": "2.0.3", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-wsl": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { - "version": "1.0.0", - "dev": true, + "version": "2.0.5", "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", - "dev": true, "license": "ISC" }, "node_modules/isomorphic-ws": { @@ -10492,7 +10172,7 @@ } }, "node_modules/isows": { - "version": "1.0.3", + "version": "1.0.4", "funding": [ { "type": "github", @@ -10505,7 +10185,7 @@ } }, "node_modules/issue-parser": { - "version": "6.0.0", + "version": "7.0.1", "dev": true, "license": "MIT", "dependencies": { @@ -10516,7 +10196,7 @@ "lodash.uniqby": "^4.7.0" }, "engines": { - "node": ">=10.13" + "node": "^18.17 || >=20.6.1" } }, "node_modules/istanbul-lib-coverage": { @@ -10528,13 +10208,13 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "6.0.1", + "version": "6.0.2", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", "istanbul-lib-coverage": "^3.2.0", "semver": "^7.5.4" }, @@ -10542,24 +10222,10 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-instrument/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.5.4", + "version": "7.6.2", "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -10567,11 +10233,6 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-instrument/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/istanbul-lib-report": { "version": "3.0.1", "dev": true, @@ -10618,7 +10279,7 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.6", + "version": "3.1.7", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -11840,24 +11501,10 @@ "node": ">=8" } }, - "node_modules/jest-snapshot/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.5.4", + "version": "7.6.2", "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -11876,11 +11523,6 @@ "node": ">=8" } }, - "node_modules/jest-snapshot/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/jest-util": { "version": "29.7.0", "dev": true, @@ -12178,7 +11820,7 @@ } }, "node_modules/js-base64": { - "version": "3.7.5", + "version": "3.7.7", "license": "BSD-3-Clause" }, "node_modules/js-cleanup": { @@ -12276,6 +11918,22 @@ "dev": true, "license": "MIT" }, + "node_modules/json-stable-stringify": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "isarray": "^2.0.5", + "jsonify": "^0.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "dev": true, @@ -12298,13 +11956,12 @@ } }, "node_modules/jsonc-parser": { - "version": "3.2.0", + "version": "3.2.1", "dev": true, "license": "MIT" }, "node_modules/jsonfile": { "version": "6.1.0", - "dev": true, "license": "MIT", "dependencies": { "universalify": "^2.0.0" @@ -12313,6 +11970,44 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonify": { + "version": "0.0.1", + "license": "Public Domain", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/jsonld": { + "version": "8.3.2", + "license": "BSD-3-Clause", + "dependencies": { + "@digitalbazaar/http-client": "^3.4.1", + "canonicalize": "^1.0.1", + "lru-cache": "^6.0.0", + "rdf-canonize": "^3.4.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jsonld/node_modules/canonicalize": { + "version": "1.0.8", + "license": "Apache-2.0" + }, + "node_modules/jsonld/node_modules/lru-cache": { + "version": "6.0.0", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jsonld/node_modules/yallist": { + "version": "4.0.0", + "license": "ISC" + }, "node_modules/jsonparse": { "version": "1.3.1", "dev": true, @@ -12367,22 +12062,9 @@ "npm": ">=6" } }, - "node_modules/jsonwebtoken/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/jsonwebtoken/node_modules/semver": { - "version": "7.5.4", + "version": "7.6.2", "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -12390,10 +12072,6 @@ "node": ">=10" } }, - "node_modules/jsonwebtoken/node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" - }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "dev": true, @@ -12409,7 +12087,7 @@ } }, "node_modules/just-extend": { - "version": "4.2.1", + "version": "6.2.0", "dev": true, "license": "MIT" }, @@ -12446,6 +12124,13 @@ "node": ">=0.10.0" } }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, "node_modules/kleur": { "version": "3.0.3", "dev": true, @@ -12454,8 +12139,41 @@ "node": ">=6" } }, + "node_modules/ky": { + "version": "0.33.3", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky?sponsor=1" + } + }, + "node_modules/ky-universal": { + "version": "0.11.0", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "node-fetch": "^3.2.10" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky-universal?sponsor=1" + }, + "peerDependencies": { + "ky": ">=0.31.4", + "web-streams-polyfill": ">=3.2.1" + }, + "peerDependenciesMeta": { + "web-streams-polyfill": { + "optional": true + } + } + }, "node_modules/language-subtag-registry": { - "version": "0.3.22", + "version": "0.3.23", "dev": true, "license": "CC0-1.0" }, @@ -12570,10 +12288,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "license": "MIT" - }, "node_modules/lodash.capitalize": { "version": "4.2.1", "dev": true, @@ -12644,10 +12358,6 @@ "version": "1.5.12", "license": "MIT" }, - "node_modules/long": { - "version": "4.0.0", - "license": "Apache-2.0" - }, "node_modules/longest-streak": { "version": "2.0.4", "dev": true, @@ -12698,14 +12408,11 @@ "license": "MIT" }, "node_modules/magic-string": { - "version": "0.30.5", + "version": "0.30.10", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" } }, "node_modules/make-dir": { @@ -12722,35 +12429,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/make-dir/node_modules/semver": { - "version": "7.5.4", + "version": "7.6.2", "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" + "engines": { + "node": ">=10" + } }, "node_modules/makeerror": { "version": "1.0.12", @@ -12784,44 +12472,44 @@ } }, "node_modules/marked": { - "version": "5.1.2", + "version": "12.0.2", "dev": true, "license": "MIT", "bin": { "marked": "bin/marked.js" }, "engines": { - "node": ">= 16" + "node": ">= 18" } }, "node_modules/marked-terminal": { - "version": "5.2.0", + "version": "7.1.0", "dev": true, "license": "MIT", "dependencies": { - "ansi-escapes": "^6.2.0", - "cardinal": "^2.1.1", - "chalk": "^5.2.0", - "cli-table3": "^0.6.3", - "node-emoji": "^1.11.0", - "supports-hyperlinks": "^2.3.0" + "ansi-escapes": "^7.0.0", + "chalk": "^5.3.0", + "cli-highlight": "^2.1.11", + "cli-table3": "^0.6.5", + "node-emoji": "^2.1.3", + "supports-hyperlinks": "^3.0.0" }, "engines": { - "node": ">=14.13.1 || >=16.0.0" + "node": ">=16.0.0" }, "peerDependencies": { - "marked": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + "marked": ">=1 <14" } }, "node_modules/marked-terminal/node_modules/ansi-escapes": { - "version": "6.2.0", + "version": "7.0.0", "dev": true, "license": "MIT", "dependencies": { - "type-fest": "^3.0.0" + "environment": "^1.0.0" }, "engines": { - "node": ">=14.16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -12838,17 +12526,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/marked-terminal/node_modules/type-fest": { - "version": "3.13.1", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/mdast-util-find-and-replace": { "version": "1.1.1", "dev": true, @@ -13130,9 +12807,7 @@ }, "node_modules/micromatch": { "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -13142,7 +12817,7 @@ } }, "node_modules/mime": { - "version": "4.0.1", + "version": "4.0.3", "dev": true, "funding": [ "https://github.com/sponsors/broofa" @@ -13202,7 +12877,6 @@ }, "node_modules/minimatch": { "version": "3.1.2", - "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -13213,7 +12887,6 @@ }, "node_modules/minimist": { "version": "1.2.8", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -13311,34 +12984,6 @@ "whatwg-url": "^11.0.0" } }, - "node_modules/mongodb-connection-string-url/node_modules/tr46": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mongodb-connection-string-url/node_modules/webidl-conversions": { - "version": "7.0.0", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": { - "version": "11.0.0", - "license": "MIT", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/ms": { "version": "2.1.2", "license": "MIT" @@ -13347,6 +12992,16 @@ "version": "9.9.0", "license": "(Apache-2.0 AND MIT)" }, + "node_modules/mz": { + "version": "2.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "node_modules/nats": { "version": "2.17.0", "license": "Apache-2.0", @@ -13378,23 +13033,23 @@ "license": "MIT" }, "node_modules/nise": { - "version": "5.1.5", + "version": "5.1.9", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@sinonjs/commons": "^2.0.0", - "@sinonjs/fake-timers": "^10.0.2", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" } }, - "node_modules/nise/node_modules/@sinonjs/commons": { - "version": "2.0.0", + "node_modules/nise/node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "type-detect": "4.0.8" + "@sinonjs/commons": "^3.0.0" } }, "node_modules/nkeys.js": { @@ -13407,31 +13062,51 @@ "node": ">=10.0.0" } }, + "node_modules/node-domexception": { + "version": "1.0.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, "node_modules/node-emoji": { - "version": "1.11.0", + "version": "2.1.3", "dev": true, "license": "MIT", "dependencies": { - "lodash": "^4.17.21" + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" } }, "node_modules/node-fetch": { - "version": "2.7.0", - "dev": true, + "version": "3.3.2", "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, "node_modules/node-int64": { @@ -13458,24 +13133,10 @@ "node": ">=10" } }, - "node_modules/normalize-package-data/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.5.4", + "version": "7.6.2", "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -13483,11 +13144,6 @@ "node": ">=10" } }, - "node_modules/normalize-package-data/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/normalize-path": { "version": "3.0.0", "dev": true, @@ -13497,7 +13153,7 @@ } }, "node_modules/normalize-url": { - "version": "8.0.0", + "version": "8.0.1", "dev": true, "license": "MIT", "engines": { @@ -13508,7 +13164,7 @@ } }, "node_modules/npm": { - "version": "9.9.2", + "version": "10.8.1", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -13517,15 +13173,15 @@ "@npmcli/map-workspaces", "@npmcli/package-json", "@npmcli/promise-spawn", + "@npmcli/redact", "@npmcli/run-script", + "@sigstore/tuf", "abbrev", "archy", "cacache", "chalk", "ci-info", "cli-columns", - "cli-table3", - "columnify", "fastest-levenshtein", "fs-minipass", "glob", @@ -13561,7 +13217,6 @@ "npm-profile", "npm-registry-fetch", "npm-user-validate", - "npmlog", "p-map", "pacote", "parse-conflict-json", @@ -13569,7 +13224,6 @@ "qrcode-terminal", "read", "semver", - "sigstore", "spdx-expression-parse", "ssri", "supports-color", @@ -13592,74 +13246,72 @@ ], "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^6.5.0", - "@npmcli/config": "^6.4.0", - "@npmcli/fs": "^3.1.0", - "@npmcli/map-workspaces": "^3.0.4", - "@npmcli/package-json": "^4.0.1", - "@npmcli/promise-spawn": "^6.0.2", - "@npmcli/run-script": "^6.0.2", + "@npmcli/arborist": "^7.5.3", + "@npmcli/config": "^8.3.3", + "@npmcli/fs": "^3.1.1", + "@npmcli/map-workspaces": "^3.0.6", + "@npmcli/package-json": "^5.1.1", + "@npmcli/promise-spawn": "^7.0.2", + "@npmcli/redact": "^2.0.0", + "@npmcli/run-script": "^8.1.0", + "@sigstore/tuf": "^2.3.4", "abbrev": "^2.0.0", "archy": "~1.0.0", - "cacache": "^17.1.3", + "cacache": "^18.0.3", "chalk": "^5.3.0", - "ci-info": "^3.8.0", + "ci-info": "^4.0.0", "cli-columns": "^4.0.0", - "cli-table3": "^0.6.3", - "columnify": "^1.6.0", "fastest-levenshtein": "^1.0.16", - "fs-minipass": "^3.0.2", - "glob": "^10.2.7", + "fs-minipass": "^3.0.3", + "glob": "^10.4.1", "graceful-fs": "^4.2.11", - "hosted-git-info": "^6.1.1", - "ini": "^4.1.1", - "init-package-json": "^5.0.0", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^3.0.0", - "libnpmaccess": "^7.0.2", - "libnpmdiff": "^5.0.20", - "libnpmexec": "^6.0.4", - "libnpmfund": "^4.2.1", - "libnpmhook": "^9.0.3", - "libnpmorg": "^5.0.4", - "libnpmpack": "^5.0.20", - "libnpmpublish": "^7.5.1", - "libnpmsearch": "^6.0.2", - "libnpmteam": "^5.0.3", - "libnpmversion": "^4.0.2", - "make-fetch-happen": "^11.1.1", - "minimatch": "^9.0.3", - "minipass": "^5.0.0", + "hosted-git-info": "^7.0.2", + "ini": "^4.1.3", + "init-package-json": "^6.0.3", + "is-cidr": "^5.1.0", + "json-parse-even-better-errors": "^3.0.2", + "libnpmaccess": "^8.0.6", + "libnpmdiff": "^6.1.3", + "libnpmexec": "^8.1.2", + "libnpmfund": "^5.0.11", + "libnpmhook": "^10.0.5", + "libnpmorg": "^6.0.6", + "libnpmpack": "^7.0.3", + "libnpmpublish": "^9.0.9", + "libnpmsearch": "^7.0.6", + "libnpmteam": "^6.0.5", + "libnpmversion": "^6.0.3", + "make-fetch-happen": "^13.0.1", + "minimatch": "^9.0.4", + "minipass": "^7.1.1", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", - "node-gyp": "^9.4.0", - "nopt": "^7.2.0", - "normalize-package-data": "^5.0.0", + "node-gyp": "^10.1.0", + "nopt": "^7.2.1", + "normalize-package-data": "^6.0.1", "npm-audit-report": "^5.0.0", - "npm-install-checks": "^6.2.0", - "npm-package-arg": "^10.1.0", - "npm-pick-manifest": "^8.0.2", - "npm-profile": "^7.0.1", - "npm-registry-fetch": "^14.0.5", - "npm-user-validate": "^2.0.0", - "npmlog": "^7.0.1", + "npm-install-checks": "^6.3.0", + "npm-package-arg": "^11.0.2", + "npm-pick-manifest": "^9.0.1", + "npm-profile": "^10.0.0", + "npm-registry-fetch": "^17.0.1", + "npm-user-validate": "^2.0.1", "p-map": "^4.0.0", - "pacote": "^15.2.0", + "pacote": "^18.0.6", "parse-conflict-json": "^3.0.1", - "proc-log": "^3.0.0", + "proc-log": "^4.2.0", "qrcode-terminal": "^0.12.0", - "read": "^2.1.0", - "semver": "^7.5.4", - "sigstore": "^1.9.0", - "spdx-expression-parse": "^3.0.1", - "ssri": "^10.0.4", + "read": "^3.0.1", + "semver": "^7.6.2", + "spdx-expression-parse": "^4.0.0", + "ssri": "^10.0.6", "supports-color": "^9.4.0", - "tar": "^6.1.15", + "tar": "^6.2.1", "text-table": "~0.2.0", "tiny-relative-date": "^1.3.0", "treeverse": "^3.0.0", - "validate-npm-package-name": "^5.0.0", - "which": "^3.0.1", + "validate-npm-package-name": "^5.0.1", + "which": "^4.0.0", "write-file-atomic": "^5.0.1" }, "bin": { @@ -13667,7 +13319,7 @@ "npx": "bin/npx-cli.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-run-path": { @@ -13681,16 +13333,6 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/@colors/colors": { - "version": "1.5.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/npm/node_modules/@isaacs/cliui": { "version": "8.0.2", "dev": true, @@ -13764,43 +13406,61 @@ "inBundle": true, "license": "ISC" }, + "node_modules/npm/node_modules/@npmcli/agent": { + "version": "2.2.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "6.5.0", + "version": "7.5.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^3.1.0", - "@npmcli/installed-package-contents": "^2.0.2", + "@npmcli/fs": "^3.1.1", + "@npmcli/installed-package-contents": "^2.1.0", "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/metavuln-calculator": "^5.0.0", + "@npmcli/metavuln-calculator": "^7.1.1", "@npmcli/name-from-folder": "^2.0.0", "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^4.0.0", - "@npmcli/query": "^3.0.0", - "@npmcli/run-script": "^6.0.0", - "bin-links": "^4.0.1", - "cacache": "^17.0.4", + "@npmcli/package-json": "^5.1.0", + "@npmcli/query": "^3.1.0", + "@npmcli/redact": "^2.0.0", + "@npmcli/run-script": "^8.1.0", + "bin-links": "^4.0.4", + "cacache": "^18.0.3", "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^6.1.1", - "json-parse-even-better-errors": "^3.0.0", + "hosted-git-info": "^7.0.2", + "json-parse-even-better-errors": "^3.0.2", "json-stringify-nice": "^1.1.4", - "minimatch": "^9.0.0", - "nopt": "^7.0.0", + "lru-cache": "^10.2.2", + "minimatch": "^9.0.4", + "nopt": "^7.2.1", "npm-install-checks": "^6.2.0", - "npm-package-arg": "^10.1.0", - "npm-pick-manifest": "^8.0.1", - "npm-registry-fetch": "^14.0.3", - "npmlog": "^7.0.1", - "pacote": "^15.0.8", + "npm-package-arg": "^11.0.2", + "npm-pick-manifest": "^9.0.1", + "npm-registry-fetch": "^17.0.1", + "pacote": "^18.0.6", "parse-conflict-json": "^3.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.2.0", + "proggy": "^2.0.0", "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.2", + "promise-call-limit": "^3.0.1", "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", - "ssri": "^10.0.1", + "ssri": "^10.0.6", "treeverse": "^3.0.0", "walk-up-path": "^3.0.1" }, @@ -13808,42 +13468,30 @@ "arborist": "bin/index.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/config": { - "version": "6.4.0", + "version": "8.3.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/map-workspaces": "^3.0.2", - "ci-info": "^3.8.0", - "ini": "^4.1.0", - "nopt": "^7.0.0", - "proc-log": "^3.0.0", + "ci-info": "^4.0.0", + "ini": "^4.1.2", + "nopt": "^7.2.1", + "proc-log": "^4.2.0", "read-package-json-fast": "^3.0.2", "semver": "^7.3.5", "walk-up-path": "^3.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/disparity-colors": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "ansi-styles": "^4.3.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/fs": { - "version": "3.1.0", + "version": "3.1.1", "dev": true, "inBundle": true, "license": "ISC", @@ -13855,26 +13503,26 @@ } }, "node_modules/npm/node_modules/@npmcli/git": { - "version": "4.1.0", + "version": "5.0.7", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/promise-spawn": "^6.0.0", - "lru-cache": "^7.4.4", - "npm-pick-manifest": "^8.0.0", - "proc-log": "^3.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^4.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", - "which": "^3.0.0" + "which": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "2.0.2", + "version": "2.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -13883,14 +13531,14 @@ "npm-normalize-package-bin": "^3.0.0" }, "bin": { - "installed-package-contents": "lib/index.js" + "installed-package-contents": "bin/index.js" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "3.0.4", + "version": "3.0.6", "dev": true, "inBundle": true, "license": "ISC", @@ -13905,18 +13553,19 @@ } }, "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "5.0.1", + "version": "7.1.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "cacache": "^17.0.0", + "cacache": "^18.0.0", "json-parse-even-better-errors": "^3.0.0", - "pacote": "^15.0.0", + "pacote": "^18.0.0", + "proc-log": "^4.1.0", "semver": "^7.3.5" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/name-from-folder": { @@ -13938,37 +13587,37 @@ } }, "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "4.0.1", + "version": "5.1.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/git": "^4.1.0", + "@npmcli/git": "^5.0.0", "glob": "^10.2.2", - "hosted-git-info": "^6.1.1", + "hosted-git-info": "^7.0.0", "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^5.0.0", - "proc-log": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^4.0.0", "semver": "^7.5.3" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "6.0.2", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "which": "^3.0.0" + "which": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/query": { - "version": "3.0.0", + "version": "3.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -13979,20 +13628,30 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/npm/node_modules/@npmcli/redact": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "6.0.2", + "version": "8.1.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^3.0.0" + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "proc-log": "^4.0.0", + "which": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@pkgjs/parseargs": { @@ -14006,129 +13665,120 @@ } }, "node_modules/npm/node_modules/@sigstore/bundle": { - "version": "1.1.0", + "version": "2.3.2", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.2.0" + "@sigstore/protobuf-specs": "^0.3.2" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@sigstore/protobuf-specs": { - "version": "0.2.1", + "node_modules/npm/node_modules/@sigstore/core": { + "version": "1.1.0", "dev": true, "inBundle": true, "license": "Apache-2.0", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@sigstore/sign": { - "version": "1.0.0", + "node_modules/npm/node_modules/@sigstore/protobuf-specs": { + "version": "0.3.2", "dev": true, "inBundle": true, "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^1.1.0", - "@sigstore/protobuf-specs": "^0.2.0", - "make-fetch-happen": "^11.0.1" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@sigstore/tuf": { - "version": "1.0.3", + "node_modules/npm/node_modules/@sigstore/sign": { + "version": "2.3.2", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.2.0", - "tuf-js": "^1.1.7" + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "make-fetch-happen": "^13.0.1", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@tootallnate/once": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 10" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@tufjs/canonical-json": { - "version": "1.0.0", + "node_modules/npm/node_modules/@sigstore/tuf": { + "version": "2.3.4", "dev": true, "inBundle": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.2", + "tuf-js": "^2.2.1" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@tufjs/models": { - "version": "1.0.4", + "node_modules/npm/node_modules/@sigstore/verify": { + "version": "1.2.1", "dev": true, "inBundle": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@tufjs/canonical-json": "1.0.0", - "minimatch": "^9.0.0" + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.2" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/abbrev": { + "node_modules/npm/node_modules/@tufjs/canonical-json": { "version": "2.0.0", "dev": true, "inBundle": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/abort-controller": { - "version": "3.0.0", + "node_modules/npm/node_modules/@tufjs/models": { + "version": "2.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "event-target-shim": "^5.0.0" + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.4" }, "engines": { - "node": ">=6.5" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/agent-base": { - "version": "6.0.2", + "node_modules/npm/node_modules/abbrev": { + "version": "2.0.0", "dev": true, "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, + "license": "ISC", "engines": { - "node": ">= 6.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/agentkeepalive": { - "version": "4.3.0", + "node_modules/npm/node_modules/agent-base": { + "version": "7.1.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "debug": "^4.1.0", - "depd": "^2.0.0", - "humanize-ms": "^1.2.1" + "debug": "^4.3.4" }, "engines": { - "node": ">= 8.0.0" + "node": ">= 14" } }, "node_modules/npm/node_modules/aggregate-error": { @@ -14154,15 +13804,12 @@ } }, "node_modules/npm/node_modules/ansi-styles": { - "version": "4.3.0", + "version": "6.2.1", "dev": true, "inBundle": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" @@ -14180,47 +13827,14 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/are-we-there-yet": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^4.1.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm/node_modules/balanced-match": { "version": "1.0.2", "dev": true, "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/base64-js": { - "version": "1.5.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/bin-links": { - "version": "4.0.2", + "version": "4.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -14235,12 +13849,15 @@ } }, "node_modules/npm/node_modules/binary-extensions": { - "version": "2.2.0", + "version": "2.3.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/npm/node_modules/brace-expansion": { @@ -14252,41 +13869,8 @@ "balanced-match": "^1.0.0" } }, - "node_modules/npm/node_modules/buffer": { - "version": "6.0.3", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/npm/node_modules/builtins": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/npm/node_modules/cacache": { - "version": "17.1.3", + "version": "18.0.3", "dev": true, "inBundle": true, "license": "ISC", @@ -14294,9 +13878,9 @@ "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-collect": "^1.0.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", @@ -14305,7 +13889,7 @@ "unique-filename": "^3.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/chalk": { @@ -14330,7 +13914,7 @@ } }, "node_modules/npm/node_modules/ci-info": { - "version": "3.8.0", + "version": "4.0.0", "dev": true, "funding": [ { @@ -14345,15 +13929,15 @@ } }, "node_modules/npm/node_modules/cidr-regex": { - "version": "3.1.1", + "version": "4.1.1", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "ip-regex": "^4.1.0" + "ip-regex": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/npm/node_modules/clean-stack": { @@ -14378,32 +13962,8 @@ "node": ">= 10" } }, - "node_modules/npm/node_modules/cli-table3": { - "version": "0.6.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/npm/node_modules/clone": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, "node_modules/npm/node_modules/cmd-shim": { - "version": "6.0.1", + "version": "6.0.3", "dev": true, "inBundle": true, "license": "ISC", @@ -14429,46 +13989,12 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/color-support": { - "version": "1.1.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/npm/node_modules/columnify": { - "version": "1.6.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/npm/node_modules/common-ancestor-path": { "version": "1.0.1", "dev": true, "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/console-control-strings": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/cross-spawn": { "version": "7.0.3", "dev": true, @@ -14533,35 +14059,8 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/defaults": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/delegates": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/depd": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/npm/node_modules/diff": { - "version": "5.1.0", + "version": "5.2.0", "dev": true, "inBundle": true, "license": "BSD-3-Clause", @@ -14606,24 +14105,6 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/event-target-shim": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/events": { - "version": "3.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, "node_modules/npm/node_modules/exponential-backoff": { "version": "3.1.1", "dev": true, @@ -14656,65 +14137,43 @@ } }, "node_modules/npm/node_modules/fs-minipass": { - "version": "3.0.2", + "version": "3.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/fs.realpath": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/function-bind": { - "version": "1.1.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/gauge": { - "version": "5.0.1", + "version": "1.1.2", "dev": true, "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^4.0.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/npm/node_modules/glob": { - "version": "10.2.7", + "version": "10.4.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.0" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "path-scurry": "^1.11.1" }, "bin": { - "glob": "dist/cjs/src/bin.js" + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -14726,34 +14185,28 @@ "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/has": { - "version": "1.0.3", + "node_modules/npm/node_modules/hasown": { + "version": "2.0.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, - "node_modules/npm/node_modules/has-unicode": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/hosted-git-info": { - "version": "6.1.1", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "lru-cache": "^7.5.1" + "lru-cache": "^10.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/http-cache-semantics": { @@ -14761,41 +14214,31 @@ "dev": true, "inBundle": true, "license": "BSD-2-Clause" - }, - "node_modules/npm/node_modules/http-proxy-agent": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/https-proxy-agent": { - "version": "5.0.1", + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "7.0.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, - "node_modules/npm/node_modules/humanize-ms": { - "version": "1.2.1", + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "7.0.4", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "ms": "^2.0.0" + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" } }, "node_modules/npm/node_modules/iconv-lite": { @@ -14811,28 +14254,8 @@ "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/ieee754": { - "version": "1.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "BSD-3-Clause" - }, "node_modules/npm/node_modules/ignore-walk": { - "version": "6.0.3", + "version": "6.0.5", "dev": true, "inBundle": true, "license": "ISC", @@ -14861,24 +14284,8 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/inflight": { - "version": "1.0.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/npm/node_modules/inherits": { - "version": "2.0.4", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/ini": { - "version": "4.1.1", + "version": "4.1.3", "dev": true, "inBundle": true, "license": "ISC", @@ -14887,57 +14294,67 @@ } }, "node_modules/npm/node_modules/init-package-json": { - "version": "5.0.0", + "version": "6.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-package-arg": "^10.0.0", + "@npmcli/package-json": "^5.0.0", + "npm-package-arg": "^11.0.0", "promzard": "^1.0.0", - "read": "^2.0.0", - "read-package-json": "^6.0.0", + "read": "^3.0.1", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4", "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/ip": { - "version": "2.0.0", + "node_modules/npm/node_modules/ip-address": { + "version": "9.0.5", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } }, "node_modules/npm/node_modules/ip-regex": { - "version": "4.3.0", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/npm/node_modules/is-cidr": { - "version": "4.0.2", + "version": "5.1.0", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "cidr-regex": "^3.1.1" + "cidr-regex": "^4.1.1" }, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/npm/node_modules/is-core-module": { - "version": "2.13.0", + "version": "2.13.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -14965,7 +14382,7 @@ "license": "ISC" }, "node_modules/npm/node_modules/jackspeak": { - "version": "2.2.1", + "version": "3.1.2", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", @@ -14982,8 +14399,14 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/npm/node_modules/jsbn": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", + "version": "3.0.2", "dev": true, "inBundle": true, "license": "MIT", @@ -15022,210 +14445,205 @@ "license": "MIT" }, "node_modules/npm/node_modules/libnpmaccess": { - "version": "7.0.2", + "version": "8.0.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-package-arg": "^10.1.0", - "npm-registry-fetch": "^14.0.3" + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "5.0.20", + "version": "6.1.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^6.5.0", - "@npmcli/disparity-colors": "^3.0.0", - "@npmcli/installed-package-contents": "^2.0.2", - "binary-extensions": "^2.2.0", + "@npmcli/arborist": "^7.5.3", + "@npmcli/installed-package-contents": "^2.1.0", + "binary-extensions": "^2.3.0", "diff": "^5.1.0", - "minimatch": "^9.0.0", - "npm-package-arg": "^10.1.0", - "pacote": "^15.0.8", - "tar": "^6.1.13" + "minimatch": "^9.0.4", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6", + "tar": "^6.2.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "6.0.4", + "version": "8.1.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^6.5.0", - "@npmcli/run-script": "^6.0.0", - "ci-info": "^3.7.1", - "npm-package-arg": "^10.1.0", - "npmlog": "^7.0.1", - "pacote": "^15.0.8", - "proc-log": "^3.0.0", - "read": "^2.0.0", + "@npmcli/arborist": "^7.5.3", + "@npmcli/run-script": "^8.1.0", + "ci-info": "^4.0.0", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6", + "proc-log": "^4.2.0", + "read": "^3.0.1", "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", "walk-up-path": "^3.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "4.2.1", + "version": "5.0.11", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^6.5.0" + "@npmcli/arborist": "^7.5.3" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmhook": { - "version": "9.0.3", + "version": "10.0.5", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^14.0.3" + "npm-registry-fetch": "^17.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmorg": { - "version": "5.0.4", + "version": "6.0.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^14.0.3" + "npm-registry-fetch": "^17.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "5.0.20", + "version": "7.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^6.5.0", - "@npmcli/run-script": "^6.0.0", - "npm-package-arg": "^10.1.0", - "pacote": "^15.0.8" + "@npmcli/arborist": "^7.5.3", + "@npmcli/run-script": "^8.1.0", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmpublish": { - "version": "7.5.1", + "version": "9.0.9", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "ci-info": "^3.6.1", - "normalize-package-data": "^5.0.0", - "npm-package-arg": "^10.1.0", - "npm-registry-fetch": "^14.0.3", - "proc-log": "^3.0.0", + "ci-info": "^4.0.0", + "normalize-package-data": "^6.0.1", + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.1", + "proc-log": "^4.2.0", "semver": "^7.3.7", - "sigstore": "^1.4.0", - "ssri": "^10.0.1" + "sigstore": "^2.2.0", + "ssri": "^10.0.6" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmsearch": { - "version": "6.0.2", + "version": "7.0.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-registry-fetch": "^14.0.3" + "npm-registry-fetch": "^17.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmteam": { - "version": "5.0.3", + "version": "6.0.5", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^14.0.3" + "npm-registry-fetch": "^17.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmversion": { - "version": "4.0.2", + "version": "6.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/git": "^4.0.1", - "@npmcli/run-script": "^6.0.0", - "json-parse-even-better-errors": "^3.0.0", - "proc-log": "^3.0.0", + "@npmcli/git": "^5.0.7", + "@npmcli/run-script": "^8.1.0", + "json-parse-even-better-errors": "^3.0.2", + "proc-log": "^4.2.0", "semver": "^7.3.7" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/lru-cache": { - "version": "7.18.3", + "version": "10.2.2", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": ">=12" + "node": "14 || >=16.14" } }, "node_modules/npm/node_modules/make-fetch-happen": { - "version": "11.1.1", + "version": "13.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", + "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", + "proc-log": "^4.2.0", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", "ssri": "^10.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/minimatch": { - "version": "9.0.3", + "version": "9.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -15240,45 +14658,33 @@ } }, "node_modules/npm/node_modules/minipass": { - "version": "5.0.0", + "version": "7.1.2", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/npm/node_modules/minipass-collect": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", + "version": "2.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "minipass": "^7.0.3" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/npm/node_modules/minipass-fetch": { - "version": "3.0.3", + "version": "3.0.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "minipass": "^5.0.0", + "minipass": "^7.0.3", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, @@ -15444,178 +14850,41 @@ "node": ">= 0.6" } }, - "node_modules/npm/node_modules/node-gyp": { - "version": "9.4.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^11.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^12.13 || ^14.13 || >=16" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/abbrev": { - "version": "1.1.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/node-gyp/node_modules/are-we-there-yet": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/gauge": { - "version": "4.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/nopt": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { - "version": "6.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/readable-stream": { - "version": "3.6.2", + "node_modules/npm/node_modules/node-gyp": { + "version": "10.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": ">= 6" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/node-gyp/node_modules/which": { - "version": "2.0.2", + "node_modules/npm/node_modules/node-gyp/node_modules/proc-log": { + "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/nopt": { - "version": "7.2.0", + "version": "7.2.1", "dev": true, "inBundle": true, "license": "ISC", @@ -15630,18 +14899,18 @@ } }, "node_modules/npm/node_modules/normalize-package-data": { - "version": "5.0.0", + "version": "6.0.1", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^6.0.0", + "hosted-git-info": "^7.0.0", "is-core-module": "^2.8.1", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/npm-audit-report": { @@ -15654,7 +14923,7 @@ } }, "node_modules/npm/node_modules/npm-bundled": { - "version": "3.0.0", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -15666,7 +14935,7 @@ } }, "node_modules/npm/node_modules/npm-install-checks": { - "version": "6.2.0", + "version": "6.3.0", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -15687,80 +14956,81 @@ } }, "node_modules/npm/node_modules/npm-package-arg": { - "version": "10.1.0", + "version": "11.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", + "hosted-git-info": "^7.0.0", + "proc-log": "^4.0.0", "semver": "^7.3.5", "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/npm-packlist": { - "version": "7.0.4", + "version": "8.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "ignore-walk": "^6.0.0" + "ignore-walk": "^6.0.4" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "8.0.2", + "version": "9.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "npm-install-checks": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^10.0.0", + "npm-package-arg": "^11.0.0", "semver": "^7.3.5" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/npm-profile": { - "version": "7.0.1", + "version": "10.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-registry-fetch": "^14.0.0", - "proc-log": "^3.0.0" + "npm-registry-fetch": "^17.0.1", + "proc-log": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=18.0.0" } }, "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "14.0.5", + "version": "17.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "make-fetch-happen": "^11.0.0", - "minipass": "^5.0.0", + "@npmcli/redact": "^2.0.0", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", "minipass-json-stream": "^1.0.1", "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" + "npm-package-arg": "^11.0.0", + "proc-log": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/npm-user-validate": { - "version": "2.0.0", + "version": "2.0.1", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -15768,30 +15038,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/npmlog": { - "version": "7.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^4.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^5.0.0", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/once": { - "version": "1.4.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, "node_modules/npm/node_modules/p-map": { "version": "4.0.0", "dev": true, @@ -15808,35 +15054,34 @@ } }, "node_modules/npm/node_modules/pacote": { - "version": "15.2.0", + "version": "18.0.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/git": "^4.0.0", + "@npmcli/git": "^5.0.0", "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^6.0.1", - "@npmcli/run-script": "^6.0.0", - "cacache": "^17.0.0", + "@npmcli/package-json": "^5.1.0", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^8.0.0", + "cacache": "^18.0.0", "fs-minipass": "^3.0.0", - "minipass": "^5.0.0", - "npm-package-arg": "^10.0.0", - "npm-packlist": "^7.0.0", - "npm-pick-manifest": "^8.0.0", - "npm-registry-fetch": "^14.0.0", - "proc-log": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^17.0.0", + "proc-log": "^4.0.0", "promise-retry": "^2.0.1", - "read-package-json": "^6.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^1.3.0", + "sigstore": "^2.2.0", "ssri": "^10.0.0", "tar": "^6.1.11" }, "bin": { - "pacote": "lib/bin.js" + "pacote": "bin/index.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/parse-conflict-json": { @@ -15853,15 +15098,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/path-is-absolute": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/npm/node_modules/path-key": { "version": "3.1.1", "dev": true, @@ -15872,32 +15108,23 @@ } }, "node_modules/npm/node_modules/path-scurry": { - "version": "1.9.2", + "version": "1.11.1", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^9.1.1", - "minipass": "^5.0.0 || ^6.0.2" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm/node_modules/path-scurry/node_modules/lru-cache": { - "version": "9.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "14 || >=16.14" - } - }, "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.0.13", + "version": "6.1.0", "dev": true, "inBundle": true, "license": "MIT", @@ -15910,7 +15137,7 @@ } }, "node_modules/npm/node_modules/proc-log": { - "version": "3.0.0", + "version": "4.2.0", "dev": true, "inBundle": true, "license": "ISC", @@ -15918,13 +15145,13 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/process": { - "version": "0.11.10", + "node_modules/npm/node_modules/proggy": { + "version": "2.0.0", "dev": true, "inBundle": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">= 0.6.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/promise-all-reject-late": { @@ -15937,7 +15164,7 @@ } }, "node_modules/npm/node_modules/promise-call-limit": { - "version": "1.0.2", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -15965,12 +15192,12 @@ } }, "node_modules/npm/node_modules/promzard": { - "version": "1.0.0", + "version": "1.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "read": "^2.0.0" + "read": "^3.0.1" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -15985,12 +15212,12 @@ } }, "node_modules/npm/node_modules/read": { - "version": "2.1.0", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "mute-stream": "~1.0.0" + "mute-stream": "^1.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -16005,21 +15232,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/read-package-json": { - "version": "6.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^5.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm/node_modules/read-package-json-fast": { "version": "3.0.2", "dev": true, @@ -16033,21 +15245,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/readable-stream": { - "version": "4.4.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/npm/node_modules/retry": { "version": "0.12.0", "dev": true, @@ -16057,83 +15254,6 @@ "node": ">= 4" } }, - "node_modules/npm/node_modules/rimraf": { - "version": "3.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/npm/node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/npm/node_modules/safe-buffer": { - "version": "5.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/safer-buffer": { "version": "2.1.2", "dev": true, @@ -16142,13 +15262,10 @@ "optional": true }, "node_modules/npm/node_modules/semver": { - "version": "7.5.4", + "version": "7.6.2", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -16156,24 +15273,6 @@ "node": ">=10" } }, - "node_modules/npm/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/set-blocking": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/shebang-command": { "version": "2.0.0", "dev": true, @@ -16196,7 +15295,7 @@ } }, "node_modules/npm/node_modules/signal-exit": { - "version": "4.0.2", + "version": "4.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -16208,22 +15307,20 @@ } }, "node_modules/npm/node_modules/sigstore": { - "version": "1.9.0", + "version": "2.3.1", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^1.1.0", - "@sigstore/protobuf-specs": "^0.2.0", - "@sigstore/sign": "^1.0.0", - "@sigstore/tuf": "^1.0.3", - "make-fetch-happen": "^11.0.1" - }, - "bin": { - "sigstore": "bin/sigstore.js" + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "@sigstore/sign": "^2.3.2", + "@sigstore/tuf": "^2.3.4", + "@sigstore/verify": "^1.2.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/smart-buffer": { @@ -16237,31 +15334,31 @@ } }, "node_modules/npm/node_modules/socks": { - "version": "2.7.1", + "version": "2.8.3", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "ip": "^2.0.0", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "7.0.0", + "version": "8.0.3", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" }, "engines": { - "node": ">= 10" + "node": ">= 14" } }, "node_modules/npm/node_modules/spdx-correct": { @@ -16274,14 +15371,24 @@ "spdx-license-ids": "^3.0.0" } }, + "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, "node_modules/npm/node_modules/spdx-exceptions": { - "version": "2.3.0", + "version": "2.5.0", "dev": true, "inBundle": true, "license": "CC-BY-3.0" }, "node_modules/npm/node_modules/spdx-expression-parse": { - "version": "3.0.1", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT", @@ -16291,32 +15398,29 @@ } }, "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.13", + "version": "3.0.18", "dev": true, "inBundle": true, "license": "CC0-1.0" }, + "node_modules/npm/node_modules/sprintf-js": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause" + }, "node_modules/npm/node_modules/ssri": { - "version": "10.0.4", + "version": "10.0.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/string_decoder": { - "version": "1.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/npm/node_modules/string-width": { "version": "4.2.3", "dev": true, @@ -16384,7 +15488,7 @@ } }, "node_modules/npm/node_modules/tar": { - "version": "6.1.15", + "version": "6.2.1", "dev": true, "inBundle": true, "license": "ISC", @@ -16424,6 +15528,15 @@ "node": ">=8" } }, + "node_modules/npm/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, "node_modules/npm/node_modules/text-table": { "version": "0.2.0", "dev": true, @@ -16446,17 +15559,17 @@ } }, "node_modules/npm/node_modules/tuf-js": { - "version": "1.1.7", + "version": "2.2.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@tufjs/models": "1.0.4", + "@tufjs/models": "2.0.1", "debug": "^4.3.4", - "make-fetch-happen": "^11.1.1" + "make-fetch-happen": "^13.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/unique-filename": { @@ -16499,14 +15612,21 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, "node_modules/npm/node_modules/validate-npm-package-name": { - "version": "5.0.0", + "version": "5.0.1", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -16517,37 +15637,28 @@ "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/wcwidth": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, "node_modules/npm/node_modules/which": { - "version": "3.0.1", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "isexe": "^2.0.0" + "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/wide-align": { - "version": "1.1.5", + "node_modules/npm/node_modules/which/node_modules/isexe": { + "version": "3.1.1", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" + "engines": { + "node": ">=16" } }, "node_modules/npm/node_modules/wrap-ansi": { @@ -16585,20 +15696,23 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "inBundle": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", + "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", "dev": true, "inBundle": true, "license": "MIT", @@ -16606,7 +15720,7 @@ "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { @@ -16647,12 +15761,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/npm/node_modules/wrappy": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/write-file-atomic": { "version": "5.0.1", "dev": true, @@ -16689,11 +15797,11 @@ } }, "node_modules/object-is": { - "version": "1.1.5", + "version": "1.1.6", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -16726,26 +15834,27 @@ } }, "node_modules/object.entries": { - "version": "1.1.7", + "version": "1.1.8", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.fromentries": { - "version": "2.0.7", + "version": "2.0.8", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -16755,36 +15864,42 @@ } }, "node_modules/object.groupby": { - "version": "1.0.1", + "version": "1.0.3", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/object.hasown": { - "version": "1.1.3", + "version": "1.1.4", "dev": true, "license": "MIT", "dependencies": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.values": { - "version": "1.1.7", + "version": "1.2.0", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -16803,7 +15918,6 @@ }, "node_modules/once": { "version": "1.4.0", - "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -16823,22 +15937,43 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/open": { + "version": "7.4.2", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { - "version": "0.9.3", + "version": "0.9.4", "dev": true, "license": "MIT", "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ospec": { "version": "3.1.0", "dev": true, @@ -16895,7 +16030,7 @@ } }, "node_modules/p-filter/node_modules/p-map": { - "version": "7.0.1", + "version": "7.0.2", "dev": true, "license": "MIT", "engines": { @@ -17045,6 +16180,161 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse-ms": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/patch-package": { + "version": "8.0.0", + "license": "MIT", + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^4.1.2", + "ci-info": "^3.7.0", + "cross-spawn": "^7.0.3", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^9.0.0", + "json-stable-stringify": "^1.0.2", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.6", + "open": "^7.4.2", + "rimraf": "^2.6.3", + "semver": "^7.5.3", + "slash": "^2.0.0", + "tmp": "^0.0.33", + "yaml": "^2.2.2" + }, + "bin": { + "patch-package": "index.js" + }, + "engines": { + "node": ">=14", + "npm": ">5" + } + }, + "node_modules/patch-package/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/patch-package/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/patch-package/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/patch-package/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/patch-package/node_modules/fs-extra": { + "version": "9.1.0", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/patch-package/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/patch-package/node_modules/semver": { + "version": "7.6.2", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/patch-package/node_modules/slash": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/patch-package/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/patch-package/node_modules/yaml": { + "version": "2.4.5", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/path-exists": { "version": "4.0.0", "dev": true, @@ -17055,7 +16345,6 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -17068,7 +16357,6 @@ }, "node_modules/path-key": { "version": "3.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -17080,15 +16368,7 @@ "license": "MIT" }, "node_modules/path-to-regexp": { - "version": "1.8.0", - "dev": true, - "license": "MIT", - "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/path-to-regexp/node_modules/isarray": { - "version": "0.0.1", + "version": "6.2.2", "dev": true, "license": "MIT" }, @@ -17117,13 +16397,12 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", + "version": "1.0.1", "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", - "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -17299,6 +16578,18 @@ "node": ">=8" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postinstall-postinstall": { + "version": "2.1.0", + "hasInstallScript": true, + "license": "MIT" + }, "node_modules/prelude-ls": { "version": "1.2.1", "dev": true, @@ -17308,7 +16599,7 @@ } }, "node_modules/prettier": { - "version": "3.1.1", + "version": "3.3.2", "dev": true, "license": "MIT", "bin": { @@ -17345,6 +16636,20 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/pretty-ms": { + "version": "9.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "dev": true, @@ -17382,30 +16687,6 @@ "dev": true, "license": "ISC" }, - "node_modules/protobufjs": { - "version": "6.11.4", - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - } - }, "node_modules/proxy-from-env": { "version": "1.1.0", "license": "MIT" @@ -17418,7 +16699,7 @@ } }, "node_modules/pure-rand": { - "version": "6.0.4", + "version": "6.1.0", "dev": true, "funding": [ { @@ -17496,11 +16777,126 @@ "node": ">=0.10.0" } }, + "node_modules/rdf-canonize": { + "version": "3.4.0", + "license": "BSD-3-Clause", + "dependencies": { + "setimmediate": "^1.0.5" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/react-is": { - "version": "18.2.0", + "version": "18.3.1", "dev": true, "license": "MIT" }, + "node_modules/read-package-up": { + "version": "11.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-package-up/node_modules/hosted-git-info": { + "version": "7.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/read-package-up/node_modules/lru-cache": { + "version": "10.2.2", + "dev": true, + "license": "ISC", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/read-package-up/node_modules/normalize-package-data": { + "version": "6.0.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/read-package-up/node_modules/parse-json": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "index-to-position": "^0.1.2", + "type-fest": "^4.7.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-package-up/node_modules/read-pkg": { + "version": "9.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.3", + "normalize-package-data": "^6.0.0", + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-package-up/node_modules/semver": { + "version": "7.6.2", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-package-up/node_modules/type-fest": { + "version": "4.20.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/read-pkg": { "version": "5.2.0", "dev": true, @@ -17633,6 +17029,11 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, "node_modules/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", "dev": true, @@ -17654,23 +17055,16 @@ "node": ">=8" } }, - "node_modules/redeyed": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "esprima": "~4.0.0" - } - }, "node_modules/reflect.getprototypeof": { - "version": "1.0.4", + "version": "1.0.6", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", "globalthis": "^1.0.3", "which-builtin-type": "^1.1.3" }, @@ -17710,12 +17104,13 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.1", + "version": "1.5.2", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -17827,6 +17222,7 @@ }, "node_modules/require-directory": { "version": "2.1.1", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -17901,7 +17297,6 @@ }, "node_modules/rimraf": { "version": "2.7.1", - "dev": true, "license": "ISC", "dependencies": { "glob": "^7.1.3" @@ -17912,7 +17307,6 @@ }, "node_modules/rimraf/node_modules/glob": { "version": "7.2.3", - "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -18161,24 +17555,10 @@ "node": ">=12" } }, - "node_modules/rollup-plugin-typescript2/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/rollup-plugin-typescript2/node_modules/semver": { - "version": "7.5.4", + "version": "7.6.2", "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -18186,11 +17566,6 @@ "node": ">=10" } }, - "node_modules/rollup-plugin-typescript2/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/rollup-pluginutils": { "version": "2.8.2", "dev": true, @@ -18242,11 +17617,9 @@ "array-push-at-sort-position": "3.0.0", "as-typed": "1.3.2", "broadcast-channel": "5.3.0", - "crypto-js": "4.1.1", "custom-idle-queue": "3.0.1", "dexie": "4.0.0-alpha.4", "event-reduce-js": "3.1.2", - "firebase": "9.23.0", "get-graphql-from-jsonschema": "8.1.0", "graphql": "15.8.0", "graphql-ws": "5.14.0", @@ -18298,23 +17671,18 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/rxdb/node_modules/array-push-at-sort-position": { + "version": "3.0.0", + "license": "Apache-2.0" + }, + "node_modules/rxdb/node_modules/js-base64": { + "version": "3.7.5", + "license": "BSD-3-Clause" + }, "node_modules/rxdb/node_modules/json-schema-traverse": { "version": "1.0.0", "license": "MIT" }, - "node_modules/rxdb/node_modules/socket.io-client": { - "version": "4.7.2", - "license": "MIT", - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.5.2", - "socket.io-parser": "~4.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/rxdb/node_modules/ws": { "version": "8.14.2", "license": "MIT", @@ -18342,12 +17710,12 @@ } }, "node_modules/safe-array-concat": { - "version": "1.0.1", + "version": "1.1.2", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -18358,11 +17726,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "dev": true, - "license": "MIT" - }, "node_modules/safe-buffer": { "version": "5.2.1", "funding": [ @@ -18382,14 +17745,17 @@ "license": "MIT" }, "node_modules/safe-regex-test": { - "version": "1.0.0", + "version": "1.0.3", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -18413,14 +17779,14 @@ } }, "node_modules/schema-utils/node_modules/ajv": { - "version": "8.12.0", + "version": "8.16.0", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -18444,33 +17810,34 @@ "license": "MIT" }, "node_modules/semantic-release": { - "version": "21.1.2", + "version": "24.0.0", "dev": true, "license": "MIT", "dependencies": { - "@semantic-release/commit-analyzer": "^10.0.0", + "@semantic-release/commit-analyzer": "^13.0.0-beta.1", "@semantic-release/error": "^4.0.0", - "@semantic-release/github": "^9.0.0", - "@semantic-release/npm": "^10.0.2", - "@semantic-release/release-notes-generator": "^11.0.0", + "@semantic-release/github": "^10.0.0", + "@semantic-release/npm": "^12.0.0", + "@semantic-release/release-notes-generator": "^14.0.0-beta.1", "aggregate-error": "^5.0.0", - "cosmiconfig": "^8.0.0", + "cosmiconfig": "^9.0.0", "debug": "^4.0.0", - "env-ci": "^9.0.0", - "execa": "^8.0.0", - "figures": "^5.0.0", - "find-versions": "^5.1.0", + "env-ci": "^11.0.0", + "execa": "^9.0.0", + "figures": "^6.0.0", + "find-versions": "^6.0.0", "get-stream": "^6.0.0", "git-log-parser": "^1.2.0", "hook-std": "^3.0.0", "hosted-git-info": "^7.0.0", + "import-from-esm": "^1.3.1", "lodash-es": "^4.17.21", - "marked": "^5.0.0", - "marked-terminal": "^5.1.1", + "marked": "^12.0.0", + "marked-terminal": "^7.0.0", "micromatch": "^4.0.2", "p-each-series": "^3.0.0", "p-reduce": "^3.0.0", - "read-pkg-up": "^10.0.0", + "read-package-up": "^11.0.0", "resolve-from": "^5.0.0", "semver": "^7.3.2", "semver-diff": "^4.0.0", @@ -18481,7 +17848,7 @@ "semantic-release": "bin/semantic-release.js" }, "engines": { - "node": ">=18" + "node": ">=20.8.1" } }, "node_modules/semantic-release-slack-bot": { @@ -18518,21 +17885,60 @@ "node": ">=8" } }, + "node_modules/semantic-release-slack-bot/node_modules/node-fetch": { + "version": "2.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/semantic-release-slack-bot/node_modules/tr46": { + "version": "0.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/semantic-release-slack-bot/node_modules/webidl-conversions": { + "version": "3.0.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/semantic-release-slack-bot/node_modules/whatwg-url": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/semantic-release/node_modules/@semantic-release/commit-analyzer": { - "version": "10.0.4", + "version": "13.0.0", "dev": true, "license": "MIT", "dependencies": { - "conventional-changelog-angular": "^6.0.0", - "conventional-commits-filter": "^3.0.0", - "conventional-commits-parser": "^5.0.0", + "conventional-changelog-angular": "^8.0.0", + "conventional-changelog-writer": "^8.0.0", + "conventional-commits-filter": "^5.0.0", + "conventional-commits-parser": "^6.0.0", "debug": "^4.0.0", - "import-from": "^4.0.0", + "import-from-esm": "^1.0.3", "lodash-es": "^4.17.21", "micromatch": "^4.0.2" }, "engines": { - "node": ">=18" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" @@ -18547,42 +17953,45 @@ } }, "node_modules/semantic-release/node_modules/@semantic-release/release-notes-generator": { - "version": "11.0.7", + "version": "14.0.0", "dev": true, "license": "MIT", "dependencies": { - "conventional-changelog-angular": "^6.0.0", - "conventional-changelog-writer": "^6.0.0", - "conventional-commits-filter": "^4.0.0", - "conventional-commits-parser": "^5.0.0", + "conventional-changelog-angular": "^8.0.0", + "conventional-changelog-writer": "^8.0.0", + "conventional-commits-filter": "^5.0.0", + "conventional-commits-parser": "^6.0.0", "debug": "^4.0.0", "get-stream": "^7.0.0", - "import-from": "^4.0.0", + "import-from-esm": "^1.0.3", "into-stream": "^7.0.0", "lodash-es": "^4.17.21", - "read-pkg-up": "^10.0.0" + "read-pkg-up": "^11.0.0" }, "engines": { - "node": ">=18" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" } }, - "node_modules/semantic-release/node_modules/@semantic-release/release-notes-generator/node_modules/conventional-commits-filter": { - "version": "4.0.0", + "node_modules/semantic-release/node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { + "version": "7.0.1", "dev": true, "license": "MIT", "engines": { "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { - "version": "7.0.1", + "node_modules/semantic-release/node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -18618,85 +18027,65 @@ } }, "node_modules/semantic-release/node_modules/conventional-changelog-angular": { - "version": "6.0.0", + "version": "8.0.0", "dev": true, "license": "ISC", "dependencies": { "compare-func": "^2.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/semantic-release/node_modules/conventional-changelog-writer": { - "version": "6.0.1", + "version": "8.0.0", "dev": true, "license": "MIT", "dependencies": { - "conventional-commits-filter": "^3.0.0", - "dateformat": "^3.0.3", + "@types/semver": "^7.5.5", + "conventional-commits-filter": "^5.0.0", "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "meow": "^8.1.2", - "semver": "^7.0.0", - "split": "^1.0.1" + "meow": "^13.0.0", + "semver": "^7.5.2" }, "bin": { - "conventional-changelog-writer": "cli.js" + "conventional-changelog-writer": "dist/cli/index.js" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/semantic-release/node_modules/conventional-commits-filter": { - "version": "3.0.0", + "version": "5.0.0", "dev": true, "license": "MIT", - "dependencies": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.1" - }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/semantic-release/node_modules/conventional-commits-parser": { - "version": "5.0.0", + "version": "6.0.0", "dev": true, "license": "MIT", "dependencies": { - "is-text-path": "^2.0.0", - "JSONStream": "^1.3.5", - "meow": "^12.0.1", - "split2": "^4.0.0" + "meow": "^13.0.0" }, "bin": { - "conventional-commits-parser": "cli.mjs" + "conventional-commits-parser": "dist/cli/index.js" }, "engines": { - "node": ">=16" - } - }, - "node_modules/semantic-release/node_modules/conventional-commits-parser/node_modules/meow": { - "version": "12.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16.10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, "node_modules/semantic-release/node_modules/cosmiconfig": { - "version": "8.3.6", + "version": "9.0.0", "dev": true, "license": "MIT", "dependencies": { + "env-paths": "^2.2.1", "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" + "parse-json": "^5.2.0" }, "engines": { "node": ">=14" @@ -18725,55 +18114,47 @@ } }, "node_modules/semantic-release/node_modules/execa": { - "version": "8.0.1", + "version": "9.2.0", "dev": true, "license": "MIT", "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^7.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^5.2.0", + "pretty-ms": "^9.0.0", "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" }, "engines": { - "node": ">=16.17" + "node": "^18.19.0 || >=20.5.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { - "version": "8.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/find-up": { - "version": "6.3.0", + "version": "9.0.1", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/semantic-release/node_modules/hosted-git-info": { - "version": "7.0.1", + "version": "7.0.2", "dev": true, "license": "ISC", "dependencies": { @@ -18784,11 +18165,11 @@ } }, "node_modules/semantic-release/node_modules/human-signals": { - "version": "5.0.0", + "version": "7.0.0", "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=16.17.0" + "node": ">=18.18.0" } }, "node_modules/semantic-release/node_modules/indent-string": { @@ -18817,79 +18198,49 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/is-stream": { - "version": "3.0.0", + "node_modules/semantic-release/node_modules/is-plain-obj": { + "version": "4.1.0", "dev": true, "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/is-text-path": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "text-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/semantic-release/node_modules/json-parse-even-better-errors": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/semantic-release/node_modules/lines-and-columns": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/semantic-release/node_modules/locate-path": { - "version": "7.2.0", + "node_modules/semantic-release/node_modules/is-stream": { + "version": "4.0.1", "dev": true, "license": "MIT", - "dependencies": { - "p-locate": "^6.0.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/semantic-release/node_modules/lru-cache": { - "version": "10.1.0", + "version": "10.2.2", "dev": true, "license": "ISC", "engines": { "node": "14 || >=16.14" } }, - "node_modules/semantic-release/node_modules/mimic-fn": { - "version": "4.0.0", + "node_modules/semantic-release/node_modules/meow": { + "version": "13.2.0", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/semantic-release/node_modules/normalize-package-data": { - "version": "6.0.0", + "version": "6.0.1", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -18903,7 +18254,7 @@ } }, "node_modules/semantic-release/node_modules/npm-run-path": { - "version": "5.2.0", + "version": "5.3.0", "dev": true, "license": "MIT", "dependencies": { @@ -18916,48 +18267,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/onetime": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/p-limit": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/p-locate": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/semantic-release/node_modules/p-reduce": { "version": "3.0.0", "dev": true, @@ -18969,14 +18278,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/path-exists": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, "node_modules/semantic-release/node_modules/path-key": { "version": "4.0.0", "dev": true, @@ -18989,62 +18290,50 @@ } }, "node_modules/semantic-release/node_modules/read-pkg": { - "version": "8.1.0", + "version": "9.0.1", "dev": true, "license": "MIT", "dependencies": { - "@types/normalize-package-data": "^2.4.1", + "@types/normalize-package-data": "^2.4.3", "normalize-package-data": "^6.0.0", - "parse-json": "^7.0.0", - "type-fest": "^4.2.0" + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/semantic-release/node_modules/read-pkg-up": { - "version": "10.1.0", + "version": "11.0.0", "dev": true, "license": "MIT", "dependencies": { - "find-up": "^6.3.0", - "read-pkg": "^8.1.0", - "type-fest": "^4.2.0" + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" }, "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/semantic-release/node_modules/read-pkg/node_modules/parse-json": { - "version": "7.1.1", + "version": "8.1.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.21.4", - "error-ex": "^1.3.2", - "json-parse-even-better-errors": "^3.0.0", - "lines-and-columns": "^2.0.3", - "type-fest": "^3.8.0" - }, - "engines": { - "node": ">=16" + "@babel/code-frame": "^7.22.13", + "index-to-position": "^0.1.2", + "type-fest": "^4.7.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/read-pkg/node_modules/parse-json/node_modules/type-fest": { - "version": "3.13.1", - "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=14.16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -19059,12 +18348,9 @@ } }, "node_modules/semantic-release/node_modules/semver": { - "version": "7.5.4", + "version": "7.6.2", "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -19072,17 +18358,6 @@ "node": ">=10" } }, - "node_modules/semantic-release/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/semantic-release/node_modules/signal-exit": { "version": "4.1.0", "dev": true, @@ -19094,38 +18369,19 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/semantic-release/node_modules/split2": { - "version": "4.2.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 10.x" - } - }, "node_modules/semantic-release/node_modules/strip-final-newline": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/text-extensions": { - "version": "2.4.0", + "version": "4.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/semantic-release/node_modules/type-fest": { - "version": "4.9.0", + "version": "4.20.0", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -19135,22 +18391,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/semantic-release/node_modules/yocto-queue": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/semver": { "version": "6.3.1", "dev": true, @@ -19173,24 +18413,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semver-diff/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/semver-diff/node_modules/semver": { - "version": "7.5.4", + "version": "7.6.2", "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -19198,11 +18424,6 @@ "node": ">=10" } }, - "node_modules/semver-diff/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/semver-regex": { "version": "4.0.5", "dev": true, @@ -19215,7 +18436,7 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.1", + "version": "6.0.2", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -19223,33 +18444,39 @@ } }, "node_modules/set-function-length": { - "version": "1.1.1", + "version": "1.2.2", "license": "MIT", "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/set-function-name": { - "version": "2.0.1", + "version": "2.0.2", "license": "MIT", "dependencies": { - "define-data-property": "^1.0.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" } }, + "node_modules/setimmediate": { + "version": "1.0.5", + "license": "MIT" + }, "node_modules/shebang-command": { "version": "2.0.0", - "dev": true, "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -19260,7 +18487,6 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -19278,13 +18504,17 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", + "version": "1.0.6", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -19408,6 +18638,17 @@ "dev": true, "license": "MIT" }, + "node_modules/skin-tone": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-emoji-modifier-base": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/skip-regex": { "version": "1.0.2", "dev": true, @@ -19439,10 +18680,23 @@ } }, "node_modules/smob": { - "version": "1.4.1", + "version": "1.5.0", "dev": true, "license": "MIT" }, + "node_modules/socket.io-client": { + "version": "4.7.2", + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/socket.io-parser": { "version": "4.2.4", "license": "MIT", @@ -19498,7 +18752,7 @@ } }, "node_modules/spdx-exceptions": { - "version": "2.3.0", + "version": "2.5.0", "dev": true, "license": "CC-BY-3.0" }, @@ -19512,7 +18766,7 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.16", + "version": "3.0.18", "dev": true, "license": "CC0-1.0" }, @@ -19631,6 +18885,7 @@ }, "node_modules/string-width": { "version": "4.2.3", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -19643,35 +18898,43 @@ }, "node_modules/string-width/node_modules/emoji-regex": { "version": "8.0.0", + "dev": true, "license": "MIT" }, "node_modules/string.prototype.matchall": { - "version": "4.0.10", + "version": "4.0.11", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "regexp.prototype.flags": "^1.5.0", - "set-function-name": "^2.0.0", - "side-channel": "^1.0.4" + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trim": { - "version": "1.2.8", + "version": "1.2.9", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -19681,26 +18944,29 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.7", + "version": "1.0.8", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.7", + "version": "1.0.8", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -19708,6 +18974,7 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -19754,6 +19021,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/super-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "function-timeout": "^1.0.1", + "time-span": "^5.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/supports-color": { "version": "5.5.0", "dev": true, @@ -19766,7 +19048,7 @@ } }, "node_modules/supports-hyperlinks": { - "version": "2.3.0", + "version": "3.0.0", "dev": true, "license": "MIT", "dependencies": { @@ -19774,7 +19056,7 @@ "supports-color": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.18" } }, "node_modules/supports-hyperlinks/node_modules/has-flag": { @@ -19864,7 +19146,7 @@ } }, "node_modules/terser": { - "version": "5.26.0", + "version": "5.31.1", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -20028,6 +19310,25 @@ "dev": true, "license": "MIT" }, + "node_modules/thenify": { + "version": "3.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/through": { "version": "2.3.8", "dev": true, @@ -20054,6 +19355,30 @@ "node": ">= 6" } }, + "node_modules/time-span": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "convert-hrtime": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/tmpl": { "version": "1.0.5", "dev": true, @@ -20069,9 +19394,7 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -20080,13 +19403,24 @@ } }, "node_modules/tr46": { - "version": "0.0.3", - "license": "MIT" + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } }, "node_modules/traverse": { - "version": "0.6.8", + "version": "0.6.9", "dev": true, "license": "MIT", + "dependencies": { + "gopd": "^1.0.1", + "typedarray.prototype.slice": "^1.0.3", + "which-typed-array": "^1.1.15" + }, "engines": { "node": ">= 0.4" }, @@ -20142,7 +19476,7 @@ } }, "node_modules/tslib": { - "version": "2.6.2", + "version": "2.6.3", "license": "0BSD" }, "node_modules/tsutils": { @@ -20199,27 +19533,28 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.0", + "version": "1.0.2", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", + "version": "1.0.1", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -20229,15 +19564,16 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", + "version": "1.0.2", "dev": true, "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -20247,20 +19583,45 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", + "version": "1.0.6", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray.prototype.slice": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-errors": "^1.3.0", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-offset": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typedoc": { - "version": "0.25.6", + "version": "0.25.13", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -20276,7 +19637,7 @@ "node": ">= 16" }, "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x" + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x" } }, "node_modules/typedoc-plugin-external-module-map": { @@ -20340,7 +19701,7 @@ } }, "node_modules/typedoc/node_modules/minimatch": { - "version": "9.0.3", + "version": "9.0.4", "dev": true, "license": "ISC", "dependencies": { @@ -20366,7 +19727,7 @@ } }, "node_modules/uglify-js": { - "version": "3.17.4", + "version": "3.18.0", "dev": true, "license": "BSD-2-Clause", "optional": true, @@ -20398,6 +19759,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici": { + "version": "5.28.4", + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, "node_modules/undici-types": { "version": "5.26.5", "license": "MIT" @@ -20410,6 +19781,14 @@ "node": ">=4" } }, + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/unicode-match-property-ecmascript": { "version": "2.0.0", "dev": true, @@ -20549,13 +19928,12 @@ } }, "node_modules/universal-user-agent": { - "version": "6.0.1", + "version": "7.0.2", "dev": true, "license": "ISC" }, "node_modules/universalify": { "version": "2.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">= 10.0.0" @@ -20569,7 +19947,7 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", + "version": "1.0.16", "dev": true, "funding": [ { @@ -20587,8 +19965,8 @@ ], "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -20661,7 +20039,7 @@ } }, "node_modules/validator": { - "version": "13.11.0", + "version": "13.12.0", "license": "MIT", "engines": { "node": ">= 0.10" @@ -20714,7 +20092,7 @@ } }, "node_modules/watchpack": { - "version": "2.4.0", + "version": "2.4.1", "dev": true, "license": "MIT", "peer": true, @@ -20726,39 +20104,49 @@ "node": ">=10.13.0" } }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, "node_modules/webidl-conversions": { - "version": "3.0.1", - "license": "BSD-2-Clause" + "version": "7.0.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } }, "node_modules/webpack": { - "version": "5.89.0", + "version": "5.92.0", "dev": true, "license": "MIT", "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", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.17.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", + "graceful-fs": "^4.2.11", "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", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { @@ -20804,36 +20192,19 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "license": "Apache-2.0", - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "license": "Apache-2.0", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/whatwg-url": { - "version": "5.0.0", + "version": "11.0.0", "license": "MIT", "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/which": { "version": "2.0.2", - "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -20885,34 +20256,32 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "dev": true, - "license": "MIT" - }, "node_modules/which-collection": { - "version": "1.0.1", + "version": "1.0.2", "dev": true, "license": "MIT", "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-typed-array": { - "version": "1.1.13", + "version": "1.1.15", "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -20921,6 +20290,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wordwrap": { "version": "1.0.0", "dev": true, @@ -20928,6 +20305,7 @@ }, "node_modules/wrap-ansi": { "version": "7.0.0", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -20943,6 +20321,7 @@ }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -20956,6 +20335,7 @@ }, "node_modules/wrap-ansi/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -20966,11 +20346,11 @@ }, "node_modules/wrap-ansi/node_modules/color-name": { "version": "1.1.4", + "dev": true, "license": "MIT" }, "node_modules/wrappy": { "version": "1.0.2", - "dev": true, "license": "ISC" }, "node_modules/write-file-atomic": { @@ -20986,14 +20366,15 @@ } }, "node_modules/ws": { - "version": "8.11.0", + "version": "8.17.0", "license": "MIT", + "peer": true, "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -21024,6 +20405,7 @@ }, "node_modules/y18n": { "version": "5.0.8", + "dev": true, "license": "ISC", "engines": { "node": ">=10" @@ -21044,6 +20426,7 @@ }, "node_modules/yargs": { "version": "17.7.2", + "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -21060,6 +20443,7 @@ }, "node_modules/yargs-parser": { "version": "20.2.9", + "dev": true, "license": "ISC", "engines": { "node": ">=10" @@ -21067,6 +20451,7 @@ }, "node_modules/yargs/node_modules/yargs-parser": { "version": "21.1.1", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -21083,6 +20468,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yoctocolors": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/z-schema": { "version": "6.0.1", "license": "MIT", diff --git a/package.json b/package.json index 7ab6452df..1e8dfc3b2 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,9 @@ "coverage": "npm run test -- --coverage", "lint": "npx eslint .", "docs": "npx typedoc --options typedoc.js", - "prepare": "npx husky" + "prepare": "npx husky", + "preinstall": "sh preinstall.sh", + "postinstall": "sh postinstall.sh" }, "author": "IOHK", "repository": { @@ -81,7 +83,9 @@ "@types/elliptic": "^6.4.16", "@types/google-protobuf": "^3.15.6", "@types/jest": "^29.5.5", + "@types/jsonld": "^1.5.14", "@types/node": "^18.14.2", + "@types/pako": "^2.0.3", "@types/sinon": "^10.0.13", "@types/sinon-chai": "^3.2.9", "@types/uuid": "^9.0.1", @@ -119,7 +123,7 @@ "rollup-plugin-polyfill-node": "^0.12.0", "rollup-plugin-strip-code": "^0.2.7", "rollup-plugin-typescript2": "^0.34.1", - "semantic-release": "^21.1.1", + "semantic-release": "^24.0.0", "semantic-release-slack-bot": "^4.0.2", "sinon": "^15.0.1", "sinon-chai": "^3.7.0", @@ -205,8 +209,12 @@ "hash.js": "1.1.7", "isows": "^1.0.3", "jose": "^4.15.5", + "jsonld": "^8.3.2", "jsonwebtoken": "^9.0.0", "multiformats": "^9.9.0", + "pako": "^2.1.0", + "patch-package": "^8.0.0", + "postinstall-postinstall": "^2.1.0", "rxdb": "^14.17.1", "text-encoding": "^0.7.0", "util": "^0.12.5", diff --git a/patches/rxdb+14.17.1.patch b/patches/rxdb+14.17.1.patch new file mode 100644 index 000000000..816966f06 --- /dev/null +++ b/patches/rxdb+14.17.1.patch @@ -0,0 +1,3065 @@ +diff --git a/node_modules/rxdb/dist/es/plugins/encryption-crypto-js/index.js b/node_modules/rxdb/dist/es/plugins/encryption-crypto-js/index.js +deleted file mode 100644 +index 212968e..0000000 +--- a/node_modules/rxdb/dist/es/plugins/encryption-crypto-js/index.js ++++ /dev/null +@@ -1,133 +0,0 @@ +-/** +- * this plugin adds the encryption-capabilities to rxdb +- * It's using crypto-js/aes for password-encryption +- * @link https://github.com/brix/crypto-js +- */ +-import AES from 'crypto-js/aes'; +-import * as cryptoEnc from 'crypto-js/enc-utf8'; +-import { wrapRxStorageInstance } from '../../plugin-helpers'; +-import { newRxError, newRxTypeError } from '../../rx-error'; +-import { hasEncryption } from '../../rx-storage-helper'; +-import { b64DecodeUnicode, b64EncodeUnicode, clone, ensureNotFalsy, flatClone, getProperty, setProperty } from '../../plugins/utils'; +-export var MINIMUM_PASSWORD_LENGTH = 8; +-export function encryptString(value, password) { +- var encrypted = AES.encrypt(value, password); +- return encrypted.toString(); +-} +-export function decryptString(cipherText, password) { +- /** +- * Trying to decrypt non-strings +- * will cause no errors and will be hard to debug. +- * So instead we do this check here. +- */ +- if (typeof cipherText !== 'string') { +- throw newRxError('SNH', { +- args: { +- cipherText +- } +- }); +- } +- var decrypted = AES.decrypt(cipherText, password); +- var ret = decrypted.toString(cryptoEnc); +- return ret; +-} +-export function wrappedKeyEncryptionCryptoJsStorage(args) { +- return Object.assign({}, args.storage, { +- async createStorageInstance(params) { +- if (typeof params.password !== 'undefined') { +- validatePassword(params.password); +- } +- if (!hasEncryption(params.schema)) { +- var retInstance = await args.storage.createStorageInstance(params); +- return retInstance; +- } +- if (!params.password) { +- throw newRxError('EN3', { +- database: params.databaseName, +- collection: params.collectionName, +- schema: params.schema +- }); +- } +- var password = params.password; +- var schemaWithoutEncrypted = clone(params.schema); +- delete schemaWithoutEncrypted.encrypted; +- if (schemaWithoutEncrypted.attachments) { +- schemaWithoutEncrypted.attachments.encrypted = false; +- } +- var instance = await args.storage.createStorageInstance(Object.assign({}, params, { +- schema: schemaWithoutEncrypted +- })); +- function modifyToStorage(docData) { +- docData = cloneWithoutAttachments(docData); +- ensureNotFalsy(params.schema.encrypted).forEach(path => { +- var value = getProperty(docData, path); +- if (typeof value === 'undefined') { +- return; +- } +- var stringValue = JSON.stringify(value); +- var encrypted = encryptString(stringValue, password); +- setProperty(docData, path, encrypted); +- }); +- +- // handle attachments +- if (params.schema.attachments && params.schema.attachments.encrypted) { +- var newAttachments = {}; +- Object.entries(docData._attachments).forEach(([id, attachment]) => { +- var useAttachment = flatClone(attachment); +- if (useAttachment.data) { +- var dataString = useAttachment.data; +- useAttachment.data = b64EncodeUnicode(encryptString(dataString, password)); +- } +- newAttachments[id] = useAttachment; +- }); +- docData._attachments = newAttachments; +- } +- return docData; +- } +- function modifyFromStorage(docData) { +- docData = cloneWithoutAttachments(docData); +- ensureNotFalsy(params.schema.encrypted).forEach(path => { +- var value = getProperty(docData, path); +- if (typeof value === 'undefined') { +- return; +- } +- var decrypted = decryptString(value, password); +- var decryptedParsed = JSON.parse(decrypted); +- setProperty(docData, path, decryptedParsed); +- }); +- return docData; +- } +- function modifyAttachmentFromStorage(attachmentData) { +- if (params.schema.attachments && params.schema.attachments.encrypted) { +- var decrypted = decryptString(b64DecodeUnicode(attachmentData), password); +- return decrypted; +- } else { +- return attachmentData; +- } +- } +- return wrapRxStorageInstance(instance, modifyToStorage, modifyFromStorage, modifyAttachmentFromStorage); +- } +- }); +-} +-function cloneWithoutAttachments(data) { +- var attachments = data._attachments; +- data = flatClone(data); +- delete data._attachments; +- data = clone(data); +- data._attachments = attachments; +- return data; +-} +-function validatePassword(password) { +- if (typeof password !== 'string') { +- throw newRxTypeError('EN1', { +- password +- }); +- } +- if (password.length < MINIMUM_PASSWORD_LENGTH) { +- throw newRxError('EN2', { +- minPassLength: MINIMUM_PASSWORD_LENGTH, +- password +- }); +- } +-} +-//# sourceMappingURL=index.js.map +\ No newline at end of file +diff --git a/node_modules/rxdb/dist/es/plugins/encryption-crypto-js/index.js.map b/node_modules/rxdb/dist/es/plugins/encryption-crypto-js/index.js.map +deleted file mode 100644 +index cb51958..0000000 +--- a/node_modules/rxdb/dist/es/plugins/encryption-crypto-js/index.js.map ++++ /dev/null +@@ -1 +0,0 @@ +-{"version":3,"file":"index.js","names":["AES","cryptoEnc","wrapRxStorageInstance","newRxError","newRxTypeError","hasEncryption","b64DecodeUnicode","b64EncodeUnicode","clone","ensureNotFalsy","flatClone","getProperty","setProperty","MINIMUM_PASSWORD_LENGTH","encryptString","value","password","encrypted","encrypt","toString","decryptString","cipherText","args","decrypted","decrypt","ret","wrappedKeyEncryptionCryptoJsStorage","Object","assign","storage","createStorageInstance","params","validatePassword","schema","retInstance","database","databaseName","collection","collectionName","schemaWithoutEncrypted","attachments","instance","modifyToStorage","docData","cloneWithoutAttachments","forEach","path","stringValue","JSON","stringify","newAttachments","entries","_attachments","id","attachment","useAttachment","data","dataString","modifyFromStorage","decryptedParsed","parse","modifyAttachmentFromStorage","attachmentData","length","minPassLength"],"sources":["../../../../src/plugins/encryption-crypto-js/index.ts"],"sourcesContent":["/**\n * this plugin adds the encryption-capabilities to rxdb\n * It's using crypto-js/aes for password-encryption\n * @link https://github.com/brix/crypto-js\n */\nimport AES from 'crypto-js/aes';\nimport * as cryptoEnc from 'crypto-js/enc-utf8';\nimport { wrapRxStorageInstance } from '../../plugin-helpers';\nimport { newRxError, newRxTypeError } from '../../rx-error';\nimport { hasEncryption } from '../../rx-storage-helper';\nimport type {\n InternalStoreDocType,\n RxAttachmentWriteData,\n RxDocumentData,\n RxDocumentWriteData,\n RxJsonSchema,\n RxStorage,\n RxStorageInstanceCreationParams\n} from '../../types';\nimport {\n b64DecodeUnicode,\n b64EncodeUnicode,\n clone,\n ensureNotFalsy,\n flatClone,\n getProperty,\n setProperty\n} from '../../plugins/utils';\n\nexport const MINIMUM_PASSWORD_LENGTH: 8 = 8;\n\n\nexport function encryptString(value: string, password: string): string {\n const encrypted = AES.encrypt(value, password);\n return encrypted.toString();\n}\n\nexport function decryptString(cipherText: string, password: any): string {\n /**\n * Trying to decrypt non-strings\n * will cause no errors and will be hard to debug.\n * So instead we do this check here.\n */\n if (typeof cipherText !== 'string') {\n throw newRxError('SNH', {\n args: {\n cipherText\n }\n });\n }\n\n const decrypted = AES.decrypt(cipherText, password);\n const ret = decrypted.toString(cryptoEnc);\n return ret;\n}\n\nexport type InternalStorePasswordDocType = InternalStoreDocType<{\n hash: string;\n}>;\n\nexport function wrappedKeyEncryptionCryptoJsStorage(\n args: {\n storage: RxStorage;\n }\n): RxStorage {\n return Object.assign(\n {},\n args.storage,\n {\n async createStorageInstance(\n params: RxStorageInstanceCreationParams\n ) {\n if (typeof params.password !== 'undefined') {\n validatePassword(params.password as any);\n }\n\n if (!hasEncryption(params.schema)) {\n const retInstance = await args.storage.createStorageInstance(params);\n return retInstance;\n }\n\n if (!params.password) {\n throw newRxError('EN3', {\n database: params.databaseName,\n collection: params.collectionName,\n schema: params.schema\n });\n }\n const password = params.password;\n\n const schemaWithoutEncrypted: RxJsonSchema> = clone(params.schema);\n delete schemaWithoutEncrypted.encrypted;\n if (schemaWithoutEncrypted.attachments) {\n schemaWithoutEncrypted.attachments.encrypted = false;\n }\n\n const instance = await args.storage.createStorageInstance(\n Object.assign(\n {},\n params,\n {\n schema: schemaWithoutEncrypted\n }\n )\n );\n\n function modifyToStorage(docData: RxDocumentWriteData) {\n docData = cloneWithoutAttachments(docData);\n ensureNotFalsy(params.schema.encrypted)\n .forEach(path => {\n const value = getProperty(docData, path);\n if (typeof value === 'undefined') {\n return;\n }\n\n const stringValue = JSON.stringify(value);\n const encrypted = encryptString(stringValue, password);\n setProperty(docData, path, encrypted);\n });\n\n // handle attachments\n if (\n params.schema.attachments &&\n params.schema.attachments.encrypted\n ) {\n const newAttachments: typeof docData._attachments = {};\n Object.entries(docData._attachments).forEach(([id, attachment]) => {\n const useAttachment: RxAttachmentWriteData = flatClone(attachment) as any;\n if (useAttachment.data) {\n const dataString = useAttachment.data;\n useAttachment.data = b64EncodeUnicode(encryptString(dataString, password));\n }\n newAttachments[id] = useAttachment;\n });\n docData._attachments = newAttachments;\n }\n return docData;\n }\n function modifyFromStorage(docData: RxDocumentData): Promise> {\n docData = cloneWithoutAttachments(docData);\n ensureNotFalsy(params.schema.encrypted)\n .forEach(path => {\n const value = getProperty(docData, path);\n if (typeof value === 'undefined') {\n return;\n }\n const decrypted = decryptString(value, password);\n const decryptedParsed = JSON.parse(decrypted);\n setProperty(docData, path, decryptedParsed);\n });\n return docData;\n }\n\n function modifyAttachmentFromStorage(attachmentData: string): string {\n if (\n params.schema.attachments &&\n params.schema.attachments.encrypted\n ) {\n const decrypted = decryptString(b64DecodeUnicode(attachmentData), password);\n return decrypted;\n } else {\n return attachmentData;\n }\n }\n\n return wrapRxStorageInstance(\n instance,\n modifyToStorage,\n modifyFromStorage,\n modifyAttachmentFromStorage\n );\n }\n }\n );\n}\n\n\n\n\n\nfunction cloneWithoutAttachments(data: RxDocumentWriteData): RxDocumentData {\n const attachments = data._attachments;\n data = flatClone(data);\n delete (data as any)._attachments;\n data = clone(data);\n data._attachments = attachments;\n return data as any;\n}\n\nfunction validatePassword(password: string) {\n if (typeof password !== 'string') {\n throw newRxTypeError('EN1', {\n password\n });\n }\n if (password.length < MINIMUM_PASSWORD_LENGTH) {\n throw newRxError('EN2', {\n minPassLength: MINIMUM_PASSWORD_LENGTH,\n password\n });\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA,OAAOA,GAAG,MAAM,eAAe;AAC/B,OAAO,KAAKC,SAAS,MAAM,oBAAoB;AAC/C,SAASC,qBAAqB,QAAQ,sBAAsB;AAC5D,SAASC,UAAU,EAAEC,cAAc,QAAQ,gBAAgB;AAC3D,SAASC,aAAa,QAAQ,yBAAyB;AAUvD,SACIC,gBAAgB,EAChBC,gBAAgB,EAChBC,KAAK,EACLC,cAAc,EACdC,SAAS,EACTC,WAAW,EACXC,WAAW,QACR,qBAAqB;AAE5B,OAAO,IAAMC,uBAA0B,GAAG,CAAC;AAG3C,OAAO,SAASC,aAAaA,CAACC,KAAa,EAAEC,QAAgB,EAAU;EACnE,IAAMC,SAAS,GAAGjB,GAAG,CAACkB,OAAO,CAACH,KAAK,EAAEC,QAAQ,CAAC;EAC9C,OAAOC,SAAS,CAACE,QAAQ,CAAC,CAAC;AAC/B;AAEA,OAAO,SAASC,aAAaA,CAACC,UAAkB,EAAEL,QAAa,EAAU;EACrE;AACJ;AACA;AACA;AACA;EACI,IAAI,OAAOK,UAAU,KAAK,QAAQ,EAAE;IAChC,MAAMlB,UAAU,CAAC,KAAK,EAAE;MACpBmB,IAAI,EAAE;QACFD;MACJ;IACJ,CAAC,CAAC;EACN;EAEA,IAAME,SAAS,GAAGvB,GAAG,CAACwB,OAAO,CAACH,UAAU,EAAEL,QAAQ,CAAC;EACnD,IAAMS,GAAG,GAAGF,SAAS,CAACJ,QAAQ,CAAClB,SAAS,CAAC;EACzC,OAAOwB,GAAG;AACd;AAMA,OAAO,SAASC,mCAAmCA,CAC/CJ,IAEC,EAC4C;EAC7C,OAAOK,MAAM,CAACC,MAAM,CAChB,CAAC,CAAC,EACFN,IAAI,CAACO,OAAO,EACZ;IACI,MAAMC,qBAAqBA,CACvBC,MAAuD,EACzD;MACE,IAAI,OAAOA,MAAM,CAACf,QAAQ,KAAK,WAAW,EAAE;QACxCgB,gBAAgB,CAACD,MAAM,CAACf,QAAe,CAAC;MAC5C;MAEA,IAAI,CAACX,aAAa,CAAC0B,MAAM,CAACE,MAAM,CAAC,EAAE;QAC/B,IAAMC,WAAW,GAAG,MAAMZ,IAAI,CAACO,OAAO,CAACC,qBAAqB,CAACC,MAAM,CAAC;QACpE,OAAOG,WAAW;MACtB;MAEA,IAAI,CAACH,MAAM,CAACf,QAAQ,EAAE;QAClB,MAAMb,UAAU,CAAC,KAAK,EAAE;UACpBgC,QAAQ,EAAEJ,MAAM,CAACK,YAAY;UAC7BC,UAAU,EAAEN,MAAM,CAACO,cAAc;UACjCL,MAAM,EAAEF,MAAM,CAACE;QACnB,CAAC,CAAC;MACN;MACA,IAAMjB,QAAQ,GAAGe,MAAM,CAACf,QAAQ;MAEhC,IAAMuB,sBAA+D,GAAG/B,KAAK,CAACuB,MAAM,CAACE,MAAM,CAAC;MAC5F,OAAOM,sBAAsB,CAACtB,SAAS;MACvC,IAAIsB,sBAAsB,CAACC,WAAW,EAAE;QACpCD,sBAAsB,CAACC,WAAW,CAACvB,SAAS,GAAG,KAAK;MACxD;MAEA,IAAMwB,QAAQ,GAAG,MAAMnB,IAAI,CAACO,OAAO,CAACC,qBAAqB,CACrDH,MAAM,CAACC,MAAM,CACT,CAAC,CAAC,EACFG,MAAM,EACN;QACIE,MAAM,EAAEM;MACZ,CACJ,CACJ,CAAC;MAED,SAASG,eAAeA,CAACC,OAAuC,EAAE;QAC9DA,OAAO,GAAGC,uBAAuB,CAACD,OAAO,CAAC;QAC1ClC,cAAc,CAACsB,MAAM,CAACE,MAAM,CAAChB,SAAS,CAAC,CAClC4B,OAAO,CAACC,IAAI,IAAI;UACb,IAAM/B,KAAK,GAAGJ,WAAW,CAACgC,OAAO,EAAEG,IAAI,CAAC;UACxC,IAAI,OAAO/B,KAAK,KAAK,WAAW,EAAE;YAC9B;UACJ;UAEA,IAAMgC,WAAW,GAAGC,IAAI,CAACC,SAAS,CAAClC,KAAK,CAAC;UACzC,IAAME,SAAS,GAAGH,aAAa,CAACiC,WAAW,EAAE/B,QAAQ,CAAC;UACtDJ,WAAW,CAAC+B,OAAO,EAAEG,IAAI,EAAE7B,SAAS,CAAC;QACzC,CAAC,CAAC;;QAEN;QACA,IACIc,MAAM,CAACE,MAAM,CAACO,WAAW,IACzBT,MAAM,CAACE,MAAM,CAACO,WAAW,CAACvB,SAAS,EACrC;UACE,IAAMiC,cAA2C,GAAG,CAAC,CAAC;UACtDvB,MAAM,CAACwB,OAAO,CAACR,OAAO,CAACS,YAAY,CAAC,CAACP,OAAO,CAAC,CAAC,CAACQ,EAAE,EAAEC,UAAU,CAAC,KAAK;YAC/D,IAAMC,aAAoC,GAAG7C,SAAS,CAAC4C,UAAU,CAAQ;YACzE,IAAIC,aAAa,CAACC,IAAI,EAAE;cACpB,IAAMC,UAAU,GAAGF,aAAa,CAACC,IAAI;cACrCD,aAAa,CAACC,IAAI,GAAGjD,gBAAgB,CAACO,aAAa,CAAC2C,UAAU,EAAEzC,QAAQ,CAAC,CAAC;YAC9E;YACAkC,cAAc,CAACG,EAAE,CAAC,GAAGE,aAAa;UACtC,CAAC,CAAC;UACFZ,OAAO,CAACS,YAAY,GAAGF,cAAc;QACzC;QACA,OAAOP,OAAO;MAClB;MACA,SAASe,iBAAiBA,CAACf,OAA4B,EAAsC;QACzFA,OAAO,GAAGC,uBAAuB,CAACD,OAAO,CAAC;QAC1ClC,cAAc,CAACsB,MAAM,CAACE,MAAM,CAAChB,SAAS,CAAC,CAClC4B,OAAO,CAACC,IAAI,IAAI;UACb,IAAM/B,KAAK,GAAGJ,WAAW,CAACgC,OAAO,EAAEG,IAAI,CAAC;UACxC,IAAI,OAAO/B,KAAK,KAAK,WAAW,EAAE;YAC9B;UACJ;UACA,IAAMQ,SAAS,GAAGH,aAAa,CAACL,KAAK,EAAEC,QAAQ,CAAC;UAChD,IAAM2C,eAAe,GAAGX,IAAI,CAACY,KAAK,CAACrC,SAAS,CAAC;UAC7CX,WAAW,CAAC+B,OAAO,EAAEG,IAAI,EAAEa,eAAe,CAAC;QAC/C,CAAC,CAAC;QACN,OAAOhB,OAAO;MAClB;MAEA,SAASkB,2BAA2BA,CAACC,cAAsB,EAAU;QACjE,IACI/B,MAAM,CAACE,MAAM,CAACO,WAAW,IACzBT,MAAM,CAACE,MAAM,CAACO,WAAW,CAACvB,SAAS,EACrC;UACE,IAAMM,SAAS,GAAGH,aAAa,CAACd,gBAAgB,CAACwD,cAAc,CAAC,EAAE9C,QAAQ,CAAC;UAC3E,OAAOO,SAAS;QACpB,CAAC,MAAM;UACH,OAAOuC,cAAc;QACzB;MACJ;MAEA,OAAO5D,qBAAqB,CACxBuC,QAAQ,EACRC,eAAe,EACfgB,iBAAiB,EACjBG,2BACJ,CAAC;IACL;EACJ,CACJ,CAAC;AACL;AAMA,SAASjB,uBAAuBA,CAAIY,IAA4B,EAAqB;EACjF,IAAMhB,WAAW,GAAGgB,IAAI,CAACJ,YAAY;EACrCI,IAAI,GAAG9C,SAAS,CAAC8C,IAAI,CAAC;EACtB,OAAQA,IAAI,CAASJ,YAAY;EACjCI,IAAI,GAAGhD,KAAK,CAACgD,IAAI,CAAC;EAClBA,IAAI,CAACJ,YAAY,GAAGZ,WAAW;EAC/B,OAAOgB,IAAI;AACf;AAEA,SAASxB,gBAAgBA,CAAChB,QAAgB,EAAE;EACxC,IAAI,OAAOA,QAAQ,KAAK,QAAQ,EAAE;IAC9B,MAAMZ,cAAc,CAAC,KAAK,EAAE;MACxBY;IACJ,CAAC,CAAC;EACN;EACA,IAAIA,QAAQ,CAAC+C,MAAM,GAAGlD,uBAAuB,EAAE;IAC3C,MAAMV,UAAU,CAAC,KAAK,EAAE;MACpB6D,aAAa,EAAEnD,uBAAuB;MACtCG;IACJ,CAAC,CAAC;EACN;AACJ"} +\ No newline at end of file +diff --git a/node_modules/rxdb/dist/es/plugins/replication-firestore/firestore-helper.js b/node_modules/rxdb/dist/es/plugins/replication-firestore/firestore-helper.js +deleted file mode 100644 +index dd07143..0000000 +--- a/node_modules/rxdb/dist/es/plugins/replication-firestore/firestore-helper.js ++++ /dev/null +@@ -1,47 +0,0 @@ +-import { Timestamp } from 'firebase/firestore'; +-import { flatClone, now } from '../../plugins/utils'; +-export var FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX = 'firestore'; +-export function getFirestoreSortFieldValue(docData, primaryKey) { +- var timeString = now() + ''; +- return 'rxdb-' + timeString.padStart(15, '0') + '-' + docData[primaryKey]; +-} +-export function stripServerTimestampField(serverTimestampField, docData) { +- var data = flatClone(docData); +- delete data[serverTimestampField]; +- return data; +-} +-export function serverTimestampToIsoString(serverTimestampField, docData) { +- var timestamp = docData[serverTimestampField]; +- var date = timestamp.toDate(); +- return date.toISOString(); +-} +-export function isoStringToServerTimestamp(isoString) { +- var date = new Date(isoString); +- return Timestamp.fromDate(date); +-} +-export function firestoreRowToDocData(serverTimestampField, primaryPath, row) { +- var docData = stripServerTimestampField(serverTimestampField, row.data()); +- docData[primaryPath] = row.id; +- return docData; +-} +-export function stripPrimaryKey(primaryPath, docData) { +- docData = flatClone(docData); +- delete docData[primaryPath]; +- return docData; +-} +- +-// https://stackoverflow.com/questions/61354866/is-there-a-workaround-for-the-firebase-query-in-limit-to-10 +-export function getContentByIds(ids, getQuery) { +- var batches = []; +- while (ids.length) { +- // firestore limits batches to 10 +- var batch = ids.splice(0, 10); +- +- // add the batch request to to a queue +- batches.push(getQuery(batch)); +- } +- +- // after all of the data is fetched, return it +- return Promise.all(batches).then(content => content.map(i => i.docs).flat()); +-} +-//# sourceMappingURL=firestore-helper.js.map +\ No newline at end of file +diff --git a/node_modules/rxdb/dist/es/plugins/replication-firestore/firestore-helper.js.map b/node_modules/rxdb/dist/es/plugins/replication-firestore/firestore-helper.js.map +deleted file mode 100644 +index 8a9f61b..0000000 +--- a/node_modules/rxdb/dist/es/plugins/replication-firestore/firestore-helper.js.map ++++ /dev/null +@@ -1 +0,0 @@ +-{"version":3,"file":"firestore-helper.js","names":["Timestamp","flatClone","now","FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX","getFirestoreSortFieldValue","docData","primaryKey","timeString","padStart","stripServerTimestampField","serverTimestampField","data","serverTimestampToIsoString","timestamp","date","toDate","toISOString","isoStringToServerTimestamp","isoString","Date","fromDate","firestoreRowToDocData","primaryPath","row","id","stripPrimaryKey","getContentByIds","ids","getQuery","batches","length","batch","splice","push","Promise","all","then","content","map","i","docs","flat"],"sources":["../../../../src/plugins/replication-firestore/firestore-helper.ts"],"sourcesContent":["import {\n QueryDocumentSnapshot,\n Timestamp\n} from 'firebase/firestore';\nimport type {\n WithDeleted\n} from '../../types';\nimport { flatClone, now } from '../../plugins/utils';\nimport type { GetQuery } from './firestore-types';\n\nexport const FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX = 'firestore';\n\n\nexport function getFirestoreSortFieldValue(docData: any, primaryKey: string): string {\n const timeString = now() + '';\n return 'rxdb-' + timeString.padStart(15, '0') + '-' + docData[primaryKey];\n}\n\nexport function stripServerTimestampField(\n serverTimestampField: string,\n docData: RxDocType\n): WithDeleted {\n const data = flatClone(docData);\n delete (data as any)[serverTimestampField];\n return data as any;\n}\n\n\nexport function serverTimestampToIsoString(serverTimestampField: string, docData: any): string {\n const timestamp = (docData as any)[serverTimestampField];\n const date: Date = timestamp.toDate();\n return date.toISOString();\n}\n\nexport function isoStringToServerTimestamp(isoString: string): Timestamp {\n const date = new Date(isoString);\n return Timestamp.fromDate(date);\n}\n\nexport function firestoreRowToDocData(\n serverTimestampField: string,\n primaryPath: string,\n row: QueryDocumentSnapshot\n): WithDeleted {\n const docData = stripServerTimestampField(\n serverTimestampField,\n row.data()\n );\n (docData as any)[primaryPath] = row.id;\n return docData;\n}\n\nexport function stripPrimaryKey(\n primaryPath: string,\n docData: any\n): any {\n docData = flatClone(docData);\n delete (docData as any)[primaryPath];\n return docData;\n}\n\n// https://stackoverflow.com/questions/61354866/is-there-a-workaround-for-the-firebase-query-in-limit-to-10\nexport function getContentByIds(ids: string[], getQuery: GetQuery): Promise[]> {\n const batches = [];\n\n while (ids.length) {\n // firestore limits batches to 10\n const batch = ids.splice(0, 10);\n\n // add the batch request to to a queue\n batches.push(getQuery(batch));\n }\n\n // after all of the data is fetched, return it\n return Promise.all(batches).then((content) => content.map(i => i.docs).flat());\n}\n"],"mappings":"AAAA,SAEIA,SAAS,QACN,oBAAoB;AAI3B,SAASC,SAAS,EAAEC,GAAG,QAAQ,qBAAqB;AAGpD,OAAO,IAAMC,4CAA4C,GAAG,WAAW;AAGvE,OAAO,SAASC,0BAA0BA,CAACC,OAAY,EAAEC,UAAkB,EAAU;EACjF,IAAMC,UAAU,GAAGL,GAAG,CAAC,CAAC,GAAG,EAAE;EAC7B,OAAO,OAAO,GAAGK,UAAU,CAACC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,GAAG,GAAGH,OAAO,CAACC,UAAU,CAAC;AAC7E;AAEA,OAAO,SAASG,yBAAyBA,CACrCC,oBAA4B,EAC5BL,OAAkB,EACI;EACtB,IAAMM,IAAI,GAAGV,SAAS,CAACI,OAAO,CAAC;EAC/B,OAAQM,IAAI,CAASD,oBAAoB,CAAC;EAC1C,OAAOC,IAAI;AACf;AAGA,OAAO,SAASC,0BAA0BA,CAACF,oBAA4B,EAAEL,OAAY,EAAU;EAC3F,IAAMQ,SAAS,GAAIR,OAAO,CAASK,oBAAoB,CAAC;EACxD,IAAMI,IAAU,GAAGD,SAAS,CAACE,MAAM,CAAC,CAAC;EACrC,OAAOD,IAAI,CAACE,WAAW,CAAC,CAAC;AAC7B;AAEA,OAAO,SAASC,0BAA0BA,CAACC,SAAiB,EAAa;EACrE,IAAMJ,IAAI,GAAG,IAAIK,IAAI,CAACD,SAAS,CAAC;EAChC,OAAOlB,SAAS,CAACoB,QAAQ,CAACN,IAAI,CAAC;AACnC;AAEA,OAAO,SAASO,qBAAqBA,CACjCX,oBAA4B,EAC5BY,WAAmB,EACnBC,GAAqC,EACf;EACtB,IAAMlB,OAAO,GAAGI,yBAAyB,CACrCC,oBAAoB,EACpBa,GAAG,CAACZ,IAAI,CAAC,CACb,CAAC;EACAN,OAAO,CAASiB,WAAW,CAAC,GAAGC,GAAG,CAACC,EAAE;EACtC,OAAOnB,OAAO;AAClB;AAEA,OAAO,SAASoB,eAAeA,CAC3BH,WAAmB,EACnBjB,OAAY,EACT;EACHA,OAAO,GAAGJ,SAAS,CAACI,OAAO,CAAC;EAC5B,OAAQA,OAAO,CAASiB,WAAW,CAAC;EACpC,OAAOjB,OAAO;AAClB;;AAEA;AACA,OAAO,SAASqB,eAAeA,CAAYC,GAAa,EAAEC,QAA6B,EAA+C;EAClI,IAAMC,OAAO,GAAG,EAAE;EAElB,OAAOF,GAAG,CAACG,MAAM,EAAE;IACf;IACA,IAAMC,KAAK,GAAGJ,GAAG,CAACK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;;IAE/B;IACAH,OAAO,CAACI,IAAI,CAACL,QAAQ,CAACG,KAAK,CAAC,CAAC;EACjC;;EAEA;EACA,OAAOG,OAAO,CAACC,GAAG,CAACN,OAAO,CAAC,CAACO,IAAI,CAAEC,OAAO,IAAKA,OAAO,CAACC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,IAAI,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;AAClF"} +\ No newline at end of file +diff --git a/node_modules/rxdb/dist/es/plugins/replication-firestore/firestore-types.js b/node_modules/rxdb/dist/es/plugins/replication-firestore/firestore-types.js +deleted file mode 100644 +index 84d820d..0000000 +--- a/node_modules/rxdb/dist/es/plugins/replication-firestore/firestore-types.js ++++ /dev/null +@@ -1,3 +0,0 @@ +-export {}; +-export {}; +-//# sourceMappingURL=firestore-types.js.map +\ No newline at end of file +diff --git a/node_modules/rxdb/dist/es/plugins/replication-firestore/firestore-types.js.map b/node_modules/rxdb/dist/es/plugins/replication-firestore/firestore-types.js.map +deleted file mode 100644 +index 1bd05e8..0000000 +--- a/node_modules/rxdb/dist/es/plugins/replication-firestore/firestore-types.js.map ++++ /dev/null +@@ -1 +0,0 @@ +-{"version":3,"file":"firestore-types.js","names":[],"sources":["../../../../src/plugins/replication-firestore/firestore-types.ts"],"sourcesContent":["import type {\n MaybePromise,\n ReplicationOptions,\n ReplicationPullOptions,\n ReplicationPushOptions,\n WithDeleted\n} from '../../types';\n\nimport type {\n CollectionReference,\n Firestore,\n QueryFieldFilterConstraint,\n QuerySnapshot\n} from 'firebase/firestore';\n\nexport type FirestoreCheckpointType = {\n id: string;\n /**\n * Firestore internally sets the time to an object like\n * {\n * \"seconds\": 1669807105,\n * \"nanoseconds\": 476000000\n * }\n * But to be able to query that, we have to use a date string\n * like '2022-11-30T11:18:25.141Z'\n * so we store that string instead.\n */\n serverTimestamp: string;\n};\nexport type FirestoreCollection = CollectionReference;\n\nexport type FirestoreOptions = {\n projectId: string;\n collection: FirestoreCollection;\n database: Firestore;\n};\n\nexport type FirestoreSyncPullOptions =\n Omit, 'handler' | 'stream$'>\n & {\n filter?: QueryFieldFilterConstraint | QueryFieldFilterConstraint[];\n };\n\nexport type FirestoreSyncPushOptions = Omit, 'handler'>\n & {\n filter?(item: WithDeleted): MaybePromise;\n };\n\nexport type SyncOptionsFirestore = Omit<\n ReplicationOptions,\n 'pull' | 'push' | 'replicationIdentifier'\n> & {\n firestore: FirestoreOptions;\n /**\n * In firestore it is not possible to read out\n * the internally used write timestamp.\n * Even if we could read it out, it is not indexed which\n * is required for fetch 'changes-since-x'.\n * So instead we have to rely on a custom user defined field\n * that contains the server time which is set by firestore via serverTimestamp()\n * IMPORTANT: The serverTimestampField MUST NOT be part of the collections RxJsonSchema!\n * [default='serverTimestamp']\n * @link https://groups.google.com/g/firebase-talk/c/tAmPzPei-mE\n */\n serverTimestampField?: string;\n pull?: FirestoreSyncPullOptions;\n push?: FirestoreSyncPushOptions;\n};\n\nexport type GetQuery = (ids: string[]) => Promise>;\n"],"mappings":""} +\ No newline at end of file +diff --git a/node_modules/rxdb/dist/es/plugins/replication-firestore/index.js b/node_modules/rxdb/dist/es/plugins/replication-firestore/index.js +deleted file mode 100644 +index 3b20cff..0000000 +--- a/node_modules/rxdb/dist/es/plugins/replication-firestore/index.js ++++ /dev/null +@@ -1,228 +0,0 @@ +-import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; +-import { appendToArray, asyncFilter, ensureNotFalsy, errorToPlainJson, flatClone, lastOfArray, toArray } from '../../plugins/utils'; +-import { doc, query, where, orderBy, limit, getDocs, onSnapshot, runTransaction, writeBatch, serverTimestamp, waitForPendingWrites, documentId } from 'firebase/firestore'; +-import { RxDBLeaderElectionPlugin } from '../leader-election'; +-import { RxReplicationState, startReplicationOnLeaderShip } from '../replication'; +-import { addRxPlugin, getSchemaByObjectPath, newRxError } from '../../'; +-import { Subject } from 'rxjs'; +-import { firestoreRowToDocData, FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX, getContentByIds, isoStringToServerTimestamp, serverTimestampToIsoString, stripPrimaryKey, stripServerTimestampField } from './firestore-helper'; +-export * from './firestore-helper'; +-export * from './firestore-types'; +-export var RxFirestoreReplicationState = /*#__PURE__*/function (_RxReplicationState) { +- _inheritsLoose(RxFirestoreReplicationState, _RxReplicationState); +- function RxFirestoreReplicationState(firestore, replicationIdentifierHash, collection, pull, push, live = true, retryTime = 1000 * 5, autoStart = true) { +- var _this; +- _this = _RxReplicationState.call(this, replicationIdentifierHash, collection, '_deleted', pull, push, live, retryTime, autoStart) || this; +- _this.firestore = firestore; +- _this.replicationIdentifierHash = replicationIdentifierHash; +- _this.collection = collection; +- _this.pull = pull; +- _this.push = push; +- _this.live = live; +- _this.retryTime = retryTime; +- _this.autoStart = autoStart; +- return _this; +- } +- return RxFirestoreReplicationState; +-}(RxReplicationState); +-export function replicateFirestore(options) { +- var collection = options.collection; +- addRxPlugin(RxDBLeaderElectionPlugin); +- var pullStream$ = new Subject(); +- var replicationPrimitivesPull; +- options.live = typeof options.live === 'undefined' ? true : options.live; +- options.waitForLeadership = typeof options.waitForLeadership === 'undefined' ? true : options.waitForLeadership; +- var serverTimestampField = typeof options.serverTimestampField === 'undefined' ? 'serverTimestamp' : options.serverTimestampField; +- options.serverTimestampField = serverTimestampField; +- var primaryPath = collection.schema.primaryPath; +- +- /** +- * The serverTimestampField MUST NOT be part of the collections RxJsonSchema. +- */ +- var schemaPart = getSchemaByObjectPath(collection.schema.jsonSchema, serverTimestampField); +- if (schemaPart || +- // also must not be nested. +- serverTimestampField.includes('.')) { +- throw newRxError('RC6', { +- field: serverTimestampField, +- schema: collection.schema.jsonSchema +- }); +- } +- var pullFilters = options.pull?.filter !== undefined ? toArray(options.pull.filter) : []; +- var pullQuery = query(options.firestore.collection, ...pullFilters); +- if (options.pull) { +- replicationPrimitivesPull = { +- async handler(lastPulledCheckpoint, batchSize) { +- var newerQuery; +- var sameTimeQuery; +- if (lastPulledCheckpoint) { +- var lastServerTimestamp = isoStringToServerTimestamp(lastPulledCheckpoint.serverTimestamp); +- newerQuery = query(pullQuery, where(serverTimestampField, '>', lastServerTimestamp), orderBy(serverTimestampField, 'asc'), limit(batchSize)); +- sameTimeQuery = query(pullQuery, where(serverTimestampField, '==', lastServerTimestamp), where(primaryPath, '>', lastPulledCheckpoint.id), orderBy(primaryPath, 'asc'), limit(batchSize)); +- } else { +- newerQuery = query(pullQuery, orderBy(serverTimestampField, 'asc'), limit(batchSize)); +- } +- var mustsReRun = true; +- var useDocs = []; +- while (mustsReRun) { +- /** +- * Local writes that have not been persisted to the server +- * are in pending state and do not have a correct serverTimestamp set. +- * We have to ensure we only use document states that are in sync with the server. +- * @link https://medium.com/firebase-developers/the-secrets-of-firestore-fieldvalue-servertimestamp-revealed-29dd7a38a82b +- */ +- await waitForPendingWrites(options.firestore.database); +- await runTransaction(options.firestore.database, async _tx => { +- useDocs = []; +- var [newerQueryResult, sameTimeQueryResult] = await Promise.all([getDocs(newerQuery), sameTimeQuery ? getDocs(sameTimeQuery) : undefined]); +- if (newerQueryResult.metadata.hasPendingWrites || sameTimeQuery && ensureNotFalsy(sameTimeQueryResult).metadata.hasPendingWrites) { +- return; +- } else { +- mustsReRun = false; +- if (sameTimeQuery) { +- useDocs = ensureNotFalsy(sameTimeQueryResult).docs; +- } +- var missingAmount = batchSize - useDocs.length; +- if (missingAmount > 0) { +- var additionalDocs = newerQueryResult.docs.slice(0, missingAmount).filter(x => !!x); +- appendToArray(useDocs, additionalDocs); +- } +- } +- }); +- } +- if (useDocs.length === 0) { +- return { +- checkpoint: lastPulledCheckpoint, +- documents: [] +- }; +- } +- var lastDoc = ensureNotFalsy(lastOfArray(useDocs)); +- var documents = useDocs.map(row => firestoreRowToDocData(serverTimestampField, primaryPath, row)); +- var newCheckpoint = { +- id: lastDoc.id, +- serverTimestamp: serverTimestampToIsoString(serverTimestampField, lastDoc.data()) +- }; +- var ret = { +- documents: documents, +- checkpoint: newCheckpoint +- }; +- return ret; +- }, +- batchSize: ensureNotFalsy(options.pull).batchSize, +- modifier: ensureNotFalsy(options.pull).modifier, +- stream$: pullStream$.asObservable() +- }; +- } +- var replicationPrimitivesPush; +- if (options.push) { +- var pushFilter = options.push?.filter; +- replicationPrimitivesPush = { +- async handler(rows) { +- if (pushFilter !== undefined) { +- rows = await asyncFilter(rows, row => pushFilter(row.newDocumentState)); +- } +- var writeRowsById = {}; +- var docIds = rows.map(row => { +- var docId = row.newDocumentState[primaryPath]; +- writeRowsById[docId] = row; +- return docId; +- }); +- await waitForPendingWrites(options.firestore.database); +- var conflicts = []; +- +- /** +- * Everything must run INSIDE of the transaction +- * because on tx-errors, firebase will re-run the transaction on some cases. +- * @link https://firebase.google.com/docs/firestore/manage-data/transactions#transaction_failure +- * @link https://firebase.google.com/docs/firestore/manage-data/transactions +- */ +- await runTransaction(options.firestore.database, async _tx => { +- conflicts = []; // reset in case the tx has re-run. +- /** +- * @link https://stackoverflow.com/a/48423626/3443137 +- */ +- +- var getQuery = ids => { +- return getDocs(query(options.firestore.collection, where(documentId(), 'in', ids))); +- }; +- var docsInDbResult = await getContentByIds(docIds, getQuery); +- var docsInDbById = {}; +- docsInDbResult.forEach(row => { +- var docDataInDb = stripServerTimestampField(serverTimestampField, row.data()); +- var docId = row.id; +- docDataInDb[primaryPath] = docId; +- docsInDbById[docId] = docDataInDb; +- }); +- +- /** +- * @link https://firebase.google.com/docs/firestore/manage-data/transactions#batched-writes +- */ +- var batch = writeBatch(options.firestore.database); +- var hasWrite = false; +- await Promise.all(Object.entries(writeRowsById).map(async ([docId, writeRow]) => { +- var docInDb = docsInDbById[docId]; +- if (docInDb && (!writeRow.assumedMasterState || (await collection.conflictHandler({ +- newDocumentState: docInDb, +- realMasterState: writeRow.assumedMasterState +- }, 'replication-firestore-push')).isEqual === false)) { +- // conflict +- conflicts.push(docInDb); +- } else { +- // no conflict +- hasWrite = true; +- var docRef = doc(options.firestore.collection, docId); +- var writeDocData = flatClone(writeRow.newDocumentState); +- writeDocData[serverTimestampField] = serverTimestamp(); +- if (!docInDb) { +- // insert +- batch.set(docRef, stripPrimaryKey(primaryPath, writeDocData)); +- } else { +- // update +- batch.update(docRef, stripPrimaryKey(primaryPath, writeDocData)); +- } +- } +- })); +- if (hasWrite) { +- await batch.commit(); +- } +- }); +- await waitForPendingWrites(options.firestore.database); +- return conflicts; +- }, +- batchSize: options.push.batchSize, +- modifier: options.push.modifier +- }; +- } +- var replicationState = new RxFirestoreReplicationState(options.firestore, FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX + options.collection.database.hashFunction(options.firestore.projectId), collection, replicationPrimitivesPull, replicationPrimitivesPush, options.live, options.retryTime, options.autoStart); +- +- /** +- * Use long polling to get live changes for the pull.stream$ +- */ +- if (options.live && options.pull) { +- var startBefore = replicationState.start.bind(replicationState); +- var cancelBefore = replicationState.cancel.bind(replicationState); +- replicationState.start = () => { +- var lastChangeQuery = query(pullQuery, orderBy(serverTimestampField, 'desc'), limit(1)); +- var unsubscribe = onSnapshot(lastChangeQuery, _querySnapshot => { +- /** +- * There is no good way to observe the event stream in firestore. +- * So instead we listen to any write to the collection +- * and then emit a 'RESYNC' flag. +- */ +- replicationState.reSync(); +- }, error => { +- replicationState.subjects.error.next(newRxError('RC_STREAM', { +- error: errorToPlainJson(error) +- })); +- }); +- replicationState.cancel = () => { +- unsubscribe(); +- return cancelBefore(); +- }; +- return startBefore(); +- }; +- } +- startReplicationOnLeaderShip(options.waitForLeadership, replicationState); +- return replicationState; +-} +-//# sourceMappingURL=index.js.map +\ No newline at end of file +diff --git a/node_modules/rxdb/dist/es/plugins/replication-firestore/index.js.map b/node_modules/rxdb/dist/es/plugins/replication-firestore/index.js.map +deleted file mode 100644 +index 126466a..0000000 +--- a/node_modules/rxdb/dist/es/plugins/replication-firestore/index.js.map ++++ /dev/null +@@ -1 +0,0 @@ +-{"version":3,"file":"index.js","names":["appendToArray","asyncFilter","ensureNotFalsy","errorToPlainJson","flatClone","lastOfArray","toArray","doc","query","where","orderBy","limit","getDocs","onSnapshot","runTransaction","writeBatch","serverTimestamp","waitForPendingWrites","documentId","RxDBLeaderElectionPlugin","RxReplicationState","startReplicationOnLeaderShip","addRxPlugin","getSchemaByObjectPath","newRxError","Subject","firestoreRowToDocData","FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX","getContentByIds","isoStringToServerTimestamp","serverTimestampToIsoString","stripPrimaryKey","stripServerTimestampField","RxFirestoreReplicationState","_RxReplicationState","_inheritsLoose","firestore","replicationIdentifierHash","collection","pull","push","live","retryTime","autoStart","_this","call","replicateFirestore","options","pullStream$","replicationPrimitivesPull","waitForLeadership","serverTimestampField","primaryPath","schema","schemaPart","jsonSchema","includes","field","pullFilters","filter","undefined","pullQuery","handler","lastPulledCheckpoint","batchSize","newerQuery","sameTimeQuery","lastServerTimestamp","id","mustsReRun","useDocs","database","_tx","newerQueryResult","sameTimeQueryResult","Promise","all","metadata","hasPendingWrites","docs","missingAmount","length","additionalDocs","slice","x","checkpoint","documents","lastDoc","map","row","newCheckpoint","data","ret","modifier","stream$","asObservable","replicationPrimitivesPush","pushFilter","rows","newDocumentState","writeRowsById","docIds","docId","conflicts","getQuery","ids","docsInDbResult","docsInDbById","forEach","docDataInDb","batch","hasWrite","Object","entries","writeRow","docInDb","assumedMasterState","conflictHandler","realMasterState","isEqual","docRef","writeDocData","set","update","commit","replicationState","hashFunction","projectId","startBefore","start","bind","cancelBefore","cancel","lastChangeQuery","unsubscribe","_querySnapshot","reSync","error","subjects","next"],"sources":["../../../../src/plugins/replication-firestore/index.ts"],"sourcesContent":["import {\n appendToArray,\n asyncFilter,\n ensureNotFalsy,\n errorToPlainJson,\n flatClone,\n lastOfArray,\n toArray\n} from '../../plugins/utils';\n\nimport {\n doc,\n query,\n where,\n orderBy,\n limit,\n getDocs,\n onSnapshot,\n runTransaction,\n writeBatch,\n serverTimestamp,\n QueryDocumentSnapshot,\n waitForPendingWrites,\n documentId\n} from 'firebase/firestore';\n\nimport { RxDBLeaderElectionPlugin } from '../leader-election';\nimport type {\n RxCollection,\n ReplicationPullOptions,\n ReplicationPushOptions,\n RxReplicationWriteToMasterRow,\n RxReplicationPullStreamItem\n} from '../../types';\nimport {\n RxReplicationState,\n startReplicationOnLeaderShip\n} from '../replication';\nimport {\n addRxPlugin,\n ById,\n getSchemaByObjectPath,\n newRxError,\n WithDeleted\n} from '../../';\n\nimport type {\n FirestoreCheckpointType,\n FirestoreOptions,\n SyncOptionsFirestore\n} from './firestore-types';\nimport { Subject } from 'rxjs';\nimport {\n firestoreRowToDocData,\n FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX,\n getContentByIds,\n isoStringToServerTimestamp,\n serverTimestampToIsoString,\n stripPrimaryKey,\n stripServerTimestampField\n} from './firestore-helper';\n\nexport * from './firestore-helper';\nexport * from './firestore-types';\n\nexport class RxFirestoreReplicationState extends RxReplicationState {\n constructor(\n public readonly firestore: FirestoreOptions,\n public readonly replicationIdentifierHash: string,\n public readonly collection: RxCollection,\n public readonly pull?: ReplicationPullOptions,\n public readonly push?: ReplicationPushOptions,\n public readonly live: boolean = true,\n public retryTime: number = 1000 * 5,\n public autoStart: boolean = true\n ) {\n super(\n replicationIdentifierHash,\n collection,\n '_deleted',\n pull,\n push,\n live,\n retryTime,\n autoStart\n );\n }\n}\n\nexport function replicateFirestore(\n options: SyncOptionsFirestore\n): RxFirestoreReplicationState {\n const collection = options.collection;\n addRxPlugin(RxDBLeaderElectionPlugin);\n const pullStream$: Subject> = new Subject();\n let replicationPrimitivesPull: ReplicationPullOptions | undefined;\n options.live = typeof options.live === 'undefined' ? true : options.live;\n options.waitForLeadership = typeof options.waitForLeadership === 'undefined' ? true : options.waitForLeadership;\n const serverTimestampField = typeof options.serverTimestampField === 'undefined' ? 'serverTimestamp' : options.serverTimestampField;\n options.serverTimestampField = serverTimestampField;\n const primaryPath = collection.schema.primaryPath;\n\n /**\n * The serverTimestampField MUST NOT be part of the collections RxJsonSchema.\n */\n const schemaPart = getSchemaByObjectPath(collection.schema.jsonSchema, serverTimestampField);\n if (\n schemaPart ||\n // also must not be nested.\n serverTimestampField.includes('.')\n ) {\n throw newRxError('RC6', {\n field: serverTimestampField,\n schema: collection.schema.jsonSchema\n });\n }\n\n const pullFilters = options.pull?.filter !== undefined\n ? toArray(options.pull.filter)\n : [];\n\n const pullQuery = query(options.firestore.collection, ...pullFilters);\n\n if (options.pull) {\n replicationPrimitivesPull = {\n async handler(\n lastPulledCheckpoint: FirestoreCheckpointType,\n batchSize: number\n ) {\n let newerQuery: ReturnType;\n let sameTimeQuery: ReturnType | undefined;\n\n if (lastPulledCheckpoint) {\n const lastServerTimestamp = isoStringToServerTimestamp(lastPulledCheckpoint.serverTimestamp);\n newerQuery = query(pullQuery,\n where(serverTimestampField, '>', lastServerTimestamp),\n orderBy(serverTimestampField, 'asc'),\n limit(batchSize)\n );\n sameTimeQuery = query(pullQuery,\n where(serverTimestampField, '==', lastServerTimestamp),\n where(primaryPath, '>', lastPulledCheckpoint.id),\n orderBy(primaryPath, 'asc'),\n limit(batchSize)\n );\n } else {\n newerQuery = query(pullQuery,\n orderBy(serverTimestampField, 'asc'),\n limit(batchSize)\n );\n }\n\n let mustsReRun = true;\n let useDocs: QueryDocumentSnapshot[] = [];\n while (mustsReRun) {\n /**\n * Local writes that have not been persisted to the server\n * are in pending state and do not have a correct serverTimestamp set.\n * We have to ensure we only use document states that are in sync with the server.\n * @link https://medium.com/firebase-developers/the-secrets-of-firestore-fieldvalue-servertimestamp-revealed-29dd7a38a82b\n */\n await waitForPendingWrites(options.firestore.database);\n await runTransaction(options.firestore.database, async (_tx) => {\n useDocs = [];\n const [\n newerQueryResult,\n sameTimeQueryResult\n ] = await Promise.all([\n getDocs(newerQuery),\n sameTimeQuery ? getDocs(sameTimeQuery) : undefined\n ]);\n\n if (\n newerQueryResult.metadata.hasPendingWrites ||\n (sameTimeQuery && ensureNotFalsy(sameTimeQueryResult).metadata.hasPendingWrites)\n ) {\n return;\n } else {\n mustsReRun = false;\n\n if (sameTimeQuery) {\n useDocs = ensureNotFalsy(sameTimeQueryResult).docs as any;\n }\n const missingAmount = batchSize - useDocs.length;\n if (missingAmount > 0) {\n const additionalDocs = newerQueryResult.docs.slice(0, missingAmount).filter(x => !!x);\n appendToArray(useDocs, additionalDocs);\n }\n }\n });\n }\n\n if (useDocs.length === 0) {\n return {\n checkpoint: lastPulledCheckpoint,\n documents: []\n };\n }\n const lastDoc = ensureNotFalsy(lastOfArray(useDocs));\n const documents: WithDeleted[] = useDocs\n .map(row => firestoreRowToDocData(\n serverTimestampField,\n primaryPath,\n row\n ));\n const newCheckpoint: FirestoreCheckpointType = {\n id: lastDoc.id,\n serverTimestamp: serverTimestampToIsoString(serverTimestampField, lastDoc.data())\n };\n const ret = {\n documents: documents,\n checkpoint: newCheckpoint\n };\n return ret;\n },\n batchSize: ensureNotFalsy(options.pull).batchSize,\n modifier: ensureNotFalsy(options.pull).modifier,\n stream$: pullStream$.asObservable()\n };\n }\n\n let replicationPrimitivesPush: ReplicationPushOptions | undefined;\n if (options.push) {\n const pushFilter = options.push?.filter;\n replicationPrimitivesPush = {\n async handler(\n rows: RxReplicationWriteToMasterRow[]\n ) {\n if (pushFilter !== undefined) {\n rows = await asyncFilter(rows, (row) => pushFilter(row.newDocumentState));\n }\n\n const writeRowsById: ById> = {};\n const docIds: string[] = rows.map(row => {\n const docId = (row.newDocumentState as any)[primaryPath];\n writeRowsById[docId] = row;\n return docId;\n });\n await waitForPendingWrites(options.firestore.database);\n let conflicts: WithDeleted[] = [];\n\n /**\n * Everything must run INSIDE of the transaction\n * because on tx-errors, firebase will re-run the transaction on some cases.\n * @link https://firebase.google.com/docs/firestore/manage-data/transactions#transaction_failure\n * @link https://firebase.google.com/docs/firestore/manage-data/transactions\n */\n await runTransaction(options.firestore.database, async (_tx) => {\n conflicts = []; // reset in case the tx has re-run.\n /**\n * @link https://stackoverflow.com/a/48423626/3443137\n */\n\n const getQuery = (ids: string[]) => {\n return getDocs(\n query(\n options.firestore.collection,\n where(documentId(), 'in', ids)\n )\n );\n };\n\n const docsInDbResult = await getContentByIds(docIds, getQuery);\n\n const docsInDbById: ById = {};\n docsInDbResult.forEach(row => {\n const docDataInDb = stripServerTimestampField(serverTimestampField, row.data());\n const docId = row.id;\n (docDataInDb as any)[primaryPath] = docId;\n docsInDbById[docId] = docDataInDb;\n });\n\n /**\n * @link https://firebase.google.com/docs/firestore/manage-data/transactions#batched-writes\n */\n const batch = writeBatch(options.firestore.database);\n let hasWrite = false;\n await Promise.all(\n Object.entries(writeRowsById).map(async ([docId, writeRow]) => {\n const docInDb: RxDocType | undefined = docsInDbById[docId];\n\n if (\n docInDb &&\n (\n !writeRow.assumedMasterState ||\n (await collection.conflictHandler({\n newDocumentState: docInDb as any,\n realMasterState: writeRow.assumedMasterState\n }, 'replication-firestore-push')).isEqual === false\n )\n ) {\n // conflict\n conflicts.push(docInDb as any);\n } else {\n // no conflict\n hasWrite = true;\n const docRef = doc(options.firestore.collection, docId);\n const writeDocData = flatClone(writeRow.newDocumentState);\n (writeDocData as any)[serverTimestampField] = serverTimestamp();\n if (!docInDb) {\n // insert\n batch.set(docRef, stripPrimaryKey(primaryPath, writeDocData));\n } else {\n // update\n batch.update(docRef, stripPrimaryKey(primaryPath, writeDocData));\n }\n }\n })\n );\n\n if (hasWrite) {\n await batch.commit();\n }\n });\n await waitForPendingWrites(options.firestore.database);\n return conflicts;\n },\n batchSize: options.push.batchSize,\n modifier: options.push.modifier\n };\n }\n\n\n const replicationState = new RxFirestoreReplicationState(\n options.firestore,\n FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX + options.collection.database.hashFunction(options.firestore.projectId),\n collection,\n replicationPrimitivesPull,\n replicationPrimitivesPush,\n options.live,\n options.retryTime,\n options.autoStart\n );\n\n /**\n * Use long polling to get live changes for the pull.stream$\n */\n if (options.live && options.pull) {\n const startBefore = replicationState.start.bind(replicationState);\n const cancelBefore = replicationState.cancel.bind(replicationState);\n replicationState.start = () => {\n const lastChangeQuery = query(\n pullQuery,\n orderBy(serverTimestampField, 'desc'),\n limit(1)\n );\n const unsubscribe = onSnapshot(\n lastChangeQuery,\n (_querySnapshot) => {\n /**\n * There is no good way to observe the event stream in firestore.\n * So instead we listen to any write to the collection\n * and then emit a 'RESYNC' flag.\n */\n replicationState.reSync();\n },\n (error) => {\n replicationState.subjects.error.next(\n newRxError('RC_STREAM', { error: errorToPlainJson(error) })\n );\n }\n );\n replicationState.cancel = () => {\n unsubscribe();\n return cancelBefore();\n };\n return startBefore();\n };\n }\n\n startReplicationOnLeaderShip(options.waitForLeadership, replicationState);\n\n return replicationState;\n}\n"],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/rxdb/dist/lib/plugins/encryption-crypto-js/index.js b/node_modules/rxdb/dist/lib/plugins/encryption-crypto-js/index.js +deleted file mode 100644 +index 1e5c74c..0000000 +--- a/node_modules/rxdb/dist/lib/plugins/encryption-crypto-js/index.js ++++ /dev/null +@@ -1,147 +0,0 @@ +-"use strict"; +- +-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +-Object.defineProperty(exports, "__esModule", { +- value: true +-}); +-exports.MINIMUM_PASSWORD_LENGTH = void 0; +-exports.decryptString = decryptString; +-exports.encryptString = encryptString; +-exports.wrappedKeyEncryptionCryptoJsStorage = wrappedKeyEncryptionCryptoJsStorage; +-var _aes = _interopRequireDefault(require("crypto-js/aes")); +-var cryptoEnc = _interopRequireWildcard(require("crypto-js/enc-utf8")); +-var _pluginHelpers = require("../../plugin-helpers"); +-var _rxError = require("../../rx-error"); +-var _rxStorageHelper = require("../../rx-storage-helper"); +-var _utils = require("../../plugins/utils"); +-function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +-function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +-/** +- * this plugin adds the encryption-capabilities to rxdb +- * It's using crypto-js/aes for password-encryption +- * @link https://github.com/brix/crypto-js +- */ +- +-var MINIMUM_PASSWORD_LENGTH = 8; +-exports.MINIMUM_PASSWORD_LENGTH = MINIMUM_PASSWORD_LENGTH; +-function encryptString(value, password) { +- var encrypted = _aes.default.encrypt(value, password); +- return encrypted.toString(); +-} +-function decryptString(cipherText, password) { +- /** +- * Trying to decrypt non-strings +- * will cause no errors and will be hard to debug. +- * So instead we do this check here. +- */ +- if (typeof cipherText !== 'string') { +- throw (0, _rxError.newRxError)('SNH', { +- args: { +- cipherText +- } +- }); +- } +- var decrypted = _aes.default.decrypt(cipherText, password); +- var ret = decrypted.toString(cryptoEnc); +- return ret; +-} +-function wrappedKeyEncryptionCryptoJsStorage(args) { +- return Object.assign({}, args.storage, { +- async createStorageInstance(params) { +- if (typeof params.password !== 'undefined') { +- validatePassword(params.password); +- } +- if (!(0, _rxStorageHelper.hasEncryption)(params.schema)) { +- var retInstance = await args.storage.createStorageInstance(params); +- return retInstance; +- } +- if (!params.password) { +- throw (0, _rxError.newRxError)('EN3', { +- database: params.databaseName, +- collection: params.collectionName, +- schema: params.schema +- }); +- } +- var password = params.password; +- var schemaWithoutEncrypted = (0, _utils.clone)(params.schema); +- delete schemaWithoutEncrypted.encrypted; +- if (schemaWithoutEncrypted.attachments) { +- schemaWithoutEncrypted.attachments.encrypted = false; +- } +- var instance = await args.storage.createStorageInstance(Object.assign({}, params, { +- schema: schemaWithoutEncrypted +- })); +- function modifyToStorage(docData) { +- docData = cloneWithoutAttachments(docData); +- (0, _utils.ensureNotFalsy)(params.schema.encrypted).forEach(path => { +- var value = (0, _utils.getProperty)(docData, path); +- if (typeof value === 'undefined') { +- return; +- } +- var stringValue = JSON.stringify(value); +- var encrypted = encryptString(stringValue, password); +- (0, _utils.setProperty)(docData, path, encrypted); +- }); +- +- // handle attachments +- if (params.schema.attachments && params.schema.attachments.encrypted) { +- var newAttachments = {}; +- Object.entries(docData._attachments).forEach(([id, attachment]) => { +- var useAttachment = (0, _utils.flatClone)(attachment); +- if (useAttachment.data) { +- var dataString = useAttachment.data; +- useAttachment.data = (0, _utils.b64EncodeUnicode)(encryptString(dataString, password)); +- } +- newAttachments[id] = useAttachment; +- }); +- docData._attachments = newAttachments; +- } +- return docData; +- } +- function modifyFromStorage(docData) { +- docData = cloneWithoutAttachments(docData); +- (0, _utils.ensureNotFalsy)(params.schema.encrypted).forEach(path => { +- var value = (0, _utils.getProperty)(docData, path); +- if (typeof value === 'undefined') { +- return; +- } +- var decrypted = decryptString(value, password); +- var decryptedParsed = JSON.parse(decrypted); +- (0, _utils.setProperty)(docData, path, decryptedParsed); +- }); +- return docData; +- } +- function modifyAttachmentFromStorage(attachmentData) { +- if (params.schema.attachments && params.schema.attachments.encrypted) { +- var decrypted = decryptString((0, _utils.b64DecodeUnicode)(attachmentData), password); +- return decrypted; +- } else { +- return attachmentData; +- } +- } +- return (0, _pluginHelpers.wrapRxStorageInstance)(instance, modifyToStorage, modifyFromStorage, modifyAttachmentFromStorage); +- } +- }); +-} +-function cloneWithoutAttachments(data) { +- var attachments = data._attachments; +- data = (0, _utils.flatClone)(data); +- delete data._attachments; +- data = (0, _utils.clone)(data); +- data._attachments = attachments; +- return data; +-} +-function validatePassword(password) { +- if (typeof password !== 'string') { +- throw (0, _rxError.newRxTypeError)('EN1', { +- password +- }); +- } +- if (password.length < MINIMUM_PASSWORD_LENGTH) { +- throw (0, _rxError.newRxError)('EN2', { +- minPassLength: MINIMUM_PASSWORD_LENGTH, +- password +- }); +- } +-} +-//# sourceMappingURL=index.js.map +\ No newline at end of file +diff --git a/node_modules/rxdb/dist/lib/plugins/encryption-crypto-js/index.js.map b/node_modules/rxdb/dist/lib/plugins/encryption-crypto-js/index.js.map +deleted file mode 100644 +index d7bada8..0000000 +--- a/node_modules/rxdb/dist/lib/plugins/encryption-crypto-js/index.js.map ++++ /dev/null +@@ -1 +0,0 @@ +-{"version":3,"file":"index.js","names":["_aes","_interopRequireDefault","require","cryptoEnc","_interopRequireWildcard","_pluginHelpers","_rxError","_rxStorageHelper","_utils","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","MINIMUM_PASSWORD_LENGTH","exports","encryptString","value","password","encrypted","AES","encrypt","toString","decryptString","cipherText","newRxError","args","decrypted","decrypt","ret","wrappedKeyEncryptionCryptoJsStorage","assign","storage","createStorageInstance","params","validatePassword","hasEncryption","schema","retInstance","database","databaseName","collection","collectionName","schemaWithoutEncrypted","clone","attachments","instance","modifyToStorage","docData","cloneWithoutAttachments","ensureNotFalsy","forEach","path","getProperty","stringValue","JSON","stringify","setProperty","newAttachments","entries","_attachments","id","attachment","useAttachment","flatClone","data","dataString","b64EncodeUnicode","modifyFromStorage","decryptedParsed","parse","modifyAttachmentFromStorage","attachmentData","b64DecodeUnicode","wrapRxStorageInstance","newRxTypeError","length","minPassLength"],"sources":["../../../../src/plugins/encryption-crypto-js/index.ts"],"sourcesContent":["/**\n * this plugin adds the encryption-capabilities to rxdb\n * It's using crypto-js/aes for password-encryption\n * @link https://github.com/brix/crypto-js\n */\nimport AES from 'crypto-js/aes';\nimport * as cryptoEnc from 'crypto-js/enc-utf8';\nimport { wrapRxStorageInstance } from '../../plugin-helpers';\nimport { newRxError, newRxTypeError } from '../../rx-error';\nimport { hasEncryption } from '../../rx-storage-helper';\nimport type {\n InternalStoreDocType,\n RxAttachmentWriteData,\n RxDocumentData,\n RxDocumentWriteData,\n RxJsonSchema,\n RxStorage,\n RxStorageInstanceCreationParams\n} from '../../types';\nimport {\n b64DecodeUnicode,\n b64EncodeUnicode,\n clone,\n ensureNotFalsy,\n flatClone,\n getProperty,\n setProperty\n} from '../../plugins/utils';\n\nexport const MINIMUM_PASSWORD_LENGTH: 8 = 8;\n\n\nexport function encryptString(value: string, password: string): string {\n const encrypted = AES.encrypt(value, password);\n return encrypted.toString();\n}\n\nexport function decryptString(cipherText: string, password: any): string {\n /**\n * Trying to decrypt non-strings\n * will cause no errors and will be hard to debug.\n * So instead we do this check here.\n */\n if (typeof cipherText !== 'string') {\n throw newRxError('SNH', {\n args: {\n cipherText\n }\n });\n }\n\n const decrypted = AES.decrypt(cipherText, password);\n const ret = decrypted.toString(cryptoEnc);\n return ret;\n}\n\nexport type InternalStorePasswordDocType = InternalStoreDocType<{\n hash: string;\n}>;\n\nexport function wrappedKeyEncryptionCryptoJsStorage(\n args: {\n storage: RxStorage;\n }\n): RxStorage {\n return Object.assign(\n {},\n args.storage,\n {\n async createStorageInstance(\n params: RxStorageInstanceCreationParams\n ) {\n if (typeof params.password !== 'undefined') {\n validatePassword(params.password as any);\n }\n\n if (!hasEncryption(params.schema)) {\n const retInstance = await args.storage.createStorageInstance(params);\n return retInstance;\n }\n\n if (!params.password) {\n throw newRxError('EN3', {\n database: params.databaseName,\n collection: params.collectionName,\n schema: params.schema\n });\n }\n const password = params.password;\n\n const schemaWithoutEncrypted: RxJsonSchema> = clone(params.schema);\n delete schemaWithoutEncrypted.encrypted;\n if (schemaWithoutEncrypted.attachments) {\n schemaWithoutEncrypted.attachments.encrypted = false;\n }\n\n const instance = await args.storage.createStorageInstance(\n Object.assign(\n {},\n params,\n {\n schema: schemaWithoutEncrypted\n }\n )\n );\n\n function modifyToStorage(docData: RxDocumentWriteData) {\n docData = cloneWithoutAttachments(docData);\n ensureNotFalsy(params.schema.encrypted)\n .forEach(path => {\n const value = getProperty(docData, path);\n if (typeof value === 'undefined') {\n return;\n }\n\n const stringValue = JSON.stringify(value);\n const encrypted = encryptString(stringValue, password);\n setProperty(docData, path, encrypted);\n });\n\n // handle attachments\n if (\n params.schema.attachments &&\n params.schema.attachments.encrypted\n ) {\n const newAttachments: typeof docData._attachments = {};\n Object.entries(docData._attachments).forEach(([id, attachment]) => {\n const useAttachment: RxAttachmentWriteData = flatClone(attachment) as any;\n if (useAttachment.data) {\n const dataString = useAttachment.data;\n useAttachment.data = b64EncodeUnicode(encryptString(dataString, password));\n }\n newAttachments[id] = useAttachment;\n });\n docData._attachments = newAttachments;\n }\n return docData;\n }\n function modifyFromStorage(docData: RxDocumentData): Promise> {\n docData = cloneWithoutAttachments(docData);\n ensureNotFalsy(params.schema.encrypted)\n .forEach(path => {\n const value = getProperty(docData, path);\n if (typeof value === 'undefined') {\n return;\n }\n const decrypted = decryptString(value, password);\n const decryptedParsed = JSON.parse(decrypted);\n setProperty(docData, path, decryptedParsed);\n });\n return docData;\n }\n\n function modifyAttachmentFromStorage(attachmentData: string): string {\n if (\n params.schema.attachments &&\n params.schema.attachments.encrypted\n ) {\n const decrypted = decryptString(b64DecodeUnicode(attachmentData), password);\n return decrypted;\n } else {\n return attachmentData;\n }\n }\n\n return wrapRxStorageInstance(\n instance,\n modifyToStorage,\n modifyFromStorage,\n modifyAttachmentFromStorage\n );\n }\n }\n );\n}\n\n\n\n\n\nfunction cloneWithoutAttachments(data: RxDocumentWriteData): RxDocumentData {\n const attachments = data._attachments;\n data = flatClone(data);\n delete (data as any)._attachments;\n data = clone(data);\n data._attachments = attachments;\n return data as any;\n}\n\nfunction validatePassword(password: string) {\n if (typeof password !== 'string') {\n throw newRxTypeError('EN1', {\n password\n });\n }\n if (password.length < MINIMUM_PASSWORD_LENGTH) {\n throw newRxError('EN2', {\n minPassLength: MINIMUM_PASSWORD_LENGTH,\n password\n });\n }\n}\n"],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/rxdb/dist/lib/plugins/replication-firestore/firestore-helper.js b/node_modules/rxdb/dist/lib/plugins/replication-firestore/firestore-helper.js +deleted file mode 100644 +index 0270d61..0000000 +--- a/node_modules/rxdb/dist/lib/plugins/replication-firestore/firestore-helper.js ++++ /dev/null +@@ -1,61 +0,0 @@ +-"use strict"; +- +-Object.defineProperty(exports, "__esModule", { +- value: true +-}); +-exports.FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX = void 0; +-exports.firestoreRowToDocData = firestoreRowToDocData; +-exports.getContentByIds = getContentByIds; +-exports.getFirestoreSortFieldValue = getFirestoreSortFieldValue; +-exports.isoStringToServerTimestamp = isoStringToServerTimestamp; +-exports.serverTimestampToIsoString = serverTimestampToIsoString; +-exports.stripPrimaryKey = stripPrimaryKey; +-exports.stripServerTimestampField = stripServerTimestampField; +-var _firestore = require("firebase/firestore"); +-var _utils = require("../../plugins/utils"); +-var FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX = 'firestore'; +-exports.FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX = FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX; +-function getFirestoreSortFieldValue(docData, primaryKey) { +- var timeString = (0, _utils.now)() + ''; +- return 'rxdb-' + timeString.padStart(15, '0') + '-' + docData[primaryKey]; +-} +-function stripServerTimestampField(serverTimestampField, docData) { +- var data = (0, _utils.flatClone)(docData); +- delete data[serverTimestampField]; +- return data; +-} +-function serverTimestampToIsoString(serverTimestampField, docData) { +- var timestamp = docData[serverTimestampField]; +- var date = timestamp.toDate(); +- return date.toISOString(); +-} +-function isoStringToServerTimestamp(isoString) { +- var date = new Date(isoString); +- return _firestore.Timestamp.fromDate(date); +-} +-function firestoreRowToDocData(serverTimestampField, primaryPath, row) { +- var docData = stripServerTimestampField(serverTimestampField, row.data()); +- docData[primaryPath] = row.id; +- return docData; +-} +-function stripPrimaryKey(primaryPath, docData) { +- docData = (0, _utils.flatClone)(docData); +- delete docData[primaryPath]; +- return docData; +-} +- +-// https://stackoverflow.com/questions/61354866/is-there-a-workaround-for-the-firebase-query-in-limit-to-10 +-function getContentByIds(ids, getQuery) { +- var batches = []; +- while (ids.length) { +- // firestore limits batches to 10 +- var batch = ids.splice(0, 10); +- +- // add the batch request to to a queue +- batches.push(getQuery(batch)); +- } +- +- // after all of the data is fetched, return it +- return Promise.all(batches).then(content => content.map(i => i.docs).flat()); +-} +-//# sourceMappingURL=firestore-helper.js.map +\ No newline at end of file +diff --git a/node_modules/rxdb/dist/lib/plugins/replication-firestore/firestore-helper.js.map b/node_modules/rxdb/dist/lib/plugins/replication-firestore/firestore-helper.js.map +deleted file mode 100644 +index 4fa868b..0000000 +--- a/node_modules/rxdb/dist/lib/plugins/replication-firestore/firestore-helper.js.map ++++ /dev/null +@@ -1 +0,0 @@ +-{"version":3,"file":"firestore-helper.js","names":["_firestore","require","_utils","FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX","exports","getFirestoreSortFieldValue","docData","primaryKey","timeString","now","padStart","stripServerTimestampField","serverTimestampField","data","flatClone","serverTimestampToIsoString","timestamp","date","toDate","toISOString","isoStringToServerTimestamp","isoString","Date","Timestamp","fromDate","firestoreRowToDocData","primaryPath","row","id","stripPrimaryKey","getContentByIds","ids","getQuery","batches","length","batch","splice","push","Promise","all","then","content","map","i","docs","flat"],"sources":["../../../../src/plugins/replication-firestore/firestore-helper.ts"],"sourcesContent":["import {\n QueryDocumentSnapshot,\n Timestamp\n} from 'firebase/firestore';\nimport type {\n WithDeleted\n} from '../../types';\nimport { flatClone, now } from '../../plugins/utils';\nimport type { GetQuery } from './firestore-types';\n\nexport const FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX = 'firestore';\n\n\nexport function getFirestoreSortFieldValue(docData: any, primaryKey: string): string {\n const timeString = now() + '';\n return 'rxdb-' + timeString.padStart(15, '0') + '-' + docData[primaryKey];\n}\n\nexport function stripServerTimestampField(\n serverTimestampField: string,\n docData: RxDocType\n): WithDeleted {\n const data = flatClone(docData);\n delete (data as any)[serverTimestampField];\n return data as any;\n}\n\n\nexport function serverTimestampToIsoString(serverTimestampField: string, docData: any): string {\n const timestamp = (docData as any)[serverTimestampField];\n const date: Date = timestamp.toDate();\n return date.toISOString();\n}\n\nexport function isoStringToServerTimestamp(isoString: string): Timestamp {\n const date = new Date(isoString);\n return Timestamp.fromDate(date);\n}\n\nexport function firestoreRowToDocData(\n serverTimestampField: string,\n primaryPath: string,\n row: QueryDocumentSnapshot\n): WithDeleted {\n const docData = stripServerTimestampField(\n serverTimestampField,\n row.data()\n );\n (docData as any)[primaryPath] = row.id;\n return docData;\n}\n\nexport function stripPrimaryKey(\n primaryPath: string,\n docData: any\n): any {\n docData = flatClone(docData);\n delete (docData as any)[primaryPath];\n return docData;\n}\n\n// https://stackoverflow.com/questions/61354866/is-there-a-workaround-for-the-firebase-query-in-limit-to-10\nexport function getContentByIds(ids: string[], getQuery: GetQuery): Promise[]> {\n const batches = [];\n\n while (ids.length) {\n // firestore limits batches to 10\n const batch = ids.splice(0, 10);\n\n // add the batch request to to a queue\n batches.push(getQuery(batch));\n }\n\n // after all of the data is fetched, return it\n return Promise.all(batches).then((content) => content.map(i => i.docs).flat());\n}\n"],"mappings":";;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAOA,IAAAC,MAAA,GAAAD,OAAA;AAGO,IAAME,4CAA4C,GAAG,WAAW;AAACC,OAAA,CAAAD,4CAAA,GAAAA,4CAAA;AAGjE,SAASE,0BAA0BA,CAACC,OAAY,EAAEC,UAAkB,EAAU;EACjF,IAAMC,UAAU,GAAG,IAAAC,UAAG,EAAC,CAAC,GAAG,EAAE;EAC7B,OAAO,OAAO,GAAGD,UAAU,CAACE,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,GAAG,GAAGJ,OAAO,CAACC,UAAU,CAAC;AAC7E;AAEO,SAASI,yBAAyBA,CACrCC,oBAA4B,EAC5BN,OAAkB,EACI;EACtB,IAAMO,IAAI,GAAG,IAAAC,gBAAS,EAACR,OAAO,CAAC;EAC/B,OAAQO,IAAI,CAASD,oBAAoB,CAAC;EAC1C,OAAOC,IAAI;AACf;AAGO,SAASE,0BAA0BA,CAACH,oBAA4B,EAAEN,OAAY,EAAU;EAC3F,IAAMU,SAAS,GAAIV,OAAO,CAASM,oBAAoB,CAAC;EACxD,IAAMK,IAAU,GAAGD,SAAS,CAACE,MAAM,CAAC,CAAC;EACrC,OAAOD,IAAI,CAACE,WAAW,CAAC,CAAC;AAC7B;AAEO,SAASC,0BAA0BA,CAACC,SAAiB,EAAa;EACrE,IAAMJ,IAAI,GAAG,IAAIK,IAAI,CAACD,SAAS,CAAC;EAChC,OAAOE,oBAAS,CAACC,QAAQ,CAACP,IAAI,CAAC;AACnC;AAEO,SAASQ,qBAAqBA,CACjCb,oBAA4B,EAC5Bc,WAAmB,EACnBC,GAAqC,EACf;EACtB,IAAMrB,OAAO,GAAGK,yBAAyB,CACrCC,oBAAoB,EACpBe,GAAG,CAACd,IAAI,CAAC,CACb,CAAC;EACAP,OAAO,CAASoB,WAAW,CAAC,GAAGC,GAAG,CAACC,EAAE;EACtC,OAAOtB,OAAO;AAClB;AAEO,SAASuB,eAAeA,CAC3BH,WAAmB,EACnBpB,OAAY,EACT;EACHA,OAAO,GAAG,IAAAQ,gBAAS,EAACR,OAAO,CAAC;EAC5B,OAAQA,OAAO,CAASoB,WAAW,CAAC;EACpC,OAAOpB,OAAO;AAClB;;AAEA;AACO,SAASwB,eAAeA,CAAYC,GAAa,EAAEC,QAA6B,EAA+C;EAClI,IAAMC,OAAO,GAAG,EAAE;EAElB,OAAOF,GAAG,CAACG,MAAM,EAAE;IACf;IACA,IAAMC,KAAK,GAAGJ,GAAG,CAACK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;;IAE/B;IACAH,OAAO,CAACI,IAAI,CAACL,QAAQ,CAACG,KAAK,CAAC,CAAC;EACjC;;EAEA;EACA,OAAOG,OAAO,CAACC,GAAG,CAACN,OAAO,CAAC,CAACO,IAAI,CAAEC,OAAO,IAAKA,OAAO,CAACC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,IAAI,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;AAClF"} +\ No newline at end of file +diff --git a/node_modules/rxdb/dist/lib/plugins/replication-firestore/firestore-types.js b/node_modules/rxdb/dist/lib/plugins/replication-firestore/firestore-types.js +deleted file mode 100644 +index 74386df..0000000 +--- a/node_modules/rxdb/dist/lib/plugins/replication-firestore/firestore-types.js ++++ /dev/null +@@ -1,2 +0,0 @@ +-"use strict"; +-//# sourceMappingURL=firestore-types.js.map +\ No newline at end of file +diff --git a/node_modules/rxdb/dist/lib/plugins/replication-firestore/firestore-types.js.map b/node_modules/rxdb/dist/lib/plugins/replication-firestore/firestore-types.js.map +deleted file mode 100644 +index 1bd05e8..0000000 +--- a/node_modules/rxdb/dist/lib/plugins/replication-firestore/firestore-types.js.map ++++ /dev/null +@@ -1 +0,0 @@ +-{"version":3,"file":"firestore-types.js","names":[],"sources":["../../../../src/plugins/replication-firestore/firestore-types.ts"],"sourcesContent":["import type {\n MaybePromise,\n ReplicationOptions,\n ReplicationPullOptions,\n ReplicationPushOptions,\n WithDeleted\n} from '../../types';\n\nimport type {\n CollectionReference,\n Firestore,\n QueryFieldFilterConstraint,\n QuerySnapshot\n} from 'firebase/firestore';\n\nexport type FirestoreCheckpointType = {\n id: string;\n /**\n * Firestore internally sets the time to an object like\n * {\n * \"seconds\": 1669807105,\n * \"nanoseconds\": 476000000\n * }\n * But to be able to query that, we have to use a date string\n * like '2022-11-30T11:18:25.141Z'\n * so we store that string instead.\n */\n serverTimestamp: string;\n};\nexport type FirestoreCollection = CollectionReference;\n\nexport type FirestoreOptions = {\n projectId: string;\n collection: FirestoreCollection;\n database: Firestore;\n};\n\nexport type FirestoreSyncPullOptions =\n Omit, 'handler' | 'stream$'>\n & {\n filter?: QueryFieldFilterConstraint | QueryFieldFilterConstraint[];\n };\n\nexport type FirestoreSyncPushOptions = Omit, 'handler'>\n & {\n filter?(item: WithDeleted): MaybePromise;\n };\n\nexport type SyncOptionsFirestore = Omit<\n ReplicationOptions,\n 'pull' | 'push' | 'replicationIdentifier'\n> & {\n firestore: FirestoreOptions;\n /**\n * In firestore it is not possible to read out\n * the internally used write timestamp.\n * Even if we could read it out, it is not indexed which\n * is required for fetch 'changes-since-x'.\n * So instead we have to rely on a custom user defined field\n * that contains the server time which is set by firestore via serverTimestamp()\n * IMPORTANT: The serverTimestampField MUST NOT be part of the collections RxJsonSchema!\n * [default='serverTimestamp']\n * @link https://groups.google.com/g/firebase-talk/c/tAmPzPei-mE\n */\n serverTimestampField?: string;\n pull?: FirestoreSyncPullOptions;\n push?: FirestoreSyncPushOptions;\n};\n\nexport type GetQuery = (ids: string[]) => Promise>;\n"],"mappings":""} +\ No newline at end of file +diff --git a/node_modules/rxdb/dist/lib/plugins/replication-firestore/index.js b/node_modules/rxdb/dist/lib/plugins/replication-firestore/index.js +deleted file mode 100644 +index 352b6cc..0000000 +--- a/node_modules/rxdb/dist/lib/plugins/replication-firestore/index.js ++++ /dev/null +@@ -1,262 +0,0 @@ +-"use strict"; +- +-var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +-Object.defineProperty(exports, "__esModule", { +- value: true +-}); +-var _exportNames = { +- RxFirestoreReplicationState: true, +- replicateFirestore: true +-}; +-exports.RxFirestoreReplicationState = void 0; +-exports.replicateFirestore = replicateFirestore; +-var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose")); +-var _utils = require("../../plugins/utils"); +-var _firestore = require("firebase/firestore"); +-var _leaderElection = require("../leader-election"); +-var _replication = require("../replication"); +-var _ = require("../../"); +-var _rxjs = require("rxjs"); +-var _firestoreHelper = require("./firestore-helper"); +-Object.keys(_firestoreHelper).forEach(function (key) { +- if (key === "default" || key === "__esModule") return; +- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; +- if (key in exports && exports[key] === _firestoreHelper[key]) return; +- Object.defineProperty(exports, key, { +- enumerable: true, +- get: function () { +- return _firestoreHelper[key]; +- } +- }); +-}); +-var _firestoreTypes = require("./firestore-types"); +-Object.keys(_firestoreTypes).forEach(function (key) { +- if (key === "default" || key === "__esModule") return; +- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; +- if (key in exports && exports[key] === _firestoreTypes[key]) return; +- Object.defineProperty(exports, key, { +- enumerable: true, +- get: function () { +- return _firestoreTypes[key]; +- } +- }); +-}); +-var RxFirestoreReplicationState = /*#__PURE__*/function (_RxReplicationState) { +- (0, _inheritsLoose2.default)(RxFirestoreReplicationState, _RxReplicationState); +- function RxFirestoreReplicationState(firestore, replicationIdentifierHash, collection, pull, push, live = true, retryTime = 1000 * 5, autoStart = true) { +- var _this; +- _this = _RxReplicationState.call(this, replicationIdentifierHash, collection, '_deleted', pull, push, live, retryTime, autoStart) || this; +- _this.firestore = firestore; +- _this.replicationIdentifierHash = replicationIdentifierHash; +- _this.collection = collection; +- _this.pull = pull; +- _this.push = push; +- _this.live = live; +- _this.retryTime = retryTime; +- _this.autoStart = autoStart; +- return _this; +- } +- return RxFirestoreReplicationState; +-}(_replication.RxReplicationState); +-exports.RxFirestoreReplicationState = RxFirestoreReplicationState; +-function replicateFirestore(options) { +- var collection = options.collection; +- (0, _.addRxPlugin)(_leaderElection.RxDBLeaderElectionPlugin); +- var pullStream$ = new _rxjs.Subject(); +- var replicationPrimitivesPull; +- options.live = typeof options.live === 'undefined' ? true : options.live; +- options.waitForLeadership = typeof options.waitForLeadership === 'undefined' ? true : options.waitForLeadership; +- var serverTimestampField = typeof options.serverTimestampField === 'undefined' ? 'serverTimestamp' : options.serverTimestampField; +- options.serverTimestampField = serverTimestampField; +- var primaryPath = collection.schema.primaryPath; +- +- /** +- * The serverTimestampField MUST NOT be part of the collections RxJsonSchema. +- */ +- var schemaPart = (0, _.getSchemaByObjectPath)(collection.schema.jsonSchema, serverTimestampField); +- if (schemaPart || +- // also must not be nested. +- serverTimestampField.includes('.')) { +- throw (0, _.newRxError)('RC6', { +- field: serverTimestampField, +- schema: collection.schema.jsonSchema +- }); +- } +- var pullFilters = options.pull?.filter !== undefined ? (0, _utils.toArray)(options.pull.filter) : []; +- var pullQuery = (0, _firestore.query)(options.firestore.collection, ...pullFilters); +- if (options.pull) { +- replicationPrimitivesPull = { +- async handler(lastPulledCheckpoint, batchSize) { +- var newerQuery; +- var sameTimeQuery; +- if (lastPulledCheckpoint) { +- var lastServerTimestamp = (0, _firestoreHelper.isoStringToServerTimestamp)(lastPulledCheckpoint.serverTimestamp); +- newerQuery = (0, _firestore.query)(pullQuery, (0, _firestore.where)(serverTimestampField, '>', lastServerTimestamp), (0, _firestore.orderBy)(serverTimestampField, 'asc'), (0, _firestore.limit)(batchSize)); +- sameTimeQuery = (0, _firestore.query)(pullQuery, (0, _firestore.where)(serverTimestampField, '==', lastServerTimestamp), (0, _firestore.where)(primaryPath, '>', lastPulledCheckpoint.id), (0, _firestore.orderBy)(primaryPath, 'asc'), (0, _firestore.limit)(batchSize)); +- } else { +- newerQuery = (0, _firestore.query)(pullQuery, (0, _firestore.orderBy)(serverTimestampField, 'asc'), (0, _firestore.limit)(batchSize)); +- } +- var mustsReRun = true; +- var useDocs = []; +- while (mustsReRun) { +- /** +- * Local writes that have not been persisted to the server +- * are in pending state and do not have a correct serverTimestamp set. +- * We have to ensure we only use document states that are in sync with the server. +- * @link https://medium.com/firebase-developers/the-secrets-of-firestore-fieldvalue-servertimestamp-revealed-29dd7a38a82b +- */ +- await (0, _firestore.waitForPendingWrites)(options.firestore.database); +- await (0, _firestore.runTransaction)(options.firestore.database, async _tx => { +- useDocs = []; +- var [newerQueryResult, sameTimeQueryResult] = await Promise.all([(0, _firestore.getDocs)(newerQuery), sameTimeQuery ? (0, _firestore.getDocs)(sameTimeQuery) : undefined]); +- if (newerQueryResult.metadata.hasPendingWrites || sameTimeQuery && (0, _utils.ensureNotFalsy)(sameTimeQueryResult).metadata.hasPendingWrites) { +- return; +- } else { +- mustsReRun = false; +- if (sameTimeQuery) { +- useDocs = (0, _utils.ensureNotFalsy)(sameTimeQueryResult).docs; +- } +- var missingAmount = batchSize - useDocs.length; +- if (missingAmount > 0) { +- var additionalDocs = newerQueryResult.docs.slice(0, missingAmount).filter(x => !!x); +- (0, _utils.appendToArray)(useDocs, additionalDocs); +- } +- } +- }); +- } +- if (useDocs.length === 0) { +- return { +- checkpoint: lastPulledCheckpoint, +- documents: [] +- }; +- } +- var lastDoc = (0, _utils.ensureNotFalsy)((0, _utils.lastOfArray)(useDocs)); +- var documents = useDocs.map(row => (0, _firestoreHelper.firestoreRowToDocData)(serverTimestampField, primaryPath, row)); +- var newCheckpoint = { +- id: lastDoc.id, +- serverTimestamp: (0, _firestoreHelper.serverTimestampToIsoString)(serverTimestampField, lastDoc.data()) +- }; +- var ret = { +- documents: documents, +- checkpoint: newCheckpoint +- }; +- return ret; +- }, +- batchSize: (0, _utils.ensureNotFalsy)(options.pull).batchSize, +- modifier: (0, _utils.ensureNotFalsy)(options.pull).modifier, +- stream$: pullStream$.asObservable() +- }; +- } +- var replicationPrimitivesPush; +- if (options.push) { +- var pushFilter = options.push?.filter; +- replicationPrimitivesPush = { +- async handler(rows) { +- if (pushFilter !== undefined) { +- rows = await (0, _utils.asyncFilter)(rows, row => pushFilter(row.newDocumentState)); +- } +- var writeRowsById = {}; +- var docIds = rows.map(row => { +- var docId = row.newDocumentState[primaryPath]; +- writeRowsById[docId] = row; +- return docId; +- }); +- await (0, _firestore.waitForPendingWrites)(options.firestore.database); +- var conflicts = []; +- +- /** +- * Everything must run INSIDE of the transaction +- * because on tx-errors, firebase will re-run the transaction on some cases. +- * @link https://firebase.google.com/docs/firestore/manage-data/transactions#transaction_failure +- * @link https://firebase.google.com/docs/firestore/manage-data/transactions +- */ +- await (0, _firestore.runTransaction)(options.firestore.database, async _tx => { +- conflicts = []; // reset in case the tx has re-run. +- /** +- * @link https://stackoverflow.com/a/48423626/3443137 +- */ +- +- var getQuery = ids => { +- return (0, _firestore.getDocs)((0, _firestore.query)(options.firestore.collection, (0, _firestore.where)((0, _firestore.documentId)(), 'in', ids))); +- }; +- var docsInDbResult = await (0, _firestoreHelper.getContentByIds)(docIds, getQuery); +- var docsInDbById = {}; +- docsInDbResult.forEach(row => { +- var docDataInDb = (0, _firestoreHelper.stripServerTimestampField)(serverTimestampField, row.data()); +- var docId = row.id; +- docDataInDb[primaryPath] = docId; +- docsInDbById[docId] = docDataInDb; +- }); +- +- /** +- * @link https://firebase.google.com/docs/firestore/manage-data/transactions#batched-writes +- */ +- var batch = (0, _firestore.writeBatch)(options.firestore.database); +- var hasWrite = false; +- await Promise.all(Object.entries(writeRowsById).map(async ([docId, writeRow]) => { +- var docInDb = docsInDbById[docId]; +- if (docInDb && (!writeRow.assumedMasterState || (await collection.conflictHandler({ +- newDocumentState: docInDb, +- realMasterState: writeRow.assumedMasterState +- }, 'replication-firestore-push')).isEqual === false)) { +- // conflict +- conflicts.push(docInDb); +- } else { +- // no conflict +- hasWrite = true; +- var docRef = (0, _firestore.doc)(options.firestore.collection, docId); +- var writeDocData = (0, _utils.flatClone)(writeRow.newDocumentState); +- writeDocData[serverTimestampField] = (0, _firestore.serverTimestamp)(); +- if (!docInDb) { +- // insert +- batch.set(docRef, (0, _firestoreHelper.stripPrimaryKey)(primaryPath, writeDocData)); +- } else { +- // update +- batch.update(docRef, (0, _firestoreHelper.stripPrimaryKey)(primaryPath, writeDocData)); +- } +- } +- })); +- if (hasWrite) { +- await batch.commit(); +- } +- }); +- await (0, _firestore.waitForPendingWrites)(options.firestore.database); +- return conflicts; +- }, +- batchSize: options.push.batchSize, +- modifier: options.push.modifier +- }; +- } +- var replicationState = new RxFirestoreReplicationState(options.firestore, _firestoreHelper.FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX + options.collection.database.hashFunction(options.firestore.projectId), collection, replicationPrimitivesPull, replicationPrimitivesPush, options.live, options.retryTime, options.autoStart); +- +- /** +- * Use long polling to get live changes for the pull.stream$ +- */ +- if (options.live && options.pull) { +- var startBefore = replicationState.start.bind(replicationState); +- var cancelBefore = replicationState.cancel.bind(replicationState); +- replicationState.start = () => { +- var lastChangeQuery = (0, _firestore.query)(pullQuery, (0, _firestore.orderBy)(serverTimestampField, 'desc'), (0, _firestore.limit)(1)); +- var unsubscribe = (0, _firestore.onSnapshot)(lastChangeQuery, _querySnapshot => { +- /** +- * There is no good way to observe the event stream in firestore. +- * So instead we listen to any write to the collection +- * and then emit a 'RESYNC' flag. +- */ +- replicationState.reSync(); +- }, error => { +- replicationState.subjects.error.next((0, _.newRxError)('RC_STREAM', { +- error: (0, _utils.errorToPlainJson)(error) +- })); +- }); +- replicationState.cancel = () => { +- unsubscribe(); +- return cancelBefore(); +- }; +- return startBefore(); +- }; +- } +- (0, _replication.startReplicationOnLeaderShip)(options.waitForLeadership, replicationState); +- return replicationState; +-} +-//# sourceMappingURL=index.js.map +\ No newline at end of file +diff --git a/node_modules/rxdb/dist/lib/plugins/replication-firestore/index.js.map b/node_modules/rxdb/dist/lib/plugins/replication-firestore/index.js.map +deleted file mode 100644 +index 65dd52d..0000000 +--- a/node_modules/rxdb/dist/lib/plugins/replication-firestore/index.js.map ++++ /dev/null +@@ -1 +0,0 @@ +-{"version":3,"file":"index.js","names":["_utils","require","_firestore","_leaderElection","_replication","_","_rxjs","_firestoreHelper","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_firestoreTypes","RxFirestoreReplicationState","_RxReplicationState","_inheritsLoose2","default","firestore","replicationIdentifierHash","collection","pull","push","live","retryTime","autoStart","_this","RxReplicationState","replicateFirestore","options","addRxPlugin","RxDBLeaderElectionPlugin","pullStream$","Subject","replicationPrimitivesPull","waitForLeadership","serverTimestampField","primaryPath","schema","schemaPart","getSchemaByObjectPath","jsonSchema","includes","newRxError","field","pullFilters","filter","undefined","toArray","pullQuery","query","handler","lastPulledCheckpoint","batchSize","newerQuery","sameTimeQuery","lastServerTimestamp","isoStringToServerTimestamp","serverTimestamp","where","orderBy","limit","id","mustsReRun","useDocs","waitForPendingWrites","database","runTransaction","_tx","newerQueryResult","sameTimeQueryResult","Promise","all","getDocs","metadata","hasPendingWrites","ensureNotFalsy","docs","missingAmount","length","additionalDocs","slice","x","appendToArray","checkpoint","documents","lastDoc","lastOfArray","map","row","firestoreRowToDocData","newCheckpoint","serverTimestampToIsoString","data","ret","modifier","stream$","asObservable","replicationPrimitivesPush","pushFilter","rows","asyncFilter","newDocumentState","writeRowsById","docIds","docId","conflicts","getQuery","ids","documentId","docsInDbResult","getContentByIds","docsInDbById","docDataInDb","stripServerTimestampField","batch","writeBatch","hasWrite","entries","writeRow","docInDb","assumedMasterState","conflictHandler","realMasterState","isEqual","docRef","doc","writeDocData","flatClone","set","stripPrimaryKey","update","commit","replicationState","FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX","hashFunction","projectId","startBefore","start","bind","cancelBefore","cancel","lastChangeQuery","unsubscribe","onSnapshot","_querySnapshot","reSync","error","subjects","next","errorToPlainJson","startReplicationOnLeaderShip"],"sources":["../../../../src/plugins/replication-firestore/index.ts"],"sourcesContent":["import {\n appendToArray,\n asyncFilter,\n ensureNotFalsy,\n errorToPlainJson,\n flatClone,\n lastOfArray,\n toArray\n} from '../../plugins/utils';\n\nimport {\n doc,\n query,\n where,\n orderBy,\n limit,\n getDocs,\n onSnapshot,\n runTransaction,\n writeBatch,\n serverTimestamp,\n QueryDocumentSnapshot,\n waitForPendingWrites,\n documentId\n} from 'firebase/firestore';\n\nimport { RxDBLeaderElectionPlugin } from '../leader-election';\nimport type {\n RxCollection,\n ReplicationPullOptions,\n ReplicationPushOptions,\n RxReplicationWriteToMasterRow,\n RxReplicationPullStreamItem\n} from '../../types';\nimport {\n RxReplicationState,\n startReplicationOnLeaderShip\n} from '../replication';\nimport {\n addRxPlugin,\n ById,\n getSchemaByObjectPath,\n newRxError,\n WithDeleted\n} from '../../';\n\nimport type {\n FirestoreCheckpointType,\n FirestoreOptions,\n SyncOptionsFirestore\n} from './firestore-types';\nimport { Subject } from 'rxjs';\nimport {\n firestoreRowToDocData,\n FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX,\n getContentByIds,\n isoStringToServerTimestamp,\n serverTimestampToIsoString,\n stripPrimaryKey,\n stripServerTimestampField\n} from './firestore-helper';\n\nexport * from './firestore-helper';\nexport * from './firestore-types';\n\nexport class RxFirestoreReplicationState extends RxReplicationState {\n constructor(\n public readonly firestore: FirestoreOptions,\n public readonly replicationIdentifierHash: string,\n public readonly collection: RxCollection,\n public readonly pull?: ReplicationPullOptions,\n public readonly push?: ReplicationPushOptions,\n public readonly live: boolean = true,\n public retryTime: number = 1000 * 5,\n public autoStart: boolean = true\n ) {\n super(\n replicationIdentifierHash,\n collection,\n '_deleted',\n pull,\n push,\n live,\n retryTime,\n autoStart\n );\n }\n}\n\nexport function replicateFirestore(\n options: SyncOptionsFirestore\n): RxFirestoreReplicationState {\n const collection = options.collection;\n addRxPlugin(RxDBLeaderElectionPlugin);\n const pullStream$: Subject> = new Subject();\n let replicationPrimitivesPull: ReplicationPullOptions | undefined;\n options.live = typeof options.live === 'undefined' ? true : options.live;\n options.waitForLeadership = typeof options.waitForLeadership === 'undefined' ? true : options.waitForLeadership;\n const serverTimestampField = typeof options.serverTimestampField === 'undefined' ? 'serverTimestamp' : options.serverTimestampField;\n options.serverTimestampField = serverTimestampField;\n const primaryPath = collection.schema.primaryPath;\n\n /**\n * The serverTimestampField MUST NOT be part of the collections RxJsonSchema.\n */\n const schemaPart = getSchemaByObjectPath(collection.schema.jsonSchema, serverTimestampField);\n if (\n schemaPart ||\n // also must not be nested.\n serverTimestampField.includes('.')\n ) {\n throw newRxError('RC6', {\n field: serverTimestampField,\n schema: collection.schema.jsonSchema\n });\n }\n\n const pullFilters = options.pull?.filter !== undefined\n ? toArray(options.pull.filter)\n : [];\n\n const pullQuery = query(options.firestore.collection, ...pullFilters);\n\n if (options.pull) {\n replicationPrimitivesPull = {\n async handler(\n lastPulledCheckpoint: FirestoreCheckpointType,\n batchSize: number\n ) {\n let newerQuery: ReturnType;\n let sameTimeQuery: ReturnType | undefined;\n\n if (lastPulledCheckpoint) {\n const lastServerTimestamp = isoStringToServerTimestamp(lastPulledCheckpoint.serverTimestamp);\n newerQuery = query(pullQuery,\n where(serverTimestampField, '>', lastServerTimestamp),\n orderBy(serverTimestampField, 'asc'),\n limit(batchSize)\n );\n sameTimeQuery = query(pullQuery,\n where(serverTimestampField, '==', lastServerTimestamp),\n where(primaryPath, '>', lastPulledCheckpoint.id),\n orderBy(primaryPath, 'asc'),\n limit(batchSize)\n );\n } else {\n newerQuery = query(pullQuery,\n orderBy(serverTimestampField, 'asc'),\n limit(batchSize)\n );\n }\n\n let mustsReRun = true;\n let useDocs: QueryDocumentSnapshot[] = [];\n while (mustsReRun) {\n /**\n * Local writes that have not been persisted to the server\n * are in pending state and do not have a correct serverTimestamp set.\n * We have to ensure we only use document states that are in sync with the server.\n * @link https://medium.com/firebase-developers/the-secrets-of-firestore-fieldvalue-servertimestamp-revealed-29dd7a38a82b\n */\n await waitForPendingWrites(options.firestore.database);\n await runTransaction(options.firestore.database, async (_tx) => {\n useDocs = [];\n const [\n newerQueryResult,\n sameTimeQueryResult\n ] = await Promise.all([\n getDocs(newerQuery),\n sameTimeQuery ? getDocs(sameTimeQuery) : undefined\n ]);\n\n if (\n newerQueryResult.metadata.hasPendingWrites ||\n (sameTimeQuery && ensureNotFalsy(sameTimeQueryResult).metadata.hasPendingWrites)\n ) {\n return;\n } else {\n mustsReRun = false;\n\n if (sameTimeQuery) {\n useDocs = ensureNotFalsy(sameTimeQueryResult).docs as any;\n }\n const missingAmount = batchSize - useDocs.length;\n if (missingAmount > 0) {\n const additionalDocs = newerQueryResult.docs.slice(0, missingAmount).filter(x => !!x);\n appendToArray(useDocs, additionalDocs);\n }\n }\n });\n }\n\n if (useDocs.length === 0) {\n return {\n checkpoint: lastPulledCheckpoint,\n documents: []\n };\n }\n const lastDoc = ensureNotFalsy(lastOfArray(useDocs));\n const documents: WithDeleted[] = useDocs\n .map(row => firestoreRowToDocData(\n serverTimestampField,\n primaryPath,\n row\n ));\n const newCheckpoint: FirestoreCheckpointType = {\n id: lastDoc.id,\n serverTimestamp: serverTimestampToIsoString(serverTimestampField, lastDoc.data())\n };\n const ret = {\n documents: documents,\n checkpoint: newCheckpoint\n };\n return ret;\n },\n batchSize: ensureNotFalsy(options.pull).batchSize,\n modifier: ensureNotFalsy(options.pull).modifier,\n stream$: pullStream$.asObservable()\n };\n }\n\n let replicationPrimitivesPush: ReplicationPushOptions | undefined;\n if (options.push) {\n const pushFilter = options.push?.filter;\n replicationPrimitivesPush = {\n async handler(\n rows: RxReplicationWriteToMasterRow[]\n ) {\n if (pushFilter !== undefined) {\n rows = await asyncFilter(rows, (row) => pushFilter(row.newDocumentState));\n }\n\n const writeRowsById: ById> = {};\n const docIds: string[] = rows.map(row => {\n const docId = (row.newDocumentState as any)[primaryPath];\n writeRowsById[docId] = row;\n return docId;\n });\n await waitForPendingWrites(options.firestore.database);\n let conflicts: WithDeleted[] = [];\n\n /**\n * Everything must run INSIDE of the transaction\n * because on tx-errors, firebase will re-run the transaction on some cases.\n * @link https://firebase.google.com/docs/firestore/manage-data/transactions#transaction_failure\n * @link https://firebase.google.com/docs/firestore/manage-data/transactions\n */\n await runTransaction(options.firestore.database, async (_tx) => {\n conflicts = []; // reset in case the tx has re-run.\n /**\n * @link https://stackoverflow.com/a/48423626/3443137\n */\n\n const getQuery = (ids: string[]) => {\n return getDocs(\n query(\n options.firestore.collection,\n where(documentId(), 'in', ids)\n )\n );\n };\n\n const docsInDbResult = await getContentByIds(docIds, getQuery);\n\n const docsInDbById: ById = {};\n docsInDbResult.forEach(row => {\n const docDataInDb = stripServerTimestampField(serverTimestampField, row.data());\n const docId = row.id;\n (docDataInDb as any)[primaryPath] = docId;\n docsInDbById[docId] = docDataInDb;\n });\n\n /**\n * @link https://firebase.google.com/docs/firestore/manage-data/transactions#batched-writes\n */\n const batch = writeBatch(options.firestore.database);\n let hasWrite = false;\n await Promise.all(\n Object.entries(writeRowsById).map(async ([docId, writeRow]) => {\n const docInDb: RxDocType | undefined = docsInDbById[docId];\n\n if (\n docInDb &&\n (\n !writeRow.assumedMasterState ||\n (await collection.conflictHandler({\n newDocumentState: docInDb as any,\n realMasterState: writeRow.assumedMasterState\n }, 'replication-firestore-push')).isEqual === false\n )\n ) {\n // conflict\n conflicts.push(docInDb as any);\n } else {\n // no conflict\n hasWrite = true;\n const docRef = doc(options.firestore.collection, docId);\n const writeDocData = flatClone(writeRow.newDocumentState);\n (writeDocData as any)[serverTimestampField] = serverTimestamp();\n if (!docInDb) {\n // insert\n batch.set(docRef, stripPrimaryKey(primaryPath, writeDocData));\n } else {\n // update\n batch.update(docRef, stripPrimaryKey(primaryPath, writeDocData));\n }\n }\n })\n );\n\n if (hasWrite) {\n await batch.commit();\n }\n });\n await waitForPendingWrites(options.firestore.database);\n return conflicts;\n },\n batchSize: options.push.batchSize,\n modifier: options.push.modifier\n };\n }\n\n\n const replicationState = new RxFirestoreReplicationState(\n options.firestore,\n FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX + options.collection.database.hashFunction(options.firestore.projectId),\n collection,\n replicationPrimitivesPull,\n replicationPrimitivesPush,\n options.live,\n options.retryTime,\n options.autoStart\n );\n\n /**\n * Use long polling to get live changes for the pull.stream$\n */\n if (options.live && options.pull) {\n const startBefore = replicationState.start.bind(replicationState);\n const cancelBefore = replicationState.cancel.bind(replicationState);\n replicationState.start = () => {\n const lastChangeQuery = query(\n pullQuery,\n orderBy(serverTimestampField, 'desc'),\n limit(1)\n );\n const unsubscribe = onSnapshot(\n lastChangeQuery,\n (_querySnapshot) => {\n /**\n * There is no good way to observe the event stream in firestore.\n * So instead we listen to any write to the collection\n * and then emit a 'RESYNC' flag.\n */\n replicationState.reSync();\n },\n (error) => {\n replicationState.subjects.error.next(\n newRxError('RC_STREAM', { error: errorToPlainJson(error) })\n );\n }\n );\n replicationState.cancel = () => {\n unsubscribe();\n return cancelBefore();\n };\n return startBefore();\n };\n }\n\n startReplicationOnLeaderShip(options.waitForLeadership, replicationState);\n\n return replicationState;\n}\n"],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/rxdb/dist/types/plugins/encryption-crypto-js/index.d.ts b/node_modules/rxdb/dist/types/plugins/encryption-crypto-js/index.d.ts +deleted file mode 100644 +index 3d17d46..0000000 +--- a/node_modules/rxdb/dist/types/plugins/encryption-crypto-js/index.d.ts ++++ /dev/null +@@ -1,10 +0,0 @@ +-import type { InternalStoreDocType, RxStorage } from '../../types'; +-export declare const MINIMUM_PASSWORD_LENGTH: 8; +-export declare function encryptString(value: string, password: string): string; +-export declare function decryptString(cipherText: string, password: any): string; +-export type InternalStorePasswordDocType = InternalStoreDocType<{ +- hash: string; +-}>; +-export declare function wrappedKeyEncryptionCryptoJsStorage(args: { +- storage: RxStorage; +-}): RxStorage; +diff --git a/node_modules/rxdb/dist/types/plugins/replication-firestore/firestore-helper.d.ts b/node_modules/rxdb/dist/types/plugins/replication-firestore/firestore-helper.d.ts +deleted file mode 100644 +index 4b63d84..0000000 +--- a/node_modules/rxdb/dist/types/plugins/replication-firestore/firestore-helper.d.ts ++++ /dev/null +@@ -1,11 +0,0 @@ +-import { QueryDocumentSnapshot, Timestamp } from 'firebase/firestore'; +-import type { WithDeleted } from '../../types'; +-import type { GetQuery } from './firestore-types'; +-export declare const FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX = "firestore"; +-export declare function getFirestoreSortFieldValue(docData: any, primaryKey: string): string; +-export declare function stripServerTimestampField(serverTimestampField: string, docData: RxDocType): WithDeleted; +-export declare function serverTimestampToIsoString(serverTimestampField: string, docData: any): string; +-export declare function isoStringToServerTimestamp(isoString: string): Timestamp; +-export declare function firestoreRowToDocData(serverTimestampField: string, primaryPath: string, row: QueryDocumentSnapshot): WithDeleted; +-export declare function stripPrimaryKey(primaryPath: string, docData: any): any; +-export declare function getContentByIds(ids: string[], getQuery: GetQuery): Promise[]>; +diff --git a/node_modules/rxdb/dist/types/plugins/replication-firestore/firestore-types.d.ts b/node_modules/rxdb/dist/types/plugins/replication-firestore/firestore-types.d.ts +deleted file mode 100644 +index d5bc338..0000000 +--- a/node_modules/rxdb/dist/types/plugins/replication-firestore/firestore-types.d.ts ++++ /dev/null +@@ -1,46 +0,0 @@ +-import type { MaybePromise, ReplicationOptions, ReplicationPullOptions, ReplicationPushOptions, WithDeleted } from '../../types'; +-import type { CollectionReference, Firestore, QueryFieldFilterConstraint, QuerySnapshot } from 'firebase/firestore'; +-export type FirestoreCheckpointType = { +- id: string; +- /** +- * Firestore internally sets the time to an object like +- * { +- * "seconds": 1669807105, +- * "nanoseconds": 476000000 +- * } +- * But to be able to query that, we have to use a date string +- * like '2022-11-30T11:18:25.141Z' +- * so we store that string instead. +- */ +- serverTimestamp: string; +-}; +-export type FirestoreCollection = CollectionReference; +-export type FirestoreOptions = { +- projectId: string; +- collection: FirestoreCollection; +- database: Firestore; +-}; +-export type FirestoreSyncPullOptions = Omit, 'handler' | 'stream$'> & { +- filter?: QueryFieldFilterConstraint | QueryFieldFilterConstraint[]; +-}; +-export type FirestoreSyncPushOptions = Omit, 'handler'> & { +- filter?(item: WithDeleted): MaybePromise; +-}; +-export type SyncOptionsFirestore = Omit, 'pull' | 'push' | 'replicationIdentifier'> & { +- firestore: FirestoreOptions; +- /** +- * In firestore it is not possible to read out +- * the internally used write timestamp. +- * Even if we could read it out, it is not indexed which +- * is required for fetch 'changes-since-x'. +- * So instead we have to rely on a custom user defined field +- * that contains the server time which is set by firestore via serverTimestamp() +- * IMPORTANT: The serverTimestampField MUST NOT be part of the collections RxJsonSchema! +- * [default='serverTimestamp'] +- * @link https://groups.google.com/g/firebase-talk/c/tAmPzPei-mE +- */ +- serverTimestampField?: string; +- pull?: FirestoreSyncPullOptions; +- push?: FirestoreSyncPushOptions; +-}; +-export type GetQuery = (ids: string[]) => Promise>; +diff --git a/node_modules/rxdb/dist/types/plugins/replication-firestore/index.d.ts b/node_modules/rxdb/dist/types/plugins/replication-firestore/index.d.ts +deleted file mode 100644 +index afebc53..0000000 +--- a/node_modules/rxdb/dist/types/plugins/replication-firestore/index.d.ts ++++ /dev/null +@@ -1,17 +0,0 @@ +-import type { RxCollection, ReplicationPullOptions, ReplicationPushOptions } from '../../types'; +-import { RxReplicationState } from '../replication'; +-import type { FirestoreCheckpointType, FirestoreOptions, SyncOptionsFirestore } from './firestore-types'; +-export * from './firestore-helper'; +-export * from './firestore-types'; +-export declare class RxFirestoreReplicationState extends RxReplicationState { +- readonly firestore: FirestoreOptions; +- readonly replicationIdentifierHash: string; +- readonly collection: RxCollection; +- readonly pull?: ReplicationPullOptions | undefined; +- readonly push?: ReplicationPushOptions | undefined; +- readonly live: boolean; +- retryTime: number; +- autoStart: boolean; +- constructor(firestore: FirestoreOptions, replicationIdentifierHash: string, collection: RxCollection, pull?: ReplicationPullOptions | undefined, push?: ReplicationPushOptions | undefined, live?: boolean, retryTime?: number, autoStart?: boolean); +-} +-export declare function replicateFirestore(options: SyncOptionsFirestore): RxFirestoreReplicationState; +diff --git a/node_modules/rxdb/patched/enabled b/node_modules/rxdb/patched/enabled +new file mode 100644 +index 0000000..f32a580 +--- /dev/null ++++ b/node_modules/rxdb/patched/enabled +@@ -0,0 +1 @@ ++true +\ No newline at end of file +diff --git a/node_modules/rxdb/plugins/encryption-crypto-js/package.json b/node_modules/rxdb/plugins/encryption-crypto-js/package.json +deleted file mode 100644 +index 423671b..0000000 +--- a/node_modules/rxdb/plugins/encryption-crypto-js/package.json ++++ /dev/null +@@ -1,10 +0,0 @@ +-{ +- "name": "rxdb-plugins-encryption-crypto-js", +- "description": "This package.json file is generated by the \"npm run build:plugins\" script, do not edit it manually!", +- "main": "../../dist/lib/plugins/encryption-crypto-js/index.js", +- "module": "../../dist/es/plugins/encryption-crypto-js/index.js", +- "es2015": "../../dist/es/plugins/encryption-crypto-js/index.js", +- "jsnext:main": "../../dist/es/plugins/encryption-crypto-js/index.js", +- "types": "../../dist/types/plugins/encryption-crypto-js/index.d.ts", +- "sideEffects": false +-} +\ No newline at end of file +diff --git a/node_modules/rxdb/plugins/replication-firestore/package.json b/node_modules/rxdb/plugins/replication-firestore/package.json +deleted file mode 100644 +index a5101a9..0000000 +--- a/node_modules/rxdb/plugins/replication-firestore/package.json ++++ /dev/null +@@ -1,10 +0,0 @@ +-{ +- "name": "rxdb-plugins-replication-firestore", +- "description": "This package.json file is generated by the \"npm run build:plugins\" script, do not edit it manually!", +- "main": "../../dist/lib/plugins/replication-firestore/index.js", +- "module": "../../dist/es/plugins/replication-firestore/index.js", +- "es2015": "../../dist/es/plugins/replication-firestore/index.js", +- "jsnext:main": "../../dist/es/plugins/replication-firestore/index.js", +- "types": "../../dist/types/plugins/replication-firestore/index.d.ts", +- "sideEffects": false +-} +\ No newline at end of file +diff --git a/node_modules/rxdb/src/plugins/encryption-crypto-js/index.ts b/node_modules/rxdb/src/plugins/encryption-crypto-js/index.ts +deleted file mode 100644 +index 71b970b..0000000 +--- a/node_modules/rxdb/src/plugins/encryption-crypto-js/index.ts ++++ /dev/null +@@ -1,202 +0,0 @@ +-/** +- * this plugin adds the encryption-capabilities to rxdb +- * It's using crypto-js/aes for password-encryption +- * @link https://github.com/brix/crypto-js +- */ +-import AES from 'crypto-js/aes'; +-import * as cryptoEnc from 'crypto-js/enc-utf8'; +-import { wrapRxStorageInstance } from '../../plugin-helpers'; +-import { newRxError, newRxTypeError } from '../../rx-error'; +-import { hasEncryption } from '../../rx-storage-helper'; +-import type { +- InternalStoreDocType, +- RxAttachmentWriteData, +- RxDocumentData, +- RxDocumentWriteData, +- RxJsonSchema, +- RxStorage, +- RxStorageInstanceCreationParams +-} from '../../types'; +-import { +- b64DecodeUnicode, +- b64EncodeUnicode, +- clone, +- ensureNotFalsy, +- flatClone, +- getProperty, +- setProperty +-} from '../../plugins/utils'; +- +-export const MINIMUM_PASSWORD_LENGTH: 8 = 8; +- +- +-export function encryptString(value: string, password: string): string { +- const encrypted = AES.encrypt(value, password); +- return encrypted.toString(); +-} +- +-export function decryptString(cipherText: string, password: any): string { +- /** +- * Trying to decrypt non-strings +- * will cause no errors and will be hard to debug. +- * So instead we do this check here. +- */ +- if (typeof cipherText !== 'string') { +- throw newRxError('SNH', { +- args: { +- cipherText +- } +- }); +- } +- +- const decrypted = AES.decrypt(cipherText, password); +- const ret = decrypted.toString(cryptoEnc); +- return ret; +-} +- +-export type InternalStorePasswordDocType = InternalStoreDocType<{ +- hash: string; +-}>; +- +-export function wrappedKeyEncryptionCryptoJsStorage( +- args: { +- storage: RxStorage; +- } +-): RxStorage { +- return Object.assign( +- {}, +- args.storage, +- { +- async createStorageInstance( +- params: RxStorageInstanceCreationParams +- ) { +- if (typeof params.password !== 'undefined') { +- validatePassword(params.password as any); +- } +- +- if (!hasEncryption(params.schema)) { +- const retInstance = await args.storage.createStorageInstance(params); +- return retInstance; +- } +- +- if (!params.password) { +- throw newRxError('EN3', { +- database: params.databaseName, +- collection: params.collectionName, +- schema: params.schema +- }); +- } +- const password = params.password; +- +- const schemaWithoutEncrypted: RxJsonSchema> = clone(params.schema); +- delete schemaWithoutEncrypted.encrypted; +- if (schemaWithoutEncrypted.attachments) { +- schemaWithoutEncrypted.attachments.encrypted = false; +- } +- +- const instance = await args.storage.createStorageInstance( +- Object.assign( +- {}, +- params, +- { +- schema: schemaWithoutEncrypted +- } +- ) +- ); +- +- function modifyToStorage(docData: RxDocumentWriteData) { +- docData = cloneWithoutAttachments(docData); +- ensureNotFalsy(params.schema.encrypted) +- .forEach(path => { +- const value = getProperty(docData, path); +- if (typeof value === 'undefined') { +- return; +- } +- +- const stringValue = JSON.stringify(value); +- const encrypted = encryptString(stringValue, password); +- setProperty(docData, path, encrypted); +- }); +- +- // handle attachments +- if ( +- params.schema.attachments && +- params.schema.attachments.encrypted +- ) { +- const newAttachments: typeof docData._attachments = {}; +- Object.entries(docData._attachments).forEach(([id, attachment]) => { +- const useAttachment: RxAttachmentWriteData = flatClone(attachment) as any; +- if (useAttachment.data) { +- const dataString = useAttachment.data; +- useAttachment.data = b64EncodeUnicode(encryptString(dataString, password)); +- } +- newAttachments[id] = useAttachment; +- }); +- docData._attachments = newAttachments; +- } +- return docData; +- } +- function modifyFromStorage(docData: RxDocumentData): Promise> { +- docData = cloneWithoutAttachments(docData); +- ensureNotFalsy(params.schema.encrypted) +- .forEach(path => { +- const value = getProperty(docData, path); +- if (typeof value === 'undefined') { +- return; +- } +- const decrypted = decryptString(value, password); +- const decryptedParsed = JSON.parse(decrypted); +- setProperty(docData, path, decryptedParsed); +- }); +- return docData; +- } +- +- function modifyAttachmentFromStorage(attachmentData: string): string { +- if ( +- params.schema.attachments && +- params.schema.attachments.encrypted +- ) { +- const decrypted = decryptString(b64DecodeUnicode(attachmentData), password); +- return decrypted; +- } else { +- return attachmentData; +- } +- } +- +- return wrapRxStorageInstance( +- instance, +- modifyToStorage, +- modifyFromStorage, +- modifyAttachmentFromStorage +- ); +- } +- } +- ); +-} +- +- +- +- +- +-function cloneWithoutAttachments(data: RxDocumentWriteData): RxDocumentData { +- const attachments = data._attachments; +- data = flatClone(data); +- delete (data as any)._attachments; +- data = clone(data); +- data._attachments = attachments; +- return data as any; +-} +- +-function validatePassword(password: string) { +- if (typeof password !== 'string') { +- throw newRxTypeError('EN1', { +- password +- }); +- } +- if (password.length < MINIMUM_PASSWORD_LENGTH) { +- throw newRxError('EN2', { +- minPassLength: MINIMUM_PASSWORD_LENGTH, +- password +- }); +- } +-} +diff --git a/node_modules/rxdb/src/plugins/replication-firestore/firestore-helper.ts b/node_modules/rxdb/src/plugins/replication-firestore/firestore-helper.ts +deleted file mode 100644 +index ad34bbd..0000000 +--- a/node_modules/rxdb/src/plugins/replication-firestore/firestore-helper.ts ++++ /dev/null +@@ -1,76 +0,0 @@ +-import { +- QueryDocumentSnapshot, +- Timestamp +-} from 'firebase/firestore'; +-import type { +- WithDeleted +-} from '../../types'; +-import { flatClone, now } from '../../plugins/utils'; +-import type { GetQuery } from './firestore-types'; +- +-export const FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX = 'firestore'; +- +- +-export function getFirestoreSortFieldValue(docData: any, primaryKey: string): string { +- const timeString = now() + ''; +- return 'rxdb-' + timeString.padStart(15, '0') + '-' + docData[primaryKey]; +-} +- +-export function stripServerTimestampField( +- serverTimestampField: string, +- docData: RxDocType +-): WithDeleted { +- const data = flatClone(docData); +- delete (data as any)[serverTimestampField]; +- return data as any; +-} +- +- +-export function serverTimestampToIsoString(serverTimestampField: string, docData: any): string { +- const timestamp = (docData as any)[serverTimestampField]; +- const date: Date = timestamp.toDate(); +- return date.toISOString(); +-} +- +-export function isoStringToServerTimestamp(isoString: string): Timestamp { +- const date = new Date(isoString); +- return Timestamp.fromDate(date); +-} +- +-export function firestoreRowToDocData( +- serverTimestampField: string, +- primaryPath: string, +- row: QueryDocumentSnapshot +-): WithDeleted { +- const docData = stripServerTimestampField( +- serverTimestampField, +- row.data() +- ); +- (docData as any)[primaryPath] = row.id; +- return docData; +-} +- +-export function stripPrimaryKey( +- primaryPath: string, +- docData: any +-): any { +- docData = flatClone(docData); +- delete (docData as any)[primaryPath]; +- return docData; +-} +- +-// https://stackoverflow.com/questions/61354866/is-there-a-workaround-for-the-firebase-query-in-limit-to-10 +-export function getContentByIds(ids: string[], getQuery: GetQuery): Promise[]> { +- const batches = []; +- +- while (ids.length) { +- // firestore limits batches to 10 +- const batch = ids.splice(0, 10); +- +- // add the batch request to to a queue +- batches.push(getQuery(batch)); +- } +- +- // after all of the data is fetched, return it +- return Promise.all(batches).then((content) => content.map(i => i.docs).flat()); +-} +diff --git a/node_modules/rxdb/src/plugins/replication-firestore/firestore-types.ts b/node_modules/rxdb/src/plugins/replication-firestore/firestore-types.ts +deleted file mode 100644 +index 6f653ac..0000000 +--- a/node_modules/rxdb/src/plugins/replication-firestore/firestore-types.ts ++++ /dev/null +@@ -1,70 +0,0 @@ +-import type { +- MaybePromise, +- ReplicationOptions, +- ReplicationPullOptions, +- ReplicationPushOptions, +- WithDeleted +-} from '../../types'; +- +-import type { +- CollectionReference, +- Firestore, +- QueryFieldFilterConstraint, +- QuerySnapshot +-} from 'firebase/firestore'; +- +-export type FirestoreCheckpointType = { +- id: string; +- /** +- * Firestore internally sets the time to an object like +- * { +- * "seconds": 1669807105, +- * "nanoseconds": 476000000 +- * } +- * But to be able to query that, we have to use a date string +- * like '2022-11-30T11:18:25.141Z' +- * so we store that string instead. +- */ +- serverTimestamp: string; +-}; +-export type FirestoreCollection = CollectionReference; +- +-export type FirestoreOptions = { +- projectId: string; +- collection: FirestoreCollection; +- database: Firestore; +-}; +- +-export type FirestoreSyncPullOptions = +- Omit, 'handler' | 'stream$'> +- & { +- filter?: QueryFieldFilterConstraint | QueryFieldFilterConstraint[]; +- }; +- +-export type FirestoreSyncPushOptions = Omit, 'handler'> +- & { +- filter?(item: WithDeleted): MaybePromise; +- }; +- +-export type SyncOptionsFirestore = Omit< +- ReplicationOptions, +- 'pull' | 'push' | 'replicationIdentifier' +-> & { +- firestore: FirestoreOptions; +- /** +- * In firestore it is not possible to read out +- * the internally used write timestamp. +- * Even if we could read it out, it is not indexed which +- * is required for fetch 'changes-since-x'. +- * So instead we have to rely on a custom user defined field +- * that contains the server time which is set by firestore via serverTimestamp() +- * IMPORTANT: The serverTimestampField MUST NOT be part of the collections RxJsonSchema! +- * [default='serverTimestamp'] +- * @link https://groups.google.com/g/firebase-talk/c/tAmPzPei-mE +- */ +- serverTimestampField?: string; +- pull?: FirestoreSyncPullOptions; +- push?: FirestoreSyncPushOptions; +-}; +- +-export type GetQuery = (ids: string[]) => Promise>; +diff --git a/node_modules/rxdb/src/plugins/replication-firestore/index.ts b/node_modules/rxdb/src/plugins/replication-firestore/index.ts +deleted file mode 100644 +index 81e7043..0000000 +--- a/node_modules/rxdb/src/plugins/replication-firestore/index.ts ++++ /dev/null +@@ -1,374 +0,0 @@ +-import { +- appendToArray, +- asyncFilter, +- ensureNotFalsy, +- errorToPlainJson, +- flatClone, +- lastOfArray, +- toArray +-} from '../../plugins/utils'; +- +-import { +- doc, +- query, +- where, +- orderBy, +- limit, +- getDocs, +- onSnapshot, +- runTransaction, +- writeBatch, +- serverTimestamp, +- QueryDocumentSnapshot, +- waitForPendingWrites, +- documentId +-} from 'firebase/firestore'; +- +-import { RxDBLeaderElectionPlugin } from '../leader-election'; +-import type { +- RxCollection, +- ReplicationPullOptions, +- ReplicationPushOptions, +- RxReplicationWriteToMasterRow, +- RxReplicationPullStreamItem +-} from '../../types'; +-import { +- RxReplicationState, +- startReplicationOnLeaderShip +-} from '../replication'; +-import { +- addRxPlugin, +- ById, +- getSchemaByObjectPath, +- newRxError, +- WithDeleted +-} from '../../'; +- +-import type { +- FirestoreCheckpointType, +- FirestoreOptions, +- SyncOptionsFirestore +-} from './firestore-types'; +-import { Subject } from 'rxjs'; +-import { +- firestoreRowToDocData, +- FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX, +- getContentByIds, +- isoStringToServerTimestamp, +- serverTimestampToIsoString, +- stripPrimaryKey, +- stripServerTimestampField +-} from './firestore-helper'; +- +-export * from './firestore-helper'; +-export * from './firestore-types'; +- +-export class RxFirestoreReplicationState extends RxReplicationState { +- constructor( +- public readonly firestore: FirestoreOptions, +- public readonly replicationIdentifierHash: string, +- public readonly collection: RxCollection, +- public readonly pull?: ReplicationPullOptions, +- public readonly push?: ReplicationPushOptions, +- public readonly live: boolean = true, +- public retryTime: number = 1000 * 5, +- public autoStart: boolean = true +- ) { +- super( +- replicationIdentifierHash, +- collection, +- '_deleted', +- pull, +- push, +- live, +- retryTime, +- autoStart +- ); +- } +-} +- +-export function replicateFirestore( +- options: SyncOptionsFirestore +-): RxFirestoreReplicationState { +- const collection = options.collection; +- addRxPlugin(RxDBLeaderElectionPlugin); +- const pullStream$: Subject> = new Subject(); +- let replicationPrimitivesPull: ReplicationPullOptions | undefined; +- options.live = typeof options.live === 'undefined' ? true : options.live; +- options.waitForLeadership = typeof options.waitForLeadership === 'undefined' ? true : options.waitForLeadership; +- const serverTimestampField = typeof options.serverTimestampField === 'undefined' ? 'serverTimestamp' : options.serverTimestampField; +- options.serverTimestampField = serverTimestampField; +- const primaryPath = collection.schema.primaryPath; +- +- /** +- * The serverTimestampField MUST NOT be part of the collections RxJsonSchema. +- */ +- const schemaPart = getSchemaByObjectPath(collection.schema.jsonSchema, serverTimestampField); +- if ( +- schemaPart || +- // also must not be nested. +- serverTimestampField.includes('.') +- ) { +- throw newRxError('RC6', { +- field: serverTimestampField, +- schema: collection.schema.jsonSchema +- }); +- } +- +- const pullFilters = options.pull?.filter !== undefined +- ? toArray(options.pull.filter) +- : []; +- +- const pullQuery = query(options.firestore.collection, ...pullFilters); +- +- if (options.pull) { +- replicationPrimitivesPull = { +- async handler( +- lastPulledCheckpoint: FirestoreCheckpointType, +- batchSize: number +- ) { +- let newerQuery: ReturnType; +- let sameTimeQuery: ReturnType | undefined; +- +- if (lastPulledCheckpoint) { +- const lastServerTimestamp = isoStringToServerTimestamp(lastPulledCheckpoint.serverTimestamp); +- newerQuery = query(pullQuery, +- where(serverTimestampField, '>', lastServerTimestamp), +- orderBy(serverTimestampField, 'asc'), +- limit(batchSize) +- ); +- sameTimeQuery = query(pullQuery, +- where(serverTimestampField, '==', lastServerTimestamp), +- where(primaryPath, '>', lastPulledCheckpoint.id), +- orderBy(primaryPath, 'asc'), +- limit(batchSize) +- ); +- } else { +- newerQuery = query(pullQuery, +- orderBy(serverTimestampField, 'asc'), +- limit(batchSize) +- ); +- } +- +- let mustsReRun = true; +- let useDocs: QueryDocumentSnapshot[] = []; +- while (mustsReRun) { +- /** +- * Local writes that have not been persisted to the server +- * are in pending state and do not have a correct serverTimestamp set. +- * We have to ensure we only use document states that are in sync with the server. +- * @link https://medium.com/firebase-developers/the-secrets-of-firestore-fieldvalue-servertimestamp-revealed-29dd7a38a82b +- */ +- await waitForPendingWrites(options.firestore.database); +- await runTransaction(options.firestore.database, async (_tx) => { +- useDocs = []; +- const [ +- newerQueryResult, +- sameTimeQueryResult +- ] = await Promise.all([ +- getDocs(newerQuery), +- sameTimeQuery ? getDocs(sameTimeQuery) : undefined +- ]); +- +- if ( +- newerQueryResult.metadata.hasPendingWrites || +- (sameTimeQuery && ensureNotFalsy(sameTimeQueryResult).metadata.hasPendingWrites) +- ) { +- return; +- } else { +- mustsReRun = false; +- +- if (sameTimeQuery) { +- useDocs = ensureNotFalsy(sameTimeQueryResult).docs as any; +- } +- const missingAmount = batchSize - useDocs.length; +- if (missingAmount > 0) { +- const additionalDocs = newerQueryResult.docs.slice(0, missingAmount).filter(x => !!x); +- appendToArray(useDocs, additionalDocs); +- } +- } +- }); +- } +- +- if (useDocs.length === 0) { +- return { +- checkpoint: lastPulledCheckpoint, +- documents: [] +- }; +- } +- const lastDoc = ensureNotFalsy(lastOfArray(useDocs)); +- const documents: WithDeleted[] = useDocs +- .map(row => firestoreRowToDocData( +- serverTimestampField, +- primaryPath, +- row +- )); +- const newCheckpoint: FirestoreCheckpointType = { +- id: lastDoc.id, +- serverTimestamp: serverTimestampToIsoString(serverTimestampField, lastDoc.data()) +- }; +- const ret = { +- documents: documents, +- checkpoint: newCheckpoint +- }; +- return ret; +- }, +- batchSize: ensureNotFalsy(options.pull).batchSize, +- modifier: ensureNotFalsy(options.pull).modifier, +- stream$: pullStream$.asObservable() +- }; +- } +- +- let replicationPrimitivesPush: ReplicationPushOptions | undefined; +- if (options.push) { +- const pushFilter = options.push?.filter; +- replicationPrimitivesPush = { +- async handler( +- rows: RxReplicationWriteToMasterRow[] +- ) { +- if (pushFilter !== undefined) { +- rows = await asyncFilter(rows, (row) => pushFilter(row.newDocumentState)); +- } +- +- const writeRowsById: ById> = {}; +- const docIds: string[] = rows.map(row => { +- const docId = (row.newDocumentState as any)[primaryPath]; +- writeRowsById[docId] = row; +- return docId; +- }); +- await waitForPendingWrites(options.firestore.database); +- let conflicts: WithDeleted[] = []; +- +- /** +- * Everything must run INSIDE of the transaction +- * because on tx-errors, firebase will re-run the transaction on some cases. +- * @link https://firebase.google.com/docs/firestore/manage-data/transactions#transaction_failure +- * @link https://firebase.google.com/docs/firestore/manage-data/transactions +- */ +- await runTransaction(options.firestore.database, async (_tx) => { +- conflicts = []; // reset in case the tx has re-run. +- /** +- * @link https://stackoverflow.com/a/48423626/3443137 +- */ +- +- const getQuery = (ids: string[]) => { +- return getDocs( +- query( +- options.firestore.collection, +- where(documentId(), 'in', ids) +- ) +- ); +- }; +- +- const docsInDbResult = await getContentByIds(docIds, getQuery); +- +- const docsInDbById: ById = {}; +- docsInDbResult.forEach(row => { +- const docDataInDb = stripServerTimestampField(serverTimestampField, row.data()); +- const docId = row.id; +- (docDataInDb as any)[primaryPath] = docId; +- docsInDbById[docId] = docDataInDb; +- }); +- +- /** +- * @link https://firebase.google.com/docs/firestore/manage-data/transactions#batched-writes +- */ +- const batch = writeBatch(options.firestore.database); +- let hasWrite = false; +- await Promise.all( +- Object.entries(writeRowsById).map(async ([docId, writeRow]) => { +- const docInDb: RxDocType | undefined = docsInDbById[docId]; +- +- if ( +- docInDb && +- ( +- !writeRow.assumedMasterState || +- (await collection.conflictHandler({ +- newDocumentState: docInDb as any, +- realMasterState: writeRow.assumedMasterState +- }, 'replication-firestore-push')).isEqual === false +- ) +- ) { +- // conflict +- conflicts.push(docInDb as any); +- } else { +- // no conflict +- hasWrite = true; +- const docRef = doc(options.firestore.collection, docId); +- const writeDocData = flatClone(writeRow.newDocumentState); +- (writeDocData as any)[serverTimestampField] = serverTimestamp(); +- if (!docInDb) { +- // insert +- batch.set(docRef, stripPrimaryKey(primaryPath, writeDocData)); +- } else { +- // update +- batch.update(docRef, stripPrimaryKey(primaryPath, writeDocData)); +- } +- } +- }) +- ); +- +- if (hasWrite) { +- await batch.commit(); +- } +- }); +- await waitForPendingWrites(options.firestore.database); +- return conflicts; +- }, +- batchSize: options.push.batchSize, +- modifier: options.push.modifier +- }; +- } +- +- +- const replicationState = new RxFirestoreReplicationState( +- options.firestore, +- FIRESTORE_REPLICATION_PLUGIN_IDENTITY_PREFIX + options.collection.database.hashFunction(options.firestore.projectId), +- collection, +- replicationPrimitivesPull, +- replicationPrimitivesPush, +- options.live, +- options.retryTime, +- options.autoStart +- ); +- +- /** +- * Use long polling to get live changes for the pull.stream$ +- */ +- if (options.live && options.pull) { +- const startBefore = replicationState.start.bind(replicationState); +- const cancelBefore = replicationState.cancel.bind(replicationState); +- replicationState.start = () => { +- const lastChangeQuery = query( +- pullQuery, +- orderBy(serverTimestampField, 'desc'), +- limit(1) +- ); +- const unsubscribe = onSnapshot( +- lastChangeQuery, +- (_querySnapshot) => { +- /** +- * There is no good way to observe the event stream in firestore. +- * So instead we listen to any write to the collection +- * and then emit a 'RESYNC' flag. +- */ +- replicationState.reSync(); +- }, +- (error) => { +- replicationState.subjects.error.next( +- newRxError('RC_STREAM', { error: errorToPlainJson(error) }) +- ); +- } +- ); +- replicationState.cancel = () => { +- unsubscribe(); +- return cancelBefore(); +- }; +- return startBefore(); +- }; +- } +- +- startReplicationOnLeaderShip(options.waitForLeadership, replicationState); +- +- return replicationState; +-} +diff --git a/node_modules/rxdb/package.json b/node_modules/rxdb/package.json +index ebda2db..e4db81d 100644 +--- a/node_modules/rxdb/package.json ++++ b/node_modules/rxdb/package.json +@@ -1,591 +1,571 @@ + { +- "name": "rxdb", +- "description": "A local-first realtime NoSQL Database for JavaScript applications - https://rxdb.info/", +- "version": "14.17.1", +- "author": "pubkey", +- "repository": { +- "type": "git", +- "url": "https://github.com/pubkey/rxdb" +- }, +- "homepage": "https://rxdb.info/", +- "keywords": [ +- "db", +- "database", +- "offline-first", +- "local-first", +- "nosql", +- "no-sql", +- "jsonschema", +- "schema", +- "rxjs", +- "pwa", +- "progessive web app", +- "hybrid app", +- "localstorage", +- "indexeddb", +- "storage", +- "react-native", +- "encryption", +- "encrypted", +- "firestore", +- "firebase", +- "couchdb", +- "pouchdb", +- "nats", +- "websql", +- "sqlite", +- "query", +- "live-query", +- "realtime query", +- "reactive", +- "replication", +- "realtime", +- "realtime database", +- "local database", +- "embedded database", +- "in-memory", +- "memory", +- "memory database", +- "local database", +- "embedded", +- "embed", +- "electron database", +- "mongodb", +- "lokijs", +- "JSON", +- "angular database", +- "react database", +- "capacitor database", +- "node.js database", +- "document", +- "file database", +- "json database", +- "key value database", +- "database driver", +- "database abstraction layer", +- "document database", +- "graph database", +- "mock database", +- "cross-database", +- "asyncstorage", +- "localforage", +- "mongoose", +- "migrate database", +- "websocket database", +- "database-client", +- "dbms", +- "database engine", +- "datastore" +- ], +- "license": "Apache-2.0", +- "main": "./dist/lib/index.js", +- "jsnext:main": "./dist/es/index.js", +- "module": "./dist/es/index.js", +- "types": "./dist/types/index.d.ts", +- "sideEffects": false, +- "exports": { +- ".": { +- "types": "./dist/types/index.d.ts", +- "node": "./dist/lib/index.js", +- "require": "./dist/lib/index.js", +- "es2015": "./dist/es/index.js", +- "default": "./dist/es/index.js" +- }, +- "./plugins/core": { +- "types": "./dist/types/core/index.d.ts", +- "node": "./dist/lib/core/index.js", +- "require": "./dist/lib/core/index.js", +- "es2015": "./dist/es/core/index.js", +- "default": "./dist/es/core/index.js" +- }, +- "./plugins/utils": { +- "types": "./dist/types/plugins/utils/index.d.ts", +- "node": "./dist/lib/plugins/utils/index.js", +- "require": "./dist/lib/plugins/utils/index.js", +- "es2015": "./dist/es/plugins/utils/index.js", +- "default": "./dist/es/plugins/utils/index.js" +- }, +- "./plugins/backup": { +- "types": "./dist/types/plugins/backup/index.d.ts", +- "node": "./dist/lib/plugins/backup/index.js", +- "require": "./dist/lib/plugins/backup/index.js", +- "es2015": "./dist/es/plugins/backup/index.js", +- "default": "./dist/es/plugins/backup/index.js" +- }, +- "./plugins/cleanup": { +- "types": "./dist/types/plugins/cleanup/index.d.ts", +- "node": "./dist/lib/plugins/cleanup/index.js", +- "require": "./dist/lib/plugins/cleanup/index.js", +- "es2015": "./dist/es/plugins/cleanup/index.js", +- "default": "./dist/es/plugins/cleanup/index.js" +- }, +- "./plugins/crdt": { +- "types": "./dist/types/plugins/crdt/index.d.ts", +- "node": "./dist/lib/plugins/crdt/index.js", +- "require": "./dist/lib/plugins/crdt/index.js", +- "es2015": "./dist/es/plugins/crdt/index.js", +- "default": "./dist/es/plugins/crdt/index.js" +- }, +- "./plugins/dev-mode": { +- "types": "./dist/types/plugins/dev-mode/index.d.ts", +- "node": "./dist/lib/plugins/dev-mode/index.js", +- "require": "./dist/lib/plugins/dev-mode/index.js", +- "es2015": "./dist/es/plugins/dev-mode/index.js", +- "default": "./dist/es/plugins/dev-mode/index.js" +- }, +- "./plugins/storage-dexie": { +- "types": "./dist/types/plugins/storage-dexie/index.d.ts", +- "node": "./dist/lib/plugins/storage-dexie/index.js", +- "require": "./dist/lib/plugins/storage-dexie/index.js", +- "es2015": "./dist/es/plugins/storage-dexie/index.js", +- "default": "./dist/es/plugins/storage-dexie/index.js" +- }, +- "./plugins/electron": { +- "types": "./dist/types/plugins/electron/index.d.ts", +- "node": "./dist/lib/plugins/electron/index.js", +- "require": "./dist/lib/plugins/electron/index.js", +- "es2015": "./dist/es/plugins/electron/index.js", +- "default": "./dist/es/plugins/electron/index.js" +- }, +- "./plugins/flutter": { +- "types": "./dist/types/plugins/flutter/index.d.ts", +- "node": "./dist/lib/plugins/flutter/index.js", +- "require": "./dist/lib/plugins/flutter/index.js", +- "es2015": "./dist/es/plugins/flutter/index.js", +- "default": "./dist/es/plugins/flutter/index.js" +- }, +- "./plugins/storage-foundationdb": { +- "types": "./dist/types/plugins/storage-foundationdb/index.d.ts", +- "node": "./dist/lib/plugins/storage-foundationdb/index.js", +- "require": "./dist/lib/plugins/storage-foundationdb/index.js", +- "es2015": "./dist/es/plugins/storage-foundationdb/index.js", +- "default": "./dist/es/plugins/storage-foundationdb/index.js" +- }, +- "./plugins/local-documents": { +- "types": "./dist/types/plugins/local-documents/index.d.ts", +- "node": "./dist/lib/plugins/local-documents/index.js", +- "require": "./dist/lib/plugins/local-documents/index.js", +- "es2015": "./dist/es/plugins/local-documents/index.js", +- "default": "./dist/es/plugins/local-documents/index.js" +- }, +- "./plugins/storage-lokijs": { +- "types": "./dist/types/plugins/storage-lokijs/index.d.ts", +- "node": "./dist/lib/plugins/storage-lokijs/index.js", +- "require": "./dist/lib/plugins/storage-lokijs/index.js", +- "es2015": "./dist/es/plugins/storage-lokijs/index.js", +- "default": "./dist/es/plugins/storage-lokijs/index.js" +- }, +- "./plugins/storage-memory": { +- "types": "./dist/types/plugins/storage-memory/index.d.ts", +- "node": "./dist/lib/plugins/storage-memory/index.js", +- "require": "./dist/lib/plugins/storage-memory/index.js", +- "es2015": "./dist/es/plugins/storage-memory/index.js", +- "default": "./dist/es/plugins/storage-memory/index.js" +- }, +- "./plugins/storage-mongodb": { +- "types": "./dist/types/plugins/storage-mongodb/index.d.ts", +- "node": "./dist/lib/plugins/storage-mongodb/index.js", +- "require": "./dist/lib/plugins/storage-mongodb/index.js", +- "es2015": "./dist/es/plugins/storage-mongodb/index.js", +- "default": "./dist/es/plugins/storage-mongodb/index.js" +- }, +- "./plugins/migration": { +- "types": "./dist/types/plugins/migration/index.d.ts", +- "node": "./dist/lib/plugins/migration/index.js", +- "require": "./dist/lib/plugins/migration/index.js", +- "es2015": "./dist/es/plugins/migration/index.js", +- "default": "./dist/es/plugins/migration/index.js" +- }, +- "./plugins/query-builder": { +- "types": "./dist/types/plugins/query-builder/index.d.ts", +- "node": "./dist/lib/plugins/query-builder/index.js", +- "require": "./dist/lib/plugins/query-builder/index.js", +- "es2015": "./dist/es/plugins/query-builder/index.js", +- "default": "./dist/es/plugins/query-builder/index.js" +- }, +- "./plugins/replication": { +- "types": "./dist/types/plugins/replication/index.d.ts", +- "node": "./dist/lib/plugins/replication/index.js", +- "require": "./dist/lib/plugins/replication/index.js", +- "es2015": "./dist/es/plugins/replication/index.js", +- "default": "./dist/es/plugins/replication/index.js" +- }, +- "./plugins/replication-firestore": { +- "types": "./dist/types/plugins/replication-firestore/index.d.ts", +- "node": "./dist/lib/plugins/replication-firestore/index.js", +- "require": "./dist/lib/plugins/replication-firestore/index.js", +- "es2015": "./dist/es/plugins/replication-firestore/index.js", +- "default": "./dist/es/plugins/replication-firestore/index.js" +- }, +- "./plugins/replication-graphql": { +- "types": "./dist/types/plugins/replication-graphql/index.d.ts", +- "node": "./dist/lib/plugins/replication-graphql/index.js", +- "require": "./dist/lib/plugins/replication-graphql/index.js", +- "es2015": "./dist/es/plugins/replication-graphql/index.js", +- "default": "./dist/es/plugins/replication-graphql/index.js" +- }, +- "./plugins/replication-p2p": { +- "types": "./dist/types/plugins/replication-p2p/index.d.ts", +- "node": "./dist/lib/plugins/replication-p2p/index.js", +- "require": "./dist/lib/plugins/replication-p2p/index.js", +- "es2015": "./dist/es/plugins/replication-p2p/index.js", +- "default": "./dist/es/plugins/replication-p2p/index.js" +- }, +- "./plugins/replication-websocket": { +- "types": "./dist/types/plugins/replication-websocket/index.d.ts", +- "node": "./dist/lib/plugins/replication-websocket/index.js", +- "require": "./dist/lib/plugins/replication-websocket/index.js", +- "es2015": "./dist/es/plugins/replication-websocket/index.js", +- "default": "./dist/es/plugins/replication-websocket/index.js" +- }, +- "./plugins/storage-remote": { +- "types": "./dist/types/plugins/storage-remote/index.d.ts", +- "node": "./dist/lib/plugins/storage-remote/index.js", +- "require": "./dist/lib/plugins/storage-remote/index.js", +- "es2015": "./dist/es/plugins/storage-remote/index.js", +- "default": "./dist/es/plugins/storage-remote/index.js" +- }, +- "./plugins/storage-remote-websocket": { +- "types": "./dist/types/plugins/storage-remote-websocket/index.d.ts", +- "node": "./dist/lib/plugins/storage-remote-websocket/index.js", +- "require": "./dist/lib/plugins/storage-remote-websocket/index.js", +- "es2015": "./dist/es/plugins/storage-remote-websocket/index.js", +- "default": "./dist/es/plugins/storage-remote-websocket/index.js" +- }, +- "./plugins/attachments": { +- "types": "./dist/types/plugins/attachments/index.d.ts", +- "node": "./dist/lib/plugins/attachments/index.js", +- "require": "./dist/lib/plugins/attachments/index.js", +- "es2015": "./dist/es/plugins/attachments/index.js", +- "default": "./dist/es/plugins/attachments/index.js" +- }, +- "./plugins/attachments-compression": { +- "types": "./dist/types/plugins/attachments-compression/index.d.ts", +- "node": "./dist/lib/plugins/attachments-compression/index.js", +- "require": "./dist/lib/plugins/attachments-compression/index.js", +- "es2015": "./dist/es/plugins/attachments-compression/index.js", +- "default": "./dist/es/plugins/attachments-compression/index.js" +- }, +- "./plugins/encryption-crypto-js": { +- "types": "./dist/types/plugins/encryption-crypto-js/index.d.ts", +- "node": "./dist/lib/plugins/encryption-crypto-js/index.js", +- "require": "./dist/lib/plugins/encryption-crypto-js/index.js", +- "es2015": "./dist/es/plugins/encryption-crypto-js/index.js", +- "default": "./dist/es/plugins/encryption-crypto-js/index.js" +- }, +- "./plugins/json-dump": { +- "types": "./dist/types/plugins/json-dump/index.d.ts", +- "node": "./dist/lib/plugins/json-dump/index.js", +- "require": "./dist/lib/plugins/json-dump/index.js", +- "es2015": "./dist/es/plugins/json-dump/index.js", +- "default": "./dist/es/plugins/json-dump/index.js" +- }, +- "./plugins/key-compression": { +- "types": "./dist/types/plugins/key-compression/index.d.ts", +- "node": "./dist/lib/plugins/key-compression/index.js", +- "require": "./dist/lib/plugins/key-compression/index.js", +- "es2015": "./dist/es/plugins/key-compression/index.js", +- "default": "./dist/es/plugins/key-compression/index.js" +- }, +- "./plugins/leader-election": { +- "types": "./dist/types/plugins/leader-election/index.d.ts", +- "node": "./dist/lib/plugins/leader-election/index.js", +- "require": "./dist/lib/plugins/leader-election/index.js", +- "es2015": "./dist/es/plugins/leader-election/index.js", +- "default": "./dist/es/plugins/leader-election/index.js" +- }, +- "./plugins/replication-couchdb": { +- "types": "./dist/types/plugins/replication-couchdb/index.d.ts", +- "node": "./dist/lib/plugins/replication-couchdb/index.js", +- "require": "./dist/lib/plugins/replication-couchdb/index.js", +- "es2015": "./dist/es/plugins/replication-couchdb/index.js", +- "default": "./dist/es/plugins/replication-couchdb/index.js" +- }, +- "./plugins/replication-nats": { +- "types": "./dist/types/plugins/replication-nats/index.d.ts", +- "node": "./dist/lib/plugins/replication-nats/index.js", +- "require": "./dist/lib/plugins/replication-nats/index.js", +- "es2015": "./dist/es/plugins/replication-nats/index.js", +- "default": "./dist/es/plugins/replication-nats/index.js" +- }, +- "./plugins/update": { +- "types": "./dist/types/plugins/update/index.d.ts", +- "node": "./dist/lib/plugins/update/index.js", +- "require": "./dist/lib/plugins/update/index.js", +- "es2015": "./dist/es/plugins/update/index.js", +- "default": "./dist/es/plugins/update/index.js" +- }, +- "./plugins/validate-ajv": { +- "types": "./dist/types/plugins/validate-ajv/index.d.ts", +- "node": "./dist/lib/plugins/validate-ajv/index.js", +- "require": "./dist/lib/plugins/validate-ajv/index.js", +- "es2015": "./dist/es/plugins/validate-ajv/index.js", +- "default": "./dist/es/plugins/validate-ajv/index.js" +- }, +- "./plugins/validate-is-my-json-valid": { +- "types": "./dist/types/plugins/validate-is-my-json-valid/index.d.ts", +- "node": "./dist/lib/plugins/validate-is-my-json-valid/index.js", +- "require": "./dist/lib/plugins/validate-is-my-json-valid/index.js", +- "es2015": "./dist/es/plugins/validate-is-my-json-valid/index.js", +- "default": "./dist/es/plugins/validate-is-my-json-valid/index.js" +- }, +- "./plugins/validate-z-schema": { +- "types": "./dist/types/plugins/validate-z-schema/index.d.ts", +- "node": "./dist/lib/plugins/validate-z-schema/index.js", +- "require": "./dist/lib/plugins/validate-z-schema/index.js", +- "es2015": "./dist/es/plugins/validate-z-schema/index.js", +- "default": "./dist/es/plugins/validate-z-schema/index.js" +- }, +- "./package.json": "./package.json" +- }, +- "scripts": { +- "postinstall": "node scripts/postinstall.js || echo \"ignore\"", +- "test": "npm run test:node && npm run test:browser", +- "// test:fast": "run tests in the fast-mode. Most of them will run in parrallel, skips tests that are known slow", +- "test:fast": "npm run test:fast:memory && npm run test:fast:lokijs && npm run test:fast:dexie", +- "test:fast:memory": "npm run transpile && cross-env DEFAULT_STORAGE=memory NODE_ENV=fast mocha --config ./config/.mocharc.js ./test_tmp/unit.test.js", +- "test:fast:memory-validation": "npm run transpile && cross-env DEFAULT_STORAGE=memory-validation NODE_ENV=fast mocha --config ./config/.mocharc.js ./test_tmp/unit.test.js", +- "test:fast:lokijs": "npm run transpile && cross-env DEFAULT_STORAGE=lokijs NODE_ENV=fast mocha --config ./config/.mocharc.js ./test_tmp/unit.test.js", +- "test:fast:dexie": "npm run transpile && cross-env DEFAULT_STORAGE=dexie NODE_ENV=fast mocha --config ./config/.mocharc.js ./test_tmp/unit.test.js", +- "test:fast:foundationdb": "npm run transpile && cross-env DEFAULT_STORAGE=foundationdb NODE_ENV=fast mocha --config ./config/.mocharc.js ./test_tmp/unit.test.js", +- "test:fast:mongodb": "npm run transpile && cross-env DEFAULT_STORAGE=mongodb NODE_ENV=fast mocha --config ./config/.mocharc.js ./test_tmp/unit.test.js", +- "// test:fast:loop": "runs tests in the fast-mode in a loop. Use this to debug tests that only fail sometimes", +- "test:fast:loop": "npm run test:fast && npm run test:fast:loop", +- "test:fast:loop:lokijs": "npm run test:fast:lokijs && npm run test:fast:loop:lokijs", +- "test:fast:loop:memory": "npm run test:fast:memory && npm run test:fast:loop:memory", +- "test:fast:loop:dexie": "npm run test:fast:dexie && npm run test:fast:loop:dexie", +- "test:fast:loop:mongodb": "npm run test:fast:mongodb && npm run test:fast:loop:mongodb", +- "test:node": "npm run test:node:lokijs && npm run test:node:dexie", +- "test:node:memory": "npm run transpile && cross-env DEFAULT_STORAGE=memory mocha --expose-gc --config ./config/.mocharc.js ./test_tmp/unit.test.js", +- "test:node:memory-validation": "npm run transpile && cross-env DEFAULT_STORAGE=memory-validation mocha --expose-gc --config ./config/.mocharc.js ./test_tmp/unit.test.js", +- "test:node:lokijs": "npm run transpile && cross-env DEFAULT_STORAGE=lokijs mocha --expose-gc --config ./config/.mocharc.js ./test_tmp/unit.test.js", +- "test:node:dexie": "npm run transpile && cross-env DEFAULT_STORAGE=dexie mocha --expose-gc --config ./config/.mocharc.js ./test_tmp/unit.test.js", +- "test:bun:dexie": "npm run transpile && cross-env DEFAULT_STORAGE=dexie NODE_ENV=fast bun run ./node_modules/mocha/bin/mocha test_tmp/unit.test.js --bail", +- "test:node:foundationdb": "npm run transpile && cross-env DEFAULT_STORAGE=foundationdb mocha --expose-gc --config ./config/.mocharc.js ./test_tmp/unit.test.js", +- "test:node:mongodb": "npm run transpile && cross-env DEFAULT_STORAGE=mongodb mocha --expose-gc --config ./config/.mocharc.js ./test_tmp/unit.test.js", +- "test:node:remote": "npm run transpile && cross-env DEFAULT_STORAGE=remote mocha --expose-gc --config ./config/.mocharc.js ./test_tmp/unit.test.js", +- "test:node:lokijs:loop": "npm run test:node:lokijs && npm run test:node:lokijs:loop", +- "test:node:memory:loop": "npm run test:node:memory && npm run test:node:memory:loop", +- "test:node:dexie:loop": "npm run test:node:dexie && npm run test:node:dexie:loop", +- "test:node:foundationdb:loop": "npm run test:node:foundationdb && npm run test:node:foundationdb:loop", +- "test:node:custom": "npm run transpile && cross-env DEFAULT_STORAGE=custom mocha --expose-gc --config ./config/.mocharc.js ./test_tmp/unit.test.js", +- "// test:node:loop": "runs tests in node in a loop. Use this to debug tests that only fail sometimes", +- "test:node:loop": "npm run test:node && npm run test:node:loop", +- "test:browser:loop": "npm run test:browser && npm run test:browser:loop", +- "test:browser:lokijs": " npm run transpile && cross-env CI=true DEFAULT_STORAGE=lokijs karma start ./config/karma.conf.js --single-run", +- "test:browser:memory": " npm run transpile && cross-env CI=true DEFAULT_STORAGE=memory karma start ./config/karma.conf.js --single-run", +- "test:browser:dexie": " npm run transpile && cross-env CI=true DEFAULT_STORAGE=dexie karma start ./config/karma.conf.js --single-run", +- "test:browser:remote": " npm run transpile && cross-env CI=true DEFAULT_STORAGE=remote karma start ./config/karma.conf.js --single-run", +- "test:browser:custom": " npm run transpile && cross-env CI=true DEFAULT_STORAGE=custom karma start ./config/karma.conf.js --single-run", +- "test:replication-firestore": "npm run transpile && firebase emulators:exec \"cross-env DEFAULT_STORAGE=dexie mocha --expose-gc --config ./config/.mocharc.js ./test_tmp/replication-firestore.test.js\" --only firestore --project 'rxdb-test'", +- "test:replication-couchdb": "npm run transpile && concurrently \"npm run couch:start\" \"cross-env NATIVE_COUCHDB=5984 DEFAULT_STORAGE=dexie mocha --config ./config/.mocharc.js ./test_tmp/unit/replication-couchdb.test.js\" --success first --kill-others", +- "test:replication-nats": "npm run transpile && concurrently \"npm run nats:start\" \"cross-env DEFAULT_STORAGE=dexie mocha --config ./config/.mocharc.js ./test_tmp/replication-nats.test.js\" --success first --kill-others", +- "test:core": "npm run transpile && mocha ./test_tmp/unit/core.node.js", +- "test:full": "npm run transpile && mocha ./test_tmp/unit/full.node.js", +- "test:typings": "tsc --noEmit --lib \"ES2021,DOM\" ./test/typings.test.ts", +- "test:deps": "npm run build && dependency-check ./package.json ./dist/lib/index.js ./dist/lib/plugins/validate-is-my-json-valid/index.js ./dist/lib/plugins/attachments-compression/index.js ./dist/lib/plugins/validate-ajv/index.js ./dist/lib/plugins/update/index.js ./dist/lib/plugins/key-compression/index.js ./dist/lib/plugins/dev-mode/index.js ./dist/lib/plugins/encryption-crypto-js/index.js ./dist/lib/plugins/replication-graphql/index.js ./dist/lib/plugins/replication-p2p/index.js ./dist/lib/plugins/replication-websocket/index.js ./dist/lib/plugins/replication-firestore/index.js ./dist/lib/plugins/replication-nats/index.js ./dist/lib/plugins/validate-z-schema/index.js ./dist/lib/plugins/storage-lokijs/index.js ./dist/lib/plugins/storage-dexie/index.js ./dist/lib/plugins/storage-memory/index.js ./dist/lib/plugins/storage-mongodb/index.js --no-dev --ignore-module util --ignore-module url --ignore-module ws --ignore-module graphql --ignore-module as-typed --ignore-module \"@types/*\"", +- "test:circular": "npm run build && madge --circular ./dist/es/index.js && madge --circular ./dist/es/plugins/storage-dexie/index.js", +- "test:performance:lokijs:browser": "npm run transpile && cross-env DEFAULT_STORAGE=lokijs CI=true karma start ./config/karma.performance.conf.js --single-run", +- "test:performance:lokijs:node": "npm run transpile && cross-env DEFAULT_STORAGE=lokijs mocha --config ./config/.mocharc.js ./test_tmp/performance.test.js --unhandled-rejections=strict --expose-gc", +- "test:performance:dexie": "npm run transpile && cross-env DEFAULT_STORAGE=dexie CI=true karma start ./config/karma.performance.conf.js --single-run", +- "test:performance:memory:browser": "npm run transpile && cross-env DEFAULT_STORAGE=memory CI=true karma start ./config/karma.performance.conf.js --single-run", +- "test:performance:memory:node": "npm run transpile && cross-env DEFAULT_STORAGE=memory mocha --config ./config/.mocharc.js ./test_tmp/performance.test.js --unhandled-rejections=strict --expose-gc", +- "test:performance:memory:bun": "npm run transpile && cross-env DEFAULT_STORAGE=memory bun run ./node_modules/mocha/bin/mocha test_tmp/performance.test.js --bail", +- "test:performance:foundationdb": "npm run transpile && cross-env DEFAULT_STORAGE=foundationdb mocha --config ./config/.mocharc.js ./test_tmp/performance.test.js --unhandled-rejections=strict --expose-gc", +- "test:performance:mongodb": "npm run transpile && cross-env DEFAULT_STORAGE=mongodb mocha --config ./config/.mocharc.js ./test_tmp/performance.test.js --unhandled-rejections=strict --expose-gc", +- "test:performance:custom:browser": "npm run transpile && cross-env DEFAULT_STORAGE=custom CI=true karma start ./config/karma.performance.conf.js --single-run", +- "test:performance:custom:node": "npm run transpile && cross-env DEFAULT_STORAGE=custom mocha --config ./config/.mocharc.js ./test_tmp/performance.test.js --unhandled-rejections=strict --expose-gc", +- "test:performance": "npm run build && npm run test:performance:lokijs:browser && npm run test:performance:lokijs:node && npm run test:performance:dexie && npm run test:performance:memory:browser && npm run test:performance:memory:node && npm run test:performance:foundationdb", +- "couch:start": "docker run -p 5984:5984 -e COUCHDB_USER=root -e COUCHDB_PASSWORD=root --rm --name rxdb-couchdb couchdb:3.3.1", +- "couch:stop": "docker rm -f rxdb-couchdb", +- "mongodb:start": "docker run -p 27017:27017 -p 27018:27018 -p 27019:27019 --rm --name rxdb-mongodb mongo:7.0.1", +- "mongodb:stop": "docker rm -f rxdb-mongodb", +- "nats:start": "docker run --rm --name rxdb-nats -p 4222:4222 nats:2.9.17 -js", +- "nats:stop": "docker rm -f rxdb-nats", +- "dockertest": "docker run -it -v $(pwd):/usr/src/app markadams/chromium-xvfb-js:latest-onbuild", +- "profile": "npm run transpile && rm -f isolate-* && cross-env STORAGE=memory NODE_ENV=fast NODE_PROF=true mocha --config ./config/.mocharc.js ./test_tmp/performance.test.js --v8-prof --expose-gc && node scripts/profile.js", +- "clear": "rimraf -rf test_tmp/ && rimraf -rf dist/ && rimraf .transpile_state.json", +- "lint": "eslint . --ext .js,.ts --cache", +- "lint:fix": "eslint --fix . --ext .js,.ts", +- "lint:debug:files": "DEBUG=eslint:cli-engine eslint --ext .js,.ts,.json .", +- "lint:debug:time": "TIMING=1 eslint --ext .js,.ts,.json .", +- "check-types": "tsc", +- "transpile": "npm run build:version && node scripts/transpile.js", +- "build:version": "node ./scripts/update-version-variable.js", +- "build:es": "npm run build:version && rimraf -rf --max-retries=3 dist/es && cross-env NODE_ENV=es6 babel src --out-dir dist/es --source-maps --extensions \".ts,.js\"", +- "build:types": "npm run build:version && rimraf -rf --max-retries=3 ./dist/types && tsc --project ./config/tsconfig.types.json && cp -r ./src/types ./dist/types/types", +- "build": "npm run clear && npm run build:version && concurrently \"npm run transpile\" \"npm run build:es\" \"npm run build:types\" \"npm run build:plugins\" && browserify dist/lib/browserify.index.js > dist/rxdb.browserify.js && terser --compress --mangle --output dist/rxdb.browserify.min.js -- dist/rxdb.browserify.js", +- "build:plugins": "node ./scripts/generate-plugins-package-json.js", +- "build:min": "npm run transpile && browserify dist/lib/browserify.index.js > dist/rxdb.browserify.js && terser --compress --mangle --output dist/rxdb.browserify.min.js -- dist/rxdb.browserify.js", +- "build:webpack": "npm run build && cross-env NODE_ENV=build webpack --config ./config/webpack.config.js", +- "build:rollup": "npm run build && rollup --config ./config/rollup.config.mjs", +- "build:size": "npm run build:webpack && echo \"Build-Size (minified+gzip):\" && gzip-size --raw ./test_tmp/webpack.bundle.js", +- "// docs": "TODO move away from gitbook so we are not forced to use node.js version 13 to build the docs", +- "docs:install": "gitbook install docs-src", +- "docs:landingpage:dev": "webpack-dev-server --mode development --config ./config/landingpage.webpack.config.js", +- "docs:landingpage:build": "npm run build && webpack --config ./config/landingpage.webpack.config.js", +- "docs:landingpage:copy": "rm -f ./docs/index.html && cp ./docs-src/index.html ./docs/index.html", +- "// docs:serve": "start a local server to watch the docs. Served at http://localhost:4000/", +- "docs:serve": "gitbook serve docs-src", +- "docs:build": "gitbook install docs-src && gitbook build docs-src docs && cp docs-src/files/logo/icon.png docs/gitbook/images/apple-touch-icon-precomposed-152.png && cp docs-src/files/logo/icon.ico docs/gitbook/images/favicon.ico && npm run docs:copy && npm run docs:remove:time", +- "docs:copy": "cp -r docs-src/files docs/files && npm run docs:landingpage:copy", +- "docs:remove:time": "node ./scripts/docs-remove-time.js", +- "disc": "npm run transpile && npm run build:es && cross-env NODE_ENV=disc webpack --config ./config/webpack.config.js", +- "preversion": "npm run lint && npm run test", +- "dev": "watch 'npm run test:node:memory' src/ test/", +- "dev:example": "watch 'npm run transpile:src && echo \"done\"' src/ test/" +- }, +- "pre-commit": [ +- "lint" +- ], +- "peerDependencies": { +- "rxjs": "^7.8.0" +- }, +- "dependencies": { +- "@babel/runtime": "7.22.15", +- "@types/clone": "2.1.2", +- "@types/cors": "2.8.14", +- "@types/express": "4.17.18", +- "@types/lokijs": "1.5.10", +- "@types/simple-peer": "9.11.5", +- "@types/ws": "8.5.5", +- "ajv": "8.12.0", +- "array-push-at-sort-position": "3.0.0", +- "as-typed": "1.3.2", +- "broadcast-channel": "5.3.0", +- "crypto-js": "4.1.1", +- "custom-idle-queue": "3.0.1", +- "dexie": "4.0.0-alpha.4", +- "event-reduce-js": "3.1.2", +- "firebase": "9.23.0", +- "get-graphql-from-jsonschema": "8.1.0", +- "graphql": "15.8.0", +- "graphql-ws": "5.14.0", +- "is-my-json-valid": "2.20.6", +- "isomorphic-ws": "5.0.0", +- "js-base64": "3.7.5", +- "jsonschema-key-compression": "1.6.1", +- "lokijs": "1.5.12", +- "mingo": "6.4.4", +- "modifyjs": "0.3.1", +- "mongodb": "6.1.0", +- "nats": "2.17.0", +- "oblivious-set": "1.1.1", +- "ohash": "1.1.3", +- "pako": "2.1.0", +- "reconnecting-websocket": "4.4.0", +- "simple-peer": "9.11.1", +- "socket.io-client": "4.7.2", +- "unload": "2.4.1", +- "util": "0.12.5", +- "ws": "8.14.2", +- "z-schema": "6.0.1" +- }, +- "devDependencies": { +- "@types/node": "18.17.19", +- "@babel/cli": "7.22.15", +- "@babel/core": "7.22.20", +- "@babel/plugin-external-helpers": "7.22.5", +- "@babel/plugin-proposal-class-properties": "7.18.6", +- "@babel/plugin-proposal-object-rest-spread": "7.20.7", +- "@babel/plugin-transform-literals": "7.22.5", +- "@babel/plugin-transform-member-expression-literals": "7.22.5", +- "@babel/plugin-transform-modules-commonjs": "7.22.15", +- "@babel/plugin-transform-property-literals": "7.22.5", +- "@babel/plugin-transform-runtime": "7.22.15", +- "@babel/plugin-transform-spread": "7.22.5", +- "@babel/plugin-transform-template-literals": "7.22.5", +- "@babel/plugin-transform-typescript": "7.22.15", +- "@babel/polyfill": "7.12.1", +- "@babel/preset-env": "7.22.20", +- "@babel/preset-typescript": "7.22.15", +- "@babel/types": "7.22.19", +- "@faker-js/faker": "7.6.0", +- "@rollup/plugin-commonjs": "24.1.0", +- "@rollup/plugin-node-resolve": "15.2.1", +- "@types/assert": "1.5.7", +- "@types/core-js": "2.5.6", +- "@types/cors": "2.8.14", +- "@types/crypto-js": "4.1.2", +- "@types/mocha": "10.0.1", +- "@types/pako": "2.0.1", +- "@types/request": "2.48.8", +- "@types/request-promise-native": "1.0.18", +- "@typescript-eslint/eslint-plugin": "5.62.0", +- "@typescript-eslint/parser": "5.62.0", +- "assert": "2.1.0", +- "async-test-util": "2.1.1", +- "babel-loader": "9.1.3", +- "babel-plugin-transform-class-properties": "6.24.1", +- "brfs": "2.0.2", +- "browserify": "17.0.0", +- "child-process-promise": "2.2.1", +- "clone": "2.1.2", +- "concurrently": "8.2.1", +- "copy-webpack-plugin": "11.0.0", +- "cors": "2.8.5", +- "cross-env": "7.0.3", +- "delete": "1.1.0", +- "dependency-check": "4.1.0", +- "detect-browser": "5.3.0", +- "disc": "1.3.3", +- "eslint": "8.50.0", +- "eslint-plugin-import": "2.28.1", +- "eslint-plugin-jsdoc": "43.2.0", +- "exists-file": "3.0.2", +- "express": "4.18.2", +- "express-graphql": "0.12.0", +- "express-pouchdb": "4.2.0", +- "fake-indexeddb": "4.0.2", +- "firebase-tools": "11.30.0", +- "get-port": "5.1.1", +- "gitbook-cli": "2.3.2", +- "graphql-subscriptions": "2.0.0", +- "gzip-size-cli": "5.1.0", +- "html-webpack-plugin": "5.5.3", +- "karma": "6.4.2", +- "karma-babel-preprocessor": "8.0.2", +- "karma-chrome-launcher": "3.2.0", +- "karma-coverage": "2.2.1", +- "karma-detect-browsers": "2.3.3", +- "karma-firefox-launcher": "2.1.2", +- "karma-ie-launcher": "1.0.0", +- "karma-mocha": "2.0.1", +- "karma-opera-launcher": "1.0.0", +- "karma-safari-launcher": "1.0.0", +- "karma-sourcemap-loader": "0.4.0", +- "karma-spec-reporter": "0.0.36", +- "karma-webpack": "5.0.0", +- "leveldown": "6.1.1", +- "madge": "6.1.0", +- "memdown": "6.1.1", +- "mini-css-extract-plugin": "2.7.6", +- "mocha": "10.2.0", +- "mocha.parallel": "0.15.6", +- "nconf": "0.12.0", +- "node-pre-gyp": "0.17.0", +- "pouchdb": "8.0.1", +- "pre-commit": "1.2.2", +- "random-int": "3.0.0", +- "readline": "1.3.0", +- "rimraf": "5.0.1", +- "rollup": "3.29.2", +- "rxjs": "7.8.1", +- "shelljs": "0.8.5", +- "socket.io": "4.7.2", +- "source-map-support": "0.5.21", +- "stream": "0.0.2", +- "terser": "5.20.0", +- "terser-webpack-plugin": "5.3.9", +- "ts-loader": "9.4.4", +- "ts-mocha": "10.0.0", +- "ts-node": "10.9.1", +- "typescript": "5.2.2", +- "walk-sync": "3.0.0", +- "watch": "1.0.2", +- "webpack": "5.88.2", +- "webpack-bundle-analyzer": "4.9.1", +- "webpack-cli": "5.1.4", +- "webpack-dev-server": "4.15.1" +- } ++ "name": "rxdb", ++ "description": "A patched local-first realtime NoSQL Database for JavaScript applications - https://rxdb.info/", ++ "version": "14.17.1", ++ "author": "pubkey", ++ "repository": { ++ "type": "git", ++ "url": "https://github.com/pubkey/rxdb" ++ }, ++ "homepage": "https://rxdb.info/", ++ "keywords": [ ++ "db", ++ "database", ++ "offline-first", ++ "local-first", ++ "nosql", ++ "no-sql", ++ "jsonschema", ++ "schema", ++ "rxjs", ++ "pwa", ++ "progessive web app", ++ "hybrid app", ++ "localstorage", ++ "indexeddb", ++ "storage", ++ "react-native", ++ "encryption", ++ "encrypted", ++ "couchdb", ++ "pouchdb", ++ "nats", ++ "websql", ++ "sqlite", ++ "query", ++ "live-query", ++ "realtime query", ++ "reactive", ++ "replication", ++ "realtime", ++ "realtime database", ++ "local database", ++ "embedded database", ++ "in-memory", ++ "memory", ++ "memory database", ++ "local database", ++ "embedded", ++ "embed", ++ "electron database", ++ "mongodb", ++ "lokijs", ++ "JSON", ++ "angular database", ++ "react database", ++ "capacitor database", ++ "node.js database", ++ "document", ++ "file database", ++ "json database", ++ "key value database", ++ "database driver", ++ "database abstraction layer", ++ "document database", ++ "graph database", ++ "mock database", ++ "cross-database", ++ "asyncstorage", ++ "localforage", ++ "mongoose", ++ "migrate database", ++ "websocket database", ++ "database-client", ++ "dbms", ++ "database engine", ++ "datastore" ++ ], ++ "license": "Apache-2.0", ++ "main": "./dist/lib/index.js", ++ "jsnext:main": "./dist/es/index.js", ++ "module": "./dist/es/index.js", ++ "types": "./dist/types/index.d.ts", ++ "sideEffects": false, ++ "exports": { ++ ".": { ++ "types": "./dist/types/index.d.ts", ++ "node": "./dist/lib/index.js", ++ "require": "./dist/lib/index.js", ++ "es2015": "./dist/es/index.js", ++ "default": "./dist/es/index.js" ++ }, ++ "./plugins/core": { ++ "types": "./dist/types/core/index.d.ts", ++ "node": "./dist/lib/core/index.js", ++ "require": "./dist/lib/core/index.js", ++ "es2015": "./dist/es/core/index.js", ++ "default": "./dist/es/core/index.js" ++ }, ++ "./plugins/utils": { ++ "types": "./dist/types/plugins/utils/index.d.ts", ++ "node": "./dist/lib/plugins/utils/index.js", ++ "require": "./dist/lib/plugins/utils/index.js", ++ "es2015": "./dist/es/plugins/utils/index.js", ++ "default": "./dist/es/plugins/utils/index.js" ++ }, ++ "./plugins/backup": { ++ "types": "./dist/types/plugins/backup/index.d.ts", ++ "node": "./dist/lib/plugins/backup/index.js", ++ "require": "./dist/lib/plugins/backup/index.js", ++ "es2015": "./dist/es/plugins/backup/index.js", ++ "default": "./dist/es/plugins/backup/index.js" ++ }, ++ "./plugins/cleanup": { ++ "types": "./dist/types/plugins/cleanup/index.d.ts", ++ "node": "./dist/lib/plugins/cleanup/index.js", ++ "require": "./dist/lib/plugins/cleanup/index.js", ++ "es2015": "./dist/es/plugins/cleanup/index.js", ++ "default": "./dist/es/plugins/cleanup/index.js" ++ }, ++ "./plugins/crdt": { ++ "types": "./dist/types/plugins/crdt/index.d.ts", ++ "node": "./dist/lib/plugins/crdt/index.js", ++ "require": "./dist/lib/plugins/crdt/index.js", ++ "es2015": "./dist/es/plugins/crdt/index.js", ++ "default": "./dist/es/plugins/crdt/index.js" ++ }, ++ "./plugins/dev-mode": { ++ "types": "./dist/types/plugins/dev-mode/index.d.ts", ++ "node": "./dist/lib/plugins/dev-mode/index.js", ++ "require": "./dist/lib/plugins/dev-mode/index.js", ++ "es2015": "./dist/es/plugins/dev-mode/index.js", ++ "default": "./dist/es/plugins/dev-mode/index.js" ++ }, ++ "./plugins/storage-dexie": { ++ "types": "./dist/types/plugins/storage-dexie/index.d.ts", ++ "node": "./dist/lib/plugins/storage-dexie/index.js", ++ "require": "./dist/lib/plugins/storage-dexie/index.js", ++ "es2015": "./dist/es/plugins/storage-dexie/index.js", ++ "default": "./dist/es/plugins/storage-dexie/index.js" ++ }, ++ "./plugins/electron": { ++ "types": "./dist/types/plugins/electron/index.d.ts", ++ "node": "./dist/lib/plugins/electron/index.js", ++ "require": "./dist/lib/plugins/electron/index.js", ++ "es2015": "./dist/es/plugins/electron/index.js", ++ "default": "./dist/es/plugins/electron/index.js" ++ }, ++ "./plugins/flutter": { ++ "types": "./dist/types/plugins/flutter/index.d.ts", ++ "node": "./dist/lib/plugins/flutter/index.js", ++ "require": "./dist/lib/plugins/flutter/index.js", ++ "es2015": "./dist/es/plugins/flutter/index.js", ++ "default": "./dist/es/plugins/flutter/index.js" ++ }, ++ "./plugins/storage-foundationdb": { ++ "types": "./dist/types/plugins/storage-foundationdb/index.d.ts", ++ "node": "./dist/lib/plugins/storage-foundationdb/index.js", ++ "require": "./dist/lib/plugins/storage-foundationdb/index.js", ++ "es2015": "./dist/es/plugins/storage-foundationdb/index.js", ++ "default": "./dist/es/plugins/storage-foundationdb/index.js" ++ }, ++ "./plugins/local-documents": { ++ "types": "./dist/types/plugins/local-documents/index.d.ts", ++ "node": "./dist/lib/plugins/local-documents/index.js", ++ "require": "./dist/lib/plugins/local-documents/index.js", ++ "es2015": "./dist/es/plugins/local-documents/index.js", ++ "default": "./dist/es/plugins/local-documents/index.js" ++ }, ++ "./plugins/storage-lokijs": { ++ "types": "./dist/types/plugins/storage-lokijs/index.d.ts", ++ "node": "./dist/lib/plugins/storage-lokijs/index.js", ++ "require": "./dist/lib/plugins/storage-lokijs/index.js", ++ "es2015": "./dist/es/plugins/storage-lokijs/index.js", ++ "default": "./dist/es/plugins/storage-lokijs/index.js" ++ }, ++ "./plugins/storage-memory": { ++ "types": "./dist/types/plugins/storage-memory/index.d.ts", ++ "node": "./dist/lib/plugins/storage-memory/index.js", ++ "require": "./dist/lib/plugins/storage-memory/index.js", ++ "es2015": "./dist/es/plugins/storage-memory/index.js", ++ "default": "./dist/es/plugins/storage-memory/index.js" ++ }, ++ "./plugins/storage-mongodb": { ++ "types": "./dist/types/plugins/storage-mongodb/index.d.ts", ++ "node": "./dist/lib/plugins/storage-mongodb/index.js", ++ "require": "./dist/lib/plugins/storage-mongodb/index.js", ++ "es2015": "./dist/es/plugins/storage-mongodb/index.js", ++ "default": "./dist/es/plugins/storage-mongodb/index.js" ++ }, ++ "./plugins/migration": { ++ "types": "./dist/types/plugins/migration/index.d.ts", ++ "node": "./dist/lib/plugins/migration/index.js", ++ "require": "./dist/lib/plugins/migration/index.js", ++ "es2015": "./dist/es/plugins/migration/index.js", ++ "default": "./dist/es/plugins/migration/index.js" ++ }, ++ "./plugins/query-builder": { ++ "types": "./dist/types/plugins/query-builder/index.d.ts", ++ "node": "./dist/lib/plugins/query-builder/index.js", ++ "require": "./dist/lib/plugins/query-builder/index.js", ++ "es2015": "./dist/es/plugins/query-builder/index.js", ++ "default": "./dist/es/plugins/query-builder/index.js" ++ }, ++ "./plugins/replication": { ++ "types": "./dist/types/plugins/replication/index.d.ts", ++ "node": "./dist/lib/plugins/replication/index.js", ++ "require": "./dist/lib/plugins/replication/index.js", ++ "es2015": "./dist/es/plugins/replication/index.js", ++ "default": "./dist/es/plugins/replication/index.js" ++ }, ++ "./plugins/replication-graphql": { ++ "types": "./dist/types/plugins/replication-graphql/index.d.ts", ++ "node": "./dist/lib/plugins/replication-graphql/index.js", ++ "require": "./dist/lib/plugins/replication-graphql/index.js", ++ "es2015": "./dist/es/plugins/replication-graphql/index.js", ++ "default": "./dist/es/plugins/replication-graphql/index.js" ++ }, ++ "./plugins/replication-p2p": { ++ "types": "./dist/types/plugins/replication-p2p/index.d.ts", ++ "node": "./dist/lib/plugins/replication-p2p/index.js", ++ "require": "./dist/lib/plugins/replication-p2p/index.js", ++ "es2015": "./dist/es/plugins/replication-p2p/index.js", ++ "default": "./dist/es/plugins/replication-p2p/index.js" ++ }, ++ "./plugins/replication-websocket": { ++ "types": "./dist/types/plugins/replication-websocket/index.d.ts", ++ "node": "./dist/lib/plugins/replication-websocket/index.js", ++ "require": "./dist/lib/plugins/replication-websocket/index.js", ++ "es2015": "./dist/es/plugins/replication-websocket/index.js", ++ "default": "./dist/es/plugins/replication-websocket/index.js" ++ }, ++ "./plugins/storage-remote": { ++ "types": "./dist/types/plugins/storage-remote/index.d.ts", ++ "node": "./dist/lib/plugins/storage-remote/index.js", ++ "require": "./dist/lib/plugins/storage-remote/index.js", ++ "es2015": "./dist/es/plugins/storage-remote/index.js", ++ "default": "./dist/es/plugins/storage-remote/index.js" ++ }, ++ "./plugins/storage-remote-websocket": { ++ "types": "./dist/types/plugins/storage-remote-websocket/index.d.ts", ++ "node": "./dist/lib/plugins/storage-remote-websocket/index.js", ++ "require": "./dist/lib/plugins/storage-remote-websocket/index.js", ++ "es2015": "./dist/es/plugins/storage-remote-websocket/index.js", ++ "default": "./dist/es/plugins/storage-remote-websocket/index.js" ++ }, ++ "./plugins/attachments": { ++ "types": "./dist/types/plugins/attachments/index.d.ts", ++ "node": "./dist/lib/plugins/attachments/index.js", ++ "require": "./dist/lib/plugins/attachments/index.js", ++ "es2015": "./dist/es/plugins/attachments/index.js", ++ "default": "./dist/es/plugins/attachments/index.js" ++ }, ++ "./plugins/attachments-compression": { ++ "types": "./dist/types/plugins/attachments-compression/index.d.ts", ++ "node": "./dist/lib/plugins/attachments-compression/index.js", ++ "require": "./dist/lib/plugins/attachments-compression/index.js", ++ "es2015": "./dist/es/plugins/attachments-compression/index.js", ++ "default": "./dist/es/plugins/attachments-compression/index.js" ++ }, ++ "./plugins/json-dump": { ++ "types": "./dist/types/plugins/json-dump/index.d.ts", ++ "node": "./dist/lib/plugins/json-dump/index.js", ++ "require": "./dist/lib/plugins/json-dump/index.js", ++ "es2015": "./dist/es/plugins/json-dump/index.js", ++ "default": "./dist/es/plugins/json-dump/index.js" ++ }, ++ "./plugins/key-compression": { ++ "types": "./dist/types/plugins/key-compression/index.d.ts", ++ "node": "./dist/lib/plugins/key-compression/index.js", ++ "require": "./dist/lib/plugins/key-compression/index.js", ++ "es2015": "./dist/es/plugins/key-compression/index.js", ++ "default": "./dist/es/plugins/key-compression/index.js" ++ }, ++ "./plugins/leader-election": { ++ "types": "./dist/types/plugins/leader-election/index.d.ts", ++ "node": "./dist/lib/plugins/leader-election/index.js", ++ "require": "./dist/lib/plugins/leader-election/index.js", ++ "es2015": "./dist/es/plugins/leader-election/index.js", ++ "default": "./dist/es/plugins/leader-election/index.js" ++ }, ++ "./plugins/replication-couchdb": { ++ "types": "./dist/types/plugins/replication-couchdb/index.d.ts", ++ "node": "./dist/lib/plugins/replication-couchdb/index.js", ++ "require": "./dist/lib/plugins/replication-couchdb/index.js", ++ "es2015": "./dist/es/plugins/replication-couchdb/index.js", ++ "default": "./dist/es/plugins/replication-couchdb/index.js" ++ }, ++ "./plugins/replication-nats": { ++ "types": "./dist/types/plugins/replication-nats/index.d.ts", ++ "node": "./dist/lib/plugins/replication-nats/index.js", ++ "require": "./dist/lib/plugins/replication-nats/index.js", ++ "es2015": "./dist/es/plugins/replication-nats/index.js", ++ "default": "./dist/es/plugins/replication-nats/index.js" ++ }, ++ "./plugins/update": { ++ "types": "./dist/types/plugins/update/index.d.ts", ++ "node": "./dist/lib/plugins/update/index.js", ++ "require": "./dist/lib/plugins/update/index.js", ++ "es2015": "./dist/es/plugins/update/index.js", ++ "default": "./dist/es/plugins/update/index.js" ++ }, ++ "./plugins/validate-ajv": { ++ "types": "./dist/types/plugins/validate-ajv/index.d.ts", ++ "node": "./dist/lib/plugins/validate-ajv/index.js", ++ "require": "./dist/lib/plugins/validate-ajv/index.js", ++ "es2015": "./dist/es/plugins/validate-ajv/index.js", ++ "default": "./dist/es/plugins/validate-ajv/index.js" ++ }, ++ "./plugins/validate-is-my-json-valid": { ++ "types": "./dist/types/plugins/validate-is-my-json-valid/index.d.ts", ++ "node": "./dist/lib/plugins/validate-is-my-json-valid/index.js", ++ "require": "./dist/lib/plugins/validate-is-my-json-valid/index.js", ++ "es2015": "./dist/es/plugins/validate-is-my-json-valid/index.js", ++ "default": "./dist/es/plugins/validate-is-my-json-valid/index.js" ++ }, ++ "./plugins/validate-z-schema": { ++ "types": "./dist/types/plugins/validate-z-schema/index.d.ts", ++ "node": "./dist/lib/plugins/validate-z-schema/index.js", ++ "require": "./dist/lib/plugins/validate-z-schema/index.js", ++ "es2015": "./dist/es/plugins/validate-z-schema/index.js", ++ "default": "./dist/es/plugins/validate-z-schema/index.js" ++ }, ++ "./package.json": "./package.json" ++ }, ++ "scripts": { ++ "postinstall": "node scripts/postinstall.js || echo \"ignore\"", ++ "test": "npm run test:node && npm run test:browser", ++ "// test:fast": "run tests in the fast-mode. Most of them will run in parrallel, skips tests that are known slow", ++ "test:fast": "npm run test:fast:memory && npm run test:fast:lokijs && npm run test:fast:dexie", ++ "test:fast:memory": "npm run transpile && cross-env DEFAULT_STORAGE=memory NODE_ENV=fast mocha --config ./config/.mocharc.js ./test_tmp/unit.test.js", ++ "test:fast:memory-validation": "npm run transpile && cross-env DEFAULT_STORAGE=memory-validation NODE_ENV=fast mocha --config ./config/.mocharc.js ./test_tmp/unit.test.js", ++ "test:fast:lokijs": "npm run transpile && cross-env DEFAULT_STORAGE=lokijs NODE_ENV=fast mocha --config ./config/.mocharc.js ./test_tmp/unit.test.js", ++ "test:fast:dexie": "npm run transpile && cross-env DEFAULT_STORAGE=dexie NODE_ENV=fast mocha --config ./config/.mocharc.js ./test_tmp/unit.test.js", ++ "test:fast:foundationdb": "npm run transpile && cross-env DEFAULT_STORAGE=foundationdb NODE_ENV=fast mocha --config ./config/.mocharc.js ./test_tmp/unit.test.js", ++ "test:fast:mongodb": "npm run transpile && cross-env DEFAULT_STORAGE=mongodb NODE_ENV=fast mocha --config ./config/.mocharc.js ./test_tmp/unit.test.js", ++ "// test:fast:loop": "runs tests in the fast-mode in a loop. Use this to debug tests that only fail sometimes", ++ "test:fast:loop": "npm run test:fast && npm run test:fast:loop", ++ "test:fast:loop:lokijs": "npm run test:fast:lokijs && npm run test:fast:loop:lokijs", ++ "test:fast:loop:memory": "npm run test:fast:memory && npm run test:fast:loop:memory", ++ "test:fast:loop:dexie": "npm run test:fast:dexie && npm run test:fast:loop:dexie", ++ "test:fast:loop:mongodb": "npm run test:fast:mongodb && npm run test:fast:loop:mongodb", ++ "test:node": "npm run test:node:lokijs && npm run test:node:dexie", ++ "test:node:memory": "npm run transpile && cross-env DEFAULT_STORAGE=memory mocha --expose-gc --config ./config/.mocharc.js ./test_tmp/unit.test.js", ++ "test:node:memory-validation": "npm run transpile && cross-env DEFAULT_STORAGE=memory-validation mocha --expose-gc --config ./config/.mocharc.js ./test_tmp/unit.test.js", ++ "test:node:lokijs": "npm run transpile && cross-env DEFAULT_STORAGE=lokijs mocha --expose-gc --config ./config/.mocharc.js ./test_tmp/unit.test.js", ++ "test:node:dexie": "npm run transpile && cross-env DEFAULT_STORAGE=dexie mocha --expose-gc --config ./config/.mocharc.js ./test_tmp/unit.test.js", ++ "test:bun:dexie": "npm run transpile && cross-env DEFAULT_STORAGE=dexie NODE_ENV=fast bun run ./node_modules/mocha/bin/mocha test_tmp/unit.test.js --bail", ++ "test:node:foundationdb": "npm run transpile && cross-env DEFAULT_STORAGE=foundationdb mocha --expose-gc --config ./config/.mocharc.js ./test_tmp/unit.test.js", ++ "test:node:mongodb": "npm run transpile && cross-env DEFAULT_STORAGE=mongodb mocha --expose-gc --config ./config/.mocharc.js ./test_tmp/unit.test.js", ++ "test:node:remote": "npm run transpile && cross-env DEFAULT_STORAGE=remote mocha --expose-gc --config ./config/.mocharc.js ./test_tmp/unit.test.js", ++ "test:node:lokijs:loop": "npm run test:node:lokijs && npm run test:node:lokijs:loop", ++ "test:node:memory:loop": "npm run test:node:memory && npm run test:node:memory:loop", ++ "test:node:dexie:loop": "npm run test:node:dexie && npm run test:node:dexie:loop", ++ "test:node:foundationdb:loop": "npm run test:node:foundationdb && npm run test:node:foundationdb:loop", ++ "test:node:custom": "npm run transpile && cross-env DEFAULT_STORAGE=custom mocha --expose-gc --config ./config/.mocharc.js ./test_tmp/unit.test.js", ++ "// test:node:loop": "runs tests in node in a loop. Use this to debug tests that only fail sometimes", ++ "test:node:loop": "npm run test:node && npm run test:node:loop", ++ "test:browser:loop": "npm run test:browser && npm run test:browser:loop", ++ "test:browser:lokijs": " npm run transpile && cross-env CI=true DEFAULT_STORAGE=lokijs karma start ./config/karma.conf.js --single-run", ++ "test:browser:memory": " npm run transpile && cross-env CI=true DEFAULT_STORAGE=memory karma start ./config/karma.conf.js --single-run", ++ "test:browser:dexie": " npm run transpile && cross-env CI=true DEFAULT_STORAGE=dexie karma start ./config/karma.conf.js --single-run", ++ "test:browser:remote": " npm run transpile && cross-env CI=true DEFAULT_STORAGE=remote karma start ./config/karma.conf.js --single-run", ++ "test:browser:custom": " npm run transpile && cross-env CI=true DEFAULT_STORAGE=custom karma start ./config/karma.conf.js --single-run", ++ "test:replication-firestore": "npm run transpile && firebase emulators:exec \"cross-env DEFAULT_STORAGE=dexie mocha --expose-gc --config ./config/.mocharc.js ./test_tmp/replication-firestore.test.js\" --only firestore --project 'rxdb-test'", ++ "test:replication-couchdb": "npm run transpile && concurrently \"npm run couch:start\" \"cross-env NATIVE_COUCHDB=5984 DEFAULT_STORAGE=dexie mocha --config ./config/.mocharc.js ./test_tmp/unit/replication-couchdb.test.js\" --success first --kill-others", ++ "test:replication-nats": "npm run transpile && concurrently \"npm run nats:start\" \"cross-env DEFAULT_STORAGE=dexie mocha --config ./config/.mocharc.js ./test_tmp/replication-nats.test.js\" --success first --kill-others", ++ "test:core": "npm run transpile && mocha ./test_tmp/unit/core.node.js", ++ "test:full": "npm run transpile && mocha ./test_tmp/unit/full.node.js", ++ "test:typings": "tsc --noEmit --lib \"ES2021,DOM\" ./test/typings.test.ts", ++ "test:deps": "npm run build && dependency-check ./package.json ./dist/lib/index.js ./dist/lib/plugins/validate-is-my-json-valid/index.js ./dist/lib/plugins/attachments-compression/index.js ./dist/lib/plugins/validate-ajv/index.js ./dist/lib/plugins/update/index.js ./dist/lib/plugins/key-compression/index.js ./dist/lib/plugins/dev-mode/index.js ./dist/lib/plugins/encryption-crypto-js/index.js ./dist/lib/plugins/replication-graphql/index.js ./dist/lib/plugins/replication-p2p/index.js ./dist/lib/plugins/replication-websocket/index.js ./dist/lib/plugins/replication-firestore/index.js ./dist/lib/plugins/replication-nats/index.js ./dist/lib/plugins/validate-z-schema/index.js ./dist/lib/plugins/storage-lokijs/index.js ./dist/lib/plugins/storage-dexie/index.js ./dist/lib/plugins/storage-memory/index.js ./dist/lib/plugins/storage-mongodb/index.js --no-dev --ignore-module util --ignore-module url --ignore-module ws --ignore-module graphql --ignore-module as-typed --ignore-module \"@types/*\"", ++ "test:circular": "npm run build && madge --circular ./dist/es/index.js && madge --circular ./dist/es/plugins/storage-dexie/index.js", ++ "test:performance:lokijs:browser": "npm run transpile && cross-env DEFAULT_STORAGE=lokijs CI=true karma start ./config/karma.performance.conf.js --single-run", ++ "test:performance:lokijs:node": "npm run transpile && cross-env DEFAULT_STORAGE=lokijs mocha --config ./config/.mocharc.js ./test_tmp/performance.test.js --unhandled-rejections=strict --expose-gc", ++ "test:performance:dexie": "npm run transpile && cross-env DEFAULT_STORAGE=dexie CI=true karma start ./config/karma.performance.conf.js --single-run", ++ "test:performance:memory:browser": "npm run transpile && cross-env DEFAULT_STORAGE=memory CI=true karma start ./config/karma.performance.conf.js --single-run", ++ "test:performance:memory:node": "npm run transpile && cross-env DEFAULT_STORAGE=memory mocha --config ./config/.mocharc.js ./test_tmp/performance.test.js --unhandled-rejections=strict --expose-gc", ++ "test:performance:memory:bun": "npm run transpile && cross-env DEFAULT_STORAGE=memory bun run ./node_modules/mocha/bin/mocha test_tmp/performance.test.js --bail", ++ "test:performance:foundationdb": "npm run transpile && cross-env DEFAULT_STORAGE=foundationdb mocha --config ./config/.mocharc.js ./test_tmp/performance.test.js --unhandled-rejections=strict --expose-gc", ++ "test:performance:mongodb": "npm run transpile && cross-env DEFAULT_STORAGE=mongodb mocha --config ./config/.mocharc.js ./test_tmp/performance.test.js --unhandled-rejections=strict --expose-gc", ++ "test:performance:custom:browser": "npm run transpile && cross-env DEFAULT_STORAGE=custom CI=true karma start ./config/karma.performance.conf.js --single-run", ++ "test:performance:custom:node": "npm run transpile && cross-env DEFAULT_STORAGE=custom mocha --config ./config/.mocharc.js ./test_tmp/performance.test.js --unhandled-rejections=strict --expose-gc", ++ "test:performance": "npm run build && npm run test:performance:lokijs:browser && npm run test:performance:lokijs:node && npm run test:performance:dexie && npm run test:performance:memory:browser && npm run test:performance:memory:node && npm run test:performance:foundationdb", ++ "couch:start": "docker run -p 5984:5984 -e COUCHDB_USER=root -e COUCHDB_PASSWORD=root --rm --name rxdb-couchdb couchdb:3.3.1", ++ "couch:stop": "docker rm -f rxdb-couchdb", ++ "mongodb:start": "docker run -p 27017:27017 -p 27018:27018 -p 27019:27019 --rm --name rxdb-mongodb mongo:7.0.1", ++ "mongodb:stop": "docker rm -f rxdb-mongodb", ++ "nats:start": "docker run --rm --name rxdb-nats -p 4222:4222 nats:2.9.17 -js", ++ "nats:stop": "docker rm -f rxdb-nats", ++ "dockertest": "docker run -it -v $(pwd):/usr/src/app markadams/chromium-xvfb-js:latest-onbuild", ++ "profile": "npm run transpile && rm -f isolate-* && cross-env STORAGE=memory NODE_ENV=fast NODE_PROF=true mocha --config ./config/.mocharc.js ./test_tmp/performance.test.js --v8-prof --expose-gc && node scripts/profile.js", ++ "clear": "rimraf -rf test_tmp/ && rimraf -rf dist/ && rimraf .transpile_state.json", ++ "lint": "eslint . --ext .js,.ts --cache", ++ "lint:fix": "eslint --fix . --ext .js,.ts", ++ "lint:debug:files": "DEBUG=eslint:cli-engine eslint --ext .js,.ts,.json .", ++ "lint:debug:time": "TIMING=1 eslint --ext .js,.ts,.json .", ++ "check-types": "tsc", ++ "transpile": "npm run build:version && node scripts/transpile.js", ++ "build:version": "node ./scripts/update-version-variable.js", ++ "build:es": "npm run build:version && rimraf -rf --max-retries=3 dist/es && cross-env NODE_ENV=es6 babel src --out-dir dist/es --source-maps --extensions \".ts,.js\"", ++ "build:types": "npm run build:version && rimraf -rf --max-retries=3 ./dist/types && tsc --project ./config/tsconfig.types.json && cp -r ./src/types ./dist/types/types", ++ "build": "npm run clear && npm run build:version && concurrently \"npm run transpile\" \"npm run build:es\" \"npm run build:types\" \"npm run build:plugins\" && browserify dist/lib/browserify.index.js > dist/rxdb.browserify.js && terser --compress --mangle --output dist/rxdb.browserify.min.js -- dist/rxdb.browserify.js", ++ "build:plugins": "node ./scripts/generate-plugins-package-json.js", ++ "build:min": "npm run transpile && browserify dist/lib/browserify.index.js > dist/rxdb.browserify.js && terser --compress --mangle --output dist/rxdb.browserify.min.js -- dist/rxdb.browserify.js", ++ "build:webpack": "npm run build && cross-env NODE_ENV=build webpack --config ./config/webpack.config.js", ++ "build:rollup": "npm run build && rollup --config ./config/rollup.config.mjs", ++ "build:size": "npm run build:webpack && echo \"Build-Size (minified+gzip):\" && gzip-size --raw ./test_tmp/webpack.bundle.js", ++ "// docs": "TODO move away from gitbook so we are not forced to use node.js version 13 to build the docs", ++ "docs:install": "gitbook install docs-src", ++ "docs:landingpage:dev": "webpack-dev-server --mode development --config ./config/landingpage.webpack.config.js", ++ "docs:landingpage:build": "npm run build && webpack --config ./config/landingpage.webpack.config.js", ++ "docs:landingpage:copy": "rm -f ./docs/index.html && cp ./docs-src/index.html ./docs/index.html", ++ "// docs:serve": "start a local server to watch the docs. Served at http://localhost:4000/", ++ "docs:serve": "gitbook serve docs-src", ++ "docs:build": "gitbook install docs-src && gitbook build docs-src docs && cp docs-src/files/logo/icon.png docs/gitbook/images/apple-touch-icon-precomposed-152.png && cp docs-src/files/logo/icon.ico docs/gitbook/images/favicon.ico && npm run docs:copy && npm run docs:remove:time", ++ "docs:copy": "cp -r docs-src/files docs/files && npm run docs:landingpage:copy", ++ "docs:remove:time": "node ./scripts/docs-remove-time.js", ++ "disc": "npm run transpile && npm run build:es && cross-env NODE_ENV=disc webpack --config ./config/webpack.config.js", ++ "preversion": "npm run lint && npm run test", ++ "dev": "watch 'npm run test:node:memory' src/ test/", ++ "dev:example": "watch 'npm run transpile:src && echo \"done\"' src/ test/" ++ }, ++ "pre-commit": [ ++ "lint" ++ ], ++ "peerDependencies": { ++ "rxjs": "^7.8.0" ++ }, ++ "dependencies": { ++ "@babel/runtime": "7.22.15", ++ "@types/clone": "2.1.2", ++ "@types/cors": "2.8.14", ++ "@types/express": "4.17.18", ++ "@types/lokijs": "1.5.10", ++ "@types/simple-peer": "9.11.5", ++ "@types/ws": "8.5.5", ++ "ajv": "8.12.0", ++ "array-push-at-sort-position": "3.0.0", ++ "as-typed": "1.3.2", ++ "broadcast-channel": "5.3.0", ++ "custom-idle-queue": "3.0.1", ++ "dexie": "4.0.0-alpha.4", ++ "event-reduce-js": "3.1.2", ++ "get-graphql-from-jsonschema": "8.1.0", ++ "graphql": "15.8.0", ++ "graphql-ws": "5.14.0", ++ "is-my-json-valid": "2.20.6", ++ "isomorphic-ws": "5.0.0", ++ "js-base64": "3.7.5", ++ "jsonschema-key-compression": "1.6.1", ++ "lokijs": "1.5.12", ++ "mingo": "6.4.4", ++ "modifyjs": "0.3.1", ++ "mongodb": "6.1.0", ++ "nats": "2.17.0", ++ "oblivious-set": "1.1.1", ++ "ohash": "1.1.3", ++ "pako": "2.1.0", ++ "reconnecting-websocket": "4.4.0", ++ "simple-peer": "9.11.1", ++ "socket.io-client": "4.7.2", ++ "unload": "2.4.1", ++ "util": "0.12.5", ++ "ws": "8.14.2", ++ "z-schema": "6.0.1" ++ }, ++ "devDependencies": { ++ "@types/node": "18.17.19", ++ "@babel/cli": "7.22.15", ++ "@babel/core": "7.22.20", ++ "@babel/plugin-external-helpers": "7.22.5", ++ "@babel/plugin-proposal-class-properties": "7.18.6", ++ "@babel/plugin-proposal-object-rest-spread": "7.20.7", ++ "@babel/plugin-transform-literals": "7.22.5", ++ "@babel/plugin-transform-member-expression-literals": "7.22.5", ++ "@babel/plugin-transform-modules-commonjs": "7.22.15", ++ "@babel/plugin-transform-property-literals": "7.22.5", ++ "@babel/plugin-transform-runtime": "7.22.15", ++ "@babel/plugin-transform-spread": "7.22.5", ++ "@babel/plugin-transform-template-literals": "7.22.5", ++ "@babel/plugin-transform-typescript": "7.22.15", ++ "@babel/polyfill": "7.12.1", ++ "@babel/preset-env": "7.22.20", ++ "@babel/preset-typescript": "7.22.15", ++ "@babel/types": "7.22.19", ++ "@faker-js/faker": "7.6.0", ++ "@rollup/plugin-commonjs": "24.1.0", ++ "@rollup/plugin-node-resolve": "15.2.1", ++ "@types/assert": "1.5.7", ++ "@types/core-js": "2.5.6", ++ "@types/cors": "2.8.14", ++ "@types/mocha": "10.0.1", ++ "@types/pako": "2.0.1", ++ "@types/request": "2.48.8", ++ "@types/request-promise-native": "1.0.18", ++ "@typescript-eslint/eslint-plugin": "5.62.0", ++ "@typescript-eslint/parser": "5.62.0", ++ "assert": "2.1.0", ++ "async-test-util": "2.1.1", ++ "babel-loader": "9.1.3", ++ "babel-plugin-transform-class-properties": "6.24.1", ++ "brfs": "2.0.2", ++ "browserify": "17.0.0", ++ "child-process-promise": "2.2.1", ++ "clone": "2.1.2", ++ "concurrently": "8.2.1", ++ "copy-webpack-plugin": "11.0.0", ++ "cors": "2.8.5", ++ "cross-env": "7.0.3", ++ "delete": "1.1.0", ++ "dependency-check": "4.1.0", ++ "detect-browser": "5.3.0", ++ "disc": "1.3.3", ++ "eslint": "8.50.0", ++ "eslint-plugin-import": "2.28.1", ++ "eslint-plugin-jsdoc": "43.2.0", ++ "exists-file": "3.0.2", ++ "express": "4.18.2", ++ "express-graphql": "0.12.0", ++ "express-pouchdb": "4.2.0", ++ "fake-indexeddb": "4.0.2", ++ "get-port": "5.1.1", ++ "gitbook-cli": "2.3.2", ++ "graphql-subscriptions": "2.0.0", ++ "gzip-size-cli": "5.1.0", ++ "html-webpack-plugin": "5.5.3", ++ "karma": "6.4.2", ++ "karma-babel-preprocessor": "8.0.2", ++ "karma-chrome-launcher": "3.2.0", ++ "karma-coverage": "2.2.1", ++ "karma-detect-browsers": "2.3.3", ++ "karma-firefox-launcher": "2.1.2", ++ "karma-ie-launcher": "1.0.0", ++ "karma-mocha": "2.0.1", ++ "karma-opera-launcher": "1.0.0", ++ "karma-safari-launcher": "1.0.0", ++ "karma-sourcemap-loader": "0.4.0", ++ "karma-spec-reporter": "0.0.36", ++ "karma-webpack": "5.0.0", ++ "leveldown": "6.1.1", ++ "madge": "6.1.0", ++ "memdown": "6.1.1", ++ "mini-css-extract-plugin": "2.7.6", ++ "mocha": "10.2.0", ++ "mocha.parallel": "0.15.6", ++ "nconf": "0.12.0", ++ "node-pre-gyp": "0.17.0", ++ "pouchdb": "8.0.1", ++ "pre-commit": "1.2.2", ++ "random-int": "3.0.0", ++ "readline": "1.3.0", ++ "rimraf": "5.0.1", ++ "rollup": "3.29.2", ++ "rxjs": "7.8.1", ++ "shelljs": "0.8.5", ++ "socket.io": "4.7.2", ++ "source-map-support": "0.5.21", ++ "stream": "0.0.2", ++ "terser": "5.20.0", ++ "terser-webpack-plugin": "5.3.9", ++ "ts-loader": "9.4.4", ++ "ts-mocha": "10.0.0", ++ "ts-node": "10.9.1", ++ "typescript": "5.2.2", ++ "walk-sync": "3.0.0", ++ "watch": "1.0.2", ++ "webpack": "5.88.2", ++ "webpack-bundle-analyzer": "4.9.1", ++ "webpack-cli": "5.1.4", ++ "webpack-dev-server": "4.15.1" ++ } + } +\ No newline at end of file diff --git a/postinstall.sh b/postinstall.sh new file mode 100644 index 000000000..cb0b55dbf --- /dev/null +++ b/postinstall.sh @@ -0,0 +1,14 @@ +#!/bin/bash +FILE="./node_modules/rxdb" +set -e +# Patching RXDB package for 2 main reasons +# 1. Its using crypto-js which is an insecure dependency we don't want to even +# include in our package-locks, its 100% not used as we have created as we have +# created our own package +# 2. The second one is around a replication package that rxdb uses +# firebase which includes a medium severity vuleranility which we also don't +# want to be including in our package locks, despite 100% not being used. +# Workaround: We install +rm -rf ./package-lock.json +rm -rf ./node_modules/.package-lock.json +npm i --ignore-scripts diff --git a/preinstall.sh b/preinstall.sh new file mode 100644 index 000000000..a1777ebe1 --- /dev/null +++ b/preinstall.sh @@ -0,0 +1,21 @@ +#!/bin/bash +FILE="./node_modules/rxdb" +set -e + + + + +if [ -z "./node_modules/rxdb/patched/done" ]; then + echo "preinstall completed" +else + npm i rxdb@14.17.1 --ignore-scripts + npx patch-package + touch ./node_modules/rxdb/patched/done +fi + + + + + + + diff --git a/src/apollo/utils/Secp256k1PublicKey.ts b/src/apollo/utils/Secp256k1PublicKey.ts index 454c4852a..ec6b55247 100644 --- a/src/apollo/utils/Secp256k1PublicKey.ts +++ b/src/apollo/utils/Secp256k1PublicKey.ts @@ -13,7 +13,6 @@ import { } from "../../domain/models/keyManagement"; import ApolloPKG from "@atala/apollo"; -import { rawToDER } from "../../domain/utils/DER"; const ApolloSDK = ApolloPKG.org.hyperledger.identus.apollo; /** @@ -188,9 +187,8 @@ export class Secp256k1PublicKey extends PublicKey implements StorableKey, Export } verify(message: Buffer, signature: Buffer) { - const normalised = rawToDER(signature) return this.native.verify( - Int8Array.from(normalised), + Int8Array.from(signature), Int8Array.from(message) ); } diff --git a/src/domain/buildingBlocks/Pollux.ts b/src/domain/buildingBlocks/Pollux.ts index 80232238d..8d51fcc85 100644 --- a/src/domain/buildingBlocks/Pollux.ts +++ b/src/domain/buildingBlocks/Pollux.ts @@ -53,6 +53,8 @@ export interface Pollux { [name: string]: any }>; + isCredentialRevoked: (credential: Credential) => Promise; + parseCredential: ( credentialBuffer: Uint8Array, options?: { type: CredentialType;[name: string]: any; } diff --git a/src/domain/models/VerifiableCredential.ts b/src/domain/models/VerifiableCredential.ts index 3330fa14d..fe398f1cc 100644 --- a/src/domain/models/VerifiableCredential.ts +++ b/src/domain/models/VerifiableCredential.ts @@ -21,12 +21,14 @@ export enum DescriptorItemFormat { } export enum W3CVerifiableCredentialContext { - credential = "https://www.w3.org/2018/credentials/v1" + credential = "https://www.w3.org/2018/credentials/v1", + revocation = "https://w3id.org/vc/status-list/2021/v1" } export enum W3CVerifiableCredentialType { presentation = "VerifiablePresentation", - credential = "VerifiableCredential" + credential = "VerifiableCredential", + revocation = "StatusList2021Credential" } export enum SDJWTVerifiableCredentialProperties { @@ -259,9 +261,73 @@ export type W3CVerifiableCredential = { id: string, type: string }, - credentialStatus?: { + credentialStatus?: JWTRevocationStatus | unknown +} + +export interface W3CVerifiableCredentialData { + id: string, + type: string +} + + +export enum JWTRevocationStatusPurpose { + Revocation = "Revocation", + Suspension = 'Suspension' +} + +export enum CredentialStatusType { + StatusList2021Entry = 'StatusList2021Entry' +} + + +export enum RevocationType { + StatusList2021 = 'StatusList2021' +} + +export interface JWTRevocationStatus extends W3CVerifiableCredentialData { + statusPurpose: JWTRevocationStatusPurpose, + statusListIndex: number, + id: string, + type: RevocationType, + statusListCredential: string +} + +export enum JWTProofType { + EcdsaSecp256k1Signature2019 = "EcdsaSecp256k1Signature2019", + DataIntegrityProof = "DataIntegrityProof", + Unknown = "Unknown" +} + +export enum JWTProofPurpose { + ProofPurpose = 'assertionMethod' +} + +export interface JWTStatusListResponse { + "@context": [ + W3CVerifiableCredentialContext.credential, + W3CVerifiableCredentialContext.revocation + ], + type: [ + W3CVerifiableCredentialType.credential, + W3CVerifiableCredentialType.revocation + ], + issuer: string, + id: string, + issuanceDate: string, + credentialSubject: { id: string, - type: string + type: string, + statusPurpose: string, + encodedList: string + }, + proof: { + type: JWTProofType, + jws: string, + proofPurpose: JWTProofPurpose, + verificationMethod: string, + created: string, + proofValue: string, + cryptoSuite: string } } diff --git a/src/domain/models/errors/Pollux.ts b/src/domain/models/errors/Pollux.ts index cf89bb01e..b0a1e337d 100644 --- a/src/domain/models/errors/Pollux.ts +++ b/src/domain/models/errors/Pollux.ts @@ -16,6 +16,30 @@ export class InvalidPresentationProofArgs extends Error { } } +export class CredentialRevocationTypeInvalid extends Error { + constructor(message?: string) { + super(message || "CredentialStatus revocation type not supported"); + } +} + +export class InvalidCredentialStatus extends Error { + constructor(message?: string) { + super(message || "CredentialStatus status is invalid"); + } +} + +export class InvalidRevocationStatusResponse extends Error { + constructor(message?: string) { + super(message || "CredentialStatus response is invalid"); + } +} + +export class InvalidRevocationStatusResponseSignature extends Error { + constructor(message?: string) { + super(message || "CredentialStatus response proof signatue mismatch or invalid."); + } +} + export class CredentialTypeNotSupported extends Error { constructor(message?: string) { super(message || "Credential type not supported"); diff --git a/src/domain/models/revocation/index.ts b/src/domain/models/revocation/index.ts new file mode 100644 index 000000000..e754e4cc2 --- /dev/null +++ b/src/domain/models/revocation/index.ts @@ -0,0 +1,374 @@ + + +export const revocationJsonldDocuments = { + "https://w3id.org/vc/status-list/2021/v1": { + "@context": { + "@protected": true, + + "StatusList2021Credential": { + "@id": + "https://w3id.org/vc/status-list#StatusList2021Credential", + "@context": { + "@protected": true, + + "id": "@id", + "type": "@type", + + "description": "http://schema.org/description", + "name": "http://schema.org/name" + } + }, + + "StatusList2021": { + "@id": + "https://w3id.org/vc/status-list#StatusList2021", + "@context": { + "@protected": true, + + "id": "@id", + "type": "@type", + + "statusPurpose": + "https://w3id.org/vc/status-list#statusPurpose", + "encodedList": "https://w3id.org/vc/status-list#encodedList" + } + }, + + "StatusList2021Entry": { + "@id": + "https://w3id.org/vc/status-list#StatusList2021Entry", + "@context": { + "@protected": true, + + "id": "@id", + "type": "@type", + + "statusPurpose": + "https://w3id.org/vc/status-list#statusPurpose", + "statusListIndex": + "https://w3id.org/vc/status-list#statusListIndex", + "statusListCredential": { + "@id": + "https://w3id.org/vc/status-list#statusListCredential", + "@type": "@id" + } + } + } + } + }, + "https://www.w3.org/2018/credentials/v1": { + "@context": { + "@version": 1.1, + "@protected": true, + "id": "@id", + "type": "@type", + "VerifiableCredential": { + "@id": "https://www.w3.org/2018/credentials#VerifiableCredential", + "@context": { + "@version": 1.1, + "@protected": true, + "id": "@id", + "type": "@type", + "cred": "https://www.w3.org/2018/credentials#", + "sec": "https://w3id.org/security#", + "xsd": "http://www.w3.org/2001/XMLSchema#", + "credentialSchema": { + "@id": "cred:credentialSchema", + "@type": "@id", + "@context": { + "@version": 1.1, + "@protected": true, + "id": "@id", + "type": "@type", + "cred": "https://www.w3.org/2018/credentials#", + "JsonSchemaValidator2018": "cred:JsonSchemaValidator2018" + } + }, + "credentialStatus": { + "@id": "cred:credentialStatus", + "@type": "@id" + }, + "credentialSubject": { + "@id": "cred:credentialSubject", + "@type": "@id" + }, + "evidence": { + "@id": "cred:evidence", + "@type": "@id" + }, + "expirationDate": { + "@id": "cred:expirationDate", + "@type": "xsd:dateTime" + }, + "holder": { + "@id": "cred:holder", + "@type": "@id" + }, + "issued": { + "@id": "cred:issued", + "@type": "xsd:dateTime" + }, + "issuer": { + "@id": "cred:issuer", + "@type": "@id" + }, + "issuanceDate": { + "@id": "cred:issuanceDate", + "@type": "xsd:dateTime" + }, + "proof": { + "@id": "sec:proof", + "@type": "@id", + "@container": "@graph" + }, + "refreshService": { + "@id": "cred:refreshService", + "@type": "@id", + "@context": { + "@version": 1.1, + "@protected": true, + "id": "@id", + "type": "@type", + "cred": "https://www.w3.org/2018/credentials#", + "ManualRefreshService2018": "cred:ManualRefreshService2018" + } + }, + "termsOfUse": { + "@id": "cred:termsOfUse", + "@type": "@id" + }, + "validFrom": { + "@id": "cred:validFrom", + "@type": "xsd:dateTime" + }, + "validUntil": { + "@id": "cred:validUntil", + "@type": "xsd:dateTime" + } + } + }, + "VerifiablePresentation": { + "@id": "https://www.w3.org/2018/credentials#VerifiablePresentation", + "@context": { + "@version": 1.1, + "@protected": true, + "id": "@id", + "type": "@type", + "cred": "https://www.w3.org/2018/credentials#", + "sec": "https://w3id.org/security#", + "holder": { + "@id": "cred:holder", + "@type": "@id" + }, + "proof": { + "@id": "sec:proof", + "@type": "@id", + "@container": "@graph" + }, + "verifiableCredential": { + "@id": "cred:verifiableCredential", + "@type": "@id", + "@container": "@graph" + } + } + }, + "EcdsaSecp256k1Signature2019": { + "@id": "https://w3id.org/security#EcdsaSecp256k1Signature2019", + "@context": { + "@version": 1.1, + "@protected": true, + "id": "@id", + "type": "@type", + "sec": "https://w3id.org/security#", + "xsd": "http://www.w3.org/2001/XMLSchema#", + "challenge": "sec:challenge", + "created": { + "@id": "http://purl.org/dc/terms/created", + "@type": "xsd:dateTime" + }, + "domain": "sec:domain", + "expires": { + "@id": "sec:expiration", + "@type": "xsd:dateTime" + }, + "jws": "sec:jws", + "nonce": "sec:nonce", + "proofPurpose": { + "@id": "sec:proofPurpose", + "@type": "@vocab", + "@context": { + "@version": 1.1, + "@protected": true, + "id": "@id", + "type": "@type", + "sec": "https://w3id.org/security#", + "assertionMethod": { + "@id": "sec:assertionMethod", + "@type": "@id", + "@container": "@set" + }, + "authentication": { + "@id": "sec:authenticationMethod", + "@type": "@id", + "@container": "@set" + } + } + }, + "proofValue": "sec:proofValue", + "verificationMethod": { + "@id": "sec:verificationMethod", + "@type": "@id" + } + } + }, + "EcdsaSecp256r1Signature2019": { + "@id": "https://w3id.org/security#EcdsaSecp256r1Signature2019", + "@context": { + "@version": 1.1, + "@protected": true, + "id": "@id", + "type": "@type", + "sec": "https://w3id.org/security#", + "xsd": "http://www.w3.org/2001/XMLSchema#", + "challenge": "sec:challenge", + "created": { + "@id": "http://purl.org/dc/terms/created", + "@type": "xsd:dateTime" + }, + "domain": "sec:domain", + "expires": { + "@id": "sec:expiration", + "@type": "xsd:dateTime" + }, + "jws": "sec:jws", + "nonce": "sec:nonce", + "proofPurpose": { + "@id": "sec:proofPurpose", + "@type": "@vocab", + "@context": { + "@version": 1.1, + "@protected": true, + "id": "@id", + "type": "@type", + "sec": "https://w3id.org/security#", + "assertionMethod": { + "@id": "sec:assertionMethod", + "@type": "@id", + "@container": "@set" + }, + "authentication": { + "@id": "sec:authenticationMethod", + "@type": "@id", + "@container": "@set" + } + } + }, + "proofValue": "sec:proofValue", + "verificationMethod": { + "@id": "sec:verificationMethod", + "@type": "@id" + } + } + }, + "Ed25519Signature2018": { + "@id": "https://w3id.org/security#Ed25519Signature2018", + "@context": { + "@version": 1.1, + "@protected": true, + "id": "@id", + "type": "@type", + "sec": "https://w3id.org/security#", + "xsd": "http://www.w3.org/2001/XMLSchema#", + "challenge": "sec:challenge", + "created": { + "@id": "http://purl.org/dc/terms/created", + "@type": "xsd:dateTime" + }, + "domain": "sec:domain", + "expires": { + "@id": "sec:expiration", + "@type": "xsd:dateTime" + }, + "jws": "sec:jws", + "nonce": "sec:nonce", + "proofPurpose": { + "@id": "sec:proofPurpose", + "@type": "@vocab", + "@context": { + "@version": 1.1, + "@protected": true, + "id": "@id", + "type": "@type", + "sec": "https://w3id.org/security#", + "assertionMethod": { + "@id": "sec:assertionMethod", + "@type": "@id", + "@container": "@set" + }, + "authentication": { + "@id": "sec:authenticationMethod", + "@type": "@id", + "@container": "@set" + } + } + }, + "proofValue": "sec:proofValue", + "verificationMethod": { + "@id": "sec:verificationMethod", + "@type": "@id" + } + } + }, + "RsaSignature2018": { + "@id": "https://w3id.org/security#RsaSignature2018", + "@context": { + "@version": 1.1, + "@protected": true, + "challenge": "sec:challenge", + "created": { + "@id": "http://purl.org/dc/terms/created", + "@type": "xsd:dateTime" + }, + "domain": "sec:domain", + "expires": { + "@id": "sec:expiration", + "@type": "xsd:dateTime" + }, + "jws": "sec:jws", + "nonce": "sec:nonce", + "proofPurpose": { + "@id": "sec:proofPurpose", + "@type": "@vocab", + "@context": { + "@version": 1.1, + "@protected": true, + "id": "@id", + "type": "@type", + "sec": "https://w3id.org/security#", + "assertionMethod": { + "@id": "sec:assertionMethod", + "@type": "@id", + "@container": "@set" + }, + "authentication": { + "@id": "sec:authenticationMethod", + "@type": "@id", + "@container": "@set" + } + } + }, + "proofValue": "sec:proofValue", + "verificationMethod": { + "@id": "sec:verificationMethod", + "@type": "@id" + } + } + }, + "proof": { + "@id": "https://w3id.org/security#proof", + "@type": "@id", + "@container": "@graph" + } + } + } +} \ No newline at end of file diff --git a/src/edge-agent/Agent.Credentials.ts b/src/edge-agent/Agent.Credentials.ts index f6ecf64e8..45270c965 100644 --- a/src/edge-agent/Agent.Credentials.ts +++ b/src/edge-agent/Agent.Credentials.ts @@ -65,6 +65,9 @@ export class AgentCredentials implements AgentCredentialsClass { ) { } + + + private createPresentationDefinitionRequest( type: Type, definition: PresentationDefinitionRequest, @@ -572,4 +575,8 @@ export class AgentCredentials implements AgentCredentialsClass { throw new AgentError.UnhandledPresentationRequest(); } + async isCredentialRevoked(credential: Credential): Promise { + return this.pollux.isCredentialRevoked(credential) + } + } diff --git a/src/edge-agent/Agent.ts b/src/edge-agent/Agent.ts index 0b199c155..054b2893c 100644 --- a/src/edge-agent/Agent.ts +++ b/src/edge-agent/Agent.ts @@ -134,6 +134,10 @@ export default class Agent this.backup = new AgentBackup(this); } + isCredentialRevoked(credential: Domain.Credential) { + return this.agentCredentials.isCredentialRevoked(credential) + } + /** * Convenience initializer for Agent * allowing default instantiation, omitting all but the absolute necessary parameters diff --git a/src/edge-agent/types/index.ts b/src/edge-agent/types/index.ts index 5e9fb1081..2cb465638 100644 --- a/src/edge-agent/types/index.ts +++ b/src/edge-agent/types/index.ts @@ -60,6 +60,8 @@ export interface AgentCredentials { revealCredentialFields: (credential: Credential, fields: string[], linkSecret: string) => Promise<{ [name: string]: any }>; + isCredentialRevoked: (credential: Credential) => Promise; + prepareRequestCredentialWithIssuer( diff --git a/src/pluto/backup/versions/0_0_1/Backup.ts b/src/pluto/backup/versions/0_0_1/Backup.ts index d2c5679fa..9d8625979 100644 --- a/src/pluto/backup/versions/0_0_1/Backup.ts +++ b/src/pluto/backup/versions/0_0_1/Backup.ts @@ -3,12 +3,13 @@ import * as Models from "../../../models"; import { JWTVerifiableCredentialRecoveryId } from "../../../../pollux/models/JWTVerifiableCredential"; import { repositoryFactory } from "../../../repositories/builders/factory"; import { IBackupTask } from "../interfaces"; +import { SDJWTVerifiableCredentialRecoveryId } from "../../../../pollux/models/SDJWTVerifiableCredential"; export class BackupTask implements IBackupTask { constructor( private readonly Pluto: Domain.Pluto, private readonly Repositories: ReturnType - ) {} + ) { } async run(): Promise { const credentials = await this.getCredentialBackups(); @@ -99,11 +100,10 @@ export class BackupTask implements IBackupTask { } private mapCredential = (model: Models.Credential): Domain.Backup.v0_0_1.Credential => { - const recoveryId = model.recoveryId === JWTVerifiableCredentialRecoveryId ? "jwt" : "anoncred"; - const data = model.recoveryId === JWTVerifiableCredentialRecoveryId - ? JSON.parse(model.dataJson).id - : model.dataJson; - + const isJWT = model.recoveryId === JWTVerifiableCredentialRecoveryId; + const isSDJWT = model.recoveryId === SDJWTVerifiableCredentialRecoveryId; + const recoveryId = isJWT ? "jwt" : isSDJWT ? "sdjwt" : "anoncred"; + const data = isJWT || isSDJWT ? JSON.parse(model.dataJson).id : model.dataJson; return { recovery_id: recoveryId, data: Buffer.from(data).toString("base64url"), diff --git a/src/pluto/backup/versions/0_0_1/Restore.ts b/src/pluto/backup/versions/0_0_1/Restore.ts index cbb6fa8af..267b9758c 100644 --- a/src/pluto/backup/versions/0_0_1/Restore.ts +++ b/src/pluto/backup/versions/0_0_1/Restore.ts @@ -11,11 +11,10 @@ export class RestoreTask implements IRestoreTask { constructor( private readonly Pluto: Domain.Pluto, private readonly backup: Domain.Backup.v0_0_1, - ) {} + ) { } async run(): Promise { validate(this.backup, Domain.Backup.v0_0_1); - await this.restoreCredentials(); await this.restoreDids(); await this.restoreDidPairs(); @@ -28,15 +27,12 @@ export class RestoreTask implements IRestoreTask { async restoreCredentials() { const credentials = this.backup.credentials.map(item => { const decoded = Buffer.from(item.data, "base64url").toString(); - if (item.recovery_id === "jwt") { return JWTCredential.fromJWS(decoded); } - if (item.recovery_id === "anoncred") { return AnonCredsCredential.fromJson(decoded); } - throw new Domain.PlutoError.RestoreCredentialInvalidError(); }); @@ -54,28 +50,25 @@ export class RestoreTask implements IRestoreTask { this.backup.did_pairs.map(item => { const host = Domain.DID.from(item.holder); const target = Domain.DID.from(item.recipient); - return this.Pluto.storeDIDPair(host, target, item.alias); }) ); } async restoreKeys() { - this.backup.keys.forEach(item => { + return Promise.all(this.backup.keys.map(item => { const jwk = JSON.parse(Buffer.from(item.key, "base64url").toString()); const key = this.jwkToDomain(jwk); - if (notNil(item.index)) { key.keySpecification.set(Domain.KeyProperties.index, item.index.toString()); } - if (notEmptyString(item.did)) { - this.Pluto.storeDID(Domain.DID.from(item.did), key); + return this.Pluto.storeDID(Domain.DID.from(item.did), key); + } else { + return this.Pluto.storePrivateKey(key); } - else { - this.Pluto.storePrivateKey(key); - } - }); + }) + ) } private jwkToDomain(jwk: Domain.JWK): Domain.PrivateKey { diff --git a/src/pollux/Pollux.ts b/src/pollux/Pollux.ts index c0acfc60b..805d1e4d3 100644 --- a/src/pollux/Pollux.ts +++ b/src/pollux/Pollux.ts @@ -1,9 +1,11 @@ import { uuid } from "@stablelib/uuid"; import type * as Anoncreds from "anoncreds-browser"; - +import * as jsonld from 'jsonld'; import { Castor } from "../domain/buildingBlocks/Castor"; import { CredentialOfferPayloads, CredentialOfferTypes, Pollux as IPollux, ProcessedCredentialOfferPayloads } from "../domain/buildingBlocks/Pollux"; +import { base64, base64url } from "multiformats/bases/base64"; import { AnoncredsLoader } from "./AnoncredsLoader"; +import * as pako from 'pako'; import { CredentialRequestOptions, @@ -34,6 +36,15 @@ import { JWTPresentationSubmission, AnoncredsPresentationSubmission, Apollo, + JWTRevocationStatus, + RevocationType, + JWTStatusListResponse, + ApolloError, + Curve, + KeyProperties, + KeyTypes, + JWTProofType, + CredentialStatusType, } from "../domain"; import { AnonCredsCredential } from "./models/AnonCredsVerifiableCredential"; import { JWTCredential } from "./models/JWTVerifiableCredential"; @@ -45,6 +56,10 @@ import { InvalidVerifyCredentialError, InvalidVerifyFormatError } from "../domai import { isPresentationDefinitionRequestType, parsePresentationSubmission, validatePresentationClaims } from "./utils/claims"; import { SDJWT as SDJWTClass } from "./utils/SDJWT"; import { SDJWTCredential } from "./models/SDJWTVerifiableCredential"; +import { HttpStatusCode } from "axios"; +import { JsonLd, RemoteDocument } from "jsonld/jsonld-spec"; +import { VerificationKeyType } from "../castor/types"; +import { revocationJsonldDocuments } from "../domain/models/revocation"; /** * Implementation of Pollux @@ -55,6 +70,7 @@ import { SDJWTCredential } from "./models/SDJWTVerifiableCredential"; */ export default class Pollux implements IPollux { private _anoncreds: AnoncredsLoader | undefined; + private _pako = pako; constructor( private apollo: Apollo, @@ -132,6 +148,177 @@ export default class Pollux implements IPollux { } } + private extractVerificationStatusFromResponse(credentialStatus: any) { + if (credentialStatus && credentialStatus.type === RevocationType.StatusList2021) { + return true; + } + return false; + } + + private extractVerificationStatusFromCredential(credentialStatus: any): credentialStatus is JWTRevocationStatus { + if (credentialStatus && credentialStatus.type === CredentialStatusType.StatusList2021Entry) { + return true; + } + return false; + } + + private extractEncodedList(body: JWTStatusListResponse): Uint8Array { + try { + const encodedList = Buffer.from(body.credentialSubject.encodedList, 'base64'); + return this._pako.ungzip(encodedList); + } catch (err) { + throw new PolluxError.InvalidRevocationStatusResponse(`Couldn't ungzip base64 encoded list, err: ${(err as Error).message}`) + } + } + + private async encode(data: any) { + const customLoader = async (url: any) => { + const cached = (revocationJsonldDocuments as any)[url] + // istanbul ignore else + if (cached) { + const doc: RemoteDocument = { + documentUrl: url, + document: cached + } + return doc + } + // The above ignores are justified because we are mocking the API calls + // And always using the catched jsonLD documents for statusProof.. + // istanbul ignore next + const response = await this.api.request( + "GET", + url, + new Map(), + new Map(), + null) + const doc: RemoteDocument = { + documentUrl: url, + document: response.body + } + // istanbul ignore next + return doc + }; + + const canonised = await jsonld.canonize(data, { + algorithm: 'URDNA2015', + format: 'application/n-quads', + documentLoader: customLoader, + }); + return Buffer.from(canonised); + + } + + private async verifyRevocationProof( + revocation: JWTStatusListResponse, + statusListIndex: number + ): Promise { + try { + const proofObject = revocation.proof ?? {}; + const { verificationMethod } = proofObject; + const proofType = proofObject.type; + const base64VerificationMethod = verificationMethod.split(",").at(1); + if (!base64VerificationMethod) { + throw new PolluxError.InvalidRevocationStatusResponse(`CredentialStatus proof invalid verificationMethod`); + } + const decodedVerificationMethodBuffer = base64.baseDecode(base64VerificationMethod); + const decodedVerificationValue = Buffer.from(decodedVerificationMethodBuffer).toString(); + const decodedVerificationMethod = JSON.parse(decodedVerificationValue); + if (proofType === JWTProofType.EcdsaSecp256k1Signature2019) { + const { publicKeyJwk } = decodedVerificationMethod; + const verificationMethodType = decodedVerificationMethod.type; + if (!publicKeyJwk) { + throw new PolluxError.InvalidCredentialStatus("No public jwk provided") + } + if (verificationMethodType !== VerificationKeyType.EcdsaSecp256k1VerificationKey2019) { + throw new PolluxError.InvalidCredentialStatus(`Only ${VerificationKeyType.EcdsaSecp256k1VerificationKey2019} is supported`) + } + const curve = decodedVerificationMethod.publicKeyJwk.crv; + const kty = decodedVerificationMethod.publicKeyJwk.kty; + if (kty !== KeyTypes.EC) { + throw new ApolloError.InvalidKeyType(kty, Object.values(KeyTypes)) + } + if (curve !== Curve.SECP256K1.toLocaleLowerCase()) { + throw new ApolloError.InvalidKeyCurve(curve, Object.values(Curve)) + } + const { x, y } = decodedVerificationMethod.publicKeyJwk; + const pk = this.apollo.createPublicKey({ + [KeyProperties.type]: KeyTypes.EC, + [KeyProperties.curve]: Curve.SECP256K1, + [KeyProperties.curvePointX]: Buffer.from(base64url.baseDecode(x)), + [KeyProperties.curvePointY]: Buffer.from(base64url.baseDecode(y)) + }); + if (!pk.canVerify()) { + throw new PolluxError.InvalidRevocationStatusResponse(`CredentialStatus proof invalid verifying key`); + } + const jwsArray = proofObject.jws.split("."); + if (jwsArray.length !== 3) { + throw new PolluxError.InvalidJWTString("Credential status jwt is invalid") + } + const { proof, ...cleanedPayload } = revocation; + const payload = { ...cleanedPayload }; + const encoded = await this.encode(payload) + const signature = Buffer.from(base64url.baseDecode(jwsArray[2])); + const signaturePayload = Buffer.from(`${jwsArray[0]}.${encoded.toString()}`) + const isSignatureValid = pk.verify(signaturePayload, signature); + if (!isSignatureValid) { + throw new PolluxError.InvalidRevocationStatusResponse(`CredentialStatus invalid signature`); + } + const statusListDecoded = this.extractEncodedList(revocation) + const isRevoked = statusListDecoded[statusListIndex] !== 0 + return isRevoked + } + throw new PolluxError.InvalidRevocationStatusResponse(`CredentialStatus proof type not supported`); + } catch (err) { + if (err instanceof PolluxError.InvalidRevocationStatusResponse) { + throw err + } else { + throw new PolluxError.InvalidRevocationStatusResponse(`Err ${(err as Error).message}`); + } + } + } + + // istanbul ignore next + // mocked during tests + private async fetchRevocationRegistry(revocationStatus: JWTRevocationStatus) { + // istanbul ignore next + const response = await this.api.request( + "GET", + revocationStatus.statusListCredential, + new Map(), + new Map(), + null + ) + // istanbul ignore next + if (response.httpStatus !== HttpStatusCode.Ok) { + throw new PolluxError.InvalidRevocationStatusResponse(`CredentialStatus response status code ${response.httpStatus}`) + } + // istanbul ignore next + return response.body + } + + async isCredentialRevoked(credential: Credential): Promise { + if (credential instanceof JWTCredential) { + if (!this.extractVerificationStatusFromCredential(credential.credentialStatus)) { + if (credential.credentialStatus) { + throw new PolluxError.CredentialRevocationTypeInvalid( + `CredentialStatus revocation type not supported` + ) + } else { + //Credential is non revocable + return false; + } + } + const revocationStatus = credential.credentialStatus; + const response = await this.fetchRevocationRegistry(revocationStatus); + if (!this.extractVerificationStatusFromResponse(response.credentialSubject)) { + throw new PolluxError.CredentialRevocationTypeInvalid( + `CredentialStatus response revocation type not supported` + ) + } + return this.verifyRevocationProof(response, revocationStatus.statusListIndex); + } + throw new PolluxError.CredentialTypeNotSupported("Only JWT Credential are supported") + } private isPresentationDefinitionRequestType @@ -492,6 +679,15 @@ export default class Pollux implements IPollux { } const verifiableCredential = JWTCredential.fromJWS(vc); + try { + const isRevoked = await this.isCredentialRevoked(verifiableCredential); + if (isRevoked) { + throw new InvalidVerifyCredentialError(vc, "Invalid Verifiable Presentation, credential is revoked"); + } + } catch (err) { + throw new InvalidVerifyCredentialError(vc, `Invalid Verifiable Presentation, could not verify if the credential is revoked, reason: ${(err as Error).message}`); + } + if (verifiableCredential.subject !== issuer) { throw new InvalidVerifyCredentialError(vc, "Invalid Verifiable Presentation payload, the credential has been issued to another holder"); } diff --git a/tests/pollux/Pollux.revocation.test.ts b/tests/pollux/Pollux.revocation.test.ts new file mode 100644 index 000000000..6608455a8 --- /dev/null +++ b/tests/pollux/Pollux.revocation.test.ts @@ -0,0 +1,536 @@ +import chai from "chai"; +import chaiAsPromised from "chai-as-promised"; +import * as sinon from "sinon"; +import SinonChai from "sinon-chai"; + +import { CredentialStatusType, Curve, JWTVerifiableCredentialProperties, KeyProperties, KeyTypes, RevocationType } from "../../src/domain"; +import { JWTCredential } from "../../src/pollux/models/JWTVerifiableCredential"; +import type Castor from "../../src/castor/Castor"; +import type Apollo from "../../src/apollo/Apollo"; +import type Pollux from "../../src/pollux/Pollux"; +import { base64, base64url } from "multiformats/bases/base64"; +import { VerificationKeyType } from "../../src/castor/types"; +import * as Fixtures from "../fixtures"; +import { SDJWTCredential } from "../../src/pollux/models/SDJWTVerifiableCredential"; + +chai.use(SinonChai); +chai.use(chaiAsPromised); +let sandbox: sinon.SinonSandbox; + + +const expect = chai.expect; +const revocableJWTCredential = `eyJhbGciOiJFUzI1NksifQ.eyJpc3MiOiJkaWQ6cHJpc206YmM5ZGFhZWFmMGFkNjczZjVkNTViM2I2NjEyYTE2NTNiYzcyYWMxNjU5Y2VmYTgxYzZlZWY0NWMxZjcyMTYzOTpDcmtCQ3JZQkVqb0tCbUYxZEdndE1SQUVTaTRLQ1hObFkzQXlOVFpyTVJJaEFqRDNnM3ctcHNnRXZQcUJxUDJmVjhPQXAwQ0l3WjVYU3FhMU9OWU1HOGRQRWpzS0IybHpjM1ZsTFRFUUFrb3VDZ2x6WldOd01qVTJhekVTSVFQRGNPbm9BV25YODBhZnA2aVVEZUl6ZUViMXMySFVPUEo5TEpRRTd1RzdYeEk3Q2dkdFlYTjBaWEl3RUFGS0xnb0pjMlZqY0RJMU5tc3hFaUVDc3luYTRsbkw3anhfSnctTXUtUjd3UUppSnhCNGpnMWUwODN1Q252amNhSSIsInN1YiI6ImRpZDpwcmlzbTozZjBiNDQ5NjI3NmI3NGEzMTU3ZmRiOTEwODU5MDExYjhjZWQwNjU1ZGYyNWU3ZjgwNTAyZjE0OGU2NmM1NGU4OkN0OEJDdHdCRW5RS0gyRjFkR2hsYm5ScFkyRjBhVzl1WVhWMGFHVnVkR2xqWVhScGIyNUxaWGtRQkVKUENnbHpaV053TWpVMmF6RVNJS0ZpZjRlcnNMOFF2SFF2VmxXUEFNaHFPNmwzbXZSbUp5ZlRFRTYzZzI2MEdpRG9PNS1KRzR3Z1JkZk1LcXlqZnp2ek9sSXRsNDNsdDQ0Z21TMWxtaFpKZUJKa0NnOXRZWE4wWlhKdFlYTjBaWEpMWlhrUUFVSlBDZ2x6WldOd01qVTJhekVTSUtGaWY0ZXJzTDhRdkhRdlZsV1BBTWhxTzZsM212Um1KeWZURUU2M2cyNjBHaURvTzUtSkc0d2dSZGZNS3F5amZ6dnpPbEl0bDQzbHQ0NGdtUzFsbWhaSmVBIiwibmJmIjoxNzE1MDA2OTY4LCJ2YyI6eyJjcmVkZW50aWFsU3ViamVjdCI6eyJlbWFpbEFkZHJlc3MiOiJjb3Jwb3JhdGVAZG9tYWluLmNvbSIsImRyaXZpbmdDbGFzcyI6MSwiZHJpdmluZ0xpY2Vuc2VJRCI6IkVTLTEyMzQ1Njc4OTAiLCJpZCI6ImRpZDpwcmlzbTozZjBiNDQ5NjI3NmI3NGEzMTU3ZmRiOTEwODU5MDExYjhjZWQwNjU1ZGYyNWU3ZjgwNTAyZjE0OGU2NmM1NGU4OkN0OEJDdHdCRW5RS0gyRjFkR2hsYm5ScFkyRjBhVzl1WVhWMGFHVnVkR2xqWVhScGIyNUxaWGtRQkVKUENnbHpaV053TWpVMmF6RVNJS0ZpZjRlcnNMOFF2SFF2VmxXUEFNaHFPNmwzbXZSbUp5ZlRFRTYzZzI2MEdpRG9PNS1KRzR3Z1JkZk1LcXlqZnp2ek9sSXRsNDNsdDQ0Z21TMWxtaFpKZUJKa0NnOXRZWE4wWlhKdFlYTjBaWEpMWlhrUUFVSlBDZ2x6WldOd01qVTJhekVTSUtGaWY0ZXJzTDhRdkhRdlZsV1BBTWhxTzZsM212Um1KeWZURUU2M2cyNjBHaURvTzUtSkc0d2dSZGZNS3F5amZ6dnpPbEl0bDQzbHQ0NGdtUzFsbWhaSmVBIiwiZGF0ZU9mSXNzdWFuY2UiOiIyMDIzLTAxLTAxVDAyOjAyOjAyWiJ9LCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIl0sIkBjb250ZXh0IjpbImh0dHBzOlwvXC93d3cudzMub3JnXC8yMDE4XC9jcmVkZW50aWFsc1wvdjEiXSwiY3JlZGVudGlhbFN0YXR1cyI6eyJzdGF0dXNQdXJwb3NlIjoiUmV2b2NhdGlvbiIsInN0YXR1c0xpc3RJbmRleCI6MSwiaWQiOiJodHRwOlwvXC8xOTIuMTY4LjE1NC4yMDU6ODAwMFwvcHJpc20tYWdlbnRcL2NyZWRlbnRpYWwtc3RhdHVzXC8xYzE1Yjk2My1kYzRkLTQ3NjUtYjc1Mi01M2EzZmQxZjE4MzMjMSIsInR5cGUiOiJTdGF0dXNMaXN0MjAyMUVudHJ5Iiwic3RhdHVzTGlzdENyZWRlbnRpYWwiOiJodHRwOlwvXC8xOTIuMTY4LjE1NC4yMDU6ODAwMFwvcHJpc20tYWdlbnRcL2NyZWRlbnRpYWwtc3RhdHVzXC8xYzE1Yjk2My1kYzRkLTQ3NjUtYjc1Mi01M2EzZmQxZjE4MzMifX19.NxuJoiEgSnGs7suM5cxDq3tZ6ZYVDAscnKBuAXghW0KD9MhSr1vBUo9F6y0YkjhHBY4Y_gTGnIMBwgLYjcNVKw`; + +describe("Pollux", () => { + let apollo: Apollo; + let pollux: Pollux; + let castor: Castor; + + beforeEach(async () => { + const Pollux = jest.requireActual("../../src/pollux/Pollux").default; + const Castor = jest.requireActual("../../src/castor/Castor").default; + const Apollo = jest.requireActual("../../src/apollo/Apollo").default; + + sandbox = sinon.createSandbox(); + apollo = new Apollo(); + castor = new Castor(apollo); + pollux = new Pollux(apollo, castor); + await pollux.start(); + }); + + afterEach(async () => { + sandbox.restore(); + jest.restoreAllMocks(); // Reset modules before applying the mock + }); + + it("Should correctly determine that a Credential is revoked when calling the credentialStatus [EcdsaSecp256k1Signature2019] list endpoints", async () => { + sandbox.stub(pollux as any, "fetchRevocationRegistry").resolves( + { + "proof": { + "type": "EcdsaSecp256k1Signature2019", + "proofPurpose": "assertionMethod", + "verificationMethod": "data:application/json;base64,eyJAY29udGV4dCI6WyJodHRwczovL3czaWQub3JnL3NlY3VyaXR5L3YxIl0sInR5cGUiOiJFY2RzYVNlY3AyNTZrMVZlcmlmaWNhdGlvbktleTIwMTkiLCJwdWJsaWNLZXlKd2siOnsiY3J2Ijoic2VjcDI1NmsxIiwia2V5X29wcyI6WyJ2ZXJpZnkiXSwia3R5IjoiRUMiLCJ4IjoiVFlCZ21sM1RpUWRSX1lRRDFoSXVOTzhiUnluU0otcmxQcWFVd3JXa3EtRT0iLCJ5IjoiVjBnVFlBM0xhbFd3Q3hPZHlqb2ZoR2JkYVFEd3EwQXdCblNodFJLXzNYZz0ifX0=", + "created": "2024-06-14T10:56:59.948091Z", + "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzI1NksifQ..Q1mj3jMf5DWK83E55r6vNUPpsYYgclgwYoNFBSYBzA5x6fI_2cPHJsXECnQlG1XMj2ifldngpJXegTpwe3Fgwg" + }, + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/vc/status-list/2021/v1" + ], + "type": [ + "VerifiableCredential", + "StatusList2021Credential" + ], + "id": "http://localhost:8085/credential-status/575092c2-7eb0-40ae-8f41-3b499f45f3dc", + "issuer": "did:prism:462c4811bf61d7de25b3baf86c5d2f0609b4debe53792d297bf612269bf8593a", + "issuanceDate": 1717714047, + "credentialSubject": { + "type": "StatusList2021", + "statusPurpose": "Revocation", + //Credential index [0] has a value of 2 + "encodedList": "H4sIAAAAAAAA_-3BMQ0AAAACIGf_0MbwARoAAAAAAAAAAAAAAAAAAADgbbmHB0sAQAAA" + } + } + ); + + const credential = JWTCredential.fromJWS(revocableJWTCredential); + + //Workaround to hardcode the revocation index + const vc = credential.properties.get(JWTVerifiableCredentialProperties.vc); + vc.credentialStatus.statusListIndex = 0; + credential.properties.set(JWTVerifiableCredentialProperties.vc, vc); + + const revoked = await pollux.isCredentialRevoked(credential) + expect(revoked).to.eq(true) + + }) + + it("Should throw an error if we try to use a SDJWT credential ", async () => { + sandbox.stub(pollux as any, "fetchRevocationRegistry").resolves( + { + "proof": { + "type": "EcdsaSecp256k1Signature2019", + "proofPurpose": "assertionMethod", + "verificationMethod": "data:application/json;base64,eyJAY29udGV4dCI6WyJodHRwczovL3czaWQub3JnL3NlY3VyaXR5L3YxIl0sInR5cGUiOiJFY2RzYVNlY3AyNTZrMVZlcmlmaWNhdGlvbktleTIwMTkiLCJwdWJsaWNLZXlKd2siOnsiY3J2Ijoic2VjcDI1NmsxIiwia2V5X29wcyI6WyJ2ZXJpZnkiXSwia3R5IjoiRUMiLCJ4IjoiVFlCZ21sM1RpUWRSX1lRRDFoSXVOTzhiUnluU0otcmxQcWFVd3JXa3EtRT0iLCJ5IjoiVjBnVFlBM0xhbFd3Q3hPZHlqb2ZoR2JkYVFEd3EwQXdCblNodFJLXzNYZz0ifX0=", + "created": "2024-06-14T10:56:59.948091Z", + "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzI1NksifQ..Q1mj3jMf5DWK83E55r6vNUPpsYYgclgwYoNFBSYBzA5x6fI_2cPHJsXECnQlG1XMj2ifldngpJXegTpwe3Fgwg" + }, + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/vc/status-list/2021/v1" + ], + "type": [ + "VerifiableCredential", + "StatusList2021Credential" + ], + "id": "http://localhost:8085/credential-status/575092c2-7eb0-40ae-8f41-3b499f45f3dc", + "issuer": "did:prism:462c4811bf61d7de25b3baf86c5d2f0609b4debe53792d297bf612269bf8593a", + "issuanceDate": 1717714047, + "credentialSubject": { + "type": "StatusList2024", + "statusPurpose": "Revocation", + //Credential index [0] has a value of 2 + "encodedList": "H4sIAAAAAAAA_-3BMQ0AAAACIGf_0MbwARoAAAAAAAAAAAAAAAAAAADgbbmHB0sAQAAA" + } + } + ); + const credential = SDJWTCredential.fromJWS(Fixtures.Credentials.SDJWT.credentialPayloadEncoded); + + expect(pollux.isCredentialRevoked(credential)) + .to.eventually.rejectedWith(`Only JWT Credential are supported`) + }) + + it("Should throw an error if we try to use a credential which an unsupported type ", async () => { + sandbox.stub(pollux as any, "fetchRevocationRegistry").resolves( + { + "proof": { + "type": "EcdsaSecp256k1Signature2019", + "proofPurpose": "assertionMethod", + "verificationMethod": "data:application/json;base64,eyJAY29udGV4dCI6WyJodHRwczovL3czaWQub3JnL3NlY3VyaXR5L3YxIl0sInR5cGUiOiJFY2RzYVNlY3AyNTZrMVZlcmlmaWNhdGlvbktleTIwMTkiLCJwdWJsaWNLZXlKd2siOnsiY3J2Ijoic2VjcDI1NmsxIiwia2V5X29wcyI6WyJ2ZXJpZnkiXSwia3R5IjoiRUMiLCJ4IjoiVFlCZ21sM1RpUWRSX1lRRDFoSXVOTzhiUnluU0otcmxQcWFVd3JXa3EtRT0iLCJ5IjoiVjBnVFlBM0xhbFd3Q3hPZHlqb2ZoR2JkYVFEd3EwQXdCblNodFJLXzNYZz0ifX0=", + "created": "2024-06-14T10:56:59.948091Z", + "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzI1NksifQ..Q1mj3jMf5DWK83E55r6vNUPpsYYgclgwYoNFBSYBzA5x6fI_2cPHJsXECnQlG1XMj2ifldngpJXegTpwe3Fgwg" + }, + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/vc/status-list/2021/v1" + ], + "type": [ + "VerifiableCredential", + "StatusList2021Credential" + ], + "id": "http://localhost:8085/credential-status/575092c2-7eb0-40ae-8f41-3b499f45f3dc", + "issuer": "did:prism:462c4811bf61d7de25b3baf86c5d2f0609b4debe53792d297bf612269bf8593a", + "issuanceDate": 1717714047, + "credentialSubject": { + "type": "StatusList2024", + "statusPurpose": "Revocation", + //Credential index [0] has a value of 2 + "encodedList": "H4sIAAAAAAAA_-3BMQ0AAAACIGf_0MbwARoAAAAAAAAAAAAAAAAAAADgbbmHB0sAQAAA" + } + } + ); + const credential = JWTCredential.fromJWS(revocableJWTCredential); + const vc = credential.properties.get(JWTVerifiableCredentialProperties.vc); + vc.credentialStatus.statusListIndex = 0; + vc.credentialStatus.type = "Wrong" + credential.properties.set(JWTVerifiableCredentialProperties.vc, vc); + + expect(pollux.isCredentialRevoked(credential)) + .to.eventually.rejectedWith(`CredentialStatus revocation type not supported`) + + expect(pollux.isCredentialRevoked(JWTCredential.fromJWS(revocableJWTCredential))) + .to.eventually.rejectedWith(`CredentialStatus response revocation type not supported`) + }) + + it("Should throw an error if the credential status proof contains an invalid verificationMethod", async () => { + + sandbox.stub(pollux as any, "fetchRevocationRegistry").resolves( + { + "proof": { + "type": "EcdsaSecp256k1Signature2019", + "proofPurpose": "assertionMethod", + "verificationMethod": "data:application/json;base64", + "created": "2024-06-14T10:56:59.948091Z", + "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzI1NksifQ..Q1mj3jMf5DWK83E55r6vNUPpsYYgclgwYoNFBSYBzA5x6fI_2cPHJsXECnQlG1XMj2ifldngpJXegTpwe3Fgwg" + }, + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/vc/status-list/2021/v1" + ], + "type": [ + "VerifiableCredential", + "StatusList2021Credential" + ], + "id": "http://localhost:8085/credential-status/575092c2-7eb0-40ae-8f41-3b499f45f3dc", + "issuer": "did:prism:462c4811bf61d7de25b3baf86c5d2f0609b4debe53792d297bf612269bf8593a", + "issuanceDate": 1717714047, + "credentialSubject": { + "type": "StatusList2021", + "statusPurpose": "Revocation", + "encodedList": "H4sIAAAAAAAA_-3BMQ0AAAACIGf_0MbwARoAAAAAAAAAAAAAAAAAAADgbbmHB0sAQAAA" + } + } + ); + + await expect(pollux.isCredentialRevoked(JWTCredential.fromJWS(revocableJWTCredential))) + .to.eventually.rejectedWith(`CredentialStatus proof invalid verificationMethod`) + + }) + + it("should throw an error if no jwk is provided", async () => { + const encoded = base64.baseEncode(Buffer.from(JSON.stringify({ noJWK: true }))) + sandbox.stub(pollux as any, "fetchRevocationRegistry").resolves( + { + "proof": { + "type": "EcdsaSecp256k1Signature2019", + "proofPurpose": "assertionMethod", + "verificationMethod": `data:application/json;base64,${encoded}`, + "created": "2024-06-14T10:56:59.948091Z", + "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzI1NksifQ..Q1mj3jMf5DWK83E55r6vNUPpsYYgclgwYoNFBSYBzA5x6fI_2cPHJsXECnQlG1XMj2ifldngpJXegTpwe3Fgwg" + }, + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/vc/status-list/2021/v1" + ], + "type": [ + "VerifiableCredential", + "StatusList2021Credential" + ], + "id": "http://localhost:8085/credential-status/575092c2-7eb0-40ae-8f41-3b499f45f3dc", + "issuer": "did:prism:462c4811bf61d7de25b3baf86c5d2f0609b4debe53792d297bf612269bf8593a", + "issuanceDate": 1717714047, + "credentialSubject": { + "type": "StatusList2021", + "statusPurpose": "Revocation", + "encodedList": "H4sIAAAAAAAA_-3BMQ0AAAACIGf_0MbwARoAAAAAAAAAAAAAAAAAAADgbbmHB0sAQAAA" + } + } + ); + + await expect(pollux.isCredentialRevoked(JWTCredential.fromJWS(revocableJWTCredential))) + .to.eventually.rejectedWith("No public jwk provided") + }) + + it("should throw an eror if a wrong verificationMethod type is used", async () => { + const encoded2 = base64.baseEncode(Buffer.from(JSON.stringify({ publicKeyJwk: { x: "423", y: "123" } }))) + sandbox.stub(pollux as any, "fetchRevocationRegistry").resolves( + { + "proof": { + "type": "EcdsaSecp256k1Signature2019", + "proofPurpose": "assertionMethod", + "verificationMethod": `data:application/json;base64,${encoded2}`, + "created": "2024-06-14T10:56:59.948091Z", + "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzI1NksifQ..Q1mj3jMf5DWK83E55r6vNUPpsYYgclgwYoNFBSYBzA5x6fI_2cPHJsXECnQlG1XMj2ifldngpJXegTpwe3Fgwg" + }, + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/vc/status-list/2021/v1" + ], + "type": [ + "VerifiableCredential", + "StatusList2021Credential" + ], + "id": "http://localhost:8085/credential-status/575092c2-7eb0-40ae-8f41-3b499f45f3dc", + "issuer": "did:prism:462c4811bf61d7de25b3baf86c5d2f0609b4debe53792d297bf612269bf8593a", + "issuanceDate": 1717714047, + "credentialSubject": { + "type": "StatusList2021", + "statusPurpose": "Revocation", + "encodedList": "H4sIAAAAAAAA_-3BMQ0AAAACIGf_0MbwARoAAAAAAAAAAAAAAAAAAADgbbmHB0sAQAAA" + } + } + ); + + await expect(pollux.isCredentialRevoked(JWTCredential.fromJWS(revocableJWTCredential))) + .to.eventually.rejectedWith("Err Only EcdsaSecp256k1VerificationKey2019 is supported") + + + }) + + it("Should throw an error if a wrong key type is used", async () => { + const encoded3 = base64.baseEncode(Buffer.from(JSON.stringify({ type: VerificationKeyType.EcdsaSecp256k1VerificationKey2019, publicKeyJwk: { x: "423", y: "123" } }))) + sandbox.stub(pollux as any, "fetchRevocationRegistry").resolves( + { + "proof": { + "type": "EcdsaSecp256k1Signature2019", + "proofPurpose": "assertionMethod", + "verificationMethod": `data:application/json;base64,${encoded3}`, + "created": "2024-06-14T10:56:59.948091Z", + "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzI1NksifQ..Q1mj3jMf5DWK83E55r6vNUPpsYYgclgwYoNFBSYBzA5x6fI_2cPHJsXECnQlG1XMj2ifldngpJXegTpwe3Fgwg" + }, + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/vc/status-list/2021/v1" + ], + "type": [ + "VerifiableCredential", + "StatusList2021Credential" + ], + "id": "http://localhost:8085/credential-status/575092c2-7eb0-40ae-8f41-3b499f45f3dc", + "issuer": "did:prism:462c4811bf61d7de25b3baf86c5d2f0609b4debe53792d297bf612269bf8593a", + "issuanceDate": 1717714047, + "credentialSubject": { + "type": "StatusList2021", + "statusPurpose": "Revocation", + "encodedList": "H4sIAAAAAAAA_-3BMQ0AAAACIGf_0MbwARoAAAAAAAAAAAAAAAAAAADgbbmHB0sAQAAA" + } + } + ); + + await expect(pollux.isCredentialRevoked(JWTCredential.fromJWS(revocableJWTCredential))) + .to.eventually.rejectedWith("Err Invalid key type: undefined. Valid options are: EC,Curve25519,unknown") + + }) + + it("Should throw an error if a wrong key curve is used", async () => { + const encoded4 = base64.baseEncode(Buffer.from(JSON.stringify({ type: VerificationKeyType.EcdsaSecp256k1VerificationKey2019, publicKeyJwk: { x: "423", y: "123", kty: KeyTypes.EC } }))) + sandbox.stub(pollux as any, "fetchRevocationRegistry").resolves( + { + "proof": { + "type": "EcdsaSecp256k1Signature2019", + "proofPurpose": "assertionMethod", + "verificationMethod": `data:application/json;base64,${encoded4}`, + "created": "2024-06-14T10:56:59.948091Z", + "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzI1NksifQ..Q1mj3jMf5DWK83E55r6vNUPpsYYgclgwYoNFBSYBzA5x6fI_2cPHJsXECnQlG1XMj2ifldngpJXegTpwe3Fgwg" + }, + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/vc/status-list/2021/v1" + ], + "type": [ + "VerifiableCredential", + "StatusList2021Credential" + ], + "id": "http://localhost:8085/credential-status/575092c2-7eb0-40ae-8f41-3b499f45f3dc", + "issuer": "did:prism:462c4811bf61d7de25b3baf86c5d2f0609b4debe53792d297bf612269bf8593a", + "issuanceDate": 1717714047, + "credentialSubject": { + "type": "StatusList2021", + "statusPurpose": "Revocation", + "encodedList": "H4sIAAAAAAAA_-3BMQ0AAAACIGf_0MbwARoAAAAAAAAAAAAAAAAAAADgbbmHB0sAQAAA" + } + } + ); + + await expect(pollux.isCredentialRevoked(JWTCredential.fromJWS(revocableJWTCredential))) + .to.eventually.rejectedWith("Err Invalid key curve: undefined. Valid options are: X25519,Ed25519,Secp256k1") + + + }) + + it("Should throw an eror if an invalid verificationKey is used", async () => { + const encoded5 = base64.baseEncode(Buffer.from(JSON.stringify({ type: VerificationKeyType.EcdsaSecp256k1VerificationKey2019, publicKeyJwk: { x: 'TYBgml3TiQdR_YQD1hIuNO8bRynSJ-rlPqaUwrWkq-E=', y: 'V0gTYA3LalWwCxOdyjofhGbdaQDwq0AwBnShtRK_3Xg=', kty: KeyTypes.EC, crv: Curve.SECP256K1.toLocaleLowerCase() } }))) + const pk = Fixtures.Keys.secp256K1.publicKey; + + (pk as any).canVerify = () => false; + sandbox.stub((pollux as any), "apollo").get(() => ({ + createPublicKey: sandbox.stub().returns(pk) + })); + sandbox.stub(pollux as any, "fetchRevocationRegistry").resolves( + { + "proof": { + "type": "EcdsaSecp256k1Signature2019", + "proofPurpose": "assertionMethod", + "verificationMethod": `data:application/json;base64,${encoded5}`, + "created": "2024-06-14T10:56:59.948091Z", + "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzI1NksifQ..Q1mj3jMf5DWK83E55r6vNUPpsYYgclgwYoNFBSYBzA5x6fI_2cPHJsXECnQlG1XMj2ifldngpJXegTpwe3Fgwg" + }, + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/vc/status-list/2021/v1" + ], + "type": [ + "VerifiableCredential", + "StatusList2021Credential" + ], + "id": "http://localhost:8085/credential-status/575092c2-7eb0-40ae-8f41-3b499f45f3dc", + "issuer": "did:prism:462c4811bf61d7de25b3baf86c5d2f0609b4debe53792d297bf612269bf8593a", + "issuanceDate": 1717714047, + "credentialSubject": { + "type": "StatusList2021", + "statusPurpose": "Revocation", + "encodedList": "H4sIAAAAAAAA_-3BMQ0AAAACIGf_0MbwARoAAAAAAAAAAAAAAAAAAADgbbmHB0sAQAAA" + } + } + ); + + await expect(pollux.isCredentialRevoked(JWTCredential.fromJWS(revocableJWTCredential))) + .to.eventually.rejectedWith("CredentialStatus proof invalid verifying key") + }) + + it("Should throw an error if the status jwt is invalid", async () => { + const encoded6 = base64.baseEncode(Buffer.from(JSON.stringify({ type: VerificationKeyType.EcdsaSecp256k1VerificationKey2019, publicKeyJwk: { x: 'TYBgml3TiQdR_YQD1hIuNO8bRynSJ-rlPqaUwrWkq-E=', y: 'V0gTYA3LalWwCxOdyjofhGbdaQDwq0AwBnShtRK_3Xg=', kty: KeyTypes.EC, crv: Curve.SECP256K1.toLocaleLowerCase() } }))) + + sandbox.stub(pollux as any, "fetchRevocationRegistry").resolves( + { + "proof": { + "type": "EcdsaSecp256k1Signature2019", + "proofPurpose": "assertionMethod", + "verificationMethod": `data:application/json;base64,${encoded6}`, + "created": "2024-06-14T10:56:59.948091Z", + "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzI1NksifQ." + }, + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/vc/status-list/2021/v1" + ], + "type": [ + "VerifiableCredential", + "StatusList2021Credential" + ], + "id": "http://localhost:8085/credential-status/575092c2-7eb0-40ae-8f41-3b499f45f3dc", + "issuer": "did:prism:462c4811bf61d7de25b3baf86c5d2f0609b4debe53792d297bf612269bf8593a", + "issuanceDate": 1717714047, + "credentialSubject": { + "type": "StatusList2021", + "statusPurpose": "Revocation", + "encodedList": "H4sIAAAAAAAA_-3BMQ0AAAACIGf_0MbwARoAAAAAAAAAAAAAAAAAAADgbbmHB0sAQAAA" + } + } + ); + + await expect(pollux.isCredentialRevoked(JWTCredential.fromJWS(revocableJWTCredential))) + .to.eventually.rejectedWith("Credential status jwt is invalid") + }) + + it("should throw an error if wrong signature is used", async () => { + const pk2 = Fixtures.Keys.secp256K1.publicKey; + (pk2 as any).verify = () => false; + (pk2 as any).canVerify = () => true; + const encoded8 = base64.baseEncode(Buffer.from(JSON.stringify({ type: VerificationKeyType.EcdsaSecp256k1VerificationKey2019, publicKeyJwk: { x: 'TYBgml3TiQdR_YQD1hIuNO8bRynSJ-rlPqaUwrWkq-E=', y: 'V0gTYA3LalWwCxOdyjofhGbdaQDwq0AwBnShtRK_3Xg=', kty: KeyTypes.EC, crv: Curve.SECP256K1.toLocaleLowerCase() } }))) + sandbox.stub((pollux as any), "apollo").get(() => ({ + createPublicKey: sandbox.stub().returns(pk2) + })); + sandbox.stub(pollux as any, "fetchRevocationRegistry").resolves( + { + "proof": { + "type": "EcdsaSecp256k1Signature2019", + "proofPurpose": "assertionMethod", + "verificationMethod": `data:application/json;base64,${encoded8}`, + "created": "2024-06-14T10:56:59.948091Z", + "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzI1NksifQ..Q1mj3jMf5DWK83E55r6vNUPpsYYgclgwYoNFBSYBzA5x6fI_2cPHJsXECnQlG1XMj2ifldngpJXegTpwe3Fgwg" + }, + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/vc/status-list/2021/v1" + ], + "type": [ + "VerifiableCredential", + "StatusList2021Credential" + ], + "id": "http://localhost:8085/credential-status/575092c2-7eb0-40ae-8f41-3b499f45f3dc", + "issuer": "did:prism:462c4811bf61d7de25b3baf86c5d2f0609b4debe53792d297bf612269bf8593a", + "issuanceDate": 1717714047, + "credentialSubject": { + "type": "StatusList2021", + "statusPurpose": "Revocation", + "encodedList": "H4sIAAAAAAAA_-3BMQ0AAAACIGf_0MbwARoAAAAAAAAAAAAAAAAAAADgbbmHB0sAQAAA" + } + } + ); + + await expect(pollux.isCredentialRevoked(JWTCredential.fromJWS(revocableJWTCredential))) + .to.eventually.rejectedWith("CredentialStatus invalid signature") + }) + + it("Should throw an error if we cannot decode the revocation registry correctly ", async () => { + + const Pollux = jest.requireActual("../../src/pollux/Pollux").default; + const Castor = jest.requireActual("../../src/castor/Castor").default; + const Apollo = jest.requireActual("../../src/apollo/Apollo").default; + + apollo = new Apollo(); + castor = new Castor(apollo); + pollux = new Pollux(apollo, castor); + + sandbox.stub((pollux as any)._pako, 'ungzip').throws(new Error("whatever")); + + sandbox.stub(pollux as any, "fetchRevocationRegistry").resolves( + { + "proof": { + "type": "EcdsaSecp256k1Signature2019", + "proofPurpose": "assertionMethod", + "verificationMethod": "data:application/json;base64,eyJAY29udGV4dCI6WyJodHRwczovL3czaWQub3JnL3NlY3VyaXR5L3YxIl0sInR5cGUiOiJFY2RzYVNlY3AyNTZrMVZlcmlmaWNhdGlvbktleTIwMTkiLCJwdWJsaWNLZXlKd2siOnsiY3J2Ijoic2VjcDI1NmsxIiwia2V5X29wcyI6WyJ2ZXJpZnkiXSwia3R5IjoiRUMiLCJ4IjoiVFlCZ21sM1RpUWRSX1lRRDFoSXVOTzhiUnluU0otcmxQcWFVd3JXa3EtRT0iLCJ5IjoiVjBnVFlBM0xhbFd3Q3hPZHlqb2ZoR2JkYVFEd3EwQXdCblNodFJLXzNYZz0ifX0=", + "created": "2024-06-14T10:56:59.948091Z", + "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzI1NksifQ..Q1mj3jMf5DWK83E55r6vNUPpsYYgclgwYoNFBSYBzA5x6fI_2cPHJsXECnQlG1XMj2ifldngpJXegTpwe3Fgwg" + }, + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/vc/status-list/2021/v1" + ], + "type": [ + "VerifiableCredential", + "StatusList2021Credential" + ], + "id": "http://localhost:8085/credential-status/575092c2-7eb0-40ae-8f41-3b499f45f3dc", + "issuer": "did:prism:462c4811bf61d7de25b3baf86c5d2f0609b4debe53792d297bf612269bf8593a", + "issuanceDate": 1717714047, + "credentialSubject": { + "type": "StatusList2021", + "statusPurpose": "Revocation", + "encodedList": "H4sIAAAAAAAA_-3BMQ0AAAACIGf_0MbwARoAAAAAAAAAAAAAAAAAAADgbbmHB0sAQAAA" + } + } + ); + + await expect(pollux.isCredentialRevoked(JWTCredential.fromJWS(revocableJWTCredential))) + .to.eventually.rejectedWith(`Couldn't ungzip base64 encoded list, err: whatever`) + }) + + + it("Should throw an error if the status proof type is invalid", async () => { + const encoded6 = base64.baseEncode(Buffer.from(JSON.stringify({ type: VerificationKeyType.EcdsaSecp256k1VerificationKey2019, publicKeyJwk: { x: 'TYBgml3TiQdR_YQD1hIuNO8bRynSJ-rlPqaUwrWkq-E=', y: 'V0gTYA3LalWwCxOdyjofhGbdaQDwq0AwBnShtRK_3Xg=', kty: KeyTypes.EC, crv: Curve.SECP256K1.toLocaleLowerCase() } }))) + sandbox.stub(pollux as any, "fetchRevocationRegistry").resolves( + { + "proof": { + "type": "EcdsaSecp256k1Signature2024", + "proofPurpose": "assertionMethod", + "verificationMethod": `data:application/json;base64,${encoded6}`, + "created": "2024-06-14T10:56:59.948091Z", + "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzI1NksifQ." + }, + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/vc/status-list/2021/v1" + ], + "type": [ + "VerifiableCredential", + "StatusList2021Credential" + ], + "id": "http://localhost:8085/credential-status/575092c2-7eb0-40ae-8f41-3b499f45f3dc", + "issuer": "did:prism:462c4811bf61d7de25b3baf86c5d2f0609b4debe53792d297bf612269bf8593a", + "issuanceDate": 1717714047, + "credentialSubject": { + "type": "StatusList2021", + "statusPurpose": "Revocation", + "encodedList": "H4sIAAAAAAAA_-3BMQ0AAAACIGf_0MbwARoAAAAAAAAAAAAAAAAAAADgbbmHB0sAQAAA" + } + } + ); + + await expect(pollux.isCredentialRevoked(JWTCredential.fromJWS(revocableJWTCredential))) + .to.eventually.rejectedWith("CredentialStatus proof type not supported") + + + }) +}); diff --git a/tests/pollux/Pollux.test.ts b/tests/pollux/Pollux.test.ts index c155d3343..112ac261f 100644 --- a/tests/pollux/Pollux.test.ts +++ b/tests/pollux/Pollux.test.ts @@ -2,9 +2,9 @@ import chai from "chai"; import chaiAsPromised from "chai-as-promised"; import * as sinon from "sinon"; import SinonChai from "sinon-chai"; -import { expect, assert } from "chai"; +import { assert } from "chai"; -import { AttachmentDescriptor, AttachmentFormats, Claims, Credential, CredentialRequestOptions, CredentialType, Curve, DID, JWT_ALG, JWTCredentialPayload, JWTPresentationPayload, JWTVerifiableCredentialProperties, KeyTypes, LinkSecret, Message, PolluxError, PresentationClaims, PresentationOptions, PrivateKey, W3CVerifiableCredentialContext, W3CVerifiableCredentialType } from "../../src/domain"; +import { AttachmentDescriptor, AttachmentFormats, Claims, Credential, CredentialRequestOptions, CredentialType, Curve, DID, JWT_ALG, JWTCredentialPayload, JWTPresentationPayload, JWTVerifiableCredentialProperties, KeyTypes, LinkSecret, Message, PolluxError, PresentationClaims, PresentationOptions, PrivateKey, RevocationType, W3CVerifiableCredentialContext, W3CVerifiableCredentialType } from "../../src/domain"; import { JWTCredential } from "../../src/pollux/models/JWTVerifiableCredential"; import Castor from "../../src/castor/Castor"; import Apollo from "../../src/apollo/Apollo"; @@ -24,6 +24,8 @@ chai.use(SinonChai); chai.use(chaiAsPromised); let sandbox: sinon.SinonSandbox; + +const expect = chai.expect; const jwtParts = [ "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9", "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwidHlwZSI6Imp3dCJ9", @@ -515,6 +517,22 @@ describe("Pollux", () => { }); }); + describe("JWT", () => { + test("ok", async () => { + + const pr = new PresentationRequest(AttachmentFormats.JWT, Fixtures.Credentials.JWT.presentationRequest); + const cred = JWTCredential.fromJWS(Fixtures.Credentials.JWT.credentialPayloadEncoded); + const did = Fixtures.DIDs.peerDID1; + const privateKey = Fixtures.Keys.secp256K1.privateKey; + + const result = await pollux.createPresentationProof(pr, cred, { + did, + privateKey + }); + + expect(result).not.to.be.null; + }); + }); }); describe("Anoncreds", () => { @@ -725,51 +743,6 @@ describe("Pollux", () => { expect(result).not.to.be.null; }); - - test("ed25519 ok", async () => { - const jwt = new JWT(apollo, castor); - const issuerSeed = apollo.createRandomSeed().seed; - const sk = apollo.createPrivateKey({ - type: KeyTypes.EC, - curve: Curve.ED25519, - seed: Buffer.from(issuerSeed.value).toString("hex"), - }); - const masterSk = apollo.createPrivateKey({ - type: KeyTypes.EC, - curve: Curve.SECP256K1, - seed: Buffer.from(issuerSeed.value).toString("hex"), - }); - const issuerDID = await castor.createPrismDID( - masterSk.publicKey(), - [], - [ - sk.publicKey() - ] - ) - const validPayload = { - iss: issuerDID.toString(), - sub: undefined as any, - vc: {} as any - } - - const validJWTString = await jwt.sign({ - issuerDID: issuerDID, - privateKey: sk, - payload: validPayload, - }) - - const pr = new PresentationRequest(AttachmentFormats.JWT, Fixtures.Credentials.JWT.presentationRequest); - const cred = JWTCredential.fromJWS(validJWTString); - const did = Fixtures.DIDs.peerDID1; - const privateKey = sk; - - const result = await pollux.createPresentationProof(pr, cred, { - did, - privateKey - }); - - expect(result).not.to.be.null; - }); }); describe("SDJWT", () => { @@ -1609,71 +1582,6 @@ describe("Pollux", () => { }) - // it("Should Verify false when the presentation contains a credential that has been issued by an issuer with keys that don't match", async () => { - - // const issuerSeed = apollo.createRandomSeed().seed; - // const holderSeed = apollo.createRandomSeed().seed; - // const wrongIssuerSeed = apollo.createRandomSeed().seed; - - // const issuerPrv = apollo.createPrivateKey({ - // type: KeyTypes.EC, - // curve: Curve.SECP256K1, - // seed: Buffer.from(issuerSeed.value).toString("hex"), - // }); - - // const wrongIssuerPrv = apollo.createPrivateKey({ - // type: KeyTypes.EC, - // curve: Curve.SECP256K1, - // seed: Buffer.from(wrongIssuerSeed.value).toString("hex"), - // }); - - // const holderPrv = apollo.createPrivateKey({ - // type: KeyTypes.EC, - // curve: Curve.SECP256K1, - // seed: Buffer.from(holderSeed.value).toString("hex"), - // }); - - // const issuerDID = await castor.createPrismDID( - // issuerPrv.publicKey() - // ) - - // const holderDID = await castor.createPrismDID( - // holderPrv.publicKey() - // ) - - // const { - // presentationDefinition, - // presentationSubmissionJSON, - // issuedJWS - // } = await createJWTVerificationTestCase({ - // apollo, - // castor, - // jwt, - // pollux, - // issuer: issuerDID, - // holder: holderDID, - // holderPrv: holderPrv, - // issuerPrv: wrongIssuerPrv, - // subject: { - // course: 'Identus Training course Certification 2024' - // }, - // claims: { - // course: { - // type: 'string', - // pattern: 'Identus Training course Certification 2024' - // } - // } - // }); - - // expect(pollux.verifyPresentationSubmission(presentationSubmissionJSON, { - // presentationDefinitionRequest: presentationDefinition - // })).to.eventually.be.rejectedWith( - // `Verification failed for credential (${issuedJWS.slice(0, 10)}...): reason -> Invalid Presentation Credential JWS Signature` - // ); - - - // }) - it("Should reject creating a PresentationDefinitionRequest is no AnoncredsPresentationOptions instance is sent", async () => { expect( pollux.createPresentationDefinitionRequest(