From 1fc0d78c43b5c7499b87b20de3617a116c41603d Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Tue, 10 Jun 2025 10:01:44 +0100 Subject: [PATCH 01/62] Split grpc connection out into node and web impls --- package-lock.json | 6365 +++++++++++++++--------- package.json | 3 +- src/collections/types/index.ts | 4 +- src/connection/grpc.ts | 2 +- src/connection/http.ts | 281 +- src/connection/transports/grpc/node.ts | 165 + src/connection/transports/grpc/web.ts | 143 + src/connection/transports/http.ts | 275 + 8 files changed, 4732 insertions(+), 2506 deletions(-) create mode 100644 src/connection/transports/grpc/node.ts create mode 100644 src/connection/transports/grpc/web.ts create mode 100644 src/connection/transports/http.ts diff --git a/package-lock.json b/package-lock.json index 3d062ad4..f1687e23 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "nice-grpc": "^2.1.11", "nice-grpc-client-middleware-retry": "^3.1.10", "nice-grpc-common": "^2.0.2", + "nice-grpc-web": "^3.3.7", "uuid": "^9.0.1" }, "devDependencies": { @@ -51,7 +52,7 @@ "ts-node": "^10.9.2", "ts-proto": "^1.163.0", "tsup": "^8.0.2", - "typedoc": "^0.25.12", + "typedoc": "^0.26.0", "typedoc-plugin-extras": "^3.0.0", "typescript": "^5.3.3" }, @@ -60,94 +61,38 @@ } }, "node_modules/@ampproject/remapping": { - "version": "2.2.0", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/compat-data": { - "version": "7.20.10", + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz", + "integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==", "dev": true, "license": "MIT", "engines": { @@ -155,25 +100,27 @@ } }, "node_modules/@babel/core": { - "version": "7.21.0", + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz", + "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.0", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.21.0", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.0", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.4", + "@babel/parser": "^7.27.4", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.27.4", + "@babel/types": "^7.27.3", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -184,75 +131,66 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz", + "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@babel/parser": "^7.27.5", + "@babel/types": "^7.27.3", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.27.3" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.7", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.21.0", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", + "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-member-expression-to-functions": "^7.21.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/helper-split-export-declaration": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.27.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -261,93 +199,69 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.21.0", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", + "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.21.0" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.21.0", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.20.2", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", "dev": true, "license": "MIT", "engines": { @@ -355,75 +269,61 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.20.7", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.20.7", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.2" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.20.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.21.0", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, "license": "MIT", "engines": { @@ -431,99 +331,28 @@ } }, "node_modules/@babel/helpers": { - "version": "7.21.0", + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.4.tgz", + "integrity": "sha512-Y+bO6U+I7ZKaM5G5rDUZiYfUvQPUibYmAFe7EnKdnKBbVXDZxvp+MWOH5gYciY0EPk4EScsuFMQBbEfpdRKSCQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.3" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@babel/parser": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", + "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "@babel/types": "^7.27.3" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -533,6 +362,8 @@ }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "license": "MIT", "dependencies": { @@ -544,6 +375,8 @@ }, "node_modules/@babel/plugin-syntax-bigint": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, "license": "MIT", "dependencies": { @@ -555,6 +388,8 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "license": "MIT", "dependencies": { @@ -564,8 +399,42 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, "license": "MIT", "dependencies": { @@ -577,6 +446,8 @@ }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "license": "MIT", "dependencies": { @@ -587,11 +458,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.18.6", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -602,6 +475,8 @@ }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "license": "MIT", "dependencies": { @@ -613,6 +488,8 @@ }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "license": "MIT", "dependencies": { @@ -624,6 +501,8 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "license": "MIT", "dependencies": { @@ -635,6 +514,8 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "license": "MIT", "dependencies": { @@ -646,6 +527,8 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "license": "MIT", "dependencies": { @@ -657,6 +540,8 @@ }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "license": "MIT", "dependencies": { @@ -666,8 +551,26 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "license": "MIT", "dependencies": { @@ -681,11 +584,30 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.20.0", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -695,13 +617,17 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.21.0", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz", + "integrity": "sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-typescript": "^7.20.0" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -711,13 +637,17 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.21.0", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", + "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.21.0", - "@babel/plugin-transform-typescript": "^7.21.0" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -727,45 +657,43 @@ } }, "node_modules/@babel/runtime": { - "version": "7.20.7", + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.4.tgz", + "integrity": "sha512-t3yaEOuGu9NlIZ+hIeGbBjFtZT7j2cb2tg0fuaJKeGotchRjjLfrBA9Kwf8quhpP1EUuxModQg04q/mBwyg8uA==", "dev": true, "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.13.11" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "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.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@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.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz", + "integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/parser": "^7.27.4", + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.3", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -773,14 +701,14 @@ } }, "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.3.tgz", + "integrity": "sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -795,6 +723,8 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true, "license": "MIT" }, @@ -803,6 +733,7 @@ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -815,6 +746,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -822,6 +754,8 @@ }, "node_modules/@curveball/bodyparser": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@curveball/bodyparser/-/bodyparser-0.5.0.tgz", + "integrity": "sha512-xuD5X4YgCSPG0dq2E6xjEQsVM2+rJDhKyz0gpEflOJX/Nm8tS9ROiy22nLWBEskbrfBKx8XhuUqM+Bt/ojsVxA==", "dev": true, "license": "MIT", "peerDependencies": { @@ -830,6 +764,8 @@ }, "node_modules/@curveball/core": { "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@curveball/core/-/core-0.20.0.tgz", + "integrity": "sha512-hLsCgRpvPQyJ4LAS5zpaMnHO98lyDWz6ph+Ch2TiX3WQLPPkTB14Iuwm9hq0PKovwO+2qQ53HJAtqXi1DXxFPQ==", "dev": true, "license": "MIT", "dependencies": { @@ -845,11 +781,15 @@ }, "node_modules/@curveball/http-errors": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@curveball/http-errors/-/http-errors-0.4.1.tgz", + "integrity": "sha512-RJe0IOQQpgvCwUY8ZKK7/YgfWi1MqMzMrIHilwXHaMFykoVjpRNzaeO3FmrKSUlmJSb6vuPd37LEPNUne4PxZA==", "dev": true, "license": "MIT" }, "node_modules/@curveball/kernel": { "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@curveball/kernel/-/kernel-0.20.1.tgz", + "integrity": "sha512-Cc++ud5IfR4UbR30F9zM7XDiasCzMwGWUWALXrzozt/2ocZeNzSX+ekk7PeXHsu5Ua34F6ve5POt9RfjMuaOLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -864,406 +804,469 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", + "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", + "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", + "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", + "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", + "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", + "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", + "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", + "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", + "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", + "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", + "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", + "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", + "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", "cpu": [ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", + "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", + "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", + "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", + "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", + "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", "cpu": [ - "x64" + "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", + "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", + "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", + "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", + "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", + "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", + "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", + "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", - "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -1282,13 +1285,26 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -1304,6 +1320,7 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -1311,11 +1328,25 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -1324,19 +1355,21 @@ } }, "node_modules/@eslint/js": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", - "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@fastify/busboy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz", - "integrity": "sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" } @@ -1345,14 +1378,15 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "license": "MIT", "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "node_modules/@grpc/grpc-js": { - "version": "1.10.10", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.10.tgz", - "integrity": "sha512-HPa/K5NX6ahMoeBv15njAc/sfF4/jmiXLar9UlC2UfHFKZzsCVLc3wbe7+7qua7w9VPh2/L6EBxyAV7/E8Wftg==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.13.4.tgz", + "integrity": "sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==", "license": "Apache-2.0", "dependencies": { "@grpc/proto-loader": "^0.7.13", @@ -1363,9 +1397,9 @@ } }, "node_modules/@grpc/proto-loader": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz", - "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==", + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.15.tgz", + "integrity": "sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==", "license": "Apache-2.0", "dependencies": { "lodash.camelcase": "^4.3.0", @@ -1381,24 +1415,51 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -1408,10 +1469,12 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@isaacs/cliui": { "version": "8.0.2", @@ -1444,44 +1507,6 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", @@ -1498,26 +1523,10 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "license": "ISC", "dependencies": { @@ -1533,6 +1542,8 @@ }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, "license": "MIT", "engines": { @@ -1540,15 +1551,17 @@ } }, "node_modules/@jest/console": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.4.3", - "jest-util": "^29.4.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", "slash": "^3.0.0" }, "engines": { @@ -1556,36 +1569,38 @@ } }, "node_modules/@jest/core": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "^29.4.3", - "@jest/reporters": "^29.4.3", - "@jest/test-result": "^29.4.3", - "@jest/transform": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.4.3", - "jest-config": "^29.4.3", - "jest-haste-map": "^29.4.3", - "jest-message-util": "^29.4.3", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.4.3", - "jest-resolve-dependencies": "^29.4.3", - "jest-runner": "^29.4.3", - "jest-runtime": "^29.4.3", - "jest-snapshot": "^29.4.3", - "jest-util": "^29.4.3", - "jest-validate": "^29.4.3", - "jest-watcher": "^29.4.3", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", "micromatch": "^4.0.4", - "pretty-format": "^29.4.3", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, @@ -1602,83 +1617,95 @@ } }, "node_modules/@jest/environment": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.4.3" + "jest-mock": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, "license": "MIT", "dependencies": { - "expect": "^29.4.3", - "jest-snapshot": "^29.4.3" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, "license": "MIT", "dependencies": { - "jest-get-type": "^29.4.3" + "jest-get-type": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.4.3", - "jest-mock": "^29.4.3", - "jest-util": "^29.4.3" + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.4.3", - "@jest/expect": "^29.4.3", - "@jest/types": "^29.4.3", - "jest-mock": "^29.4.3" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.4.3", - "@jest/test-result": "^29.4.3", - "@jest/transform": "^29.4.3", - "@jest/types": "^29.4.3", - "@jridgewell/trace-mapping": "^0.3.15", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", @@ -1686,13 +1713,13 @@ "glob": "^7.1.3", "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-instrument": "^6.0.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.4.3", - "jest-util": "^29.4.3", - "jest-worker": "^29.4.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -1710,23 +1737,57 @@ } } }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@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" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@jest/schemas": { - "version": "29.4.3", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.25.16" + "@sinclair/typebox": "^0.27.8" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/source-map": { - "version": "29.4.3", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.15", + "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", "graceful-fs": "^4.2.9" }, @@ -1735,12 +1796,14 @@ } }, "node_modules/@jest/test-result": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -1749,13 +1812,15 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "^29.4.3", + "@jest/test-result": "^29.7.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.3", + "jest-haste-map": "^29.7.0", "slash": "^3.0.0" }, "engines": { @@ -1763,21 +1828,23 @@ } }, "node_modules/@jest/transform": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", - "@jest/types": "^29.4.3", - "@jridgewell/trace-mapping": "^0.3.15", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.3", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.4.3", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -1787,17 +1854,14 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/transform/node_modules/convert-source-map": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/@jest/types": { - "version": "29.4.3", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -1809,19 +1873,24 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", "engines": { @@ -1829,7 +1898,9 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "license": "MIT", "engines": { @@ -1837,17 +1908,21 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@js-sdsl/ordered-map": { @@ -1865,6 +1940,7 @@ "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "detect-libc": "^2.0.0", "https-proxy-agent": "^5.0.0", @@ -1881,10 +1957,11 @@ } }, "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -1897,6 +1974,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1910,6 +1988,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -1919,6 +1998,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -1941,27 +2021,32 @@ "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/base64": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/codegen": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/eventemitter": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/fetch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" @@ -1970,30 +2055,37 @@ "node_modules/@protobufjs/float": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/inquire": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/path": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/pool": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/utf8": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" }, "node_modules/@rollup/plugin-babel": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2016,6 +2108,8 @@ }, "node_modules/@rollup/pluginutils": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "license": "MIT", "dependencies": { @@ -2031,9 +2125,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", - "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz", + "integrity": "sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==", "cpu": [ "arm" ], @@ -2045,9 +2139,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz", - "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.1.tgz", + "integrity": "sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==", "cpu": [ "arm64" ], @@ -2059,9 +2153,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz", - "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.1.tgz", + "integrity": "sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==", "cpu": [ "arm64" ], @@ -2073,9 +2167,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz", - "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.1.tgz", + "integrity": "sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==", "cpu": [ "x64" ], @@ -2086,10 +2180,38 @@ "darwin" ] }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.1.tgz", + "integrity": "sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.1.tgz", + "integrity": "sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz", - "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.1.tgz", + "integrity": "sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==", "cpu": [ "arm" ], @@ -2101,9 +2223,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz", - "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.1.tgz", + "integrity": "sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==", "cpu": [ "arm" ], @@ -2115,9 +2237,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz", - "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.1.tgz", + "integrity": "sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==", "cpu": [ "arm64" ], @@ -2129,9 +2251,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz", - "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.1.tgz", + "integrity": "sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==", "cpu": [ "arm64" ], @@ -2142,10 +2264,24 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.1.tgz", + "integrity": "sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz", - "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.1.tgz", + "integrity": "sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==", "cpu": [ "ppc64" ], @@ -2157,9 +2293,23 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz", - "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.1.tgz", + "integrity": "sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.1.tgz", + "integrity": "sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==", "cpu": [ "riscv64" ], @@ -2171,9 +2321,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz", - "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.1.tgz", + "integrity": "sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==", "cpu": [ "s390x" ], @@ -2185,9 +2335,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz", - "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.1.tgz", + "integrity": "sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==", "cpu": [ "x64" ], @@ -2199,9 +2349,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz", - "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.1.tgz", + "integrity": "sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==", "cpu": [ "x64" ], @@ -2213,9 +2363,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz", - "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.1.tgz", + "integrity": "sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==", "cpu": [ "arm64" ], @@ -2227,9 +2377,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz", - "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.1.tgz", + "integrity": "sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==", "cpu": [ "ia32" ], @@ -2241,9 +2391,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", - "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.1.tgz", + "integrity": "sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==", "cpu": [ "x64" ], @@ -2254,63 +2404,151 @@ "win32" ] }, - "node_modules/@sinclair/typebox": { - "version": "0.25.23", - "dev": true, - "license": "MIT" - }, - "node_modules/@sinonjs/commons": { - "version": "2.0.0", + "node_modules/@shikijs/core": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.29.2.tgz", + "integrity": "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "type-detect": "4.0.8" + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.4" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.0.2", + "node_modules/@shikijs/engine-javascript": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.29.2.tgz", + "integrity": "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "@sinonjs/commons": "^2.0.0" + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "oniguruma-to-es": "^2.2.0" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz", + "integrity": "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1" + } + }, + "node_modules/@shikijs/langs": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.29.2.tgz", + "integrity": "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2" + } + }, + "node_modules/@shikijs/themes": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.29.2.tgz", + "integrity": "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2" + } + }, + "node_modules/@shikijs/types": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.29.2.tgz", + "integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" } }, "node_modules/@testcontainers/weaviate": { - "version": "10.14.0", - "resolved": "https://registry.npmjs.org/@testcontainers/weaviate/-/weaviate-10.14.0.tgz", - "integrity": "sha512-6gd4iRvZXf+rN2TPTuRZcNl3aH5otJgiIsYI98HMA4lYx+GVRYTWaDC4zqrI9D7cKrwPyPfhzpB29i7hljN/ZQ==", + "version": "10.28.0", + "resolved": "https://registry.npmjs.org/@testcontainers/weaviate/-/weaviate-10.28.0.tgz", + "integrity": "sha512-SR4JWacoJwaoD6P6O7CwInG/xjDfIDTUqtunxJPzent4JiDF86jpC1HjLGhp0dciemJWoa1hRR5/REgIcAyBow==", "dev": true, "license": "MIT", "dependencies": { - "testcontainers": "^10.14.0" + "testcontainers": "^10.28.0" } }, "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true, + "license": "MIT" }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" }, "node_modules/@types/babel__core": { - "version": "7.20.0", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "license": "MIT", "dependencies": { @@ -2322,7 +2560,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.1", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, "license": "MIT", "dependencies": { @@ -2330,7 +2570,9 @@ } }, "node_modules/@types/babel__template": { - "version": "7.0.2", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "license": "MIT", "dependencies": { @@ -2339,11 +2581,13 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.0.14", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.3.0" + "@babel/types": "^7.20.7" } }, "node_modules/@types/body-parser": { @@ -2351,20 +2595,18 @@ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, + "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" } }, - "node_modules/@types/color-name": { - "version": "1.1.1", - "license": "MIT" - }, "node_modules/@types/connect": { "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -2381,9 +2623,9 @@ } }, "node_modules/@types/dockerode": { - "version": "3.3.31", - "resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-3.3.31.tgz", - "integrity": "sha512-42R9eoVqJDSvVspV89g7RwRqfNExgievLNWoHkg7NoWIqAmavIbgQBb4oc0qRtHkxE+I3Xxvqv7qVXFABKPBTg==", + "version": "3.3.39", + "resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-3.3.39.tgz", + "integrity": "sha512-uMPmxehH6ofeYjaslASPtjvyH8FRJdM9fZ+hjhGzL4Jq3bGjr9D7TKmp9soSwgFncNk0HOwmyBxjqOb3ikjjsA==", "dev": true, "license": "MIT", "dependencies": { @@ -2394,14 +2636,17 @@ }, "node_modules/@types/estree": { "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true, "license": "MIT" }, "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "version": "4.17.22", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.22.tgz", + "integrity": "sha512-eZUmSnhRX9YRSkplpz0N+k6NljUUn5l3EWZIKZvYzhvMphEuNiyyy1viH/ejgt66JWgALwC/gtSUAeQKtSwW/w==", "dev": true, + "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -2410,10 +2655,11 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.5", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", - "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", + "version": "4.19.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", + "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -2422,31 +2668,50 @@ } }, "node_modules/@types/graceful-fs": { - "version": "4.1.6", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" } }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/http-errors": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/isomorphic-fetch": { "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@types/isomorphic-fetch/-/isomorphic-fetch-0.0.36.tgz", + "integrity": "sha512-ulw4d+vW1HKn4oErSmNN2HYEcHGq0N1C5exlrMM0CRqX1UUpFhGb5lwiom5j9KN3LBJJDLRmYIZz1ghm7FIzZw==", "dev": true, "license": "MIT" }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true, "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, "license": "MIT", "dependencies": { @@ -2454,7 +2719,9 @@ } }, "node_modules/@types/istanbul-reports": { - "version": "3.0.1", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2462,7 +2729,9 @@ } }, "node_modules/@types/jest": { - "version": "29.4.0", + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2474,46 +2743,62 @@ "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "18.14.0", - "license": "MIT" + "version": "18.19.110", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.110.tgz", + "integrity": "sha512-WW2o4gTmREtSnqKty9nhqF/vA0GKd0V/rbC0OyjSk9Bz6bzlsXKT+i7WDdS/a0z74rfT2PO4dArVCSnapNLA5Q==", + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } }, - "node_modules/@types/prettier": { - "version": "2.7.2", + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", "dev": true, "license": "MIT" }, - "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", - "dev": true - }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", + "dev": true, + "license": "MIT" }, "node_modules/@types/send": { "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, + "license": "MIT", "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -2524,6 +2809,7 @@ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", @@ -2531,9 +2817,9 @@ } }, "node_modules/@types/ssh2": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-1.15.1.tgz", - "integrity": "sha512-ZIbEqKAsi5gj35y4P4vkJYly642wIbY6PqoN0xiyQGshKUGXR9WQjF/iF9mXBQ8uBKy3ezfsCkcoHKhd0BzuDA==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-1.15.5.tgz", + "integrity": "sha512-N1ASjp/nXH3ovBHddRJpli4ozpk6UdDYIX4RJWFa9L1YKnzdhTlVmiGHm4DZnj/jLbqZpes4aeR30EFGQtvhQQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2551,18 +2837,30 @@ } }, "node_modules/@types/stack-utils": { - "version": "2.0.1", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "dev": true, "license": "MIT" }, "node_modules/@types/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==", - "dev": true + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "dev": true, + "license": "MIT" }, "node_modules/@types/ws": { - "version": "8.5.4", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dev": true, "license": "MIT", "dependencies": { @@ -2570,7 +2868,9 @@ } }, "node_modules/@types/yargs": { - "version": "17.0.22", + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", "dev": true, "license": "MIT", "dependencies": { @@ -2578,7 +2878,9 @@ } }, "node_modules/@types/yargs-parser": { - "version": "21.0.0", + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, "license": "MIT" }, @@ -2587,6 +2889,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.5.1", "@typescript-eslint/scope-manager": "6.21.0", @@ -2617,26 +2920,12 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -2644,17 +2933,12 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/parser": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "6.21.0", "@typescript-eslint/types": "6.21.0", @@ -2683,6 +2967,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "6.21.0", "@typescript-eslint/visitor-keys": "6.21.0" @@ -2700,6 +2985,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "6.21.0", "@typescript-eslint/utils": "6.21.0", @@ -2727,6 +3013,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", "dev": true, + "license": "MIT", "engines": { "node": "^16.0.0 || >=18.0.0" }, @@ -2740,6 +3027,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "6.21.0", "@typescript-eslint/visitor-keys": "6.21.0", @@ -2763,35 +3051,12 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -2804,6 +3069,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", @@ -2825,10 +3091,11 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -2841,6 +3108,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "6.21.0", "eslint-visitor-keys": "^3.4.1" @@ -2853,11 +3121,19 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/abort-controller": { "version": "3.0.0", @@ -2875,10 +3151,13 @@ "node_modules/abort-controller-x": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/abort-controller-x/-/abort-controller-x-0.4.3.tgz", - "integrity": "sha512-VtUwTNU8fpMwvWGn4xE93ywbogTYsuT+AUxAXOeelbXuQVIwNmC5YLeho9sH4vZ4ITW8414TTAOG1nW6uIVHCA==" + "integrity": "sha512-VtUwTNU8fpMwvWGn4xE93ywbogTYsuT+AUxAXOeelbXuQVIwNmC5YLeho9sH4vZ4ITW8414TTAOG1nW6uIVHCA==", + "license": "MIT" }, "node_modules/accepts": { "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "license": "MIT", "dependencies": { @@ -2890,10 +3169,11 @@ } }, "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -2906,15 +3186,20 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, "engines": { "node": ">=0.4.0" } @@ -2924,6 +3209,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "4" }, @@ -2931,24 +3217,12 @@ "node": ">= 6.0.0" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2962,6 +3236,8 @@ }, "node_modules/ansi-escapes": { "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2976,22 +3252,19 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/ansi-sequence-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", - "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", - "dev": true - }, "node_modules/ansi-styles": { - "version": "4.2.1", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", "dependencies": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" }, "engines": { @@ -3005,10 +3278,13 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/anymatch": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "license": "ISC", "dependencies": { @@ -3023,7 +3299,8 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/archiver": { "version": "7.0.1", @@ -3063,16 +3340,6 @@ "node": ">= 14" } }, - "node_modules/archiver-utils/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/archiver-utils/node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -3121,9 +3388,9 @@ } }, "node_modules/archiver-utils/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dev": true, "license": "MIT", "dependencies": { @@ -3138,9 +3405,9 @@ } }, "node_modules/archiver/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dev": true, "license": "MIT", "dependencies": { @@ -3158,7 +3425,9 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", "dev": true, + "license": "ISC", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -3171,10 +3440,13 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "license": "MIT", "dependencies": { @@ -3185,13 +3457,15 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3206,15 +3480,6 @@ "safer-buffer": "~2.1.0" } }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", @@ -3237,14 +3502,16 @@ "license": "Apache-2.0" }, "node_modules/babel-jest": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/transform": "^29.4.3", + "@jest/transform": "^29.7.0", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.4.3", + "babel-preset-jest": "^29.6.3", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -3258,6 +3525,8 @@ }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -3272,7 +3541,9 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "29.4.3", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, "license": "MIT", "dependencies": { @@ -3286,33 +3557,40 @@ } }, "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", "dev": true, "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@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.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/babel-preset-jest": { - "version": "29.4.3", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "^29.4.3", + "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { @@ -3324,58 +3602,86 @@ }, "node_modules/balanced-match": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, "license": "MIT" }, "node_modules/bare-events": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", - "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", + "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", "dev": true, "license": "Apache-2.0", "optional": true }, "node_modules/bare-fs": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.5.tgz", - "integrity": "sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.5.tgz", + "integrity": "sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "bare-events": "^2.0.0", - "bare-path": "^2.0.0", - "bare-stream": "^2.0.0" + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } } }, "node_modules/bare-os": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz", - "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", + "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", "dev": true, "license": "Apache-2.0", - "optional": true + "optional": true, + "engines": { + "bare": ">=1.14.0" + } }, "node_modules/bare-path": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", - "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "bare-os": "^2.1.0" + "bare-os": "^3.0.1" } }, "node_modules/bare-stream": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.3.2.tgz", - "integrity": "sha512-EFZHSIBkDgSHIwj2l2QZfP4U5OcD4xFAOwhSb/vlr9PIqyGJGvB/nfClJbcnh3EY4jtPE4zsb5ztae96bVF79A==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", + "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "streamx": "^2.20.0" + "streamx": "^2.21.0" + }, + "peerDependencies": { + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } } }, "node_modules/base64-js": { @@ -3409,15 +3715,6 @@ "tweetnacl": "^0.14.3" } }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -3498,12 +3795,13 @@ "license": "MIT" }, "node_modules/brace-expansion": { - "version": "1.1.11", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { @@ -3511,6 +3809,7 @@ "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" }, @@ -3519,7 +3818,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.4", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz", + "integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==", "dev": true, "funding": [ { @@ -3529,14 +3830,18 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001718", + "electron-to-chromium": "^1.5.160", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" @@ -3547,6 +3852,8 @@ }, "node_modules/bs-logger": { "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, "license": "MIT", "dependencies": { @@ -3558,6 +3865,8 @@ }, "node_modules/bser": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3601,6 +3910,8 @@ }, "node_modules/buffer-from": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true, "license": "MIT" }, @@ -3615,10 +3926,11 @@ } }, "node_modules/bundle-require": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-4.0.1.tgz", - "integrity": "sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz", + "integrity": "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==", "dev": true, + "license": "MIT", "dependencies": { "load-tsconfig": "^0.2.3" }, @@ -3626,7 +3938,7 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "peerDependencies": { - "esbuild": ">=0.17" + "esbuild": ">=0.18" } }, "node_modules/byline": { @@ -3641,6 +3953,8 @@ }, "node_modules/bytes": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "license": "MIT", "engines": { @@ -3652,22 +3966,34 @@ "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -3678,6 +4004,8 @@ }, "node_modules/callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", "engines": { @@ -3686,6 +4014,8 @@ }, "node_modules/camelcase": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "license": "MIT", "engines": { @@ -3693,7 +4023,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001441", + "version": "1.0.30001720", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001720.tgz", + "integrity": "sha512-Ec/2yV2nNPwb4DnTANEV99ZWwm3ZWfdlfkQbWSDDt+PsXEVYwlhPH8tdMaPunYTKKmz7AnHi2oNEi1GcmKCD8g==", "dev": true, "funding": [ { @@ -3703,6 +4035,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "license": "CC-BY-4.0" @@ -3712,6 +4048,7 @@ "resolved": "https://registry.npmjs.org/case-anything/-/case-anything-2.1.13.tgz", "integrity": "sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.13" }, @@ -3719,11 +4056,23 @@ "url": "https://github.com/sponsors/mesqueeb" } }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3737,49 +4086,50 @@ }, "node_modules/char-regex": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, "license": "MIT", "engines": { "node": ">=10" } }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "readdirp": "^4.0.1" }, "engines": { - "node": ">= 6" + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, "node_modules/chownr": { @@ -3787,12 +4137,15 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/ci-info": { - "version": "3.8.0", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, "funding": [ { @@ -3806,29 +4159,26 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.2.2", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", "dev": true, "license": "MIT" }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", "dev": true, + "license": "MIT", "dependencies": { - "restore-cursor": "^3.1.0" + "restore-cursor": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cli-truncate": { @@ -3836,6 +4186,7 @@ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", "dev": true, + "license": "MIT", "dependencies": { "slice-ansi": "^5.0.0", "string-width": "^5.0.0" @@ -3847,70 +4198,70 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=8" } }, - "node_modules/cliui": { - "version": "8.0.1", - "license": "ISC", + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/co": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "license": "MIT", "engines": { @@ -3919,12 +4270,16 @@ } }, "node_modules/collect-v8-coverage": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", "dev": true, "license": "MIT" }, "node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3935,6 +4290,8 @@ }, "node_modules/color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, "node_modules/color-support": { @@ -3942,23 +4299,37 @@ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, + "license": "ISC", "bin": { "color-support": "bin.js" } }, "node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, "node_modules/commander": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz", - "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=14" + "node": ">=16" } }, "node_modules/compress-commons": { @@ -3979,9 +4350,9 @@ } }, "node_modules/compress-commons/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dev": true, "license": "MIT", "dependencies": { @@ -3997,20 +4368,41 @@ }, "node_modules/concat-map": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true, "license": "MIT" }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -4018,26 +4410,6 @@ "node": ">= 0.6" } }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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" - } - ] - }, "node_modules/content-type": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", @@ -4049,12 +4421,11 @@ } }, "node_modules/convert-source-map": { - "version": "1.7.0", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.1" - } + "license": "MIT" }, "node_modules/cookie": { "version": "0.7.1", @@ -4070,7 +4441,8 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/core-util-is": { "version": "1.0.3", @@ -4122,9 +4494,9 @@ } }, "node_modules/crc32-stream/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dev": true, "license": "MIT", "dependencies": { @@ -4138,21 +4510,48 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cross-fetch": { - "version": "3.1.5", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", "license": "MIT", "dependencies": { - "node-fetch": "2.6.7" + "node-fetch": "^2.7.0" } }, "node_modules/cross-spawn": { - "version": "7.0.3", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -4165,9 +4564,9 @@ } }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4183,56 +4582,64 @@ } }, "node_modules/dedent": { - "version": "0.7.0", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz", + "integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==", "dev": true, - "license": "MIT" + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/deepmerge": { - "version": "4.3.0", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "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/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/depd": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -4245,33 +4652,53 @@ } }, "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=8" } }, "node_modules/detect-newline": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/diff-sequences": { - "version": "29.4.3", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "license": "MIT", "engines": { @@ -4283,6 +4710,7 @@ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -4304,31 +4732,35 @@ } }, "node_modules/docker-modem": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-3.0.8.tgz", - "integrity": "sha512-f0ReSURdM3pcKPNS30mxOHSbaFLcknGmQjwSfmbcdOw1XWKXVhukM3NJHhr7NpY9BIyyWQb0EBo3KQvvuU5egQ==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.6.tgz", + "integrity": "sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "debug": "^4.1.1", "readable-stream": "^3.5.0", "split-ca": "^1.0.1", - "ssh2": "^1.11.0" + "ssh2": "^1.15.0" }, "engines": { "node": ">= 8.0" } }, "node_modules/dockerode": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-3.3.5.tgz", - "integrity": "sha512-/0YNa3ZDNeLr/tSckmD69+Gq+qVNhvKfAHNeZJBnp7EOP6RGKV8ORrJHkUn20So5wU+xxT7+1n5u8PjHbfjbSA==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.6.tgz", + "integrity": "sha512-FbVf3Z8fY/kALB9s+P9epCpWhfi/r0N2DgYYcYpsAUlaTxPjdsitsFobnltb+lyCgAIvf9C+4PSWlTnHlJMf1w==", "dev": true, "license": "Apache-2.0", "dependencies": { "@balena/dockerignore": "^1.0.2", - "docker-modem": "^3.0.0", - "tar-fs": "~2.0.1" + "@grpc/grpc-js": "^1.11.1", + "@grpc/proto-loader": "^0.7.13", + "docker-modem": "^5.0.6", + "protobufjs": "^7.3.2", + "tar-fs": "~2.1.2", + "uuid": "^10.0.0" }, "engines": { "node": ">= 8.0" @@ -4342,16 +4774,16 @@ "license": "ISC" }, "node_modules/dockerode/node_modules/tar-fs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", - "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz", + "integrity": "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==", "dev": true, "license": "MIT", "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.0.0" + "tar-stream": "^2.1.4" } }, "node_modules/dockerode/node_modules/tar-stream": { @@ -4371,11 +4803,26 @@ "node": ">=6" } }, + "node_modules/dockerode/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -4388,6 +4835,7 @@ "resolved": "https://registry.npmjs.org/dprint-node/-/dprint-node-1.0.8.tgz", "integrity": "sha512-iVKnUtYfGrYcW1ZAlfR/F59cUVL8QIhWoBJoSjkkdua/dkWIgjZfiLMeTjiB06X0ZLkQ0M2C1VbUj/CxkIf1zg==", "dev": true, + "license": "MIT", "dependencies": { "detect-libc": "^1.0.3" } @@ -4397,6 +4845,7 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true, + "license": "Apache-2.0", "bin": { "detect-libc": "bin/detect-libc.js" }, @@ -4404,11 +4853,27 @@ "node": ">=0.10" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ee-first": { "version": "1.1.1", @@ -4417,13 +4882,33 @@ "dev": true, "license": "MIT" }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/electron-to-chromium": { - "version": "1.4.284", + "version": "1.5.162", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.162.tgz", + "integrity": "sha512-hQA+Zb5QQwoSaXJWEAGEw1zhk//O7qDzib05Z4qTqZfNju/FAkrm5ZInp0JbTp4Z18A6bilopdZWEYrFSsfllA==", "dev": true, "license": "ISC" }, "node_modules/emittery": { "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, "license": "MIT", "engines": { @@ -4434,7 +4919,17 @@ } }, "node_modules/emoji-regex": { - "version": "8.0.0", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/emoji-regex-xs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", + "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", + "dev": true, "license": "MIT" }, "node_modules/encodeurl": { @@ -4447,27 +4942,6 @@ "node": ">= 0.8" } }, - "node_modules/encoding": { - "version": "0.1.13", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -4478,8 +4952,23 @@ "once": "^1.4.0" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "license": "MIT", "dependencies": { @@ -4487,14 +4976,11 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, "engines": { "node": ">= 0.4" } @@ -4509,46 +4995,64 @@ "node": ">= 0.4" } }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", + "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" } }, "node_modules/escalade": { - "version": "3.1.1", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "license": "MIT", "engines": { "node": ">=6" @@ -4562,35 +5066,43 @@ "license": "MIT" }, "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", - "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, + "license": "MIT", "dependencies": { - "@eslint/eslintrc": "^2.0.0", - "@eslint/js": "8.35.0", - "@humanwhocodes/config-array": "^0.11.8", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -4598,23 +5110,19 @@ "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -4628,10 +5136,11 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.7.0.tgz", - "integrity": "sha512-HHVXLSlVUhMSmyW4ZzEuvjpwqamgmlfkutD53cYXLikh4pt/modINRcCIApJ84czDxM4GZInwUrromsDdTImTA==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, + "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -4644,6 +5153,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", "dev": true, + "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0" }, @@ -4660,31 +5170,21 @@ } } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { @@ -4692,6 +5192,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -4703,40 +5204,18 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "Python-2.0" }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/eslint/node_modules/find-up": { @@ -4744,6 +5223,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -4756,10 +5236,11 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -4775,6 +5256,7 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -4787,6 +5269,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -4797,11 +5280,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint/node_modules/p-locate": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -4817,6 +5314,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -4825,14 +5323,15 @@ } }, "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4843,6 +5342,8 @@ }, "node_modules/esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, "license": "BSD-2-Clause", "bin": { @@ -4854,10 +5355,11 @@ } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -4865,20 +5367,12 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -4886,17 +5380,20 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estree-walker": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", "dev": true, "license": "MIT" }, @@ -4905,6 +5402,7 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -4929,6 +5427,13 @@ "node": ">=6" } }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true, + "license": "MIT" + }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -4941,6 +5446,8 @@ }, "node_modules/execa": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "license": "MIT", "dependencies": { @@ -4963,30 +5470,34 @@ }, "node_modules/exit": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" } }, "node_modules/expect": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/expect-utils": "^29.4.3", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.4.3", - "jest-message-util": "^29.4.3", - "jest-util": "^29.4.3" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/express": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", - "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dev": true, "license": "MIT", "dependencies": { @@ -5009,7 +5520,7 @@ "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", @@ -5024,6 +5535,10 @@ }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/express/node_modules/debug": { @@ -5031,6 +5546,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -5039,39 +5555,22 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/fast-fifo": { "version": "1.3.2", @@ -5081,16 +5580,17 @@ "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -5101,6 +5601,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -5110,6 +5611,8 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, "license": "MIT" }, @@ -5117,19 +5620,23 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/fb-watchman": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5141,6 +5648,7 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -5148,11 +5656,35 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "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" }, @@ -5198,6 +5730,8 @@ }, "node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", "dependencies": { @@ -5208,13 +5742,74 @@ "node": ">=8" } }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "node_modules/fix-dts-default-cjs-exports": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fix-dts-default-cjs-exports/-/fix-dts-default-cjs-exports-1.0.1.tgz", + "integrity": "sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==", "dev": true, + "license": "MIT", + "dependencies": { + "magic-string": "^0.30.17", + "mlly": "^1.7.4", + "rollup": "^4.34.8" + } + }, + "node_modules/fix-dts-default-cjs-exports/node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/fix-dts-default-cjs-exports/node_modules/rollup": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.1.tgz", + "integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.41.1", + "@rollup/rollup-android-arm64": "4.41.1", + "@rollup/rollup-darwin-arm64": "4.41.1", + "@rollup/rollup-darwin-x64": "4.41.1", + "@rollup/rollup-freebsd-arm64": "4.41.1", + "@rollup/rollup-freebsd-x64": "4.41.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.41.1", + "@rollup/rollup-linux-arm-musleabihf": "4.41.1", + "@rollup/rollup-linux-arm64-gnu": "4.41.1", + "@rollup/rollup-linux-arm64-musl": "4.41.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.41.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.41.1", + "@rollup/rollup-linux-riscv64-gnu": "4.41.1", + "@rollup/rollup-linux-riscv64-musl": "4.41.1", + "@rollup/rollup-linux-s390x-gnu": "4.41.1", + "@rollup/rollup-linux-x64-gnu": "4.41.1", + "@rollup/rollup-linux-x64-musl": "4.41.1", + "@rollup/rollup-win32-arm64-msvc": "4.41.1", + "@rollup/rollup-win32-ia32-msvc": "4.41.1", + "@rollup/rollup-win32-x64-msvc": "4.41.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { @@ -5222,19 +5817,20 @@ } }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" }, "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -5262,6 +5858,7 @@ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5288,6 +5885,7 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -5300,6 +5898,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -5311,16 +5910,22 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, "license": "ISC" }, "node_modules/fsevents": { - "version": "2.3.2", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ @@ -5335,6 +5940,7 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5343,7 +5949,9 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", "dev": true, + "license": "ISC", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.2", @@ -5359,8 +5967,42 @@ "node": ">=10" } }, + "node_modules/gauge/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/gauge/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "license": "MIT", "engines": { @@ -5369,23 +6011,30 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -5396,6 +6045,8 @@ }, "node_modules/get-package-type": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, "license": "MIT", "engines": { @@ -5403,20 +6054,36 @@ } }, "node_modules/get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz", + "integrity": "sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "license": "MIT", "engines": { @@ -5428,6 +6095,9 @@ }, "node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "license": "ISC", "dependencies": { @@ -5450,6 +6120,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -5457,8 +6128,34 @@ "node": ">=10.13.0" } }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/globals": { "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, "license": "MIT", "engines": { @@ -5469,13 +6166,15 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -5495,42 +6194,40 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/graceful-fs": { - "version": "4.2.10", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, "license": "ISC" }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/graphql": { - "version": "16.10.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.10.0.tgz", - "integrity": "sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==", + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.11.0.tgz", + "integrity": "sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==", "license": "MIT", "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" @@ -5540,6 +6237,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-6.1.0.tgz", "integrity": "sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==", + "license": "MIT", "dependencies": { "@graphql-typed-document-node/core": "^3.2.0", "cross-fetch": "^3.1.5" @@ -5549,9 +6247,9 @@ } }, "node_modules/grpc-tools": { - "version": "1.12.4", - "resolved": "https://registry.npmjs.org/grpc-tools/-/grpc-tools-1.12.4.tgz", - "integrity": "sha512-5+mLAJJma3BjnW/KQp6JBjUMgvu7Mu3dBvBPd1dcbNIb+qiR0817zDpgPjS7gRb+l/8EVNIa3cB02xI9JLToKg==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/grpc-tools/-/grpc-tools-1.13.0.tgz", + "integrity": "sha512-7CbkJ1yWPfX0nHjbYG58BQThNhbICXBZynzCUxCb3LzX5X9B3hQbRY2STiRgIEiLILlK9fgl0z0QVGwPCdXf5g==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -5562,55 +6260,20 @@ "grpc_tools_node_protoc_plugin": "bin/protoc_plugin.js" } }, - "node_modules/has": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, "license": "MIT", "engines": { @@ -5624,7 +6287,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/hasown": { "version": "2.0.2", @@ -5639,13 +6303,66 @@ "node": ">= 0.4" } }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/html-escaper": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, "license": "MIT" }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/http-errors": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5664,6 +6381,7 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -5674,6 +6392,8 @@ }, "node_modules/human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -5685,6 +6405,7 @@ "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", "dev": true, + "license": "MIT", "bin": { "husky": "lib/bin.js" }, @@ -5697,6 +6418,8 @@ }, "node_modules/iconv-lite": { "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "license": "MIT", "dependencies": { @@ -5728,19 +6451,21 @@ "license": "BSD-3-Clause" }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -5757,12 +6482,15 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/import-local": { - "version": "3.1.0", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "license": "MIT", "dependencies": { @@ -5781,23 +6509,19 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", "engines": { "node": ">=0.8.19" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "license": "ISC", "dependencies": { @@ -5807,6 +6531,8 @@ }, "node_modules/inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, "license": "ISC" }, @@ -5815,33 +6541,29 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/is-arrayish": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, "license": "MIT" }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is-core-module": { - "version": "2.11.0", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "license": "MIT", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5852,19 +6574,28 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-generator-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, "license": "MIT", "engines": { @@ -5876,6 +6607,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -5888,6 +6620,7 @@ "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" } @@ -5897,12 +6630,15 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-stream": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "license": "MIT", "engines": { @@ -5921,11 +6657,24 @@ }, "node_modules/isexe": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, "license": "ISC" }, + "node_modules/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -5934,6 +6683,8 @@ }, "node_modules/istanbul-lib-instrument": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -5948,20 +6699,53 @@ } }, "node_modules/istanbul-lib-report": { - "version": "3.0.0", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -5974,7 +6758,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.5", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -6001,37 +6787,85 @@ "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/jest": { - "version": "29.4.3", + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@jest/core": "^29.4.3", - "@jest/types": "^29.4.3", - "import-local": "^3.0.2", - "jest-cli": "^29.4.3" + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" }, "bin": { - "jest": "bin/jest.js" + "jake": "bin/cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { "node-notifier": { "optional": true } } }, "node_modules/jest-changed-files": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", + "jest-util": "^29.7.0", "p-limit": "^3.1.0" }, "engines": { @@ -6039,27 +6873,30 @@ } }, "node_modules/jest-circus": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.4.3", - "@jest/expect": "^29.4.3", - "@jest/test-result": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "dedent": "^0.7.0", + "dedent": "^1.0.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.4.3", - "jest-matcher-utils": "^29.4.3", - "jest-message-util": "^29.4.3", - "jest-runtime": "^29.4.3", - "jest-snapshot": "^29.4.3", - "jest-util": "^29.4.3", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", "p-limit": "^3.1.0", - "pretty-format": "^29.4.3", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -6068,21 +6905,22 @@ } }, "node_modules/jest-cli": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "^29.4.3", - "@jest/test-result": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", + "create-jest": "^29.7.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.4.3", - "jest-util": "^29.4.3", - "jest-validate": "^29.4.3", - "prompts": "^2.0.1", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "yargs": "^17.3.1" }, "bin": { @@ -6101,30 +6939,32 @@ } }, "node_modules/jest-config": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.4.3", - "@jest/types": "^29.4.3", - "babel-jest": "^29.4.3", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^29.4.3", - "jest-environment-node": "^29.4.3", - "jest-get-type": "^29.4.3", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.4.3", - "jest-runner": "^29.4.3", - "jest-util": "^29.4.3", - "jest-validate": "^29.4.3", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.4.3", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -6145,21 +6985,25 @@ } }, "node_modules/jest-diff": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.4.3" + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-docblock": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "license": "MIT", "dependencies": { @@ -6170,38 +7014,44 @@ } }, "node_modules/jest-each": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "jest-util": "^29.4.3", - "pretty-format": "^29.4.3" + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-environment-node": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.4.3", - "@jest/fake-timers": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.4.3", - "jest-util": "^29.4.3" + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-get-type": { - "version": "29.4.3", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, "license": "MIT", "engines": { @@ -6209,19 +7059,21 @@ } }, "node_modules/jest-haste-map": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.6.3", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.4.3", - "jest-worker": "^29.4.3", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", "micromatch": "^4.0.4", "walker": "^1.0.8" }, @@ -6233,43 +7085,49 @@ } }, "node_modules/jest-leak-detector": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "license": "MIT", "dependencies": { - "jest-get-type": "^29.4.3", - "pretty-format": "^29.4.3" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.4.3" + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-message-util": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.4.3", + "@jest/types": "^29.6.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.4.3", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -6278,13 +7136,15 @@ } }, "node_modules/jest-mock": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-util": "^29.4.3" + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -6292,6 +7152,8 @@ }, "node_modules/jest-pnp-resolver": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "license": "MIT", "engines": { @@ -6307,7 +7169,9 @@ } }, "node_modules/jest-regex-util": { - "version": "29.4.3", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, "license": "MIT", "engines": { @@ -6315,16 +7179,18 @@ } }, "node_modules/jest-resolve": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.3", + "jest-haste-map": "^29.7.0", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.4.3", - "jest-validate": "^29.4.3", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "resolve": "^1.20.0", "resolve.exports": "^2.0.0", "slash": "^3.0.0" @@ -6334,41 +7200,45 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, "license": "MIT", "dependencies": { - "jest-regex-util": "^29.4.3", - "jest-snapshot": "^29.4.3" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runner": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "^29.4.3", - "@jest/environment": "^29.4.3", - "@jest/test-result": "^29.4.3", - "@jest/transform": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.13.1", "graceful-fs": "^4.2.9", - "jest-docblock": "^29.4.3", - "jest-environment-node": "^29.4.3", - "jest-haste-map": "^29.4.3", - "jest-leak-detector": "^29.4.3", - "jest-message-util": "^29.4.3", - "jest-resolve": "^29.4.3", - "jest-runtime": "^29.4.3", - "jest-util": "^29.4.3", - "jest-watcher": "^29.4.3", - "jest-worker": "^29.4.3", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -6377,30 +7247,32 @@ } }, "node_modules/jest-runtime": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.4.3", - "@jest/fake-timers": "^29.4.3", - "@jest/globals": "^29.4.3", - "@jest/source-map": "^29.4.3", - "@jest/test-result": "^29.4.3", - "@jest/transform": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.3", - "jest-message-util": "^29.4.3", - "jest-mock": "^29.4.3", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.4.3", - "jest-snapshot": "^29.4.3", - "jest-util": "^29.4.3", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -6409,7 +7281,9 @@ } }, "node_modules/jest-snapshot": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, "license": "MIT", "dependencies": { @@ -6417,50 +7291,33 @@ "@babel/generator": "^7.7.2", "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.4.3", - "@jest/transform": "^29.4.3", - "@jest/types": "^29.4.3", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.4.3", + "expect": "^29.7.0", "graceful-fs": "^4.2.9", - "jest-diff": "^29.4.3", - "jest-get-type": "^29.4.3", - "jest-haste-map": "^29.4.3", - "jest-matcher-utils": "^29.4.3", - "jest-message-util": "^29.4.3", - "jest-util": "^29.4.3", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", "natural-compare": "^1.4.0", - "pretty-format": "^29.4.3", - "semver": "^7.3.5" + "pretty-format": "^29.7.0", + "semver": "^7.5.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -6468,17 +7325,14 @@ "node": ">=10" } }, - "node_modules/jest-snapshot/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/jest-util": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -6490,16 +7344,18 @@ } }, "node_modules/jest-validate": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.6.3", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", + "jest-get-type": "^29.6.3", "leven": "^3.1.0", - "pretty-format": "^29.4.3" + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -6507,6 +7363,8 @@ }, "node_modules/jest-validate/node_modules/camelcase": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "license": "MIT", "engines": { @@ -6517,17 +7375,19 @@ } }, "node_modules/jest-watcher": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.13.1", - "jest-util": "^29.4.3", + "jest-util": "^29.7.0", "string-length": "^4.0.1" }, "engines": { @@ -6535,12 +7395,14 @@ } }, "node_modules/jest-worker": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", - "jest-util": "^29.4.3", + "jest-util": "^29.7.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -6550,6 +7412,8 @@ }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -6567,28 +7431,28 @@ "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, - "node_modules/js-sdsl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", - "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } + "node_modules/js-base64": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.7.tgz", + "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==", + "license": "BSD-3-Clause" }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "license": "MIT", "dependencies": { @@ -6600,18 +7464,29 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, "license": "MIT" }, @@ -6619,16 +7494,20 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "license": "MIT", "bin": { @@ -6638,14 +7517,20 @@ "node": ">=6" } }, - "node_modules/jsonc-parser": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", - "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", - "dev": true + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } }, "node_modules/kleur": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, "license": "MIT", "engines": { @@ -6681,6 +7566,13 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, "node_modules/lazystream/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -6693,6 +7585,8 @@ }, "node_modules/leven": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, "license": "MIT", "engines": { @@ -6704,6 +7598,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -6717,50 +7612,62 @@ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/lines-and-columns": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true, "license": "MIT" }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, "node_modules/lint-staged": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.0.tgz", - "integrity": "sha512-GbyK5iWinax5Dfw5obm2g2ccUiZXNGtAS4mCbJ0Lv4rq6iEtfBSjOYdcbOtAIFtM114t0vdpViDDetjVTSd8Vw==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.3.0.tgz", + "integrity": "sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "5.2.0", - "cli-truncate": "^3.1.0", - "commander": "^10.0.0", - "debug": "^4.3.4", - "execa": "^7.0.0", + "chalk": "5.3.0", + "commander": "11.0.0", + "debug": "4.3.4", + "execa": "7.2.0", "lilconfig": "2.1.0", - "listr2": "^5.0.7", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-inspect": "^1.12.3", - "pidtree": "^0.6.0", - "string-argv": "^0.3.1", - "yaml": "^2.2.1" + "listr2": "6.6.1", + "micromatch": "4.0.5", + "pidtree": "0.6.0", + "string-argv": "0.3.2", + "yaml": "2.3.1" }, "bin": { "lint-staged": "bin/lint-staged.js" }, "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": "^16.14.0 || >=18.0.0" }, "funding": { "url": "https://opencollective.com/lint-staged" } }, "node_modules/lint-staged/node_modules/chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -6768,11 +7675,30 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/lint-staged/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/lint-staged/node_modules/execa": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.0.0.tgz", - "integrity": "sha512-tQbH0pH/8LHTnwTrsKWideqi6rFB/QNUawEwrn+WHyz7PX1Tuz2u7wfTvbaNBdP5JD5LVWxNo8/A8CHNZ3bV6g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.1", @@ -6792,10 +7718,11 @@ } }, "node_modules/lint-staged/node_modules/human-signals": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.0.tgz", - "integrity": "sha512-zyzVyMjpGBX2+6cDVZeFPCdtOtdsxOeseRhB9tkQ6xXmGUNrcnBzdEKPy3VPNYz+4gy1oukVOXcrJCunSyc6QQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=14.18.0" } @@ -6805,6 +7732,7 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -6812,11 +7740,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lint-staged/node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/lint-staged/node_modules/mimic-fn": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -6824,11 +7767,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lint-staged/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, "node_modules/lint-staged/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^4.0.0" }, @@ -6844,6 +7795,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^4.0.0" }, @@ -6859,6 +7811,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -6871,6 +7824,7 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -6879,22 +7833,21 @@ } }, "node_modules/listr2": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.7.tgz", - "integrity": "sha512-MD+qXHPmtivrHIDRwPYdfNkrzqDiuaKU/rfBcec3WMyMF3xylQj3jMq344OtvQxz7zaCFViRAeqlr2AFhPvXHw==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-6.6.1.tgz", + "integrity": "sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==", "dev": true, + "license": "MIT", "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.19", - "log-update": "^4.0.0", - "p-map": "^4.0.0", + "cli-truncate": "^3.1.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^5.0.1", "rfdc": "^1.3.0", - "rxjs": "^7.8.0", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" + "wrap-ansi": "^8.1.0" }, "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": ">=16.0.0" }, "peerDependencies": { "enquirer": ">= 2.3.0 < 3" @@ -6905,47 +7858,20 @@ } } }, - "node_modules/listr2/node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/listr2/node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/load-tsconfig": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", "dependencies": { @@ -6970,6 +7896,8 @@ }, "node_modules/lodash.memoize": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true, "license": "MIT" }, @@ -6977,71 +7905,104 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz", + "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" + "ansi-escapes": "^5.0.0", + "cli-cursor": "^4.0.0", + "slice-ansi": "^5.0.0", + "strip-ansi": "^7.0.1", + "wrap-ansi": "^8.0.1" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", + "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "type-fest": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/long": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.4.tgz", - "integrity": "sha512-qtzLbJE8hq7VabR3mISmVGtoXP8KGc2Z/AT8OuqlYD7JTR3oqrgwdjnk07wpj1twXxYmgDXgoKVWUG/fReSzHg==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", "license": "Apache-2.0" }, "node_modules/lru-cache": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "license": "ISC", "dependencies": { @@ -7052,10 +8013,23 @@ "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } }, "node_modules/make-dir": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "license": "MIT", "dependencies": { @@ -7070,51 +8044,109 @@ }, "node_modules/make-error": { "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true, "license": "ISC" }, "node_modules/makeerror": { "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "tmpl": "1.0.5" } }, - "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", "dev": true, - "bin": { - "marked": "bin/marked.js" + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" }, - "engines": { - "node": ">= 12" + "bin": { + "markdown-it": "bin/markdown-it.mjs" } }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.4" } }, - "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", "dev": true, "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/merge-stream": { + "node_modules/mdurl": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true, "license": "MIT" }, @@ -7123,6 +8155,7 @@ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -7132,10 +8165,105 @@ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", @@ -7155,6 +8283,7 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -7164,6 +8293,8 @@ }, "node_modules/mime-db": { "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "license": "MIT", "engines": { @@ -7172,6 +8303,8 @@ }, "node_modules/mime-types": { "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", "dependencies": { @@ -7183,6 +8316,8 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "license": "MIT", "engines": { @@ -7190,14 +8325,19 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minipass": { @@ -7205,6 +8345,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=8" } @@ -7214,6 +8355,7 @@ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -7227,6 +8369,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -7238,13 +8381,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, + "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -7259,6 +8404,19 @@ "dev": true, "license": "MIT" }, + "node_modules/mlly": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", + "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "pathe": "^2.0.1", + "pkg-types": "^1.3.0", + "ufo": "^1.5.4" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -7271,6 +8429,7 @@ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "dev": true, + "license": "MIT", "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -7278,20 +8437,24 @@ } }, "node_modules/nan": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz", - "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==", + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz", + "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==", "dev": true, "license": "MIT", "optional": true }, "node_modules/natural-compare": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, "license": "MIT" }, "node_modules/negotiator": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, "license": "MIT", "engines": { @@ -7299,20 +8462,20 @@ } }, "node_modules/nice-grpc": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/nice-grpc/-/nice-grpc-2.1.11.tgz", - "integrity": "sha512-oizT4+EEJLvN5ydw38P1puP1a+7OngK2EehCA88PoRgnTEaxsb//4KUs+JlN0xjxt0waLC8j6UpOtcaIqOKmgQ==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/nice-grpc/-/nice-grpc-2.1.12.tgz", + "integrity": "sha512-J1n4Wg+D3IhRhGQb+iqh2OpiM0GzTve/kf2lnlW4S+xczmIEd0aHUDV1OsJ5a3q8GSTqJf+s4Rgg1M8uJltarw==", "license": "MIT", "dependencies": { - "@grpc/grpc-js": "^1.10.8", + "@grpc/grpc-js": "^1.13.1", "abort-controller-x": "^0.4.0", "nice-grpc-common": "^2.0.2" } }, "node_modules/nice-grpc-client-middleware-retry": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/nice-grpc-client-middleware-retry/-/nice-grpc-client-middleware-retry-3.1.10.tgz", - "integrity": "sha512-kgOb3PkxznLKKyX3HBjzDAWvdjwnQQ9/M8CCpx3srng4rSeU57EcSjShIl5Dh1j6A6KCC94VvassQcGw3KTT5A==", + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/nice-grpc-client-middleware-retry/-/nice-grpc-client-middleware-retry-3.1.11.tgz", + "integrity": "sha512-xW/imz/kNG2g0DwTfH2eYEGrg1chSLrXtvGp9fg2qkhTgGFfAS/Pq3+t+9G8KThcC4hK/xlEyKvZWKk++33S6A==", "license": "MIT", "dependencies": { "abort-controller-x": "^0.4.0", @@ -7323,12 +8486,27 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/nice-grpc-common/-/nice-grpc-common-2.0.2.tgz", "integrity": "sha512-7RNWbls5kAL1QVUOXvBsv1uO0wPQK3lHv+cY1gwkTzirnG1Nop4cBJZubpgziNbaVc/bl9QJcyvsf/NQxa3rjQ==", + "license": "MIT", "dependencies": { "ts-error": "^1.0.6" } }, + "node_modules/nice-grpc-web": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nice-grpc-web/-/nice-grpc-web-3.3.7.tgz", + "integrity": "sha512-9RyOGxmPm5rCLizn2uNFSSnlBPU/2n1i8inaNSAT52QAcOITKvCTFmOUnU+1CAJrKlxiGV64KFfcxJG77JDV5w==", + "license": "MIT", + "dependencies": { + "abort-controller-x": "^0.4.0", + "isomorphic-ws": "^5.0.0", + "js-base64": "^3.7.2", + "nice-grpc-common": "^2.0.2" + } + }, "node_modules/node-fetch": { - "version": "2.6.7", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" @@ -7345,29 +8523,17 @@ } } }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "license": "MIT" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "license": "BSD-2-Clause" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/node-int64": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true, "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.8", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true, "license": "MIT" }, @@ -7376,6 +8542,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "dev": true, + "license": "ISC", "dependencies": { "abbrev": "1" }, @@ -7388,6 +8555,8 @@ }, "node_modules/normalize-path": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "license": "MIT", "engines": { @@ -7396,6 +8565,8 @@ }, "node_modules/npm-run-path": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "license": "MIT", "dependencies": { @@ -7409,7 +8580,9 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", "dev": true, + "license": "ISC", "dependencies": { "are-we-there-yet": "^2.0.0", "console-control-strings": "^1.1.0", @@ -7422,15 +8595,17 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -7453,6 +8628,8 @@ }, "node_modules/once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "license": "ISC", "dependencies": { @@ -7461,6 +8638,8 @@ }, "node_modules/onetime": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", "dependencies": { @@ -7473,11 +8652,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/oniguruma-to-es": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz", + "integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex-xs": "^1.0.0", + "regex": "^5.1.1", + "regex-recursion": "^5.1.1" + } + }, "node_modules/openapi-typescript": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-5.4.1.tgz", - "integrity": "sha512-AGB2QiZPz4rE7zIwV3dRHtoUC/CWHhUjuzGXvtmMQN2AFV8xCTLKcZUHLcdPQmt/83i22nRE7+TxXOXkK+gf4Q==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-5.4.2.tgz", + "integrity": "sha512-tHeRv39Yh7brqJpbUntdjtUaXrTHmC4saoyTLU/0J2I8LEFQYDXRLgnmWTMiMOB2GXugJiqHa5n9sAyd6BRqiA==", "dev": true, + "license": "MIT", "dependencies": { "js-yaml": "^4.1.0", "mime": "^3.0.0", @@ -7497,13 +8689,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/openapi-typescript/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -7512,17 +8706,18 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -7530,6 +8725,8 @@ }, "node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7544,6 +8741,8 @@ }, "node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", "dependencies": { @@ -7555,6 +8754,8 @@ }, "node_modules/p-locate/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", "dependencies": { @@ -7567,23 +8768,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-try": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "license": "MIT", "engines": { @@ -7602,6 +8790,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -7611,6 +8800,8 @@ }, "node_modules/parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "license": "MIT", "dependencies": { @@ -7638,6 +8829,8 @@ }, "node_modules/path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", "engines": { @@ -7646,6 +8839,8 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "license": "MIT", "engines": { @@ -7654,6 +8849,8 @@ }, "node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "license": "MIT", "engines": { @@ -7662,6 +8859,8 @@ }, "node_modules/path-parse": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true, "license": "MIT" }, @@ -7690,9 +8889,9 @@ "license": "ISC" }, "node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "dev": true, "license": "MIT" }, @@ -7701,18 +8900,29 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { @@ -7727,6 +8937,7 @@ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", "dev": true, + "license": "MIT", "bin": { "pidtree": "bin/pidtree.js" }, @@ -7735,7 +8946,9 @@ } }, "node_modules/pirates": { - "version": "4.0.5", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, "license": "MIT", "engines": { @@ -7744,6 +8957,8 @@ }, "node_modules/pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7753,51 +8968,16 @@ "node": ">=8" } }, - "node_modules/postcss-load-config": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", - "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "license": "MIT", "dependencies": { - "lilconfig": "^3.0.0", - "yaml": "^2.3.4" - }, - "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", - "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" } }, "node_modules/prelude-ls": { @@ -7805,14 +8985,15 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, "license": "MIT", "bin": { @@ -7830,6 +9011,7 @@ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, + "license": "MIT", "dependencies": { "fast-diff": "^1.1.2" }, @@ -7842,6 +9024,7 @@ "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.4.tgz", "integrity": "sha512-6m8WBhIp0dfwu0SkgfOxJqh+HpdyfqSSLfKKRZSFbDuEQXDDndb8fTpRWkUrX/uBenkex3MgnVk0J3b3Y5byog==", "dev": true, + "license": "MIT", "peerDependencies": { "@volar/vue-language-plugin-pug": "^1.0.4", "@volar/vue-typescript": "^1.0.4", @@ -7858,11 +9041,13 @@ } }, "node_modules/pretty-format": { - "version": "29.4.3", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -7872,6 +9057,8 @@ }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", "engines": { @@ -7900,6 +9087,8 @@ }, "node_modules/prompts": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -7939,11 +9128,23 @@ "url": "https://github.com/steveukx/properties?sponsor=1" } }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/protobufjs": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", - "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.3.tgz", + "integrity": "sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==", "hasInstallScript": true, + "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -7967,6 +9168,7 @@ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, + "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -7987,14 +9189,42 @@ } }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, "node_modules/qs": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", @@ -8029,13 +9259,7 @@ "type": "consulting", "url": "https://feross.org/support" } - ] - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "dev": true, + ], "license": "MIT" }, "node_modules/range-parser": { @@ -8053,6 +9277,7 @@ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -8064,7 +9289,9 @@ } }, "node_modules/react-is": { - "version": "18.2.0", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, "license": "MIT" }, @@ -8073,6 +9300,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -8092,16 +9320,6 @@ "minimatch": "^5.1.0" } }, - "node_modules/readdir-glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/readdir-glob/node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -8116,59 +9334,81 @@ } }, "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, + "license": "MIT", "engines": { - "node": ">=8.10.0" + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", + "node_modules/regex": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", + "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "node_modules/regex-recursion": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", + "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "license": "MIT", + "dependencies": { + "regex": "^5.1.1", + "regex-utilities": "^2.3.0" } }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "dev": true, + "license": "MIT" + }, "node_modules/require-directory": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/resolve": { - "version": "1.22.1", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-cwd": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "license": "MIT", "dependencies": { @@ -8180,6 +9420,8 @@ }, "node_modules/resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", "engines": { @@ -8187,7 +9429,9 @@ } }, "node_modules/resolve.exports": { - "version": "2.0.0", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", "dev": true, "license": "MIT", "engines": { @@ -8195,16 +9439,20 @@ } }, "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", "dev": true, + "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/retry": { @@ -8218,26 +9466,30 @@ } }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -8284,33 +9536,37 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, - "node_modules/rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, "node_modules/safe-buffer": { - "version": "5.1.2", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT" }, "node_modules/safer-buffer": { "version": "2.1.2", - "devOptional": true, + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, "license": "MIT" }, "node_modules/semver": { @@ -8318,6 +9574,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -8407,33 +9664,20 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, - "license": "MIT", - "dependencies": { - "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.2" - }, - "engines": { - "node": ">= 0.4" - } + "license": "ISC" }, "node_modules/setprototypeof": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true, "license": "ISC" }, "node_modules/shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "license": "MIT", "dependencies": { @@ -8445,6 +9689,8 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "license": "MIT", "engines": { @@ -8452,28 +9698,90 @@ } }, "node_modules/shiki": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz", - "integrity": "sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==", + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz", + "integrity": "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" + "@shikijs/core": "1.29.2", + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/langs": "1.29.2", + "@shikijs/themes": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -8484,16 +9792,22 @@ }, "node_modules/signal-exit": { "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, "node_modules/sisteransi": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true, "license": "MIT" }, "node_modules/slash": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", "engines": { @@ -8505,6 +9819,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" @@ -8521,6 +9836,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -8528,20 +9844,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -8550,6 +9856,8 @@ }, "node_modules/source-map-support": { "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "license": "MIT", "dependencies": { @@ -8557,6 +9865,17 @@ "source-map": "^0.6.0" } }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/split-ca": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", @@ -8566,6 +9885,8 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true, "license": "BSD-3-Clause" }, @@ -8611,6 +9932,8 @@ }, "node_modules/stack-utils": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8622,6 +9945,8 @@ }, "node_modules/stack-utils/node_modules/escape-string-regexp": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, "license": "MIT", "engines": { @@ -8630,6 +9955,8 @@ }, "node_modules/statuses": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, "license": "MIT", "engines": { @@ -8637,14 +9964,13 @@ } }, "node_modules/streamx": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", - "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz", + "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==", "dev": true, "license": "MIT", "dependencies": { "fast-fifo": "^1.3.2", - "queue-tick": "^1.0.1", "text-decoder": "^1.1.0" }, "optionalDependencies": { @@ -8656,41 +9982,25 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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" - } - ] - }, "node_modules/string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6.19" } }, "node_modules/string-length": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8702,15 +10012,21 @@ } }, "node_modules/string-width": { - "version": "4.2.3", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/string-width-cjs": { @@ -8729,8 +10045,71 @@ "node": ">=8" } }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -8755,6 +10134,8 @@ }, "node_modules/strip-bom": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "license": "MIT", "engines": { @@ -8763,6 +10144,8 @@ }, "node_modules/strip-final-newline": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "license": "MIT", "engines": { @@ -8771,6 +10154,8 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", "engines": { @@ -8781,14 +10166,15 @@ } }, "node_modules/sucrase": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz", - "integrity": "sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==", + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", - "glob": "7.1.6", + "glob": "^10.3.10", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", @@ -8799,21 +10185,7 @@ "sucrase-node": "bin/sucrase-node" }, "engines": { - "node": ">=8" - } - }, - "node_modules/sucrase/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" + "node": ">=16 || 14 >=14.17" } }, "node_modules/sucrase/node_modules/commander": { @@ -8821,32 +10193,62 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/sucrase/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/sucrase/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { @@ -8858,6 +10260,8 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, "license": "MIT", "engines": { @@ -8872,6 +10276,7 @@ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dev": true, + "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -8885,9 +10290,9 @@ } }, "node_modules/tar-fs": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", - "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.9.tgz", + "integrity": "sha512-XF4w9Xp+ZQgifKakjZYmFdkLoSWd34VGKcsTCwlNWM7QG3ZbaxnTsaBwnjFZqHRf/rROxaR8rXnbtwdvaDI+lA==", "dev": true, "license": "MIT", "dependencies": { @@ -8895,8 +10300,8 @@ "tar-stream": "^3.1.5" }, "optionalDependencies": { - "bare-fs": "^2.1.1", - "bare-path": "^2.1.0" + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0" } }, "node_modules/tar-stream": { @@ -8915,10 +10320,13 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/test-exclude": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "license": "ISC", "dependencies": { @@ -8930,48 +10338,77 @@ "node": ">=8" } }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/testcontainers": { - "version": "10.14.0", - "resolved": "https://registry.npmjs.org/testcontainers/-/testcontainers-10.14.0.tgz", - "integrity": "sha512-8fReFeQ4bk17T2vHHzcFavBG8UHuHwsdVj+48TchtsCSklwmSUTkg/b57hVjxZdxN1ed/GfF63WZ39I4syV5tQ==", + "version": "10.28.0", + "resolved": "https://registry.npmjs.org/testcontainers/-/testcontainers-10.28.0.tgz", + "integrity": "sha512-1fKrRRCsgAQNkarjHCMKzBKXSJFmzNTiTbhb5E/j5hflRXChEtHvkefjaHlgkNUjfw92/Dq8LTgwQn6RDBFbMg==", "dev": true, "license": "MIT", "dependencies": { "@balena/dockerignore": "^1.0.2", - "@types/dockerode": "^3.3.29", + "@types/dockerode": "^3.3.35", "archiver": "^7.0.1", "async-lock": "^1.4.1", "byline": "^5.0.0", "debug": "^4.3.5", "docker-compose": "^0.24.8", - "dockerode": "^3.3.5", - "get-port": "^5.1.1", + "dockerode": "^4.0.5", + "get-port": "^7.1.0", "proper-lockfile": "^4.1.2", "properties-reader": "^2.3.0", "ssh-remote-port-forward": "^1.0.4", - "tar-fs": "^3.0.6", + "tar-fs": "^3.0.7", "tmp": "^0.2.3", - "undici": "^5.28.4" + "undici": "^5.29.0" } }, "node_modules/text-decoder": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.1.tgz", - "integrity": "sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", + "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", "dev": true, - "license": "Apache-2.0" + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", "dev": true, + "license": "MIT", "dependencies": { "any-promise": "^1.0.0" } @@ -8981,6 +10418,7 @@ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", "dev": true, + "license": "MIT", "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -8988,22 +10426,69 @@ "node": ">=0.8" } }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, "node_modules/tiny-glob": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", "dev": true, + "license": "MIT", "dependencies": { "globalyzer": "0.1.0", "globrex": "^0.1.2" } }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz", + "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tmp": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", @@ -9016,22 +10501,17 @@ }, "node_modules/tmpl": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true, "license": "BSD-3-Clause" }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "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" }, @@ -9041,6 +10521,8 @@ }, "node_modules/toidentifier": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, "license": "MIT", "engines": { @@ -9048,28 +10530,38 @@ } }, "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, + "license": "MIT", "bin": { "tree-kill": "cli.js" } }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -9080,45 +10572,55 @@ "node_modules/ts-error": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/ts-error/-/ts-error-1.0.6.tgz", - "integrity": "sha512-tLJxacIQUM82IR7JO1UUkKlYuUTmoY9HBJAmNWFzheSlDS5SPMcNIepejHJa4BpPQLAcbRhRf3GDJzyj6rbKvA==" + "integrity": "sha512-tLJxacIQUM82IR7JO1UUkKlYuUTmoY9HBJAmNWFzheSlDS5SPMcNIepejHJa4BpPQLAcbRhRf3GDJzyj6rbKvA==", + "license": "MIT" }, "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/ts-jest": { - "version": "29.0.5", + "version": "29.3.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.4.tgz", + "integrity": "sha512-Iqbrm8IXOmV+ggWHOTEbjwyCf2xZlUMv5npExksXohL+tk8va4Fjhb+X2+Rt9NBmgO7bJ8WpnMLOwih/DnMlFA==", "dev": true, "license": "MIT", "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", + "bs-logger": "^0.2.6", + "ejs": "^3.1.10", + "fast-json-stable-stringify": "^2.1.0", "jest-util": "^29.0.0", "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "^21.0.1" + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.7.2", + "type-fest": "^4.41.0", + "yargs-parser": "^21.1.1" }, "bin": { "ts-jest": "cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" }, "peerDependencies": { "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", "@jest/types": "^29.0.0", "babel-jest": "^29.0.0", "jest": "^29.0.0", - "typescript": ">=4.3" + "typescript": ">=4.3 <6" }, "peerDependenciesMeta": { "@babel/core": { "optional": true }, + "@jest/transform": { + "optional": true + }, "@jest/types": { "optional": true }, @@ -9130,25 +10632,12 @@ } } }, - "node_modules/ts-jest/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/ts-jest/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -9156,16 +10645,25 @@ "node": ">=10" } }, - "node_modules/ts-jest/node_modules/yallist": { - "version": "4.0.0", + "node_modules/ts-jest/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, - "license": "ISC" + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, + "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -9205,19 +10703,21 @@ } }, "node_modules/ts-poet": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/ts-poet/-/ts-poet-6.9.0.tgz", - "integrity": "sha512-roe6W6MeZmCjRmppyfOURklO5tQFQ6Sg7swURKkwYJvV7dbGCrK28um5+51iW3twdPRKtwarqFAVMU6G1mvnuQ==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ts-poet/-/ts-poet-6.12.0.tgz", + "integrity": "sha512-xo+iRNMWqyvXpFTaOAvLPA5QAWO6TZrSUs5s4Odaya3epqofBu/fMLHEWl8jPmjhA0s9sgj9sNvF1BmaQlmQkA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "dprint-node": "^1.0.8" } }, "node_modules/ts-proto": { - "version": "1.176.0", - "resolved": "https://registry.npmjs.org/ts-proto/-/ts-proto-1.176.0.tgz", - "integrity": "sha512-OWVrVUpNfZVfvKJZlSjRmCPkcNcox6IPRw3RIeyK2Z4d0Uoy1/gkumMwCVOAMznZcv80D1r9GyYHgYVdp6Cj+g==", + "version": "1.181.2", + "resolved": "https://registry.npmjs.org/ts-proto/-/ts-proto-1.181.2.tgz", + "integrity": "sha512-knJ8dtjn2Pd0c5ZGZG8z9DMiD4PUY8iGI9T9tb8DvGdWRMkLpf0WcPO7G+7cmbZyxvNTAG6ci3fybEaFgMZIvg==", "dev": true, + "license": "ISC", "dependencies": { "case-anything": "^2.1.13", "protobufjs": "^7.2.4", @@ -9233,30 +10733,35 @@ "resolved": "https://registry.npmjs.org/ts-proto-descriptors/-/ts-proto-descriptors-1.16.0.tgz", "integrity": "sha512-3yKuzMLpltdpcyQji1PJZRfoo4OJjNieKTYkQY8pF7xGKsYz/RHe3aEe4KiRxcinoBmnEhmuI+yJTxLb922ULA==", "dev": true, + "license": "ISC", "dependencies": { "long": "^5.2.3", "protobufjs": "^7.2.4" } }, "node_modules/tsup": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.0.2.tgz", - "integrity": "sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==", - "dev": true, - "dependencies": { - "bundle-require": "^4.0.0", - "cac": "^6.7.12", - "chokidar": "^3.5.1", - "debug": "^4.3.1", - "esbuild": "^0.19.2", - "execa": "^5.0.0", - "globby": "^11.0.3", - "joycon": "^3.0.1", - "postcss-load-config": "^4.0.1", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.5.0.tgz", + "integrity": "sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-require": "^5.1.0", + "cac": "^6.7.14", + "chokidar": "^4.0.3", + "consola": "^3.4.0", + "debug": "^4.4.0", + "esbuild": "^0.25.0", + "fix-dts-default-cjs-exports": "^1.0.0", + "joycon": "^3.1.1", + "picocolors": "^1.1.1", + "postcss-load-config": "^6.0.1", "resolve-from": "^5.0.0", - "rollup": "^4.0.2", + "rollup": "^4.34.8", "source-map": "0.8.0-beta.0", - "sucrase": "^3.20.3", + "sucrase": "^3.35.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.11", "tree-kill": "^1.2.2" }, "bin": { @@ -9288,20 +10793,76 @@ } }, "node_modules/tsup/node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", "dev": true, "license": "MIT" }, + "node_modules/tsup/node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/tsup/node_modules/postcss-load-config": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, "node_modules/tsup/node_modules/rollup": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz", - "integrity": "sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.1.tgz", + "integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "@types/estree": "1.0.7" }, "bin": { "rollup": "dist/bin/rollup" @@ -9311,22 +10872,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.24.0", - "@rollup/rollup-android-arm64": "4.24.0", - "@rollup/rollup-darwin-arm64": "4.24.0", - "@rollup/rollup-darwin-x64": "4.24.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.24.0", - "@rollup/rollup-linux-arm-musleabihf": "4.24.0", - "@rollup/rollup-linux-arm64-gnu": "4.24.0", - "@rollup/rollup-linux-arm64-musl": "4.24.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.24.0", - "@rollup/rollup-linux-riscv64-gnu": "4.24.0", - "@rollup/rollup-linux-s390x-gnu": "4.24.0", - "@rollup/rollup-linux-x64-gnu": "4.24.0", - "@rollup/rollup-linux-x64-musl": "4.24.0", - "@rollup/rollup-win32-arm64-msvc": "4.24.0", - "@rollup/rollup-win32-ia32-msvc": "4.24.0", - "@rollup/rollup-win32-x64-msvc": "4.24.0", + "@rollup/rollup-android-arm-eabi": "4.41.1", + "@rollup/rollup-android-arm64": "4.41.1", + "@rollup/rollup-darwin-arm64": "4.41.1", + "@rollup/rollup-darwin-x64": "4.41.1", + "@rollup/rollup-freebsd-arm64": "4.41.1", + "@rollup/rollup-freebsd-x64": "4.41.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.41.1", + "@rollup/rollup-linux-arm-musleabihf": "4.41.1", + "@rollup/rollup-linux-arm64-gnu": "4.41.1", + "@rollup/rollup-linux-arm64-musl": "4.41.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.41.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.41.1", + "@rollup/rollup-linux-riscv64-gnu": "4.41.1", + "@rollup/rollup-linux-riscv64-musl": "4.41.1", + "@rollup/rollup-linux-s390x-gnu": "4.41.1", + "@rollup/rollup-linux-x64-gnu": "4.41.1", + "@rollup/rollup-linux-x64-musl": "4.41.1", + "@rollup/rollup-win32-arm64-msvc": "4.41.1", + "@rollup/rollup-win32-ia32-msvc": "4.41.1", + "@rollup/rollup-win32-x64-msvc": "4.41.1", "fsevents": "~2.3.2" } }, @@ -9335,6 +10900,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "whatwg-url": "^7.0.0" }, @@ -9342,6 +10908,50 @@ "node": ">= 8" } }, + "node_modules/tsup/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/tsup/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/tsup/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/tsup/node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "dev": true, + "license": "ISC", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", @@ -9354,6 +10964,7 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -9363,6 +10974,8 @@ }, "node_modules/type-detect": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, "license": "MIT", "engines": { @@ -9371,6 +10984,8 @@ }, "node_modules/type-fest": { "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -9395,49 +11010,44 @@ } }, "node_modules/typedoc": { - "version": "0.25.13", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.13.tgz", - "integrity": "sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==", + "version": "0.26.11", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.26.11.tgz", + "integrity": "sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "lunr": "^2.3.9", - "marked": "^4.3.0", - "minimatch": "^9.0.3", - "shiki": "^0.14.7" + "markdown-it": "^14.1.0", + "minimatch": "^9.0.5", + "shiki": "^1.16.2", + "yaml": "^2.5.1" }, "bin": { "typedoc": "bin/typedoc" }, "engines": { - "node": ">= 16" + "node": ">= 18" }, "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 || 5.4.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 || 5.5.x || 5.6.x" } }, "node_modules/typedoc-plugin-extras": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/typedoc-plugin-extras/-/typedoc-plugin-extras-3.0.0.tgz", - "integrity": "sha512-eiAe3qtm2WbV5owdncpt0zHZPqsNZH2mzNGILPd4zqrvEZie3Et9es4cpGZ+8lHO/SI0pVKwsAj7IuMxPNOdYg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/typedoc-plugin-extras/-/typedoc-plugin-extras-3.1.0.tgz", + "integrity": "sha512-8tNeq2fgl2HCUZ6eZuAoLLKEvB/WrRS4He9MtTfo3X3Pa8Iw3TS5D0g8krDhUXUk1uHpXVAVHm8rSOMS2mdJRw==", "dev": true, + "license": "MIT", "peerDependencies": { - "typedoc": "0.25.x" + "typedoc": "0.26.x" } }, - "node_modules/typedoc/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/typedoc/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "node_modules/typedoc/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -9448,10 +11058,23 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/typedoc/node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -9462,11 +11085,26 @@ "node": ">=14.17" } }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/ufo": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "dev": true, + "license": "MIT" + }, "node_modules/undici": { - "version": "5.28.4", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", - "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", + "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", "dev": true, + "license": "MIT", "dependencies": { "@fastify/busboy": "^2.0.0" }, @@ -9474,8 +11112,89 @@ "node": ">=14.0" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "license": "MIT" + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unpipe": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, "license": "MIT", "engines": { @@ -9483,7 +11202,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.10", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, "funding": [ { @@ -9493,15 +11214,19 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { - "browserslist-lint": "cli.js" + "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" @@ -9512,6 +11237,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -9520,13 +11246,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -9539,6 +11267,7 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -9547,16 +11276,19 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/v8-to-istanbul": { - "version": "9.1.0", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" + "convert-source-map": "^2.0.0" }, "engines": { "node": ">=10.12.0" @@ -9567,24 +11299,45 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", - "dev": true + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, "node_modules/walker": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -9592,24 +11345,25 @@ } }, "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" }, "node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "node_modules/which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "license": "ISC", "dependencies": { @@ -9627,29 +11381,66 @@ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "node_modules/wide-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wide-align/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wide-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/wrap-ansi": { - "version": "7.0.0", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" @@ -9674,13 +11465,91 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, "license": "ISC" }, "node_modules/write-file-atomic": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "license": "ISC", "dependencies": { @@ -9692,10 +11561,10 @@ } }, "node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "dev": true, + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", + "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -9714,6 +11583,8 @@ }, "node_modules/y18n": { "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "license": "ISC", "engines": { "node": ">=10" @@ -9721,17 +11592,17 @@ }, "node_modules/yallist": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true, "license": "ISC" }, "node_modules/yaml": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", - "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", "dev": true, - "bin": { - "yaml": "bin.mjs" - }, + "license": "ISC", "engines": { "node": ">= 14" } @@ -9740,6 +11611,7 @@ "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -9755,22 +11627,56 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "license": "ISC", "engines": { "node": ">=12" } }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", "engines": { @@ -9796,9 +11702,9 @@ } }, "node_modules/zip-stream/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dev": true, "license": "MIT", "dependencies": { @@ -9811,6 +11717,17 @@ "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } } } } diff --git a/package.json b/package.json index eb203494..db3e243d 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "nice-grpc": "^2.1.11", "nice-grpc-client-middleware-retry": "^3.1.10", "nice-grpc-common": "^2.0.2", + "nice-grpc-web": "^3.3.7", "uuid": "^9.0.1" }, "devDependencies": { @@ -93,7 +94,7 @@ "ts-node": "^10.9.2", "ts-proto": "^1.163.0", "tsup": "^8.0.2", - "typedoc": "^0.25.12", + "typedoc": "^0.26.0", "typedoc-plugin-extras": "^3.0.0", "typescript": "^5.3.3" }, diff --git a/src/collections/types/index.ts b/src/collections/types/index.ts index 406eaa09..ec2c993f 100644 --- a/src/collections/types/index.ts +++ b/src/collections/types/index.ts @@ -10,15 +10,15 @@ export type { IsPrimitiveField, IsWeaviateField, NestedKeys, - NonRefKeys, NonReferenceInputs, + NonRefKeys, PrimitiveKeys, QueryNested, QueryProperty, QueryReference, - RefKeys, ReferenceInput, ReferenceInputs, + RefKeys, } from './internal.js'; export * from './query.js'; diff --git a/src/connection/grpc.ts b/src/connection/grpc.ts index ea126b55..1cd243e7 100644 --- a/src/connection/grpc.ts +++ b/src/connection/grpc.ts @@ -1,7 +1,7 @@ import { isAbortError } from 'abort-controller-x'; import ConnectionGQL from './gql.js'; -import { InternalConnectionParams } from './http.js'; +import { InternalConnectionParams } from './transports/http.js'; import { ConsistencyLevel } from '../data/index.js'; diff --git a/src/connection/http.ts b/src/connection/http.ts index c4f5e6a9..6fc554c0 100644 --- a/src/connection/http.ts +++ b/src/connection/http.ts @@ -1,56 +1,8 @@ -import { isAbortError } from 'abort-controller-x'; -import { Agent } from 'http'; - import OpenidConfigurationGetter from '../misc/openidConfigurationGetter.js'; -import { - WeaviateInsufficientPermissionsError, - WeaviateInvalidInputError, - WeaviateRequestTimeoutError, - WeaviateUnauthenticatedError, - WeaviateUnexpectedStatusCodeError, -} from '../errors.js'; -import { - ApiKey, - AuthAccessTokenCredentials, - AuthClientCredentials, - AuthUserPasswordCredentials, - OidcAuthenticator, -} from './auth.js'; - -/** - * You can only specify the gRPC proxy URL at this point in time. This is because ProxiesParams should be used to define tunnelling proxies - * and Weaviate does not support tunnelling proxies over HTTP/1.1 at this time. - * - * To use a forwarding proxy you should instead specify its URL as if it were the Weaviate instance itself. - */ -export type ProxiesParams = { - // http?: string; - // https?: string; - grpc?: string; -}; - -export type TimeoutParams = { - /** Define the configured timeout when querying data from Weaviate */ - query?: number; - /** Define the configured timeout when mutating data to Weaviate */ - insert?: number; - /** Define the configured timeout when initially connecting to Weaviate */ - init?: number; -}; - -export type InternalConnectionParams = { - authClientSecret?: AuthClientCredentials | AuthAccessTokenCredentials | AuthUserPasswordCredentials; - apiKey?: ApiKey; - host: string; - scheme?: string; - headers?: HeadersInit; - // http1Agent?: Agent; - grpcProxyUrl?: string; - agent?: Agent; - timeout?: TimeoutParams; - skipInitChecks?: boolean; -}; +import { WeaviateInvalidInputError } from '../errors.js'; +import { OidcAuthenticator } from './auth.js'; +import { HttpClient, InternalConnectionParams, httpClient } from './transports/http.js'; export interface ConnectionDetails { host: string; @@ -200,230 +152,3 @@ export default class ConnectionREST { } export * from './auth.js'; - -export interface HttpClient { - close: () => void; - patch: (path: string, payload: any, bearerToken?: string) => any; - head: (path: string, payload: any, bearerToken?: string) => any; - post: ( - path: string, - payload: B, - expectReturnContent: boolean, - bearerToken: string - ) => Promise; - get: (path: string, expectReturnContent?: boolean, bearerToken?: string) => Promise; - externalPost: (externalUrl: string, body: any, contentType: any) => any; - getRaw: (path: string, bearerToken?: string) => any; - delete: (path: string, payload: any, expectReturnContent?: boolean, bearerToken?: string) => any; - put: (path: string, payload: any, expectReturnContent?: boolean, bearerToken?: string) => any; - externalGet: (externalUrl: string) => Promise; -} - -const fetchWithTimeout = ( - input: RequestInfo | URL, - timeout: number, - init?: RequestInit | undefined -): Promise => { - const controller = new AbortController(); - // Set a timeout to abort the request - const timeoutId = setTimeout(() => controller.abort(), timeout * 1000); - return fetch(input, { ...init, signal: controller.signal }) - .catch((error) => { - if (isAbortError(error)) { - throw new WeaviateRequestTimeoutError(`Request timed out after ${timeout}ms`); - } - throw error; // For other errors, rethrow them - }) - .finally(() => clearTimeout(timeoutId)); -}; - -export const httpClient = (config: InternalConnectionParams): HttpClient => { - const version = '/v1'; - const baseUri = `${config.host}${version}`; - const url = makeUrl(baseUri); - - return { - close: () => config.agent?.destroy(), - post: ( - path: string, - payload: B, - expectReturnContent: boolean, - bearerToken: string - ): Promise => { - const request = { - method: 'POST', - headers: { - ...config.headers, - 'content-type': 'application/json', - ...getAuthHeaders(config, bearerToken), - }, - body: JSON.stringify(payload), - agent: config.agent, - }; - return fetchWithTimeout(url(path), config.timeout?.insert || 90, request).then( - checkStatus(expectReturnContent) - ); - }, - put: ( - path: string, - payload: B, - expectReturnContent = true, - bearerToken = '' - ): Promise => { - const request = { - method: 'PUT', - headers: { - ...config.headers, - 'content-type': 'application/json', - ...getAuthHeaders(config, bearerToken), - }, - body: JSON.stringify(payload), - agent: config.agent, - }; - return fetchWithTimeout(url(path), config.timeout?.insert || 90, request).then( - checkStatus(expectReturnContent) - ); - }, - patch: (path: string, payload: B, bearerToken = ''): Promise => { - const request = { - method: 'PATCH', - headers: { - ...config.headers, - 'content-type': 'application/json', - ...getAuthHeaders(config, bearerToken), - }, - body: JSON.stringify(payload), - agent: config.agent, - }; - return fetchWithTimeout(url(path), config.timeout?.insert || 90, request).then(checkStatus(false)); - }, - delete: (path: string, payload: B | null = null, expectReturnContent = false, bearerToken = '') => { - const request = { - method: 'DELETE', - headers: { - ...config.headers, - 'content-type': 'application/json', - ...getAuthHeaders(config, bearerToken), - }, - body: payload ? JSON.stringify(payload) : undefined, - agent: config.agent, - }; - return fetchWithTimeout(url(path), config.timeout?.insert || 90, request).then( - checkStatus(expectReturnContent) - ); - }, - head: (path: string, payload: B | null = null, bearerToken = '') => { - const request = { - method: 'HEAD', - headers: { - ...config.headers, - 'content-type': 'application/json', - ...getAuthHeaders(config, bearerToken), - }, - body: payload ? JSON.stringify(payload) : undefined, - agent: config.agent, - }; - return fetchWithTimeout(url(path), config.timeout?.query || 30, request).then( - handleHeadResponse(false) - ); - }, - get: (path: string, expectReturnContent = true, bearerToken = ''): Promise => { - const request = { - method: 'GET', - headers: { - ...config.headers, - ...getAuthHeaders(config, bearerToken), - }, - agent: config.agent, - }; - return fetchWithTimeout(url(path), config.timeout?.query || 30, request).then( - checkStatus(expectReturnContent) - ); - }, - getRaw: (path: string, bearerToken = '') => { - // getRaw does not handle the status leaving this to the caller - const request = { - method: 'GET', - headers: { - ...config.headers, - ...getAuthHeaders(config, bearerToken), - }, - agent: config.agent, - }; - return fetchWithTimeout(url(path), config.timeout?.query || 30, request); - }, - externalGet: (externalUrl: string) => { - return fetch(externalUrl, { - method: 'GET', - headers: { - ...config.headers, - }, - }).then(checkStatus(true)); - }, - externalPost: (externalUrl: string, body: any, contentType: any) => { - if (contentType == undefined || contentType == '') { - contentType = 'application/json'; - } - const request = { - body: undefined, - method: 'POST', - headers: { - ...config.headers, - 'content-type': contentType, - }, - }; - if (body != null) { - request.body = body; - } - return fetch(externalUrl, request).then(checkStatus(true)); - }, - }; -}; - -const makeUrl = (basePath: string) => (path: string) => basePath + path; - -const checkStatus = - (expectResponseBody: boolean) => - (res: Response) => { - if (res.status >= 400) { - return res.text().then((errText: string) => { - let err: string; - try { - // in case of invalid json response (like empty string) - err = JSON.stringify(JSON.parse(errText)); - } catch (e) { - err = errText; - } - if (res.status === 401) { - return Promise.reject(new WeaviateUnauthenticatedError(err)); - } else if (res.status === 403) { - return Promise.reject(new WeaviateInsufficientPermissionsError(403, err)); - } else { - return Promise.reject(new WeaviateUnexpectedStatusCodeError(res.status, err)); - } - }); - } - if (expectResponseBody) { - return res.json() as Promise; - } - return Promise.resolve(undefined); - }; - -const handleHeadResponse = - (expectResponseBody: boolean) => - (res: Response) => { - if (res.status == 200 || res.status == 204 || res.status == 404) { - return Promise.resolve(res.status == 200 || res.status == 204); - } - return checkStatus(expectResponseBody)(res); - }; - -const getAuthHeaders = (config: InternalConnectionParams, bearerToken: string) => - bearerToken - ? { - Authorization: `Bearer ${bearerToken}`, - 'X-Weaviate-Cluster-Url': config.host, - // keeping for backwards compatibility for older clusters for now. On newer clusters, Embedding Service reuses Authorization header. - 'X-Weaviate-Api-Key': bearerToken, - } - : undefined; diff --git a/src/connection/transports/grpc/node.ts b/src/connection/transports/grpc/node.ts new file mode 100644 index 00000000..5078b22d --- /dev/null +++ b/src/connection/transports/grpc/node.ts @@ -0,0 +1,165 @@ +import { isAbortError } from 'abort-controller-x'; + +import { InternalConnectionParams } from '../http.js'; + +import { ConsistencyLevel } from '../../../data/index.js'; + +import { + ChannelCredentials, + ChannelOptions, + ClientError, + createChannel, + createClientFactory, + Metadata, + Status, +} from 'nice-grpc'; + +import { + HealthCheckResponse_ServingStatus, + HealthDefinition, +} from '../../../proto/google/health/v1/health.js'; +import { WeaviateDefinition } from '../../../proto/v1/weaviate.js'; + +import Aggregator, { Aggregate } from '../../../grpc/aggregator.js'; +import Batcher, { Batch } from '../../../grpc/batcher.js'; +import Searcher, { Search } from '../../../grpc/searcher.js'; +import TenantsManager, { Tenants } from '../../../grpc/tenantsManager.js'; + +import { retryMiddleware } from 'nice-grpc-client-middleware-retry'; +import { WeaviateGRPCUnavailableError } from '../../../errors.js'; + +export interface GrpcConnectionParams extends InternalConnectionParams { + grpcAddress: string; + grpcSecure: boolean; +} + +const clientFactory = createClientFactory().use(retryMiddleware); + +export interface GrpcClient { + aggregate: ( + collection: string, + consistencyLevel?: ConsistencyLevel, + tenant?: string, + bearerToken?: string + ) => Aggregate; + batch: ( + collection: string, + consistencyLevel?: ConsistencyLevel, + tenant?: string, + bearerToken?: string + ) => Batch; + close: () => void; + health: () => Promise; + search: ( + collection: string, + consistencyLevel?: ConsistencyLevel, + tenant?: string, + bearerToken?: string + ) => Search; + tenants: (collection: string, bearerToken?: string) => Tenants; +} + +export const grpcClient = (config: GrpcConnectionParams & { grpcMaxMessageLength: number }): GrpcClient => { + const channelOptions: ChannelOptions = { + 'grpc.max_send_message_length': config.grpcMaxMessageLength, + 'grpc.max_receive_message_length': config.grpcMaxMessageLength, + }; + if (config.grpcProxyUrl) { + // grpc.http_proxy is not used by grpc.js under-the-hood + // only uses the env var and whether http_proxy is enabled + process.env.grpc_proxy = config.grpcProxyUrl; + channelOptions['grpc.enabled_http_proxy'] = true; + } + const channel = createChannel( + config.grpcAddress, + config.grpcSecure ? ChannelCredentials.createSsl() : ChannelCredentials.createInsecure(), + channelOptions + ); + const client = clientFactory.create(WeaviateDefinition, channel); + const health = clientFactory.create(HealthDefinition, channel); + return { + aggregate: ( + collection: string, + consistencyLevel?: ConsistencyLevel, + tenant?: string, + bearerToken?: string + ) => + Aggregator.use( + client, + collection, + new Metadata(bearerToken ? { ...config.headers, authorization: bearerToken } : config.headers), + config.timeout?.query || 30, + consistencyLevel, + tenant + ), + batch: (collection: string, consistencyLevel?: ConsistencyLevel, tenant?: string, bearerToken?: string) => + Batcher.use( + client, + collection, + getMetadataWithEmbeddingServiceAuth(config, bearerToken), + config.timeout?.insert || 90, + consistencyLevel, + tenant + ), + close: () => channel.close(), + health: () => { + const controller = new AbortController(); + const timeoutId = setTimeout(() => controller.abort(), (config.timeout?.init || 2) * 1000); + return health + .check( + { service: '/grpc.health.v1.Health/Check' }, + { + signal: controller.signal, + retry: true, + retryMaxAttempts: 1, + retryableStatuses: [Status.UNAVAILABLE], + onRetryableError(error: ClientError, attempt: number, delayMs: number) { + console.warn(error, `Healthcheck ${attempt} failed. Retrying in ${delayMs}ms.`); + }, + } + ) + .then((res) => res.status === HealthCheckResponse_ServingStatus.SERVING) + .catch((err) => { + if (isAbortError(err)) { + throw new WeaviateGRPCUnavailableError(config.grpcAddress); + } + throw err; + }) + .finally(() => clearTimeout(timeoutId)); + }, + search: ( + collection: string, + consistencyLevel?: ConsistencyLevel, + tenant?: string, + bearerToken?: string + ) => + Searcher.use( + client, + collection, + getMetadataWithEmbeddingServiceAuth(config, bearerToken), + config.timeout?.query || 30, + consistencyLevel, + tenant + ), + tenants: (collection: string, bearerToken?: string) => + TenantsManager.use( + client, + collection, + new Metadata(bearerToken ? { ...config.headers, authorization: bearerToken } : config.headers), + config.timeout?.query || 30 + ), + }; +}; + +const getMetadataWithEmbeddingServiceAuth = (config: GrpcConnectionParams, bearerToken?: string) => + new Metadata( + bearerToken + ? { + ...config.headers, + authorization: bearerToken, + 'X-Weaviate-Cluster-Url': config.host, + // keeping for backwards compatibility for older clusters for now. On newer clusters, Embedding Service reuses Authorization header. + 'X-Weaviate-Api-Key': bearerToken, + } + : config.headers + ); diff --git a/src/connection/transports/grpc/web.ts b/src/connection/transports/grpc/web.ts new file mode 100644 index 00000000..da962310 --- /dev/null +++ b/src/connection/transports/grpc/web.ts @@ -0,0 +1,143 @@ +import { isAbortError } from 'abort-controller-x'; + +import { InternalConnectionParams } from '../http.js'; + +import { ConsistencyLevel } from '../../../data/index.js'; + +import { ClientError, createChannel, createClientFactory, Metadata, Status } from 'nice-grpc-web'; + +import { + HealthCheckResponse_ServingStatus, + HealthDefinition, +} from '../../../proto/google/health/v1/health.js'; +import { WeaviateDefinition } from '../../../proto/v1/weaviate.js'; + +import Aggregator, { Aggregate } from '../../../grpc/aggregator.js'; +import Batcher, { Batch } from '../../../grpc/batcher.js'; +import Searcher, { Search } from '../../../grpc/searcher.js'; +import TenantsManager, { Tenants } from '../../../grpc/tenantsManager.js'; + +import { retryMiddleware } from 'nice-grpc-client-middleware-retry'; +import { WeaviateGRPCUnavailableError } from '../../../errors.js'; + +export interface GrpcConnectionParams extends InternalConnectionParams { + grpcAddress: string; + grpcSecure: boolean; +} + +const clientFactory = createClientFactory().use(retryMiddleware); + +export interface GrpcClient { + aggregate: ( + collection: string, + consistencyLevel?: ConsistencyLevel, + tenant?: string, + bearerToken?: string + ) => Aggregate; + batch: ( + collection: string, + consistencyLevel?: ConsistencyLevel, + tenant?: string, + bearerToken?: string + ) => Batch; + close: () => void; + health: () => Promise; + search: ( + collection: string, + consistencyLevel?: ConsistencyLevel, + tenant?: string, + bearerToken?: string + ) => Search; + tenants: (collection: string, bearerToken?: string) => Tenants; +} + +export const grpcClient = (config: GrpcConnectionParams & { grpcMaxMessageLength: number }): GrpcClient => { + const channel = createChannel(config.grpcAddress); + const client = clientFactory.create(WeaviateDefinition, channel); + const health = clientFactory.create(HealthDefinition, channel); + return { + aggregate: ( + collection: string, + consistencyLevel?: ConsistencyLevel, + tenant?: string, + bearerToken?: string + ) => + Aggregator.use( + client, + collection, + new Metadata(bearerToken ? { ...config.headers, authorization: bearerToken } : config.headers), + config.timeout?.query || 30, + consistencyLevel, + tenant + ), + batch: (collection: string, consistencyLevel?: ConsistencyLevel, tenant?: string, bearerToken?: string) => + Batcher.use( + client, + collection, + getMetadataWithEmbeddingServiceAuth(config, bearerToken), + config.timeout?.insert || 90, + consistencyLevel, + tenant + ), + close: () => {}, + health: () => { + const controller = new AbortController(); + const timeoutId = setTimeout(() => controller.abort(), (config.timeout?.init || 2) * 1000); + return health + .check( + { service: '/grpc.health.v1.Health/Check' }, + { + signal: controller.signal, + retry: true, + retryMaxAttempts: 1, + retryableStatuses: [Status.UNAVAILABLE], + onRetryableError(error: ClientError, attempt: number, delayMs: number) { + console.warn(error, `Healthcheck ${attempt} failed. Retrying in ${delayMs}ms.`); + }, + } + ) + .then((res) => res.status === HealthCheckResponse_ServingStatus.SERVING) + .catch((err) => { + if (isAbortError(err)) { + throw new WeaviateGRPCUnavailableError(config.grpcAddress); + } + throw err; + }) + .finally(() => clearTimeout(timeoutId)); + }, + search: ( + collection: string, + consistencyLevel?: ConsistencyLevel, + tenant?: string, + bearerToken?: string + ) => + Searcher.use( + client, + collection, + getMetadataWithEmbeddingServiceAuth(config, bearerToken), + config.timeout?.query || 30, + consistencyLevel, + tenant + ), + tenants: (collection: string, bearerToken?: string) => + TenantsManager.use( + client, + collection, + new Metadata(bearerToken ? { ...config.headers, authorization: bearerToken } : config.headers), + config.timeout?.query || 30 + ), + }; +}; + +const getMetadataWithEmbeddingServiceAuth = (config: GrpcConnectionParams, bearerToken?: string) => + new Metadata( + bearerToken + ? { + ...config.headers, + authorization: bearerToken, + 'X-Weaviate-Cluster-Url': config.host, + // keeping for backwards compatibility for older clusters for now. On newer clusters, Embedding Service reuses Authorization header. + 'X-Weaviate-Api-Key': bearerToken, + } + : config.headers + ); diff --git a/src/connection/transports/http.ts b/src/connection/transports/http.ts new file mode 100644 index 00000000..117d84c3 --- /dev/null +++ b/src/connection/transports/http.ts @@ -0,0 +1,275 @@ +import { isAbortError } from 'abort-controller-x'; +import { Agent } from 'http'; +import { + WeaviateInsufficientPermissionsError, + WeaviateRequestTimeoutError, + WeaviateUnauthenticatedError, + WeaviateUnexpectedStatusCodeError, +} from '../../errors.js'; +import { + ApiKey, + AuthAccessTokenCredentials, + AuthClientCredentials, + AuthUserPasswordCredentials, +} from '../auth.js'; + +/** + * You can only specify the gRPC proxy URL at this point in time. This is because ProxiesParams should be used to define tunnelling proxies + * and Weaviate does not support tunnelling proxies over HTTP/1.1 at this time. + * + * To use a forwarding proxy you should instead specify its URL as if it were the Weaviate instance itself. + */ +export type ProxiesParams = { + // http?: string; + // https?: string; + grpc?: string; +}; + +export type TimeoutParams = { + /** Define the configured timeout when querying data from Weaviate */ + query?: number; + /** Define the configured timeout when mutating data to Weaviate */ + insert?: number; + /** Define the configured timeout when initially connecting to Weaviate */ + init?: number; +}; + +export type InternalConnectionParams = { + authClientSecret?: AuthClientCredentials | AuthAccessTokenCredentials | AuthUserPasswordCredentials; + apiKey?: ApiKey; + host: string; + scheme?: string; + headers?: HeadersInit; + // http1Agent?: Agent; + grpcProxyUrl?: string; + agent?: Agent; + timeout?: TimeoutParams; + skipInitChecks?: boolean; +}; + +export interface HttpClient { + close: () => void; + patch: (path: string, payload: any, bearerToken?: string) => any; + head: (path: string, payload: any, bearerToken?: string) => any; + post: ( + path: string, + payload: B, + expectReturnContent: boolean, + bearerToken: string + ) => Promise; + get: (path: string, expectReturnContent?: boolean, bearerToken?: string) => Promise; + externalPost: (externalUrl: string, body: any, contentType: any) => any; + getRaw: (path: string, bearerToken?: string) => any; + delete: (path: string, payload: any, expectReturnContent?: boolean, bearerToken?: string) => any; + put: (path: string, payload: any, expectReturnContent?: boolean, bearerToken?: string) => any; + externalGet: (externalUrl: string) => Promise; +} + +const fetchWithTimeout = ( + input: RequestInfo | URL, + timeout: number, + init?: RequestInit | undefined +): Promise => { + const controller = new AbortController(); + // Set a timeout to abort the request + const timeoutId = setTimeout(() => controller.abort(), timeout * 1000); + return fetch(input, { ...init, signal: controller.signal }) + .catch((error) => { + if (isAbortError(error)) { + throw new WeaviateRequestTimeoutError(`Request timed out after ${timeout}ms`); + } + throw error; // For other errors, rethrow them + }) + .finally(() => clearTimeout(timeoutId)); +}; + +export const httpClient = (config: InternalConnectionParams): HttpClient => { + const version = '/v1'; + const baseUri = `${config.host}${version}`; + const url = makeUrl(baseUri); + + return { + close: () => config.agent?.destroy(), + post: ( + path: string, + payload: B, + expectReturnContent: boolean, + bearerToken: string + ): Promise => { + const request = { + method: 'POST', + headers: { + ...config.headers, + 'content-type': 'application/json', + ...getAuthHeaders(config, bearerToken), + }, + body: JSON.stringify(payload), + agent: config.agent, + }; + return fetchWithTimeout(url(path), config.timeout?.insert || 90, request).then( + checkStatus(expectReturnContent) + ); + }, + put: ( + path: string, + payload: B, + expectReturnContent = true, + bearerToken = '' + ): Promise => { + const request = { + method: 'PUT', + headers: { + ...config.headers, + 'content-type': 'application/json', + ...getAuthHeaders(config, bearerToken), + }, + body: JSON.stringify(payload), + agent: config.agent, + }; + return fetchWithTimeout(url(path), config.timeout?.insert || 90, request).then( + checkStatus(expectReturnContent) + ); + }, + patch: (path: string, payload: B, bearerToken = ''): Promise => { + const request = { + method: 'PATCH', + headers: { + ...config.headers, + 'content-type': 'application/json', + ...getAuthHeaders(config, bearerToken), + }, + body: JSON.stringify(payload), + agent: config.agent, + }; + return fetchWithTimeout(url(path), config.timeout?.insert || 90, request).then(checkStatus(false)); + }, + delete: (path: string, payload: B | null = null, expectReturnContent = false, bearerToken = '') => { + const request = { + method: 'DELETE', + headers: { + ...config.headers, + 'content-type': 'application/json', + ...getAuthHeaders(config, bearerToken), + }, + body: payload ? JSON.stringify(payload) : undefined, + agent: config.agent, + }; + return fetchWithTimeout(url(path), config.timeout?.insert || 90, request).then( + checkStatus(expectReturnContent) + ); + }, + head: (path: string, payload: B | null = null, bearerToken = '') => { + const request = { + method: 'HEAD', + headers: { + ...config.headers, + 'content-type': 'application/json', + ...getAuthHeaders(config, bearerToken), + }, + body: payload ? JSON.stringify(payload) : undefined, + agent: config.agent, + }; + return fetchWithTimeout(url(path), config.timeout?.query || 30, request).then( + handleHeadResponse(false) + ); + }, + get: (path: string, expectReturnContent = true, bearerToken = ''): Promise => { + const request = { + method: 'GET', + headers: { + ...config.headers, + ...getAuthHeaders(config, bearerToken), + }, + agent: config.agent, + }; + return fetchWithTimeout(url(path), config.timeout?.query || 30, request).then( + checkStatus(expectReturnContent) + ); + }, + getRaw: (path: string, bearerToken = '') => { + // getRaw does not handle the status leaving this to the caller + const request = { + method: 'GET', + headers: { + ...config.headers, + ...getAuthHeaders(config, bearerToken), + }, + agent: config.agent, + }; + return fetchWithTimeout(url(path), config.timeout?.query || 30, request); + }, + externalGet: (externalUrl: string) => { + return fetch(externalUrl, { + method: 'GET', + headers: { + ...config.headers, + }, + }).then(checkStatus(true)); + }, + externalPost: (externalUrl: string, body: any, contentType: any) => { + if (contentType == undefined || contentType == '') { + contentType = 'application/json'; + } + const request = { + body: undefined, + method: 'POST', + headers: { + ...config.headers, + 'content-type': contentType, + }, + }; + if (body != null) { + request.body = body; + } + return fetch(externalUrl, request).then(checkStatus(true)); + }, + }; +}; + +const makeUrl = (basePath: string) => (path: string) => basePath + path; + +const checkStatus = + (expectResponseBody: boolean) => + (res: Response) => { + if (res.status >= 400) { + return res.text().then((errText: string) => { + let err: string; + try { + // in case of invalid json response (like empty string) + err = JSON.stringify(JSON.parse(errText)); + } catch (e) { + err = errText; + } + if (res.status === 401) { + return Promise.reject(new WeaviateUnauthenticatedError(err)); + } else if (res.status === 403) { + return Promise.reject(new WeaviateInsufficientPermissionsError(403, err)); + } else { + return Promise.reject(new WeaviateUnexpectedStatusCodeError(res.status, err)); + } + }); + } + if (expectResponseBody) { + return res.json() as Promise; + } + return Promise.resolve(undefined); + }; + +const handleHeadResponse = + (expectResponseBody: boolean) => + (res: Response) => { + if (res.status == 200 || res.status == 204 || res.status == 404) { + return Promise.resolve(res.status == 200 || res.status == 204); + } + return checkStatus(expectResponseBody)(res); + }; + +const getAuthHeaders = (config: InternalConnectionParams, bearerToken: string) => + bearerToken + ? { + Authorization: `Bearer ${bearerToken}`, + 'X-Weaviate-Cluster-Url': config.host, + // keeping for backwards compatibility for older clusters for now. On newer clusters, Embedding Service reuses Authorization header. + 'X-Weaviate-Api-Key': bearerToken, + } + : undefined; From f350e2d6d4ba25a0f454d4a8fe4bc01b2b7cec04 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 20 Jun 2025 14:47:48 +0100 Subject: [PATCH 02/62] Commit changes: - Refactor into a monorepo composed for four packages: - @weaviate/core: shared functionality - @weaviate/node: Node-client that uses `grpc-js` and `fs` - @weaviate/web: Browser-client that uses `nice-grpc` and `FileReader` - @weaviate/test: Tests the public APIs of the core/node pkgs - Replace `jest` with `vitest` - Use `pnpm` for managing the monorepo - Use dependency injection to pipe node/browser deps into the common functionality of the client --- .github/workflows/main.yaml | 6 +- .husky/pre-commit | 2 +- .prettierignore | 6 +- package-lock.json | 135 +- package.json | 92 +- packages/core/package.json | 94 + .../core/src}/aggregate/index.ts | 61 +- .../core/src}/backup/client.ts | 24 +- .../core/src}/backup/collection.ts | 5 +- .../core/src}/backup/index.ts | 0 .../core/src}/backup/types.ts | 2 +- .../core/src}/cluster/index.ts | 6 +- .../core/src}/collection/index.ts | 65 +- .../core/src/collections.ts | 53 +- .../core/src}/config/classes.ts | 20 +- .../core/src}/config/index.ts | 16 +- .../core/src}/config/types/generative.ts | 0 .../core/src}/config/types/index.ts | 0 .../core/src}/config/types/reranker.ts | 0 .../core/src}/config/types/vectorIndex.ts | 0 .../core/src}/config/types/vectorizer.ts | 0 .../core/src}/config/utils.ts | 32 +- .../core/src}/configure/generative.ts | 30 +- .../core/src}/configure/index.ts | 0 .../core/src}/configure/parsing.ts | 0 .../core/src}/configure/reranker.ts | 0 .../core/src}/configure/types/base.ts | 2 +- .../core/src}/configure/types/generative.ts | 2 +- .../core/src}/configure/types/index.ts | 0 .../core/src}/configure/types/vectorIndex.ts | 0 .../core/src}/configure/types/vectorizer.ts | 0 .../core/src}/configure/vectorIndex.ts | 0 .../core/src}/configure/vectorizer.ts | 2 +- {src => packages/core/src}/connection/auth.ts | 4 + {src => packages/core/src}/connection/gql.ts | 0 {src => packages/core/src}/connection/grpc.ts | 153 +- .../core/src}/connection/helpers.ts | 30 +- .../core/src/connection}/http.ts | 159 +- .../core/src}/connection/index.ts | 3 +- .../core/src}/data/index.ts | 12 +- .../core/src}/deserialize/index.ts | 42 +- {src => packages/core/src}/errors.ts | 0 .../core/src}/filters/classes.ts | 4 +- .../core/src}/filters/index.ts | 0 .../core/src}/filters/types.ts | 2 +- .../core/src}/filters/utils.ts | 0 .../core/src}/generate/config.ts | 6 +- .../core/src}/generate/index.ts | 70 +- .../core/src}/generate/types.ts | 18 +- {src => packages/core/src}/grpc/aggregator.ts | 7 +- {src => packages/core/src}/grpc/base.ts | 10 +- {src => packages/core/src}/grpc/batcher.ts | 7 +- {src => packages/core/src}/grpc/retry.ts | 5 +- {src => packages/core/src}/grpc/searcher.ts | 7 +- .../core/src}/grpc/tenantsManager.ts | 5 +- {src => packages/core/src}/index.ts | 170 +- .../core/src}/iterator/index.ts | 2 +- {src => packages/core/src}/openapi/schema.ts | 0 {src => packages/core/src}/openapi/types.ts | 0 .../src}/proto/google/health/v1/health.ts | 0 .../core/src}/proto/google/protobuf/struct.ts | 0 packages/core/src/proto/index.ts | 2 + .../core/src}/proto/v1/aggregate.ts | 0 {src => packages/core/src}/proto/v1/base.ts | 0 .../core/src}/proto/v1/base_search.ts | 0 {src => packages/core/src}/proto/v1/batch.ts | 0 .../core/src}/proto/v1/batch_delete.ts | 0 .../core/src}/proto/v1/generative.ts | 0 .../core/src}/proto/v1/properties.ts | 0 .../core/src}/proto/v1/search_get.ts | 0 .../core/src}/proto/v1/tenants.ts | 0 .../core/src}/proto/v1/weaviate.ts | 0 .../core/src}/query/check.ts | 10 +- .../core/src}/query/index.ts | 53 +- .../core/src}/query/types.ts | 44 +- .../core/src}/query/utils.ts | 2 +- .../core/src}/references/classes.ts | 0 .../core/src}/references/index.ts | 0 .../core/src}/references/types.ts | 0 .../core/src}/references/utils.ts | 0 .../data => packages/core/src}/replication.ts | 0 {src => packages/core/src}/roles/index.ts | 2 +- {src => packages/core/src}/roles/types.ts | 0 {src => packages/core/src}/roles/util.ts | 0 .../core/src}/serialize/index.ts | 76 +- .../core/src}/sort/classes.ts | 0 .../core/src}/sort/index.ts | 0 .../core/src}/sort/types.ts | 0 .../core/src}/tenants/index.ts | 10 +- .../core/src}/tenants/types.ts | 0 .../core/src}/types/batch.ts | 6 +- .../core/src}/types/data.ts | 0 .../core/src}/types/generate.ts | 4 +- .../core/src}/types/index.ts | 3 +- .../core/src}/types/internal.ts | 6 +- .../core/src}/types/query.ts | 2 +- {src => packages/core/src}/users/index.ts | 2 +- {src => packages/core/src}/users/types.ts | 0 packages/core/src/utils/base64.ts | 8 + .../core/src}/utils/beaconPath.ts | 0 {src => packages/core/src}/utils/dbVersion.ts | 4 +- {src => packages/core/src}/utils/testData.ts | 0 {src => packages/core/src}/utils/uuid.ts | 0 .../v2}/backup/backupCreateStatusGetter.ts | 8 +- .../core/src/v2}/backup/backupCreator.ts | 8 +- .../core/src/v2}/backup/backupGetter.ts | 8 +- .../v2}/backup/backupRestoreStatusGetter.ts | 8 +- .../core/src/v2}/backup/backupRestorer.ts | 8 +- {src => packages/core/src/v2}/backup/index.ts | 2 +- .../core/src/v2}/backup/journey.test.ts | 4 +- .../core/src/v2}/backup/validation.ts | 2 +- {src => packages/core/src/v2}/batch/index.ts | 6 +- .../core/src/v2}/batch/journey.test.ts | 4 +- .../core/src/v2}/batch/objectsBatchDeleter.ts | 8 +- .../core/src/v2}/batch/objectsBatcher.ts | 6 +- .../core/src/v2}/batch/path.test.ts | 0 {src => packages/core/src/v2}/batch/path.ts | 0 .../src/v2}/batch/referencePayloadBuilder.ts | 8 +- .../core/src/v2}/batch/referencesBatcher.ts | 8 +- .../core/src/v2}/c11y/conceptsGetter.ts | 6 +- .../core/src/v2}/c11y/extensionCreator.ts | 6 +- {src => packages/core/src/v2}/c11y/index.ts | 2 +- .../core/src/v2}/c11y/journey.test.ts | 4 +- .../contextual.journey.test.ts | 4 +- .../core/src/v2}/classifications/getter.ts | 6 +- .../core/src/v2}/classifications/index.ts | 2 +- .../v2}/classifications/knn.journey.test.ts | 4 +- .../core/src/v2}/classifications/scheduler.ts | 6 +- .../core/src/v2}/cluster/index.ts | 2 +- .../core/src/v2}/cluster/nodesStatusGetter.ts | 6 +- {src => packages/core/src/v2}/data/checker.ts | 4 +- {src => packages/core/src/v2}/data/creator.ts | 8 +- {src => packages/core/src/v2}/data/deleter.ts | 4 +- {src => packages/core/src/v2}/data/getter.ts | 6 +- .../core/src/v2}/data/getterById.ts | 6 +- {src => packages/core/src/v2}/data/index.ts | 6 +- .../core/src/v2}/data/journey.test.ts | 4 +- {src => packages/core/src/v2}/data/merger.ts | 8 +- .../core/src/v2}/data/path.test.ts | 4 +- {src => packages/core/src/v2}/data/path.ts | 6 +- .../core/src/v2}/data/referenceCreator.ts | 8 +- .../core/src/v2}/data/referenceDeleter.ts | 8 +- .../src/v2}/data/referencePayloadBuilder.ts | 8 +- .../core/src/v2}/data/referenceReplacer.ts | 8 +- packages/core/src/v2/data/replication.ts | 1 + {src => packages/core/src/v2}/data/updater.ts | 8 +- .../core/src/v2}/data/validator.ts | 8 +- .../core/src/v2}/graphql/aggregator.ts | 8 +- {src => packages/core/src/v2}/graphql/ask.ts | 0 {src => packages/core/src/v2}/graphql/bm25.ts | 0 .../core/src/v2}/graphql/explorer.ts | 4 +- .../core/src/v2}/graphql/generate.ts | 0 .../core/src/v2}/graphql/getter.test.ts | 2 +- .../core/src/v2}/graphql/getter.ts | 8 +- .../core/src/v2}/graphql/group.ts | 0 .../core/src/v2}/graphql/groupBy.ts | 0 .../core/src/v2}/graphql/hybrid.ts | 0 .../core/src/v2}/graphql/index.ts | 2 +- .../core/src/v2}/graphql/journey.test.ts | 2 +- .../core/src/v2}/graphql/nearImage.ts | 0 .../core/src/v2}/graphql/nearMedia.ts | 0 .../core/src/v2}/graphql/nearObject.ts | 0 .../core/src/v2}/graphql/nearText.ts | 0 .../core/src/v2}/graphql/nearVector.ts | 0 .../core/src/v2}/graphql/raw.test.ts | 0 {src => packages/core/src/v2}/graphql/raw.ts | 4 +- {src => packages/core/src/v2}/graphql/sort.ts | 0 .../core/src/v2}/graphql/where.ts | 2 +- {src => packages/core/src}/v2/index.ts | 38 +- {src => packages/core/src/v2}/misc/index.ts | 4 +- .../core/src/v2}/misc/journey.test.ts | 2 +- .../core/src/v2}/misc/liveChecker.ts | 6 +- .../core/src/v2}/misc/metaGetter.ts | 6 +- .../src/v2}/misc/openidConfigurationGetter.ts | 2 +- .../core/src/v2}/misc/readyChecker.ts | 6 +- .../core/src/v2}/schema/classCreator.ts | 6 +- .../core/src/v2}/schema/classDeleter.ts | 6 +- .../core/src/v2}/schema/classExists.ts | 8 +- .../core/src/v2}/schema/classGetter.ts | 8 +- .../core/src/v2}/schema/classUpdater.ts | 6 +- .../core/src/v2}/schema/deleteAll.ts | 2 +- .../core/src/v2}/schema/getter.ts | 6 +- {src => packages/core/src/v2}/schema/index.ts | 4 +- .../core/src/v2}/schema/journey.test.ts | 4 +- .../core/src/v2}/schema/propertyCreator.ts | 8 +- .../core/src/v2}/schema/shardUpdater.ts | 6 +- .../core/src/v2}/schema/shardsGetter.ts | 8 +- .../core/src/v2}/schema/shardsUpdater.ts | 8 +- .../core/src/v2}/schema/tenantsCreator.ts | 6 +- .../core/src/v2}/schema/tenantsDeleter.ts | 4 +- .../core/src/v2}/schema/tenantsExists.ts | 4 +- .../core/src/v2}/schema/tenantsGetter.ts | 6 +- .../core/src/v2}/schema/tenantsUpdater.ts | 6 +- .../core/src/v2}/schema/vectorAdder.ts | 8 +- .../core/src}/validation/commandBase.ts | 0 .../core/src}/validation/number.ts | 0 .../core/src}/validation/string.ts | 0 .../core/src}/validation/version.ts | 0 .../core/src}/vectors/multiTargetVector.ts | 0 packages/core/tsconfig.json | 46 + packages/node/package.json | 54 + .../node/src}/base64.test.ts | 32 +- {src/utils => packages/node/src}/base64.ts | 6 +- packages/node/src/index.ts | 122 + packages/node/src/transports.ts | 21 + packages/node/tsconfig.json | 27 + packages/test/package.json | 15 + .../test/src}/aggregate/integration.test.ts | 10 +- .../test/src}/backup/integration.test.ts | 5 +- .../test/src}/backup/unit.test.ts | 13 +- .../test/src/client}/integration.test.ts | 5 +- .../test/src}/cluster/integration.test.ts | 3 +- .../test/src}/collections/integration.test.ts | 5 +- .../test/src}/config/integration.test.ts | 13 +- .../test/src}/config/unit.test.ts | 7 +- .../test/src}/configure/unit.test.ts | 7 +- .../test/src}/connection/helpers.test.ts | 3 +- .../test/src}/connection/integration.test.ts | 9 +- .../test/src}/connection/journey.test.ts | 13 +- .../test/src}/connection/proxy.test.ts | 3 +- .../test/src}/connection/unit.test.ts | 29 +- .../test/src}/data/integration.test.ts | 12 +- .../test/src}/dbVersionProvider.ts | 2 +- .../test/src}/filters/integration.test.ts | 10 +- .../test/src}/filters/unit.test.ts | 11 +- .../test/src}/generate/integration.test.ts | 10 +- .../test/src}/generate/mock.test.ts | 23 +- .../test/src}/generate/unit.test.ts | 5 +- .../test/src}/iterator/integration.test.ts | 4 +- .../test/src}/journey.test.ts | 5 +- .../test/src}/query/integration.test.ts | 14 +- .../test/src}/roles/integration.test.ts | 7 +- .../test/src}/serialize/unit.test.ts | 40 +- {test => packages/test/src}/server.ts | 0 .../test/src}/sort/integration.test.ts | 4 +- .../test/src}/tenants/integration.test.ts | 6 +- .../test/src}/tenants/unit.test.ts | 20 +- .../test/src}/users/integration.test.ts | 9 +- .../test/src}/utils/journey.test.ts | 9 +- {test => packages/test/src}/version.ts | 5 +- packages/test/tsconfig.json | 16 + packages/test/vitest.config.ts | 22 + packages/web/package.json | 53 + packages/web/src/base64.test.ts | 62 + packages/web/src/base64.ts | 62 + packages/web/src/index.ts | 121 + packages/web/src/transports.ts | 15 + packages/web/tsconfig.json | 30 + pnpm-lock.yaml | 7900 +++++++++++++++++ pnpm-workspace.yaml | 2 + src/connection/http.ts | 154 - src/connection/transports/grpc/node.ts | 165 - src/connection/transports/grpc/web.ts | 143 - tools/refresh_protos.sh | 5 +- tools/refresh_schema.sh | 5 +- tsconfig.json | 50 +- 256 files changed, 9932 insertions(+), 1573 deletions(-) create mode 100644 packages/core/package.json rename {src/collections => packages/core/src}/aggregate/index.ts (95%) rename {src/collections => packages/core/src}/backup/client.ts (96%) rename {src/collections => packages/core/src}/backup/collection.ts (93%) rename {src/collections => packages/core/src}/backup/index.ts (100%) rename {src/collections => packages/core/src}/backup/types.ts (97%) rename {src/collections => packages/core/src}/cluster/index.ts (88%) rename {src/collections => packages/core/src}/collection/index.ts (81%) rename src/collections/index.ts => packages/core/src/collections.ts (84%) rename {src/collections => packages/core/src}/config/classes.ts (98%) rename {src/collections => packages/core/src}/config/index.ts (93%) rename {src/collections => packages/core/src}/config/types/generative.ts (100%) rename {src/collections => packages/core/src}/config/types/index.ts (100%) rename {src/collections => packages/core/src}/config/types/reranker.ts (100%) rename {src/collections => packages/core/src}/config/types/vectorIndex.ts (100%) rename {src/collections => packages/core/src}/config/types/vectorizer.ts (100%) rename {src/collections => packages/core/src}/config/utils.ts (99%) rename {src/collections => packages/core/src}/configure/generative.ts (99%) rename {src/collections => packages/core/src}/configure/index.ts (100%) rename {src/collections => packages/core/src}/configure/parsing.ts (100%) rename {src/collections => packages/core/src}/configure/reranker.ts (100%) rename {src/collections => packages/core/src}/configure/types/base.ts (99%) rename {src/collections => packages/core/src}/configure/types/generative.ts (98%) rename {src/collections => packages/core/src}/configure/types/index.ts (100%) rename {src/collections => packages/core/src}/configure/types/vectorIndex.ts (100%) rename {src/collections => packages/core/src}/configure/types/vectorizer.ts (100%) rename {src/collections => packages/core/src}/configure/vectorIndex.ts (100%) rename {src/collections => packages/core/src}/configure/vectorizer.ts (99%) rename {src => packages/core/src}/connection/auth.ts (98%) rename {src => packages/core/src}/connection/gql.ts (100%) rename {src => packages/core/src}/connection/grpc.ts (66%) rename {src => packages/core/src}/connection/helpers.ts (85%) rename {src/connection/transports => packages/core/src/connection}/http.ts (63%) rename {src => packages/core/src}/connection/index.ts (84%) rename {src/collections => packages/core/src}/data/index.ts (97%) rename {src/collections => packages/core/src}/deserialize/index.ts (97%) rename {src => packages/core/src}/errors.ts (100%) rename {src/collections => packages/core/src}/filters/classes.ts (99%) rename {src/collections => packages/core/src}/filters/index.ts (100%) rename {src/collections => packages/core/src}/filters/types.ts (99%) rename {src/collections => packages/core/src}/filters/utils.ts (100%) rename {src/collections => packages/core/src}/generate/config.ts (99%) rename {src/collections => packages/core/src}/generate/index.ts (87%) rename {src/collections => packages/core/src}/generate/types.ts (97%) rename {src => packages/core/src}/grpc/aggregator.ts (95%) rename {src => packages/core/src}/grpc/base.ts (85%) rename {src => packages/core/src}/grpc/batcher.ts (93%) rename {src => packages/core/src}/grpc/retry.ts (60%) rename {src => packages/core/src}/grpc/searcher.ts (96%) rename {src => packages/core/src}/grpc/tenantsManager.ts (91%) rename {src => packages/core/src}/index.ts (51%) rename {src/collections => packages/core/src}/iterator/index.ts (94%) rename {src => packages/core/src}/openapi/schema.ts (100%) rename {src => packages/core/src}/openapi/types.ts (100%) rename {src => packages/core/src}/proto/google/health/v1/health.ts (100%) rename {src => packages/core/src}/proto/google/protobuf/struct.ts (100%) create mode 100644 packages/core/src/proto/index.ts rename {src => packages/core/src}/proto/v1/aggregate.ts (100%) rename {src => packages/core/src}/proto/v1/base.ts (100%) rename {src => packages/core/src}/proto/v1/base_search.ts (100%) rename {src => packages/core/src}/proto/v1/batch.ts (100%) rename {src => packages/core/src}/proto/v1/batch_delete.ts (100%) rename {src => packages/core/src}/proto/v1/generative.ts (100%) rename {src => packages/core/src}/proto/v1/properties.ts (100%) rename {src => packages/core/src}/proto/v1/search_get.ts (100%) rename {src => packages/core/src}/proto/v1/tenants.ts (100%) rename {src => packages/core/src}/proto/v1/weaviate.ts (100%) rename {src/collections => packages/core/src}/query/check.ts (96%) rename {src/collections => packages/core/src}/query/index.ts (84%) rename {src/collections => packages/core/src}/query/types.ts (94%) rename {src/collections => packages/core/src}/query/utils.ts (96%) rename {src/collections => packages/core/src}/references/classes.ts (100%) rename {src/collections => packages/core/src}/references/index.ts (100%) rename {src/collections => packages/core/src}/references/types.ts (100%) rename {src/collections => packages/core/src}/references/utils.ts (100%) rename {src/data => packages/core/src}/replication.ts (100%) rename {src => packages/core/src}/roles/index.ts (99%) rename {src => packages/core/src}/roles/types.ts (100%) rename {src => packages/core/src}/roles/util.ts (100%) rename {src/collections => packages/core/src}/serialize/index.ts (98%) rename {src/collections => packages/core/src}/sort/classes.ts (100%) rename {src/collections => packages/core/src}/sort/index.ts (100%) rename {src/collections => packages/core/src}/sort/types.ts (100%) rename {src/collections => packages/core/src}/tenants/index.ts (96%) rename {src/collections => packages/core/src}/tenants/types.ts (100%) rename {src/collections => packages/core/src}/types/batch.ts (80%) rename {src/collections => packages/core/src}/types/data.ts (100%) rename {src/collections => packages/core/src}/types/generate.ts (99%) rename {src/collections => packages/core/src}/types/index.ts (95%) rename {src/collections => packages/core/src}/types/internal.ts (99%) rename {src/collections => packages/core/src}/types/query.ts (99%) rename {src => packages/core/src}/users/index.ts (99%) rename {src => packages/core/src}/users/types.ts (100%) create mode 100644 packages/core/src/utils/base64.ts rename {src => packages/core/src}/utils/beaconPath.ts (100%) rename {src => packages/core/src}/utils/dbVersion.ts (99%) rename {src => packages/core/src}/utils/testData.ts (100%) rename {src => packages/core/src}/utils/uuid.ts (100%) rename {src => packages/core/src/v2}/backup/backupCreateStatusGetter.ts (80%) rename {src => packages/core/src/v2}/backup/backupCreator.ts (95%) rename {src => packages/core/src/v2}/backup/backupGetter.ts (75%) rename {src => packages/core/src/v2}/backup/backupRestoreStatusGetter.ts (79%) rename {src => packages/core/src/v2}/backup/backupRestorer.ts (95%) rename {src => packages/core/src/v2}/backup/index.ts (96%) rename {src => packages/core/src/v2}/backup/journey.test.ts (99%) rename {src => packages/core/src/v2}/backup/validation.ts (95%) rename {src => packages/core/src/v2}/batch/index.ts (87%) rename {src => packages/core/src/v2}/batch/journey.test.ts (99%) rename {src => packages/core/src/v2}/batch/objectsBatchDeleter.ts (91%) rename {src => packages/core/src/v2}/batch/objectsBatcher.ts (92%) rename {src => packages/core/src/v2}/batch/path.test.ts (100%) rename {src => packages/core/src/v2}/batch/path.ts (100%) rename {src => packages/core/src/v2}/batch/referencePayloadBuilder.ts (88%) rename {src => packages/core/src/v2}/batch/referencesBatcher.ts (90%) rename {src => packages/core/src/v2}/c11y/conceptsGetter.ts (83%) rename {src => packages/core/src/v2}/c11y/extensionCreator.ts (89%) rename {src => packages/core/src/v2}/c11y/index.ts (91%) rename {src => packages/core/src/v2}/c11y/journey.test.ts (90%) rename {src => packages/core/src/v2}/classifications/contextual.journey.test.ts (97%) rename {src => packages/core/src/v2}/classifications/getter.ts (83%) rename {src => packages/core/src/v2}/classifications/index.ts (91%) rename {src => packages/core/src/v2}/classifications/knn.journey.test.ts (98%) rename {src => packages/core/src/v2}/classifications/scheduler.ts (95%) rename {src => packages/core/src/v2}/cluster/index.ts (89%) rename {src => packages/core/src/v2}/cluster/nodesStatusGetter.ts (80%) rename {src => packages/core/src/v2}/data/checker.ts (93%) rename {src => packages/core/src/v2}/data/creator.ts (89%) rename {src => packages/core/src/v2}/data/deleter.ts (93%) rename {src => packages/core/src/v2}/data/getter.ts (88%) rename {src => packages/core/src/v2}/data/getterById.ts (91%) rename {src => packages/core/src/v2}/data/index.ts (94%) rename {src => packages/core/src/v2}/data/journey.test.ts (99%) rename {src => packages/core/src/v2}/data/merger.ts (87%) rename {src => packages/core/src/v2}/data/path.test.ts (94%) rename {src => packages/core/src/v2}/data/path.ts (97%) rename {src => packages/core/src/v2}/data/referenceCreator.ts (90%) rename {src => packages/core/src/v2}/data/referenceDeleter.ts (90%) rename {src => packages/core/src/v2}/data/referencePayloadBuilder.ts (82%) rename {src => packages/core/src/v2}/data/referenceReplacer.ts (91%) create mode 100644 packages/core/src/v2/data/replication.ts rename {src => packages/core/src/v2}/data/updater.ts (90%) rename {src => packages/core/src/v2}/data/validator.ts (82%) rename {src => packages/core/src/v2}/graphql/aggregator.ts (96%) rename {src => packages/core/src/v2}/graphql/ask.ts (100%) rename {src => packages/core/src/v2}/graphql/bm25.ts (100%) rename {src => packages/core/src/v2}/graphql/explorer.ts (97%) rename {src => packages/core/src/v2}/graphql/generate.ts (100%) rename {src => packages/core/src/v2}/graphql/getter.test.ts (99%) rename {src => packages/core/src/v2}/graphql/getter.ts (97%) rename {src => packages/core/src/v2}/graphql/group.ts (100%) rename {src => packages/core/src/v2}/graphql/groupBy.ts (100%) rename {src => packages/core/src/v2}/graphql/hybrid.ts (100%) rename {src => packages/core/src/v2}/graphql/index.ts (93%) rename {src => packages/core/src/v2}/graphql/journey.test.ts (99%) rename {src => packages/core/src/v2}/graphql/nearImage.ts (100%) rename {src => packages/core/src/v2}/graphql/nearMedia.ts (100%) rename {src => packages/core/src/v2}/graphql/nearObject.ts (100%) rename {src => packages/core/src/v2}/graphql/nearText.ts (100%) rename {src => packages/core/src/v2}/graphql/nearVector.ts (100%) rename {src => packages/core/src/v2}/graphql/raw.test.ts (100%) rename {src => packages/core/src/v2}/graphql/raw.ts (88%) rename {src => packages/core/src/v2}/graphql/sort.ts (100%) rename {src => packages/core/src/v2}/graphql/where.ts (98%) rename {src => packages/core/src}/v2/index.ts (70%) rename {src => packages/core/src/v2}/misc/index.ts (90%) rename {src => packages/core/src/v2}/misc/journey.test.ts (98%) rename {src => packages/core/src/v2}/misc/liveChecker.ts (75%) rename {src => packages/core/src/v2}/misc/metaGetter.ts (59%) rename {src => packages/core/src/v2}/misc/openidConfigurationGetter.ts (91%) rename {src => packages/core/src/v2}/misc/readyChecker.ts (75%) rename {src => packages/core/src/v2}/schema/classCreator.ts (81%) rename {src => packages/core/src/v2}/schema/classDeleter.ts (80%) rename {src => packages/core/src/v2}/schema/classExists.ts (77%) rename {src => packages/core/src/v2}/schema/classGetter.ts (75%) rename {src => packages/core/src/v2}/schema/classUpdater.ts (81%) rename {src => packages/core/src/v2}/schema/deleteAll.ts (89%) rename {src => packages/core/src/v2}/schema/getter.ts (69%) rename {src => packages/core/src/v2}/schema/index.ts (97%) rename {src => packages/core/src/v2}/schema/journey.test.ts (99%) rename {src => packages/core/src/v2}/schema/propertyCreator.ts (82%) rename {src => packages/core/src/v2}/schema/shardUpdater.ts (89%) rename {src => packages/core/src/v2}/schema/shardsGetter.ts (81%) rename {src => packages/core/src/v2}/schema/shardsUpdater.ts (89%) rename {src => packages/core/src/v2}/schema/tenantsCreator.ts (74%) rename {src => packages/core/src/v2}/schema/tenantsDeleter.ts (80%) rename {src => packages/core/src/v2}/schema/tenantsExists.ts (79%) rename {src => packages/core/src/v2}/schema/tenantsGetter.ts (68%) rename {src => packages/core/src/v2}/schema/tenantsUpdater.ts (73%) rename {src => packages/core/src/v2}/schema/vectorAdder.ts (85%) rename {src => packages/core/src}/validation/commandBase.ts (100%) rename {src => packages/core/src}/validation/number.ts (100%) rename {src => packages/core/src}/validation/string.ts (100%) rename {src => packages/core/src}/validation/version.ts (100%) rename {src/collections => packages/core/src}/vectors/multiTargetVector.ts (100%) create mode 100644 packages/core/tsconfig.json create mode 100644 packages/node/package.json rename {src/utils => packages/node/src}/base64.test.ts (56%) rename {src/utils => packages/node/src}/base64.ts (93%) create mode 100644 packages/node/src/index.ts create mode 100644 packages/node/src/transports.ts create mode 100644 packages/node/tsconfig.json create mode 100644 packages/test/package.json rename {src/collections => packages/test/src}/aggregate/integration.test.ts (98%) rename {src/collections => packages/test/src}/backup/integration.test.ts (94%) rename {src/collections => packages/test/src}/backup/unit.test.ts (92%) rename {src => packages/test/src/client}/integration.test.ts (76%) rename {src/collections => packages/test/src}/cluster/integration.test.ts (95%) rename {src => packages/test/src}/collections/integration.test.ts (99%) rename {src/collections => packages/test/src}/config/integration.test.ts (98%) rename {src/collections => packages/test/src}/config/unit.test.ts (97%) rename {src/collections => packages/test/src}/configure/unit.test.ts (99%) rename {src => packages/test/src}/connection/helpers.test.ts (89%) rename {src => packages/test/src}/connection/integration.test.ts (83%) rename {src => packages/test/src}/connection/journey.test.ts (96%) rename {src => packages/test/src}/connection/proxy.test.ts (91%) rename {src => packages/test/src}/connection/unit.test.ts (92%) rename {src/collections => packages/test/src}/data/integration.test.ts (98%) rename {test => packages/test/src}/dbVersionProvider.ts (82%) rename {src/collections => packages/test/src}/filters/integration.test.ts (97%) rename {src/collections => packages/test/src}/filters/unit.test.ts (98%) rename {src/collections => packages/test/src}/generate/integration.test.ts (98%) rename {src/collections => packages/test/src}/generate/mock.test.ts (90%) rename {src/collections => packages/test/src}/generate/unit.test.ts (97%) rename {src/collections => packages/test/src}/iterator/integration.test.ts (95%) rename {src/collections => packages/test/src}/journey.test.ts (96%) rename {src/collections => packages/test/src}/query/integration.test.ts (99%) rename {src => packages/test/src}/roles/integration.test.ts (98%) rename {src/collections => packages/test/src}/serialize/unit.test.ts (97%) rename {test => packages/test/src}/server.ts (100%) rename {src/collections => packages/test/src}/sort/integration.test.ts (98%) rename {src/collections => packages/test/src}/tenants/integration.test.ts (97%) rename {src/collections => packages/test/src}/tenants/unit.test.ts (91%) rename {src => packages/test/src}/users/integration.test.ts (96%) rename {src => packages/test/src}/utils/journey.test.ts (92%) rename {test => packages/test/src}/version.ts (71%) create mode 100644 packages/test/tsconfig.json create mode 100644 packages/test/vitest.config.ts create mode 100644 packages/web/package.json create mode 100644 packages/web/src/base64.test.ts create mode 100644 packages/web/src/base64.ts create mode 100644 packages/web/src/index.ts create mode 100644 packages/web/src/transports.ts create mode 100644 packages/web/tsconfig.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml delete mode 100644 src/connection/http.ts delete mode 100644 src/connection/transports/grpc/node.ts delete mode 100644 src/connection/transports/grpc/web.ts diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 2d34792e..4aaedac1 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -63,14 +63,14 @@ jobs: with: username: ${{secrets.DOCKER_USERNAME}} password: ${{secrets.DOCKER_PASSWORD}} + - name: "Transpile the package" + run: npm run build - name: "Install dependencies" run: | npm ci ci/run_dependencies.sh ${{ matrix.versions.weaviate }} - name: "Run tests without authentication tests" run: WEAVIATE_VERSION=${{ matrix.versions.weaviate }} npm test - - name: "Transpile the package" - run: npm run build - name: "Stop Weaviate" run: ci/stop_dependencies.sh ${{ matrix.versions.weaviate }} @@ -94,6 +94,8 @@ jobs: with: username: ${{secrets.DOCKER_USERNAME}} password: ${{secrets.DOCKER_PASSWORD}} + - name: "Transpile the package" + run: npm run build - name: "Install dependencies" run: | npm ci diff --git a/.husky/pre-commit b/.husky/pre-commit index 36af2198..3199e8e0 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,4 @@ #!/bin/sh . "$(dirname "$0")/_/husky.sh" -npx lint-staged +npm run lint:staged diff --git a/.prettierignore b/.prettierignore index 4641164b..51d4e20f 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,3 @@ -src/proto/**/*.ts -src/dist/**/* -src/docs/**/*.js \ No newline at end of file +**/proto/**/*.ts +**/dist/**/* +**/docs/**/*.js \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 0ddd3b99..898c73db 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,56 +8,27 @@ "name": "weaviate-client", "version": "3.6.2", "license": "BSD 3-Clause", - "dependencies": { - "abort-controller-x": "^0.4.3", - "graphql": "^16.10.0", - "graphql-request": "^6.1.0", - "long": "^5.2.4", - "nice-grpc": "^2.1.11", - "nice-grpc-client-middleware-retry": "^3.1.10", - "nice-grpc-common": "^2.0.2", - "nice-grpc-web": "^3.3.7", - "uuid": "^9.0.1" - }, + "workspaces": [ + "packages/*" + ], "devDependencies": { - "@babel/core": "^7.20.12", - "@babel/preset-typescript": "^7.18.6", - "@babel/runtime": "^7.20.7", - "@curveball/bodyparser": "0.5.0", - "@curveball/core": "0.20.0", - "@curveball/kernel": "0.20.1", - "@rollup/plugin-babel": "^5.3.1", - "@testcontainers/weaviate": "^10.14.0", - "@types/express": "^4.17.21", - "@types/isomorphic-fetch": "^0.0.36", - "@types/jest": "^29.4.0", - "@types/node": "^18.14.0", - "@types/uuid": "^9.0.1", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", - "babel-jest": "^29.4.3", "eslint": "^8.35.0", "eslint-config-prettier": "^8.7.0", "eslint-plugin-prettier": "^4.2.1", - "express": "^4.19.2", - "grpc-tools": "^1.12.4", "husky": "^8.0.3", - "jest": "^29.4.3", "lint-staged": "^13.2.0", "openapi-typescript": "^5.4.1", "prettier": "^2.8.4", "prettier-plugin-organize-imports": "^3.2.4", - "protobufjs": "^7.2.6", - "ts-jest": "^29.0.5", - "ts-node": "^10.9.2", "ts-proto": "^1.163.0", - "tsup": "^8.0.2", "typedoc": "^0.26.0", "typedoc-plugin-extras": "^3.0.0", "typescript": "^5.3.3" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@ampproject/remapping": { @@ -3128,6 +3099,18 @@ "dev": true, "license": "ISC" }, + "node_modules/@weaviate/core": { + "resolved": "packages/core", + "link": true + }, + "node_modules/@weaviate/node": { + "resolved": "packages/node", + "link": true + }, + "node_modules/@weaviate/web": { + "resolved": "packages/web", + "link": true + }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -11731,6 +11714,92 @@ "type": "github", "url": "https://github.com/sponsors/wooorm" } + }, + "packages/core": { + "name": "@weaviate/core", + "version": "3.6.2", + "license": "BSD 3-Clause", + "dependencies": { + "abort-controller-x": "^0.4.3", + "graphql": "^16.10.0", + "graphql-request": "^6.1.0", + "long": "^5.2.4", + "nice-grpc-common": "^2.0.2", + "uuid": "^9.0.1" + }, + "devDependencies": { + "@babel/core": "^7.20.12", + "@babel/preset-typescript": "^7.18.6", + "@babel/runtime": "^7.20.7", + "@curveball/bodyparser": "0.5.0", + "@curveball/core": "0.20.0", + "@curveball/kernel": "0.20.1", + "@rollup/plugin-babel": "^5.3.1", + "@testcontainers/weaviate": "^10.14.0", + "@types/express": "^4.17.21", + "@types/isomorphic-fetch": "^0.0.36", + "@types/jest": "^29.4.0", + "@types/node": "^18.14.0", + "@types/uuid": "^9.0.1", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", + "babel-jest": "^29.4.3", + "eslint": "^8.35.0", + "eslint-config-prettier": "^8.7.0", + "eslint-plugin-prettier": "^4.2.1", + "express": "^4.19.2", + "grpc-tools": "^1.12.4", + "husky": "^8.0.3", + "jest": "^29.4.3", + "lint-staged": "^13.2.0", + "openapi-typescript": "^5.4.1", + "prettier": "^2.8.4", + "prettier-plugin-organize-imports": "^3.2.4", + "protobufjs": "^7.2.6", + "ts-jest": "^29.0.5", + "ts-node": "^10.9.2", + "ts-proto": "^1.163.0", + "tsup": "^8.0.2", + "typedoc": "^0.26.0", + "typedoc-plugin-extras": "^3.0.0", + "typescript": "^5.3.3" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "packages/node": { + "name": "@weaviate/node", + "version": "3.6.2", + "license": "BSD 3-Clause", + "dependencies": { + "@weaviate/core": "../core", + "nice-grpc": "^2.1.12", + "nice-grpc-client-middleware-retry": "^3.1.10" + }, + "devDependencies": { + "@types/node": "^18.14.0", + "@types/uuid": "^9.0.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "packages/web": { + "name": "@weaviate/web", + "version": "3.6.2", + "license": "BSD 3-Clause", + "dependencies": { + "@weaviate/core": "../core", + "nice-grpc-web": "^3.3.7" + }, + "devDependencies": { + "@types/node": "^18.14.0", + "@types/uuid": "^9.0.1" + }, + "engines": { + "node": ">=20.0.0" + } } } } diff --git a/package.json b/package.json index 7a094fd6..82f82dbc 100644 --- a/package.json +++ b/package.json @@ -1,41 +1,31 @@ { - "name": "weaviate-client", + "name": "@weaviate/client", "version": "3.6.2", "description": "JS/TS client for Weaviate", - "main": "dist/node/cjs/index.js", "type": "module", - "exports": { - ".": { - "types": { - "require": "./dist/node/cjs/index.d.ts", - "default": "./dist/node/esm/index.d.ts" - }, - "default": { - "require": "./dist/node/cjs/index.js", - "default": "./dist/node/esm/index.js" - } - } - }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" }, + "private": true, + "workspaces": [ + "packages/*" + ], "scripts": { - "test": "jest --no-cache --useStderr --runInBand --detectOpenHandles", - "test:coverage": "npm run test -- --coverage", - "build": "npm run build:node", - "build:web": "tsup", - "build:cjs": "tsc --module commonjs --moduleResolution node10 --outDir dist/node/cjs && touch dist/node/cjs/package.json && echo '{\"type\": \"commonjs\"}' > dist/node/cjs/package.json", - "build:esm": "tsc --outDir dist/node/esm && touch dist/node/esm/package.json && echo '{\"type\": \"module\"}' > dist/node/esm/package.json", - "build:node": "npm run lint && npm run build:cjs && npm run build:esm && prettier --write --no-error-on-unmatched-pattern '**/dist/**/*.{ts,js}'", + "test": "pnpm --filter @weaviate/test test", "prepack": "npm run build", "lint": "eslint --ext .ts,.js .", "lint:fix": "npm run lint -- --fix", + "lint:staged": "npm run format:check && npm run lint -- --cache", "format": "prettier --write --no-error-on-unmatched-pattern '**/*.{ts,js}' '!dist/**'", "format:check": "prettier --check --no-error-on-unmatched-pattern '**/*.{ts,js}' '!dist/**'", "format:dist": "prettier --write --no-error-on-unmatched-pattern '**/dist/**/*.{ts,js}'", "refresh-schema": "./tools/refresh_schema.sh", "refresh-protos": "./tools/refresh_protos.sh", - "docs": "typedoc --plugin typedoc-plugin-extras --favicon public/favicon.ico --out docs/ src/" + "docs": "typedoc --plugin typedoc-plugin-extras --favicon public/favicon.ico --out docs/ ./packages/core/src ./packages/node/src ./packages/web/src", + "build:core": "cd packages/core && npm run build", + "build:web": "cd packages/web && npm run build", + "build:node": "cd packages/node && npm run build", + "build:all": "npm run build:core && npm run build:web && npm run build:node" }, "repository": { "type": "git", @@ -50,58 +40,20 @@ "url": "https://github.com/weaviate/typescript-client/issues" }, "homepage": "https://github.com/weaviate/typescript-client#readme", - "dependencies": { - "abort-controller-x": "^0.4.3", - "graphql": "^16.10.0", - "graphql-request": "^6.1.0", - "long": "^5.2.4", - "nice-grpc": "^2.1.11", - "nice-grpc-client-middleware-retry": "^3.1.10", - "nice-grpc-common": "^2.0.2", - "nice-grpc-web": "^3.3.7", - "uuid": "^9.0.1" - }, "devDependencies": { - "@babel/core": "^7.20.12", - "@babel/preset-typescript": "^7.18.6", - "@babel/runtime": "^7.20.7", - "@curveball/bodyparser": "0.5.0", - "@curveball/core": "0.20.0", - "@curveball/kernel": "0.20.1", - "@rollup/plugin-babel": "^5.3.1", - "@testcontainers/weaviate": "^10.14.0", - "@types/express": "^4.17.21", - "@types/isomorphic-fetch": "^0.0.36", - "@types/jest": "^29.4.0", - "@types/node": "^18.14.0", - "@types/uuid": "^9.0.1", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", - "babel-jest": "^29.4.3", - "eslint": "^8.35.0", - "eslint-config-prettier": "^8.7.0", + "eslint": "^8.57.1", + "eslint-config-prettier": "^8.10.0", "eslint-plugin-prettier": "^4.2.1", - "express": "^4.19.2", - "grpc-tools": "^1.12.4", "husky": "^8.0.3", - "jest": "^29.4.3", - "lint-staged": "^13.2.0", - "openapi-typescript": "^5.4.1", - "prettier": "^2.8.4", + "lint-staged": "^13.3.0", + "openapi-typescript": "^5.4.2", + "prettier": "^2.8.8", "prettier-plugin-organize-imports": "^3.2.4", - "protobufjs": "^7.2.6", - "ts-jest": "^29.0.5", - "ts-node": "^10.9.2", - "ts-proto": "^1.163.0", - "tsup": "^8.0.2", - "typedoc": "^0.26.0", - "typedoc-plugin-extras": "^3.0.0", - "typescript": "^5.3.3" - }, - "lint-staged": { - "*.{ts,js}": [ - "npm run format:check", - "npm run lint -- --cache" - ] + "ts-proto": "^1.181.2", + "typedoc": "^0.26.11", + "typedoc-plugin-extras": "^3.1.0", + "typescript": "^5.8.3" } } diff --git a/packages/core/package.json b/packages/core/package.json new file mode 100644 index 00000000..b4e227bf --- /dev/null +++ b/packages/core/package.json @@ -0,0 +1,94 @@ +{ + "name": "@weaviate/core", + "version": "1.0.0", + "description": "JS/TS client for Weaviate", + "main": "dist/core/src/index.js", + "type": "module", + "exports": { + ".": { + "types": "./dist/core/src/index.d.ts", + "default": "./dist/cjs/src/index.js" + }, + "./proto": { + "types": "./dist/core/src/proto/index.d.ts", + "default": "./dist/core/src/proto/index.js" + }, + "./errors": { + "types": "./dist/core/src/errors.d.ts", + "default": "./dist/core/src/errors.js" + } + }, + "files": [ + "dist/core" + ], + "engines": { + "node": ">=20.0.0" + }, + "scripts": { + "build": "tsc" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/weaviate/typescript-client.git" + }, + "keywords": [ + "weaviate" + ], + "author": "Weaviate", + "license": "BSD 3-Clause", + "bugs": { + "url": "https://github.com/weaviate/typescript-client/issues" + }, + "homepage": "https://github.com/weaviate/typescript-client#readme", + "dependencies": { + "abort-controller-x": "^0.4.3", + "graphql": "^16.10.0", + "graphql-request": "^6.1.0", + "long": "^5.2.4", + "nice-grpc-common": "^2.0.2", + "uuid": "^9.0.1" + }, + "devDependencies": { + "@babel/core": "^7.20.12", + "@babel/preset-typescript": "^7.18.6", + "@babel/runtime": "^7.20.7", + "@curveball/bodyparser": "0.5.0", + "@curveball/core": "0.20.0", + "@curveball/kernel": "0.20.1", + "@rollup/plugin-babel": "^5.3.1", + "@testcontainers/weaviate": "^10.14.0", + "@types/express": "^4.17.21", + "@types/isomorphic-fetch": "^0.0.36", + "@types/jest": "^29.4.0", + "@types/node": "^18.14.0", + "@types/uuid": "^9.0.1", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", + "babel-jest": "^29.4.3", + "eslint": "^8.35.0", + "eslint-config-prettier": "^8.7.0", + "eslint-plugin-prettier": "^4.2.1", + "express": "^4.19.2", + "grpc-tools": "^1.12.4", + "husky": "^8.0.3", + "jest": "^29.4.3", + "lint-staged": "^13.2.0", + "openapi-typescript": "^5.4.1", + "prettier": "^2.8.4", + "prettier-plugin-organize-imports": "^3.2.4", + "protobufjs": "^7.2.6", + "ts-jest": "^29.0.5", + "ts-node": "^10.9.2", + "ts-proto": "^1.163.0", + "tsup": "^8.0.2", + "typedoc": "^0.26.0", + "typedoc-plugin-extras": "^3.0.0", + "typescript": "^5.3.3" + }, + "lint-staged": { + "*.{ts,js}": [ + "npm run format:check", + "npm run lint -- --cache" + ] + } +} diff --git a/src/collections/aggregate/index.ts b/packages/core/src/aggregate/index.ts similarity index 95% rename from src/collections/aggregate/index.ts rename to packages/core/src/aggregate/index.ts index 1dad6460..5b407ff8 100644 --- a/src/collections/aggregate/index.ts +++ b/packages/core/src/aggregate/index.ts @@ -1,17 +1,18 @@ -import Connection from '../../connection/grpc.js'; +import Connection from '../connection/grpc.js'; -import { ConsistencyLevel } from '../../data/index.js'; -import { DbVersionSupport } from '../../utils/dbVersion.js'; +import { ConsistencyLevel } from '../replication.js'; +import { DbVersionSupport } from '../utils/dbVersion.js'; import { FilterValue } from '../filters/index.js'; -import { WeaviateInvalidInputError, WeaviateQueryError } from '../../errors.js'; -import { Aggregator } from '../../graphql/index.js'; -import { PrimitiveKeys, toBase64FromMedia } from '../../index.js'; import { Deserialize } from '../deserialize/index.js'; +import { WeaviateInvalidInputError, WeaviateQueryError } from '../errors.js'; +import { PrimitiveKeys } from '../index.js'; import { Bm25QueryProperty, NearVectorInputType } from '../query/types.js'; import { NearVectorInputGuards } from '../query/utils.js'; import { Serialize } from '../serialize/index.js'; +import { ToBase64FromMedia } from '../utils/base64.js'; +import { Aggregator } from '../v2/graphql/index.js'; export type AggregateBaseOptions = { filters?: FilterValue; @@ -346,11 +347,12 @@ export type AggregateGroupByResult< }; }; -class AggregateManager implements Aggregate { +class AggregateManager implements Aggregate { connection: Connection; - groupBy: AggregateGroupBy; + groupBy: AggregateGroupBy; name: string; - dbVersionSupport: DbVersionSupport; + private dbVersionSupport: DbVersionSupport; + private toBase64FromMedia: ToBase64FromMedia; consistencyLevel?: ConsistencyLevel; tenant?: string; grpcChecker: Promise; @@ -359,12 +361,14 @@ class AggregateManager implements Aggregate { connection: Connection, name: string, dbVersionSupport: DbVersionSupport, + toBase64FromMedia: ToBase64FromMedia, consistencyLevel?: ConsistencyLevel, tenant?: string ) { this.connection = connection; this.name = name; this.dbVersionSupport = dbVersionSupport; + this.toBase64FromMedia = toBase64FromMedia; this.consistencyLevel = consistencyLevel; this.tenant = tenant; @@ -401,10 +405,13 @@ class AggregateManager implements Aggregate { return this.doGroupBy(builder); }, nearImage: async >( - image: string | Buffer, + image: TMedia, opts: AggregateGroupByNearOptions ): Promise[]> => { - const [b64, usesGrpc] = await Promise.all([await toBase64FromMedia(image), await this.grpcChecker]); + const [b64, usesGrpc] = await Promise.all([ + await this.toBase64FromMedia(image), + await this.grpcChecker, + ]); if (usesGrpc) { const group = typeof opts.groupBy === 'string' ? { property: opts.groupBy } : opts.groupBy; return this.grpc() @@ -593,14 +600,22 @@ class AggregateManager implements Aggregate { return `${propertyName} { ${body} }`; } - static use( + static use( connection: Connection, name: string, dbVersionSupport: DbVersionSupport, + toBase64FromMedia: ToBase64FromMedia, consistencyLevel?: ConsistencyLevel, tenant?: string - ): AggregateManager { - return new AggregateManager(connection, name, dbVersionSupport, consistencyLevel, tenant); + ): AggregateManager { + return new AggregateManager( + connection, + name, + dbVersionSupport, + toBase64FromMedia, + consistencyLevel, + tenant + ); } async hybrid>( @@ -627,10 +642,10 @@ class AggregateManager implements Aggregate { } async nearImage>( - image: string | Buffer, + image: TMedia, opts?: AggregateNearOptions ): Promise> { - const [b64, usesGrpc] = await Promise.all([await toBase64FromMedia(image), await this.grpcChecker]); + const [b64, usesGrpc] = await Promise.all([await this.toBase64FromMedia(image), await this.grpcChecker]); if (usesGrpc) { return this.grpc() .then((aggregate) => aggregate.withNearImage(Serialize.aggregate.nearImage(b64, opts))) @@ -768,9 +783,9 @@ class AggregateManager implements Aggregate { }; } -export interface Aggregate { +export interface Aggregate { /** This namespace contains methods perform a group by search while aggregating metrics. */ - groupBy: AggregateGroupBy; + groupBy: AggregateGroupBy; /** * Aggregate metrics over the objects returned by a hybrid search on this collection. * @@ -791,12 +806,12 @@ export interface Aggregate { * * This method requires a vectorizer capable of handling base64-encoded images, e.g. `img2vec-neural`, `multi2vec-clip`, and `multi2vec-bind`. * - * @param {string | Buffer} image The image to search on. This can be a base64 string, a file path string, or a buffer. + * @param {TMedia} image The image to search on. This can be a base64 string, a file path string, or a buffer. * @param {AggregateNearOptions} [opts] The options for the request. * @returns {Promise[]>} The aggregated metrics for the objects returned by the vector search. */ nearImage>( - image: string | Buffer, + image: TMedia, opts?: AggregateNearOptions ): Promise>; /** @@ -853,7 +868,7 @@ export interface Aggregate { overAll>(opts?: AggregateOverAllOptions): Promise>; } -export interface AggregateGroupBy { +export interface AggregateGroupBy { /** * Aggregate metrics over the objects grouped by a specified property and returned by a hybrid search on this collection. * @@ -874,12 +889,12 @@ export interface AggregateGroupBy { * * This method requires a vectorizer capable of handling base64-encoded images, e.g. `img2vec-neural`, `multi2vec-clip`, and `multi2vec-bind`. * - * @param {string | Buffer} image The image to search on. This can be a base64 string, a file path string, or a buffer. + * @param {TMedia} image The image to search on. This can be a base64 string, a file path string, or a buffer. * @param {AggregateGroupByNearOptions} opts The options for the request. * @returns {Promise[]>} The aggregated metrics for the objects returned by the vector search. */ nearImage>( - image: string | Buffer, + image: TMedia, opts: AggregateGroupByNearOptions ): Promise[]>; /** diff --git a/src/collections/backup/client.ts b/packages/core/src/backup/client.ts similarity index 96% rename from src/collections/backup/client.ts rename to packages/core/src/backup/client.ts index b24f12bd..d27be9ef 100644 --- a/src/collections/backup/client.ts +++ b/packages/core/src/backup/client.ts @@ -1,12 +1,4 @@ -import { - Backend, - BackupCreateStatusGetter, - BackupCreator, - BackupRestoreStatusGetter, - BackupRestorer, -} from '../../backup/index.js'; -import { validateBackend, validateBackupId } from '../../backup/validation.js'; -import Connection from '../../connection/index.js'; +import Connection from '../connection/index.js'; import { WeaviateBackupCanceled, WeaviateBackupCancellationError, @@ -14,12 +6,16 @@ import { WeaviateInvalidInputError, WeaviateUnexpectedResponseError, WeaviateUnexpectedStatusCodeError, -} from '../../errors.js'; +} from '../errors.js'; +import { BackupCreateResponse, BackupCreateStatusResponse, BackupRestoreResponse } from '../openapi/types.js'; import { - BackupCreateResponse, - BackupCreateStatusResponse, - BackupRestoreResponse, -} from '../../openapi/types.js'; + Backend, + BackupCreateStatusGetter, + BackupCreator, + BackupRestoreStatusGetter, + BackupRestorer, +} from '../v2/backup/index.js'; +import { validateBackend, validateBackupId } from '../v2/backup/validation.js'; import { BackupArgs, BackupCancelArgs, diff --git a/src/collections/backup/collection.ts b/packages/core/src/backup/collection.ts similarity index 93% rename from src/collections/backup/collection.ts rename to packages/core/src/backup/collection.ts index 89ffd864..8c1d2190 100644 --- a/src/collections/backup/collection.ts +++ b/packages/core/src/backup/collection.ts @@ -1,6 +1,5 @@ -import { Backend } from '../../backup/index.js'; -import Connection from '../../connection/index.js'; -import { WeaviateInvalidInputError } from '../../errors.js'; +import Connection from '../connection/index.js'; +import { Backend } from '../v2/backup/index.js'; import { backup } from './client.js'; import { BackupReturn, BackupStatusArgs, BackupStatusReturn } from './types.js'; diff --git a/src/collections/backup/index.ts b/packages/core/src/backup/index.ts similarity index 100% rename from src/collections/backup/index.ts rename to packages/core/src/backup/index.ts diff --git a/src/collections/backup/types.ts b/packages/core/src/backup/types.ts similarity index 97% rename from src/collections/backup/types.ts rename to packages/core/src/backup/types.ts index 250d88e6..c40e7b31 100644 --- a/src/collections/backup/types.ts +++ b/packages/core/src/backup/types.ts @@ -1,4 +1,4 @@ -import { Backend, BackupCompressionLevel } from '../../index.js'; +import { Backend, BackupCompressionLevel } from '../v2/index.js'; /** The status of a backup operation */ export type BackupStatus = 'STARTED' | 'TRANSFERRING' | 'TRANSFERRED' | 'SUCCESS' | 'FAILED' | 'CANCELED'; diff --git a/src/collections/cluster/index.ts b/packages/core/src/cluster/index.ts similarity index 88% rename from src/collections/cluster/index.ts rename to packages/core/src/cluster/index.ts index 1f16a844..6d88fd6c 100644 --- a/src/collections/cluster/index.ts +++ b/packages/core/src/cluster/index.ts @@ -1,6 +1,6 @@ -import { NodesStatusGetter } from '../../cluster/index.js'; -import Connection from '../../connection/index.js'; -import { BatchStats, NodeShardStatus, NodeStats } from '../../openapi/types.js'; +import Connection from '../connection/index.js'; +import { BatchStats, NodeShardStatus, NodeStats } from '../openapi/types.js'; +import { NodesStatusGetter } from '../v2/cluster/index.js'; export type Output = 'minimal' | 'verbose' | undefined; diff --git a/src/collections/collection/index.ts b/packages/core/src/collection/index.ts similarity index 81% rename from src/collections/collection/index.ts rename to packages/core/src/collection/index.ts index c4f7ee31..1859fdb0 100644 --- a/src/collections/collection/index.ts +++ b/packages/core/src/collection/index.ts @@ -1,8 +1,8 @@ -import Connection from '../../connection/grpc.js'; -import { ConsistencyLevel } from '../../data/index.js'; -import { WeaviateInvalidInputError } from '../../errors.js'; -import ClassExists from '../../schema/classExists.js'; -import { DbVersionSupport } from '../../utils/dbVersion.js'; +import Connection from '../connection/grpc.js'; +import { WeaviateInvalidInputError } from '../errors.js'; +import { ConsistencyLevel } from '../replication.js'; +import { DbVersionSupport } from '../utils/dbVersion.js'; +import ClassExists from '../v2/schema/classExists.js'; import aggregate, { Aggregate, Metrics, metrics } from '../aggregate/index.js'; import { BackupCollection, backupCollection } from '../backup/collection.js'; @@ -15,11 +15,12 @@ import query, { Query } from '../query/index.js'; import sort, { Sort } from '../sort/index.js'; import tenants, { TenantBase, Tenants } from '../tenants/index.js'; import { QueryMetadata, QueryProperty, QueryReference } from '../types/index.js'; +import { ToBase64FromMedia } from '../utils/base64.js'; import multiTargetVector, { MultiTargetVector } from '../vectors/multiTargetVector.js'; -export interface Collection { +export interface ICollection { /** This namespace includes all the querying methods available to you when using Weaviate's standard aggregation capabilities. */ - aggregate: Aggregate; + aggregate: Aggregate; /** This namespace includes all the backup methods available to you when backing up a collection in Weaviate. */ backup: BackupCollection; /** This namespace includes all the CRUD methods available to you when modifying the configuration of the collection in Weaviate. */ @@ -29,13 +30,13 @@ export interface Collection { /** This namespace includes the methods by which you can create the `FilterValue` values for use when filtering queries over your collection. */ filter: Filter; /** This namespace includes all the querying methods available to you when using Weaviate's generative capabilities. */ - generate: Generate; + generate: Generate; /** This namespace includes the methods by which you can create the `MetricsX` values for use when aggregating over your collection. */ metrics: Metrics; /** The name of the collection. */ name: N; /** This namespace includes all the querying methods available to you when using Weaviate's standard query capabilities. */ - query: Query; + query: Query; /** This namespaces includes the methods by which you can create the `Sorting` values for use when sorting queries over your collection. */ sort: Sort; /** This namespace includes all the CRUD methods available to you when modifying the tenants of a multi-tenancy-enabled collection in Weaviate. */ @@ -77,9 +78,9 @@ export interface Collection { * This method does not send a request to Weaviate. It only returns a new collection object that is specific to the consistency level you specify. * * @param {ConsistencyLevel} consistencyLevel The consistency level to use. - * @returns {Collection} A new collection object specific to the consistency level you specified. + * @returns {ICollection} A new collection object specific to the consistency level you specified. */ - withConsistency: (consistencyLevel: ConsistencyLevel) => Collection; + withConsistency: (consistencyLevel: ConsistencyLevel) => ICollection; /** * Use this method to return a collection object specific to a single tenant. * @@ -89,9 +90,9 @@ export interface Collection { * * @typedef {TenantBase} TT A type that extends TenantBase. * @param {string | TT} tenant The tenant name or tenant object to use. - * @returns {Collection} A new collection object specific to the tenant you specified. + * @returns {ICollection} A new collection object specific to the tenant you specified. */ - withTenant: (tenant: string | TT) => Collection; + withTenant: (tenant: string | TT) => ICollection; } export type IteratorOptions = { @@ -106,32 +107,48 @@ const isString = (value: any): value is string => typeof value === 'string'; const capitalizeCollectionName = (name: N): N => (name.charAt(0).toUpperCase() + name.slice(1)) as N; -const collection = ( +const collection = ( connection: Connection, name: N, dbVersionSupport: DbVersionSupport, + toBase64FromMedia: ToBase64FromMedia, consistencyLevel?: ConsistencyLevel, tenant?: string -): Collection => { +): ICollection => { if (!isString(name)) { throw new WeaviateInvalidInputError(`The collection name must be a string, got: ${typeof name}`); } const capitalizedName = capitalizeCollectionName(name); - const aggregateCollection = aggregate( + const aggregateCollection = aggregate( connection, capitalizedName, dbVersionSupport, + toBase64FromMedia, + consistencyLevel, + tenant + ); + const queryCollection = query( + connection, + capitalizedName, + dbVersionSupport, + toBase64FromMedia, consistencyLevel, tenant ); - const queryCollection = query(connection, capitalizedName, dbVersionSupport, consistencyLevel, tenant); return { aggregate: aggregateCollection, backup: backupCollection(connection, capitalizedName), config: config(connection, capitalizedName, dbVersionSupport, tenant), data: data(connection, capitalizedName, dbVersionSupport, consistencyLevel, tenant), filter: filter(), - generate: generate(connection, capitalizedName, dbVersionSupport, consistencyLevel, tenant), + generate: generate( + connection, + capitalizedName, + dbVersionSupport, + toBase64FromMedia, + consistencyLevel, + tenant + ), metrics: metrics(), multiTargetVector: multiTargetVector(), name: name, @@ -154,12 +171,20 @@ const collection = ( ), length: () => aggregateCollection.overAll().then(({ totalCount }) => totalCount), withConsistency: (consistencyLevel: ConsistencyLevel) => - collection(connection, capitalizedName, dbVersionSupport, consistencyLevel, tenant), + collection( + connection, + capitalizedName, + dbVersionSupport, + toBase64FromMedia, + consistencyLevel, + tenant + ), withTenant: (tenant: string | TT) => - collection( + collection( connection, capitalizedName, dbVersionSupport, + toBase64FromMedia, consistencyLevel, typeof tenant === 'string' ? tenant : tenant.name ), diff --git a/src/collections/index.ts b/packages/core/src/collections.ts similarity index 84% rename from src/collections/index.ts rename to packages/core/src/collections.ts index cd5707a7..1de22b66 100644 --- a/src/collections/index.ts +++ b/packages/core/src/collections.ts @@ -1,10 +1,5 @@ -import Connection from '../connection/grpc.js'; -import { WeaviateUnsupportedFeatureError } from '../errors.js'; -import { WeaviateClass } from '../openapi/types.js'; -import ClassExists from '../schema/classExists.js'; -import { ClassCreator, ClassDeleter, ClassGetter, SchemaGetter } from '../schema/index.js'; -import { DbVersionSupport } from '../utils/dbVersion.js'; -import collection, { Collection } from './collection/index.js'; +import collection, { ICollection } from './collection/index.js'; +import { configGuards } from './collections.js'; import { classToCollection, makeVectorsConfig, @@ -13,7 +8,9 @@ import { resolveProperty, resolveReference, } from './config/utils.js'; -import { configGuards } from './index.js'; +import Connection from './connection/grpc.js'; +import { WeaviateUnsupportedFeatureError } from './errors.js'; +import { WeaviateClass } from './openapi/types.js'; import { CollectionConfig, GenerativeConfig, @@ -33,6 +30,10 @@ import { VectorizersConfigCreate, } from './types/index.js'; import { PrimitiveKeys } from './types/internal.js'; +import { ToBase64FromMedia } from './utils/base64.js'; +import { DbVersionSupport } from './utils/dbVersion.js'; +import ClassExists from './v2/schema/classExists.js'; +import { ClassCreator, ClassDeleter, ClassGetter, SchemaGetter } from './v2/schema/index.js'; /** * All the options available when creating a new collection. @@ -65,7 +66,11 @@ export type CollectionConfigCreate = { vectorizers?: VectorizersConfigCreate; }; -const collections = (connection: Connection, dbVersionSupport: DbVersionSupport) => { +const collections = ( + connection: Connection, + dbVersionSupport: DbVersionSupport, + toBase64FromMedia: ToBase64FromMedia +) => { const listAll = () => new SchemaGetter(connection) .do() @@ -92,7 +97,12 @@ const collections = (connection: Connection, dbVersionSupport: DbVersionSupport) } const makeLegacyVectorizer = ( - configVectorizers: VectorConfigCreate, undefined, string, Vectorizer> + configVectorizers: VectorConfigCreate< + PrimitiveKeys, + string | undefined, + string, + Vectorizer + > ) => { const vectorizer = configVectorizers.vectorizer.name === 'text2vec-azure-openai' @@ -175,11 +185,16 @@ const collections = (connection: Connection, dbVersionSupport: DbVersionSupport) schema.properties = [...properties, ...references]; await new ClassCreator(connection).withClass(schema).do(); - return collection(connection, name, dbVersionSupport); + return collection(connection, name, dbVersionSupport, toBase64FromMedia); }, createFromSchema: async function (config: WeaviateClass) { const { class: name } = await new ClassCreator(connection).withClass(config).do(); - return collection(connection, name as string, dbVersionSupport); + return collection( + connection, + name as string, + dbVersionSupport, + toBase64FromMedia + ); }, delete: deleteCollection, deleteAll: () => listAll().then((configs) => Promise.all(configs?.map((c) => deleteCollection(c.name)))), @@ -192,29 +207,29 @@ const collections = (connection: Connection, dbVersionSupport: DbVersionSupport) listAll: listAll, get: ( name: TName - ) => collection(connection, name, dbVersionSupport), + ) => collection(connection, name, dbVersionSupport, toBase64FromMedia), use: ( name: TName - ) => collection(connection, name, dbVersionSupport), + ) => collection(connection, name, dbVersionSupport, toBase64FromMedia), }; }; -export interface Collections { +export interface ICollections { create( config: CollectionConfigCreate - ): Promise>; - createFromSchema(config: WeaviateClass): Promise>; + ): Promise>; + createFromSchema(config: WeaviateClass): Promise>; delete(collection: string): Promise; deleteAll(): Promise; exists(name: string): Promise; export(name: string): Promise; get( name: TName - ): Collection; + ): ICollection; listAll(): Promise; use( name: TName - ): Collection; + ): ICollection; } export default collections; diff --git a/src/collections/config/classes.ts b/packages/core/src/config/classes.ts similarity index 98% rename from src/collections/config/classes.ts rename to packages/core/src/config/classes.ts index a8524de9..1bf46160 100644 --- a/src/collections/config/classes.ts +++ b/packages/core/src/config/classes.ts @@ -1,14 +1,4 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ -import { WeaviateInvalidInputError } from '../../errors.js'; -import { - WeaviateClass, - WeaviateInvertedIndexConfig, - WeaviateModuleConfig, - WeaviateMultiTenancyConfig, - WeaviateReplicationConfig, - WeaviateVectorIndexConfig, - WeaviateVectorsConfig, -} from '../../openapi/types.js'; import { QuantizerGuards } from '../configure/parsing.js'; import { InvertedIndexConfigUpdate, @@ -18,6 +8,16 @@ import { VectorIndexConfigFlatUpdate, VectorIndexConfigHNSWUpdate, } from '../configure/types/index.js'; +import { WeaviateInvalidInputError } from '../errors.js'; +import { + WeaviateClass, + WeaviateInvertedIndexConfig, + WeaviateModuleConfig, + WeaviateMultiTenancyConfig, + WeaviateReplicationConfig, + WeaviateVectorIndexConfig, + WeaviateVectorsConfig, +} from '../openapi/types.js'; import { CollectionConfigUpdate, GenerativeConfig, diff --git a/src/collections/config/index.ts b/packages/core/src/config/index.ts similarity index 93% rename from src/collections/config/index.ts rename to packages/core/src/config/index.ts index e03533af..4bc0d77e 100644 --- a/src/collections/config/index.ts +++ b/packages/core/src/config/index.ts @@ -1,17 +1,17 @@ -import Connection from '../../connection/index.js'; -import { WeaviateDeserializationError } from '../../errors.js'; -import { WeaviateShardStatus } from '../../openapi/types.js'; -import ClassUpdater from '../../schema/classUpdater.js'; -import { ClassGetter, PropertyCreator, ShardUpdater } from '../../schema/index.js'; -import ShardsGetter from '../../schema/shardsGetter.js'; -import VectorAdder from '../../schema/vectorAdder.js'; -import { DbVersionSupport } from '../../utils/dbVersion.js'; import { PropertyConfigCreate, ReferenceMultiTargetConfigCreate, ReferenceSingleTargetConfigCreate, VectorizersConfigAdd, } from '../configure/types/index.js'; +import Connection from '../connection/index.js'; +import { WeaviateDeserializationError } from '../errors.js'; +import { WeaviateShardStatus } from '../openapi/types.js'; +import { DbVersionSupport } from '../utils/dbVersion.js'; +import ClassUpdater from '../v2/schema/classUpdater.js'; +import { ClassGetter, PropertyCreator, ShardUpdater } from '../v2/schema/index.js'; +import ShardsGetter from '../v2/schema/shardsGetter.js'; +import VectorAdder from '../v2/schema/vectorAdder.js'; import { MergeWithExisting } from './classes.js'; import { BQConfig, diff --git a/src/collections/config/types/generative.ts b/packages/core/src/config/types/generative.ts similarity index 100% rename from src/collections/config/types/generative.ts rename to packages/core/src/config/types/generative.ts diff --git a/src/collections/config/types/index.ts b/packages/core/src/config/types/index.ts similarity index 100% rename from src/collections/config/types/index.ts rename to packages/core/src/config/types/index.ts diff --git a/src/collections/config/types/reranker.ts b/packages/core/src/config/types/reranker.ts similarity index 100% rename from src/collections/config/types/reranker.ts rename to packages/core/src/config/types/reranker.ts diff --git a/src/collections/config/types/vectorIndex.ts b/packages/core/src/config/types/vectorIndex.ts similarity index 100% rename from src/collections/config/types/vectorIndex.ts rename to packages/core/src/config/types/vectorIndex.ts diff --git a/src/collections/config/types/vectorizer.ts b/packages/core/src/config/types/vectorizer.ts similarity index 100% rename from src/collections/config/types/vectorizer.ts rename to packages/core/src/config/types/vectorizer.ts diff --git a/src/collections/config/utils.ts b/packages/core/src/config/utils.ts similarity index 99% rename from src/collections/config/utils.ts rename to packages/core/src/config/utils.ts index 018fbf70..0dd69393 100644 --- a/src/collections/config/utils.ts +++ b/packages/core/src/config/utils.ts @@ -1,8 +1,21 @@ +import { QuantizerGuards } from '../configure/parsing.js'; +import { + PropertyConfigCreate, + ReferenceConfigCreate, + ReferenceMultiTargetConfigCreate, + ReferenceSingleTargetConfigCreate, + VectorIndexConfigCreate, + VectorIndexConfigDynamicCreate, + VectorIndexConfigFlatCreate, + VectorIndexConfigHNSWCreate, + VectorizersConfigAdd, + VectorizersConfigCreate, +} from '../configure/types/index.js'; import { WeaviateDeserializationError, WeaviateInvalidInputError, WeaviateUnsupportedFeatureError, -} from '../../errors.js'; +} from '../errors.js'; import { Properties, WeaviateBM25Config, @@ -17,21 +30,8 @@ import { WeaviateStopwordConfig, WeaviateVectorIndexConfig, WeaviateVectorsConfig, -} from '../../openapi/types.js'; -import { DbVersionSupport } from '../../utils/dbVersion.js'; -import { QuantizerGuards } from '../configure/parsing.js'; -import { - PropertyConfigCreate, - ReferenceConfigCreate, - ReferenceMultiTargetConfigCreate, - ReferenceSingleTargetConfigCreate, - VectorIndexConfigCreate, - VectorIndexConfigDynamicCreate, - VectorIndexConfigFlatCreate, - VectorIndexConfigHNSWCreate, - VectorizersConfigAdd, - VectorizersConfigCreate, -} from '../configure/types/index.js'; +} from '../openapi/types.js'; +import { DbVersionSupport } from '../utils/dbVersion.js'; import { BQConfig, CollectionConfig, diff --git a/src/collections/configure/generative.ts b/packages/core/src/configure/generative.ts similarity index 99% rename from src/collections/configure/generative.ts rename to packages/core/src/configure/generative.ts index 0ba5c3b4..d9c13d39 100644 --- a/src/collections/configure/generative.ts +++ b/packages/core/src/configure/generative.ts @@ -1,3 +1,18 @@ +import { + GenerativeAWSConfigCreate, + GenerativeAnthropicConfigCreate, + GenerativeAnyscaleConfigCreate, + GenerativeAzureOpenAIConfigCreate, + GenerativeCohereConfigCreate, + GenerativeDatabricksConfigCreate, + GenerativeFriendliAIConfigCreate, + GenerativeMistralConfigCreate, + GenerativeNvidiaConfigCreate, + GenerativeOllamaConfigCreate, + GenerativeOpenAIConfigCreate, + GenerativePaLMConfigCreate, + GenerativeXAIConfigCreate, +} from '../collections.js'; import { GenerativeAWSConfig, GenerativeAnthropicConfig, @@ -15,21 +30,6 @@ import { GenerativeXAIConfig, ModuleConfig, } from '../config/types/index.js'; -import { - GenerativeAWSConfigCreate, - GenerativeAnthropicConfigCreate, - GenerativeAnyscaleConfigCreate, - GenerativeAzureOpenAIConfigCreate, - GenerativeCohereConfigCreate, - GenerativeDatabricksConfigCreate, - GenerativeFriendliAIConfigCreate, - GenerativeMistralConfigCreate, - GenerativeNvidiaConfigCreate, - GenerativeOllamaConfigCreate, - GenerativeOpenAIConfigCreate, - GenerativePaLMConfigCreate, - GenerativeXAIConfigCreate, -} from '../index.js'; export default { /** diff --git a/src/collections/configure/index.ts b/packages/core/src/configure/index.ts similarity index 100% rename from src/collections/configure/index.ts rename to packages/core/src/configure/index.ts diff --git a/src/collections/configure/parsing.ts b/packages/core/src/configure/parsing.ts similarity index 100% rename from src/collections/configure/parsing.ts rename to packages/core/src/configure/parsing.ts diff --git a/src/collections/configure/reranker.ts b/packages/core/src/configure/reranker.ts similarity index 100% rename from src/collections/configure/reranker.ts rename to packages/core/src/configure/reranker.ts diff --git a/src/collections/configure/types/base.ts b/packages/core/src/configure/types/base.ts similarity index 99% rename from src/collections/configure/types/base.ts rename to packages/core/src/configure/types/base.ts index 4754f952..2464cc9f 100644 --- a/src/collections/configure/types/base.ts +++ b/packages/core/src/configure/types/base.ts @@ -1,10 +1,10 @@ -import { WeaviateNestedProperty, WeaviateProperty } from '../../../openapi/types.js'; import { InvertedIndexConfig, MultiTenancyConfig, ReplicationConfig, ReplicationDeletionStrategy, } from '../../config/types/index.js'; +import { WeaviateNestedProperty, WeaviateProperty } from '../../openapi/types.js'; import { DataType } from '../../types/index.js'; import { NonRefKeys, RefKeys } from '../../types/internal.js'; diff --git a/src/collections/configure/types/generative.ts b/packages/core/src/configure/types/generative.ts similarity index 98% rename from src/collections/configure/types/generative.ts rename to packages/core/src/configure/types/generative.ts index 87ef3dae..f768a748 100644 --- a/src/collections/configure/types/generative.ts +++ b/packages/core/src/configure/types/generative.ts @@ -9,7 +9,7 @@ import { GenerativeOllamaConfig, GenerativePaLMConfig, GenerativeXAIConfig, -} from '../../index.js'; +} from '../../collections.js'; export type GenerativeOpenAIConfigBaseCreate = { baseURL?: string; diff --git a/src/collections/configure/types/index.ts b/packages/core/src/configure/types/index.ts similarity index 100% rename from src/collections/configure/types/index.ts rename to packages/core/src/configure/types/index.ts diff --git a/src/collections/configure/types/vectorIndex.ts b/packages/core/src/configure/types/vectorIndex.ts similarity index 100% rename from src/collections/configure/types/vectorIndex.ts rename to packages/core/src/configure/types/vectorIndex.ts diff --git a/src/collections/configure/types/vectorizer.ts b/packages/core/src/configure/types/vectorizer.ts similarity index 100% rename from src/collections/configure/types/vectorizer.ts rename to packages/core/src/configure/types/vectorizer.ts diff --git a/src/collections/configure/vectorIndex.ts b/packages/core/src/configure/vectorIndex.ts similarity index 100% rename from src/collections/configure/vectorIndex.ts rename to packages/core/src/configure/vectorIndex.ts diff --git a/src/collections/configure/vectorizer.ts b/packages/core/src/configure/vectorizer.ts similarity index 99% rename from src/collections/configure/vectorizer.ts rename to packages/core/src/configure/vectorizer.ts index 298b1f01..2138bbcd 100644 --- a/src/collections/configure/vectorizer.ts +++ b/packages/core/src/configure/vectorizer.ts @@ -1,3 +1,4 @@ +import { VectorConfigCreate, VectorIndexConfigCreateType, VectorizerCreateOptions } from '../collections.js'; import { Multi2VecBindConfig, Multi2VecClipConfig, @@ -8,7 +9,6 @@ import { Vectorizer, VectorizerConfigType, } from '../config/types/index.js'; -import { VectorConfigCreate, VectorIndexConfigCreateType, VectorizerCreateOptions } from '../index.js'; import { PrimitiveKeys } from '../types/internal.js'; import { ConfigureNonTextVectorizerOptions, ConfigureTextVectorizerOptions } from './types/index.js'; diff --git a/src/connection/auth.ts b/packages/core/src/connection/auth.ts similarity index 98% rename from src/connection/auth.ts rename to packages/core/src/connection/auth.ts index bd137c4c..2de6210c 100644 --- a/src/connection/auth.ts +++ b/packages/core/src/connection/auth.ts @@ -150,6 +150,7 @@ export interface UserPasswordCredentialsInput { } export class AuthUserPasswordCredentials implements OidcCredentials { + readonly kind = 'user'; private username: string; private password?: string; private scopes?: any[]; @@ -234,6 +235,7 @@ export interface AccessTokenCredentialsInput { } export class AuthAccessTokenCredentials implements OidcCredentials { + readonly kind = 'access_token'; public readonly accessToken: string; public readonly expiresAt: number; public readonly refreshToken?: string; @@ -317,6 +319,7 @@ export interface ClientCredentialsInput { } export class AuthClientCredentials implements OidcCredentials { + readonly kind = 'client_credentials'; private clientSecret: any; private scopes?: any[]; public readonly silentRefresh: boolean; @@ -381,6 +384,7 @@ class ClientCredentialsAuthenticator implements OidcAuthFlow { } export class ApiKey { + readonly kind = 'api_key'; public readonly apiKey: string; constructor(apiKey: string) { diff --git a/src/connection/gql.ts b/packages/core/src/connection/gql.ts similarity index 100% rename from src/connection/gql.ts rename to packages/core/src/connection/gql.ts diff --git a/src/connection/grpc.ts b/packages/core/src/connection/grpc.ts similarity index 66% rename from src/connection/grpc.ts rename to packages/core/src/connection/grpc.ts index 1cd243e7..1aa90444 100644 --- a/src/connection/grpc.ts +++ b/packages/core/src/connection/grpc.ts @@ -1,40 +1,26 @@ -import { isAbortError } from 'abort-controller-x'; - import ConnectionGQL from './gql.js'; -import { InternalConnectionParams } from './transports/http.js'; - -import { ConsistencyLevel } from '../data/index.js'; +import { InternalConnectionParams } from './http.js'; -import { - ChannelCredentials, - ChannelOptions, - ClientError, - createChannel, - createClientFactory, - Metadata, - Status, -} from 'nice-grpc'; -import { retryMiddleware } from 'nice-grpc-client-middleware-retry'; +import { ConsistencyLevel } from '../replication.js'; -import { HealthCheckResponse_ServingStatus, HealthDefinition } from '../proto/google/health/v1/health.js'; -import { WeaviateDefinition } from '../proto/v1/weaviate.js'; - -import Batcher, { Batch } from '../grpc/batcher.js'; -import Searcher, { Search } from '../grpc/searcher.js'; -import TenantsManager, { Tenants } from '../grpc/tenantsManager.js'; import { DbVersionSupport, initDbVersionProvider } from '../utils/dbVersion.js'; +import { isAbortError } from 'abort-controller-x'; +import { Metadata, Status } from 'nice-grpc-common'; import { WeaviateGRPCUnavailableError, WeaviateUnsupportedFeatureError } from '../errors.js'; import Aggregator, { Aggregate } from '../grpc/aggregator.js'; +import Batcher, { Batch } from '../grpc/batcher.js'; +import Searcher, { Search } from '../grpc/searcher.js'; +import TenantsManager, { Tenants } from '../grpc/tenantsManager.js'; import { Meta } from '../openapi/types.js'; +import { HealthCheckResponse_ServingStatus, HealthClient } from '../proto/google/health/v1/health.js'; +import { WeaviateClient } from '../proto/v1/weaviate.js'; export interface GrpcConnectionParams extends InternalConnectionParams { grpcAddress: string; grpcSecure: boolean; } -const clientFactory = createClientFactory().use(retryMiddleware); - const MAX_GRPC_MESSAGE_LENGTH = 104858000; // 10mb, needs to be synchronized with GRPC server // Must extend from ConnectionGQL so that it can be passed to all the builder methods, @@ -42,62 +28,47 @@ const MAX_GRPC_MESSAGE_LENGTH = 104858000; // 10mb, needs to be synchronized wit export default class ConnectionGRPC extends ConnectionGQL { private grpc: GrpcClient; - private constructor(params: GrpcConnectionParams & { grpcMaxMessageLength: number }) { + private constructor(transports: Transports, params: GrpcConnectionParams) { super(params); - this.grpc = grpcClient(params); + this.grpc = grpcClient(transports, params); } - static use = (params: GrpcConnectionParams) => { + static use = async (transportsMaker: TransportsMaker, params: GrpcConnectionParams) => { const rest = new ConnectionGQL(params); const dbVersionProvider = initDbVersionProvider(rest); const dbVersionSupport = new DbVersionSupport(dbVersionProvider); - if (params.skipInitChecks) { - return { - connection: new ConnectionGRPC({ - ...params, - grpcMaxMessageLength: MAX_GRPC_MESSAGE_LENGTH, - }), - dbVersionProvider, - dbVersionSupport, - }; - } - return Promise.all([ - ConnectionGRPC.connect( - params, + let grpcMaxMessageLength = MAX_GRPC_MESSAGE_LENGTH; + if (!params.skipInitChecks) { + grpcMaxMessageLength = await Promise.all([ (rest.get('/meta', true) as Promise).then( (res: Meta) => res.grpcMaxMessageSize || MAX_GRPC_MESSAGE_LENGTH - ) - ), - dbVersionSupport.supportsCompatibleGrpcService().then((check) => { - if (!check.supports) { - throw new WeaviateUnsupportedFeatureError( - `Checking for gRPC compatibility failed with message: ${check.message}` - ); - } + ), + dbVersionSupport.supportsCompatibleGrpcService().then((check) => { + if (!check.supports) { + throw new WeaviateUnsupportedFeatureError( + `Checking for gRPC compatibility failed with message: ${check.message}` + ); + } + }), + ]).then(([grpcMaxMessageLength]) => grpcMaxMessageLength); + } + const connection = new ConnectionGRPC( + transportsMaker({ + grpcAddress: params.grpcAddress, + grpcSecure: params.grpcSecure, + grpcMaxMessageLength, }), - ]).then(([connection]) => { - return { connection, dbVersionProvider, dbVersionSupport }; - }); - }; - - private static async connect( - params: GrpcConnectionParams, - grpcMaxLengthPromise: Promise - ): Promise { - const connection = await grpcMaxLengthPromise.then( - (grpcMaxMessageLength) => - new ConnectionGRPC({ - ...params, - grpcMaxMessageLength, - }) + params ); - const isHealthy = await connection.grpc.health(); - if (!isHealthy) { - await connection.close(); - throw new WeaviateGRPCUnavailableError(params.grpcAddress); + if (!params.skipInitChecks) { + const isHealthy = await connection.grpc.health(); + if (!isHealthy) { + await connection.close(); + throw new WeaviateGRPCUnavailableError(params.grpcAddress); + } } - return connection; - } + return { connection, dbVersionProvider, dbVersionSupport }; + }; batch = (collection: string, consistencyLevel?: ConsistencyLevel, tenant?: string) => { if (this.authEnabled) { @@ -165,24 +136,20 @@ export interface GrpcClient { tenants: (collection: string, bearerToken?: string) => Tenants; } -export const grpcClient = (config: GrpcConnectionParams & { grpcMaxMessageLength: number }): GrpcClient => { - const channelOptions: ChannelOptions = { - 'grpc.max_send_message_length': config.grpcMaxMessageLength, - 'grpc.max_receive_message_length': config.grpcMaxMessageLength, - }; - if (config.grpcProxyUrl) { - // grpc.http_proxy is not used by grpc.js under-the-hood - // only uses the env var and whether http_proxy is enabled - process.env.grpc_proxy = config.grpcProxyUrl; - channelOptions['grpc.enabled_http_proxy'] = true; - } - const channel = createChannel( - config.grpcAddress, - config.grpcSecure ? ChannelCredentials.createSsl() : ChannelCredentials.createInsecure(), - channelOptions - ); - const client = clientFactory.create(WeaviateDefinition, channel); - const health = clientFactory.create(HealthDefinition, channel); +export type Transports = { + weaviate: WeaviateClient; + health: HealthClient; +}; + +export type TransportsParams = { + grpcAddress: string; + grpcSecure: boolean; + grpcMaxMessageLength: number; +}; + +export type TransportsMaker = (params: TransportsParams) => Transports; + +const grpcClient = (transports: Transports, config: GrpcConnectionParams) => { return { aggregate: ( collection: string, @@ -191,7 +158,7 @@ export const grpcClient = (config: GrpcConnectionParams & { grpcMaxMessageLength bearerToken?: string ) => Aggregator.use( - client, + transports.weaviate, collection, new Metadata(bearerToken ? { ...config.headers, authorization: bearerToken } : config.headers), config.timeout?.query || 30, @@ -200,18 +167,18 @@ export const grpcClient = (config: GrpcConnectionParams & { grpcMaxMessageLength ), batch: (collection: string, consistencyLevel?: ConsistencyLevel, tenant?: string, bearerToken?: string) => Batcher.use( - client, + transports.weaviate, collection, getMetadataWithEmbeddingServiceAuth(config, bearerToken), config.timeout?.insert || 90, consistencyLevel, tenant ), - close: () => channel.close(), + close: () => {}, health: () => { const controller = new AbortController(); const timeoutId = setTimeout(() => controller.abort(), (config.timeout?.init || 2) * 1000); - return health + return transports.health .check( { service: '/grpc.health.v1.Health/Check' }, { @@ -219,7 +186,7 @@ export const grpcClient = (config: GrpcConnectionParams & { grpcMaxMessageLength retry: true, retryMaxAttempts: 1, retryableStatuses: [Status.UNAVAILABLE], - onRetryableError(error: ClientError, attempt: number, delayMs: number) { + onRetryableError(error: any, attempt: number, delayMs: number) { console.warn(error, `Healthcheck ${attempt} failed. Retrying in ${delayMs}ms.`); }, } @@ -240,7 +207,7 @@ export const grpcClient = (config: GrpcConnectionParams & { grpcMaxMessageLength bearerToken?: string ) => Searcher.use( - client, + transports.weaviate, collection, getMetadataWithEmbeddingServiceAuth(config, bearerToken), config.timeout?.query || 30, @@ -249,7 +216,7 @@ export const grpcClient = (config: GrpcConnectionParams & { grpcMaxMessageLength ), tenants: (collection: string, bearerToken?: string) => TenantsManager.use( - client, + transports.weaviate, collection, new Metadata(bearerToken ? { ...config.headers, authorization: bearerToken } : config.headers), config.timeout?.query || 30 diff --git a/src/connection/helpers.ts b/packages/core/src/connection/helpers.ts similarity index 85% rename from src/connection/helpers.ts rename to packages/core/src/connection/helpers.ts index 5deb66ab..ee6d0b47 100644 --- a/src/connection/helpers.ts +++ b/packages/core/src/connection/helpers.ts @@ -1,5 +1,5 @@ import { WeaviateStartUpError } from '../errors.js'; -import { ClientParams, WeaviateClient } from '../index.js'; +import { ClientParams, Context, IWeaviateClient } from '../index.js'; import { AuthCredentials } from './auth.js'; import { ProxiesParams, TimeoutParams } from './http.js'; @@ -65,11 +65,12 @@ export type ConnectToCustomOptions = { skipInitChecks?: boolean; }; -export function connectToWeaviateCloud( +export function connectToWeaviateCloud, TMedia>( clusterURL: string, - clientMaker: (params: ClientParams) => Promise, + clientMaker: (context: C, params: ClientParams) => Promise>, + context: C, options?: ConnectToWeaviateCloudOptions -): Promise { +): Promise> { // check if the URL is set if (!clusterURL) throw new Error('Missing `clusterURL` parameter'); @@ -88,7 +89,7 @@ export function connectToWeaviateCloud( const { authCredentials: auth, headers, ...rest } = options || {}; - return clientMaker({ + return clientMaker(context, { connectionParams: { http: { secure: true, @@ -109,12 +110,13 @@ export function connectToWeaviateCloud( }); } -export function connectToLocal( - clientMaker: (params: ClientParams) => Promise, +export function connectToLocal, TMedia>( + clientMaker: (context: C, params: ClientParams) => Promise>, + context: C, options?: ConnectToLocalOptions -): Promise { +): Promise> { const { host, port, grpcPort, authCredentials: auth, ...rest } = options || {}; - return clientMaker({ + return clientMaker(context, { connectionParams: { http: { secure: false, @@ -134,10 +136,11 @@ export function connectToLocal( }); } -export function connectToCustom( - clientMaker: (params: ClientParams) => Promise, +export function connectToCustom, TMedia>( + clientMaker: (context: C, params: ClientParams) => Promise>, + context: C, options?: ConnectToCustomOptions -): Promise { +): Promise> { const { httpHost, httpPath, @@ -149,7 +152,8 @@ export function connectToCustom( authCredentials: auth, ...rest } = options || {}; - return clientMaker({ + + return clientMaker(context, { connectionParams: { http: { secure: httpSecure || false, diff --git a/src/connection/transports/http.ts b/packages/core/src/connection/http.ts similarity index 63% rename from src/connection/transports/http.ts rename to packages/core/src/connection/http.ts index 117d84c3..288204f1 100644 --- a/src/connection/transports/http.ts +++ b/packages/core/src/connection/http.ts @@ -1,17 +1,168 @@ +import OpenidConfigurationGetter from '../v2/misc/openidConfigurationGetter.js'; + import { isAbortError } from 'abort-controller-x'; import { Agent } from 'http'; import { WeaviateInsufficientPermissionsError, + WeaviateInvalidInputError, WeaviateRequestTimeoutError, WeaviateUnauthenticatedError, WeaviateUnexpectedStatusCodeError, -} from '../../errors.js'; +} from '../errors.js'; import { ApiKey, AuthAccessTokenCredentials, AuthClientCredentials, AuthUserPasswordCredentials, -} from '../auth.js'; + OidcAuthenticator, +} from './auth.js'; + +export interface ConnectionDetails { + host: string; + bearerToken?: string; + headers?: HeadersInit; +} + +export default class ConnectionREST { + private apiKey?: string; + private headers?: HeadersInit; + protected authEnabled: boolean; + public readonly host: string; + public readonly http: HttpClient; + public oidcAuth?: OidcAuthenticator; + + constructor(params: InternalConnectionParams) { + params = this.sanitizeParams(params); + this.host = params.host; + this.headers = params.headers; + this.http = httpClient(params); + this.authEnabled = this.parseAuthParams(params); + } + + private parseAuthParams(params: InternalConnectionParams): boolean { + if (params.authClientSecret && params.apiKey) { + throw new WeaviateInvalidInputError( + 'must provide one of authClientSecret (OIDC) or apiKey, cannot provide both' + ); + } + if (params.authClientSecret) { + this.oidcAuth = new OidcAuthenticator(this.http, params.authClientSecret); + return true; + } + if (params.apiKey) { + this.apiKey = params.apiKey?.apiKey; + return true; + } + return false; + } + + private sanitizeParams(params: InternalConnectionParams) { + // Remove trailing slashes from the host + while (params.host.endsWith('/')) { + params.host = params.host.slice(0, -1); + } + + const protocolPattern = /^(https?|ftp|file)(?::\/\/)/; + const extractedSchemeMatch = params.host.match(protocolPattern); + + // Check for the existence of scheme in params + if (params.scheme) { + // If the host contains a scheme different than provided scheme, replace it and throw a warning + if (extractedSchemeMatch && extractedSchemeMatch[1] !== `${params.scheme}`) { + throw new WeaviateInvalidInputError( + `The host contains a different protocol than specified in the scheme (scheme: ${params.scheme} != host: ${extractedSchemeMatch[1]})` + ); + } else if (!extractedSchemeMatch) { + // If no scheme in the host, simply prefix with the provided scheme + params.host = `${params.scheme}://${params.host}`; + } + // If there's no scheme in params, ensure the host starts with a recognized protocol + } else if (!extractedSchemeMatch) { + throw new WeaviateInvalidInputError( + 'The host must start with a recognized protocol (e.g., http or https) if no scheme is provided.' + ); + } + + return params; + } + + postReturn = (path: string, payload: B): Promise => { + if (this.authEnabled) { + return this.login().then((token) => this.http.post(path, payload, true, token) as T); + } + return this.http.post(path, payload, true, '') as Promise; + }; + + postEmpty = (path: string, payload: B): Promise => { + if (this.authEnabled) { + return this.login().then((token) => this.http.post(path, payload, false, token)); + } + return this.http.post(path, payload, false, ''); + }; + + put = (path: string, payload: any, expectReturnContent = true) => { + if (this.authEnabled) { + return this.login().then((token) => this.http.put(path, payload, expectReturnContent, token)); + } + return this.http.put(path, payload, expectReturnContent); + }; + + patch = (path: string, payload: any) => { + if (this.authEnabled) { + return this.login().then((token) => this.http.patch(path, payload, token)); + } + return this.http.patch(path, payload); + }; + + delete = (path: string, payload: any, expectReturnContent = false) => { + if (this.authEnabled) { + return this.login().then((token) => this.http.delete(path, payload, expectReturnContent, token)); + } + return this.http.delete(path, payload, expectReturnContent); + }; + + head = (path: string, payload: any) => { + if (this.authEnabled) { + return this.login().then((token) => this.http.head(path, payload, token)); + } + return this.http.head(path, payload); + }; + + get = (path: string, expectReturnContent = true) => { + if (this.authEnabled) { + return this.login().then((token) => this.http.get(path, expectReturnContent, token)); + } + return this.http.get(path, expectReturnContent); + }; + + login = async () => { + if (this.apiKey) { + return this.apiKey; + } + + if (!this.oidcAuth) { + return ''; + } + + const localConfig = await new OpenidConfigurationGetter(this.http).do(); + + if (localConfig === undefined) { + console.warn('client is configured for authentication, but server is not'); + return ''; + } + + if (Date.now() >= this.oidcAuth.getExpiresAt()) { + await this.oidcAuth.refresh(localConfig); + } + return this.oidcAuth.getAccessToken(); + }; + + getDetails = async (): Promise => ({ + host: new URL(this.host).host, // removes default port + bearerToken: this.authEnabled ? await this.login().then((token) => `Bearer ${token}`) : undefined, + headers: this.headers, + }); +} /** * You can only specify the gRPC proxy URL at this point in time. This is because ProxiesParams should be used to define tunnelling proxies @@ -39,7 +190,7 @@ export type InternalConnectionParams = { apiKey?: ApiKey; host: string; scheme?: string; - headers?: HeadersInit; + headers?: Record; // http1Agent?: Agent; grpcProxyUrl?: string; agent?: Agent; @@ -273,3 +424,5 @@ const getAuthHeaders = (config: InternalConnectionParams, bearerToken: string) = 'X-Weaviate-Api-Key': bearerToken, } : undefined; + +export * from './auth.js'; diff --git a/src/connection/index.ts b/packages/core/src/connection/index.ts similarity index 84% rename from src/connection/index.ts rename to packages/core/src/connection/index.ts index 45b60544..b1100254 100644 --- a/src/connection/index.ts +++ b/packages/core/src/connection/index.ts @@ -3,7 +3,9 @@ import ConnectionGRPC from './grpc.js'; import ConnectionREST from './http.js'; export default ConnectionGQL; +export { ConnectionGQL, ConnectionGRPC, ConnectionREST }; +export type { Transports, TransportsMaker, TransportsParams } from './grpc.js'; export type { ConnectToCustomOptions, ConnectToLocalOptions, @@ -12,4 +14,3 @@ export type { ConnectToWeaviateCloudOptions, } from './helpers.js'; export type { InternalConnectionParams } from './http.js'; -export { ConnectionGQL, ConnectionGRPC, ConnectionREST }; diff --git a/src/collections/data/index.ts b/packages/core/src/data/index.ts similarity index 97% rename from src/collections/data/index.ts rename to packages/core/src/data/index.ts index e498d910..f8e3d1e8 100644 --- a/src/collections/data/index.ts +++ b/packages/core/src/data/index.ts @@ -1,12 +1,8 @@ -import Connection from '../../connection/grpc.js'; +import Connection from '../connection/grpc.js'; -import { buildRefsPath } from '../../batch/path.js'; -import { Checker, ConsistencyLevel } from '../../data/index.js'; -import { ObjectsPath, ReferencesPath } from '../../data/path.js'; -import { BatchReference, BatchReferenceResponse, WeaviateObject } from '../../openapi/types.js'; -import { DbVersionSupport } from '../../utils/dbVersion.js'; import { Deserialize } from '../deserialize/index.js'; import { FilterValue } from '../filters/index.js'; +import { BatchReference, BatchReferenceResponse, WeaviateObject } from '../openapi/types.js'; import { referenceToBeacons } from '../references/utils.js'; import { DataGuards, Serialize } from '../serialize/index.js'; import { @@ -21,6 +17,10 @@ import { ReferenceInputs, Vectors, } from '../types/index.js'; +import { DbVersionSupport } from '../utils/dbVersion.js'; +import { buildRefsPath } from '../v2/batch/path.js'; +import { Checker, ConsistencyLevel } from '../v2/data/index.js'; +import { ObjectsPath, ReferencesPath } from '../v2/data/path.js'; /** The available options to the `data.deleteMany` method. */ export type DeleteManyOptions = { diff --git a/src/collections/deserialize/index.ts b/packages/core/src/deserialize/index.ts similarity index 97% rename from src/collections/deserialize/index.ts rename to packages/core/src/deserialize/index.ts index fdf37f3d..3da0280d 100644 --- a/src/collections/deserialize/index.ts +++ b/packages/core/src/deserialize/index.ts @@ -1,22 +1,3 @@ -import { WeaviateDeserializationError } from '../../errors.js'; -import { Tenant as TenantREST } from '../../openapi/types.js'; -import { - AggregateReply, - AggregateReply_Aggregations, - AggregateReply_Aggregations_Aggregation, - AggregateReply_Aggregations_Aggregation_Boolean, - AggregateReply_Aggregations_Aggregation_DateMessage, - AggregateReply_Aggregations_Aggregation_Integer, - AggregateReply_Aggregations_Aggregation_Number, - AggregateReply_Aggregations_Aggregation_Text, - AggregateReply_Group_GroupedBy, -} from '../../proto/v1/aggregate.js'; -import { BatchObject as BatchObjectGRPC, BatchObjectsReply } from '../../proto/v1/batch.js'; -import { BatchDeleteReply } from '../../proto/v1/batch_delete.js'; -import { ListValue, Properties as PropertiesGrpc, Value } from '../../proto/v1/properties.js'; -import { MetadataResult, PropertiesResult, SearchReply } from '../../proto/v1/search_get.js'; -import { TenantActivityStatus, TenantsGetReply } from '../../proto/v1/tenants.js'; -import { DbVersionSupport } from '../../utils/dbVersion.js'; import { AggregateBoolean, AggregateDate, @@ -28,7 +9,25 @@ import { GenerativeConfigRuntime, GenerativeMetadata, PropertiesMetrics, -} from '../index.js'; +} from '../collections.js'; +import { WeaviateDeserializationError } from '../errors.js'; +import { Tenant as TenantREST } from '../openapi/types.js'; +import { + AggregateReply, + AggregateReply_Aggregations, + AggregateReply_Aggregations_Aggregation, + AggregateReply_Aggregations_Aggregation_Boolean, + AggregateReply_Aggregations_Aggregation_DateMessage, + AggregateReply_Aggregations_Aggregation_Integer, + AggregateReply_Aggregations_Aggregation_Number, + AggregateReply_Aggregations_Aggregation_Text, + AggregateReply_Group_GroupedBy, +} from '../proto/v1/aggregate.js'; +import { BatchObject as BatchObjectGRPC, BatchObjectsReply } from '../proto/v1/batch.js'; +import { BatchDeleteReply } from '../proto/v1/batch_delete.js'; +import { ListValue, Properties as PropertiesGrpc, Value } from '../proto/v1/properties.js'; +import { MetadataResult, PropertiesResult, SearchReply } from '../proto/v1/search_get.js'; +import { TenantActivityStatus, TenantsGetReply } from '../proto/v1/tenants.js'; import { referenceFromObjects } from '../references/utils.js'; import { Tenant } from '../tenants/index.js'; import { @@ -46,6 +45,7 @@ import { ReturnMetadata, WeaviateReturn, } from '../types/index.js'; +import { DbVersionSupport } from '../utils/dbVersion.js'; export class Deserialize { private supports125ListValue: boolean; @@ -444,7 +444,7 @@ export class Deserialize { mappedObjs: BatchObjectGRPC[], elapsed: number ): BatchObjectsReturn { - const allResponses = []; + const allResponses: (string | ErrorObject)[] = []; const errors: Record> = {}; const successes: Record = {}; diff --git a/src/errors.ts b/packages/core/src/errors.ts similarity index 100% rename from src/errors.ts rename to packages/core/src/errors.ts diff --git a/src/collections/filters/classes.ts b/packages/core/src/filters/classes.ts similarity index 99% rename from src/collections/filters/classes.ts rename to packages/core/src/filters/classes.ts index b98eb89c..4aba529f 100644 --- a/src/collections/filters/classes.ts +++ b/packages/core/src/filters/classes.ts @@ -1,10 +1,10 @@ -import { WeaviateInvalidInputError } from '../../errors.js'; +import { WeaviateInvalidInputError } from '../errors.js'; import { FilterReferenceCount, FilterReferenceMultiTarget, FilterReferenceSingleTarget, FilterTarget, -} from '../../proto/v1/base.js'; +} from '../proto/v1/base.js'; import { ExtractCrossReferenceType, NonRefKeys, RefKeys } from '../types/internal.js'; import { ContainsValue, diff --git a/src/collections/filters/index.ts b/packages/core/src/filters/index.ts similarity index 100% rename from src/collections/filters/index.ts rename to packages/core/src/filters/index.ts diff --git a/src/collections/filters/types.ts b/packages/core/src/filters/types.ts similarity index 99% rename from src/collections/filters/types.ts rename to packages/core/src/filters/types.ts index 41c52f40..b2a81b27 100644 --- a/src/collections/filters/types.ts +++ b/packages/core/src/filters/types.ts @@ -1,4 +1,4 @@ -import { FilterTarget } from '../../proto/v1/base.js'; +import { FilterTarget } from '../proto/v1/base.js'; import { ExtractCrossReferenceType, NonRefKeys, RefKeys } from '../types/internal.js'; export type Operator = diff --git a/src/collections/filters/utils.ts b/packages/core/src/filters/utils.ts similarity index 100% rename from src/collections/filters/utils.ts rename to packages/core/src/filters/utils.ts diff --git a/src/collections/generate/config.ts b/packages/core/src/generate/config.ts similarity index 99% rename from src/collections/generate/config.ts rename to packages/core/src/generate/config.ts index e6ecf97c..ce634f08 100644 --- a/src/collections/generate/config.ts +++ b/packages/core/src/generate/config.ts @@ -1,5 +1,3 @@ -import { TextArray } from '../../proto/v1/base.js'; -import { ModuleConfig } from '../config/types/index.js'; import { GenerativeAWSConfigRuntime, GenerativeAnthropicConfigRuntime, @@ -14,7 +12,9 @@ import { GenerativeOllamaConfigRuntime, GenerativeOpenAIConfigRuntime, GenerativeXAIConfigRuntime, -} from '../index.js'; +} from '../collections.js'; +import { ModuleConfig } from '../config/types/index.js'; +import { TextArray } from '../proto/v1/base.js'; export const generativeParameters = { /** diff --git a/src/collections/generate/index.ts b/packages/core/src/generate/index.ts similarity index 87% rename from src/collections/generate/index.ts rename to packages/core/src/generate/index.ts index 3a5fb1b3..48c71f46 100644 --- a/src/collections/generate/index.ts +++ b/packages/core/src/generate/index.ts @@ -1,13 +1,12 @@ -import Connection from '../../connection/grpc.js'; +import Connection from '../connection/grpc.js'; -import { ConsistencyLevel } from '../../data/index.js'; -import { DbVersionSupport } from '../../utils/dbVersion.js'; +import { ConsistencyLevel } from '../replication.js'; +import { DbVersionSupport } from '../utils/dbVersion.js'; -import { WeaviateInvalidInputError } from '../../errors.js'; -import { toBase64FromMedia } from '../../index.js'; -import { GenerativeSearch } from '../../proto/v1/generative.js'; -import { SearchReply } from '../../proto/v1/search_get.js'; import { Deserialize } from '../deserialize/index.js'; +import { WeaviateInvalidInputError } from '../errors.js'; +import { GenerativeSearch } from '../proto/v1/generative.js'; +import { SearchReply } from '../proto/v1/search_get.js'; import { Check } from '../query/check.js'; import { BaseBm25Options, @@ -34,23 +33,30 @@ import { GenerativeReturn, GroupByOptions, } from '../types/index.js'; +import { ToBase64FromMedia } from '../utils/base64.js'; import { Generate } from './types.js'; -class GenerateManager implements Generate { +class GenerateManager implements Generate { private check: Check; + private toBase64FromMedia: ToBase64FromMedia; - private constructor(check: Check) { + private constructor(check: Check, toBase64FromMedia: ToBase64FromMedia) { this.check = check; + this.toBase64FromMedia = toBase64FromMedia; } - public static use( + public static use( connection: Connection, name: string, dbVersionSupport: DbVersionSupport, + toBase64FromMedia: ToBase64FromMedia, consistencyLevel?: ConsistencyLevel, tenant?: string - ): GenerateManager { - return new GenerateManager(new Check(connection, name, dbVersionSupport, consistencyLevel, tenant)); + ): GenerateManager { + return new GenerateManager( + new Check(connection, name, dbVersionSupport, consistencyLevel, tenant), + toBase64FromMedia + ); } private async parseReply(reply: SearchReply) { @@ -80,7 +86,7 @@ class GenerateManager implements Generate { .then(async ([{ search }, supportsSingleGrouped]) => search.withFetch({ ...Serialize.search.fetchObjects(opts), - generative: await Serialize.generative({ supportsSingleGrouped }, generate), + generative: await Serialize.generative({ supportsSingleGrouped }, this.toBase64FromMedia, generate), }) ) .then((reply) => this.parseReply(reply)); @@ -109,7 +115,7 @@ class GenerateManager implements Generate { .then(async ([{ search }, supportsSingleGrouped]) => search.withBm25({ ...Serialize.search.bm25(query, opts), - generative: await Serialize.generative({ supportsSingleGrouped }, generate), + generative: await Serialize.generative({ supportsSingleGrouped }, this.toBase64FromMedia, generate), }) ) .then((reply) => this.parseGroupByReply(opts, reply)); @@ -150,24 +156,28 @@ class GenerateManager implements Generate { }, opts ), - generative: await Serialize.generative({ supportsSingleGrouped }, generate), + generative: await Serialize.generative( + { supportsSingleGrouped }, + this.toBase64FromMedia, + generate + ), }) ) .then((reply) => this.parseGroupByReply(opts, reply)); } public nearImage( - image: string | Buffer, + image: TMedia, generate: GenerateOptions, opts?: BaseNearOptions ): Promise>; public nearImage( - image: string | Buffer, + image: TMedia, generate: GenerateOptions, opts: GroupByNearOptions ): Promise>; public nearImage( - image: string | Buffer, + image: TMedia, generate: GenerateOptions, opts?: NearOptions ): GenerateReturn { @@ -178,8 +188,8 @@ class GenerateManager implements Generate { ]) .then(([{ search, supportsTargets, supportsWeightsForTargets }, supportsSingleGrouped]) => Promise.all([ - toBase64FromMedia(image), - Serialize.generative({ supportsSingleGrouped }, generate), + this.toBase64FromMedia(image), + Serialize.generative({ supportsSingleGrouped }, this.toBase64FromMedia, generate), ]).then(([image, generative]) => search.withNearImage({ ...Serialize.search.nearImage( @@ -227,7 +237,7 @@ class GenerateManager implements Generate { }, opts ), - generative: await Serialize.generative({ supportsSingleGrouped }, generate), + generative: await Serialize.generative({ supportsSingleGrouped }, this.toBase64FromMedia, generate), }) ) .then((reply) => this.parseGroupByReply(opts, reply)); @@ -263,7 +273,7 @@ class GenerateManager implements Generate { }, opts ), - generative: await Serialize.generative({ supportsSingleGrouped }, generate), + generative: await Serialize.generative({ supportsSingleGrouped }, this.toBase64FromMedia, generate), }) ) .then((reply) => this.parseGroupByReply(opts, reply)); @@ -304,26 +314,30 @@ class GenerateManager implements Generate { }, opts ), - generative: await Serialize.generative({ supportsSingleGrouped }, generate), + generative: await Serialize.generative( + { supportsSingleGrouped }, + this.toBase64FromMedia, + generate + ), }) ) .then((reply) => this.parseGroupByReply(opts, reply)); } public nearMedia( - media: string | Buffer, + media: TMedia, type: NearMediaType, generate: GenerateOptions, opts?: BaseNearOptions ): Promise>; public nearMedia( - media: string | Buffer, + media: TMedia, type: NearMediaType, generate: GenerateOptions, opts: GroupByNearOptions ): Promise>; public nearMedia( - media: string | Buffer, + media: TMedia, type: NearMediaType, generate: GenerateOptions, opts?: NearOptions @@ -386,8 +400,8 @@ class GenerateManager implements Generate { throw new WeaviateInvalidInputError(`Invalid media type: ${type}`); } return Promise.all([ - toBase64FromMedia(media), - Serialize.generative({ supportsSingleGrouped }, generate), + this.toBase64FromMedia(media), + Serialize.generative({ supportsSingleGrouped }, this.toBase64FromMedia, generate), ]).then(([media, generative]) => send(media, generative)); }) .then((reply) => this.parseGroupByReply(opts, reply)); diff --git a/src/collections/generate/types.ts b/packages/core/src/generate/types.ts similarity index 97% rename from src/collections/generate/types.ts rename to packages/core/src/generate/types.ts index 27548bfb..121c8419 100644 --- a/src/collections/generate/types.ts +++ b/packages/core/src/generate/types.ts @@ -131,7 +131,7 @@ interface Hybrid { ): GenerateReturn; } -interface NearMedia { +interface NearMedia { /** * Perform retrieval-augmented generation (RaG) on the results of a by-audio object search in this collection using an audio-capable vectorization module and vector-based similarity search. * @@ -141,14 +141,14 @@ interface NearMedia { * * This overload is for performing a search without the `groupBy` param. * - * @param {string | Buffer} media - The media file to search on. This can be a base64 string, a file path string, or a buffer. + * @param {TMedia} media - The media file to search on. This can be a base64 string, a file path string, or a buffer. * @param {NearMediaType} type - The type of media to search on. * @param {GenerateOptions} generate - The available options for performing the generation. * @param {BaseNearOptions} [opts] - The available options for performing the near-media search. * @return {Promise>} - The results of the search including the generated data. */ nearMedia( - media: string | Buffer, + media: TMedia, type: NearMediaType, generate: GenerateOptions, opts?: BaseNearOptions @@ -162,14 +162,14 @@ interface NearMedia { * * This overload is for performing a search with the `groupBy` param. * - * @param {string | Buffer} media - The media file to search on. This can be a base64 string, a file path string, or a buffer. + * @param {TMedia} media - The media file to search on. This can be a base64 string, a file path string, or a buffer. * @param {NearMediaType} type - The type of media to search on. * @param {GenerateOptions} generate - The available options for performing the generation. * @param {GroupByNearOptions} opts - The available options for performing the near-media search. * @return {Promise>} - The results of the search including the generated data grouped by the specified properties. */ nearMedia( - media: string | Buffer, + media: TMedia, type: NearMediaType, generate: GenerateOptions, opts: GroupByNearOptions @@ -183,14 +183,14 @@ interface NearMedia { * * This overload is for performing a search with a programmatically defined `opts` param. * - * @param {string | Buffer} media - The media to search on. This can be a base64 string, a file path string, or a buffer. + * @param {TMedia} media - The media to search on. This can be a base64 string, a file path string, or a buffer. * @param {NearMediaType} type - The type of media to search on. * @param {GenerateOptions} generate - The available options for performing the generation. * @param {NearOptions} [opts] - The available options for performing the near-media search. * @return {GenerateReturn} - The results of the search including the generated data. */ nearMedia( - media: string | Buffer, + media: TMedia, type: NearMediaType, generate: GenerateOptions, opts?: NearOptions @@ -365,10 +365,10 @@ interface NearVector { ): GenerateReturn; } -export interface Generate +export interface Generate extends Bm25, Hybrid, - NearMedia, + NearMedia, NearObject, NearText, NearVector { diff --git a/src/grpc/aggregator.ts b/packages/core/src/grpc/aggregator.ts similarity index 95% rename from src/grpc/aggregator.ts rename to packages/core/src/grpc/aggregator.ts index daf9bfa1..097b2361 100644 --- a/src/grpc/aggregator.ts +++ b/packages/core/src/grpc/aggregator.ts @@ -1,6 +1,6 @@ -import { ConsistencyLevel } from '../data/index.js'; +import { ConsistencyLevel } from '../replication.js'; -import { Metadata, ServerError, Status } from 'nice-grpc'; +import { Metadata, ServerError, Status } from 'nice-grpc-common'; import { AggregateReply, AggregateRequest, @@ -23,7 +23,6 @@ import { import { WeaviateClient } from '../proto/v1/weaviate.js'; import { isAbortError } from 'abort-controller-x'; -import { RetryOptions } from 'nice-grpc-client-middleware-retry'; import { WeaviateInsufficientPermissionsError, WeaviateQueryError, @@ -98,7 +97,7 @@ export interface Aggregate { export default class Aggregator extends Base implements Aggregate { public static use( - connection: WeaviateClient, + connection: WeaviateClient, collection: string, metadata: Metadata, timeout: number, diff --git a/src/grpc/base.ts b/packages/core/src/grpc/base.ts similarity index 85% rename from src/grpc/base.ts rename to packages/core/src/grpc/base.ts index 17865f8c..ada78216 100644 --- a/src/grpc/base.ts +++ b/packages/core/src/grpc/base.ts @@ -1,12 +1,12 @@ -import { ConsistencyLevel } from '../data/index.js'; +import { ConsistencyLevel } from '../replication.js'; -import { Metadata } from 'nice-grpc'; -import { RetryOptions } from 'nice-grpc-client-middleware-retry'; +import { Metadata } from 'nice-grpc-common'; +// import { RetryOptions } from 'nice-grpc-client-middleware-retry'; import { ConsistencyLevel as ConsistencyLevelGRPC } from '../proto/v1/base.js'; import { WeaviateClient } from '../proto/v1/weaviate.js'; export default class Base { - protected connection: WeaviateClient; + protected connection: WeaviateClient; protected collection: string; protected timeout: number; protected consistencyLevel?: ConsistencyLevelGRPC; @@ -14,7 +14,7 @@ export default class Base { protected metadata?: Metadata; protected constructor( - connection: WeaviateClient, + connection: WeaviateClient, collection: string, metadata: Metadata, timeout: number, diff --git a/src/grpc/batcher.ts b/packages/core/src/grpc/batcher.ts similarity index 93% rename from src/grpc/batcher.ts rename to packages/core/src/grpc/batcher.ts index aba131fa..70d64f9d 100644 --- a/src/grpc/batcher.ts +++ b/packages/core/src/grpc/batcher.ts @@ -1,11 +1,10 @@ -import { Metadata, ServerError, Status } from 'nice-grpc'; +import { Metadata, ServerError, Status } from 'nice-grpc-common'; -import { ConsistencyLevel } from '../data/index.js'; +import { ConsistencyLevel } from '../replication.js'; import { BatchObject, BatchObjectsReply, BatchObjectsRequest } from '../proto/v1/batch.js'; import { WeaviateClient } from '../proto/v1/weaviate.js'; -import { RetryOptions } from 'nice-grpc-client-middleware-retry'; import { WeaviateBatchError, WeaviateDeleteManyError, @@ -36,7 +35,7 @@ export interface BatchDeleteArgs { export default class Batcher extends Base implements Batch { public static use( - connection: WeaviateClient, + connection: WeaviateClient, collection: string, metadata: Metadata, timeout: number, diff --git a/src/grpc/retry.ts b/packages/core/src/grpc/retry.ts similarity index 60% rename from src/grpc/retry.ts rename to packages/core/src/grpc/retry.ts index a2628117..64ffd3f0 100644 --- a/src/grpc/retry.ts +++ b/packages/core/src/grpc/retry.ts @@ -1,7 +1,6 @@ -import { ClientError, Status } from 'nice-grpc'; -import { RetryOptions } from 'nice-grpc-client-middleware-retry'; +import { ClientError, Status } from 'nice-grpc-common'; -export const retryOptions: RetryOptions = { +export const retryOptions = { retry: true, retryMaxAttempts: 5, retryableStatuses: [Status.UNAVAILABLE], diff --git a/src/grpc/searcher.ts b/packages/core/src/grpc/searcher.ts similarity index 96% rename from src/grpc/searcher.ts rename to packages/core/src/grpc/searcher.ts index 20496c6f..dafdbd39 100644 --- a/src/grpc/searcher.ts +++ b/packages/core/src/grpc/searcher.ts @@ -1,6 +1,6 @@ -import { ConsistencyLevel } from '../data/index.js'; +import { ConsistencyLevel } from '../replication.js'; -import { Metadata, ServerError, Status } from 'nice-grpc'; +import { Metadata, ServerError, Status } from 'nice-grpc-common'; import { Filters } from '../proto/v1/base.js'; import { BM25, @@ -27,7 +27,6 @@ import { import { WeaviateClient } from '../proto/v1/weaviate.js'; import { isAbortError } from 'abort-controller-x'; -import { RetryOptions } from 'nice-grpc-client-middleware-retry'; import { WeaviateInsufficientPermissionsError, WeaviateQueryError, @@ -137,7 +136,7 @@ export interface Search { export default class Searcher extends Base implements Search { public static use( - connection: WeaviateClient, + connection: WeaviateClient, collection: string, metadata: Metadata, timeout: number, diff --git a/src/grpc/tenantsManager.ts b/packages/core/src/grpc/tenantsManager.ts similarity index 91% rename from src/grpc/tenantsManager.ts rename to packages/core/src/grpc/tenantsManager.ts index fb703202..a6884652 100644 --- a/src/grpc/tenantsManager.ts +++ b/packages/core/src/grpc/tenantsManager.ts @@ -1,6 +1,5 @@ import { isAbortError } from 'abort-controller-x'; -import { Metadata, ServerError, Status } from 'nice-grpc'; -import { RetryOptions } from 'nice-grpc-client-middleware-retry'; +import { Metadata, ServerError, Status } from 'nice-grpc-common'; import { WeaviateInsufficientPermissionsError, WeaviateRequestTimeoutError, @@ -21,7 +20,7 @@ export interface Tenants { export default class TenantsManager extends Base implements Tenants { public static use( - connection: WeaviateClient, + connection: WeaviateClient, collection: string, metadata: Metadata, timeout: number diff --git a/src/index.ts b/packages/core/src/index.ts similarity index 51% rename from src/index.ts rename to packages/core/src/index.ts index 43bb1ac5..3e6e82b6 100644 --- a/src/index.ts +++ b/packages/core/src/index.ts @@ -1,9 +1,6 @@ -import { Backend, BackupCompressionLevel, BackupStatus } from './backup/index.js'; -import { Backup, backup } from './collections/backup/client.js'; -import cluster, { Cluster } from './collections/cluster/index.js'; -import { configGuards } from './collections/config/index.js'; -import { configure, reconfigure } from './collections/configure/index.js'; -import collections, { Collections } from './collections/index.js'; +import { Backup, backup } from './backup/client.js'; +import cluster, { Cluster } from './cluster/index.js'; +import collections, { ICollections } from './collections.js'; import { AccessTokenCredentialsInput, ApiKey, @@ -18,29 +15,25 @@ import { mapApiKey, } from './connection/auth.js'; import * as helpers from './connection/helpers.js'; -import { - ConnectToCustomOptions, - ConnectToLocalOptions, - ConnectToWCDOptions, - ConnectToWCSOptions, - ConnectToWeaviateCloudOptions, -} from './connection/helpers.js'; import { ConnectionDetails, ProxiesParams, TimeoutParams } from './connection/http.js'; import { ConnectionGRPC } from './connection/index.js'; -import MetaGetter from './misc/metaGetter.js'; +import filter from './filters/index.js'; import { Meta } from './openapi/types.js'; import roles, { Roles, permissions } from './roles/index.js'; import { DbVersion } from './utils/dbVersion.js'; +import { Backend, BackupCompressionLevel, BackupStatus } from './v2/backup/index.js'; +import MetaGetter from './v2/misc/metaGetter.js'; import { Agent as HttpAgent } from 'http'; import { Agent as HttpsAgent } from 'https'; -import { LiveChecker, OpenidConfigurationGetter, ReadyChecker } from './misc/index.js'; +import { LiveChecker, OpenidConfigurationGetter, ReadyChecker } from './v2/misc/index.js'; import weaviateV2 from './v2/index.js'; -import filter from './collections/filters/index.js'; -import { ConsistencyLevel } from './data/replication.js'; +import { TransportsMaker } from './connection/grpc.js'; +import { ConsistencyLevel } from './replication.js'; import users, { Users } from './users/index.js'; +import { ToBase64FromMedia } from './utils/base64.js'; export type ProtocolParams = { /** @@ -88,7 +81,7 @@ export type ClientParams = { /** * Additional headers that should be passed to Weaviate in the underlying requests. E.g., X-OpenAI-Api-Key */ - headers?: HeadersInit; + headers?: Record; /** * The connection parameters for any tunnelling proxies that should be used. * @@ -101,10 +94,10 @@ export type ClientParams = { skipInitChecks?: boolean; }; -export interface WeaviateClient { +export interface IWeaviateClient { backup: Backup; cluster: Cluster; - collections: Collections; + collections: ICollections; oidcAuth?: OidcAuthenticator; roles: Roles; users: Users; @@ -118,7 +111,7 @@ export interface WeaviateClient { isReady: () => Promise; } -const cleanHost = (host: string, protocol: 'rest' | 'grpc') => { +export const cleanHost = (host: string, protocol: 'rest' | 'grpc') => { if (host.includes('http')) { console.warn( `The ${protocol}.host parameter should not include the protocol. Please remove the http:// or https:// from the ${protocol}.host parameter.\ @@ -129,73 +122,15 @@ const cleanHost = (host: string, protocol: 'rest' | 'grpc') => { return host; }; -/** - * Connect to a custom Weaviate deployment, e.g. your own self-hosted Kubernetes cluster. - * - * @param {ConnectToCustomOptions} options Options for the connection. - * @returns {Promise} A Promise that resolves to a client connected to your custom Weaviate deployment. - */ -export function connectToCustom(options: ConnectToCustomOptions): Promise { - return helpers.connectToCustom(client, options); -} - -/** - * Connect to a locally-deployed Weaviate instance, e.g. as a Docker compose stack. - * - * @param {ConnectToLocalOptions} [options] Options for the connection. - * @returns {Promise} A Promise that resolves to a client connected to your local Weaviate instance. - */ -export function connectToLocal(options?: ConnectToLocalOptions): Promise { - return helpers.connectToLocal(client, options); -} - -/** - * Connect to your own Weaviate Cloud (WCD) instance. - * - * @deprecated Use `connectToWeaviateCloud` instead. - * - * @param {string} clusterURL The URL of your WCD instance. E.g., `https://example.weaviate.network`. - * @param {ConnectToWCDOptions} [options] Additional options for the connection. - * @returns {Promise} A Promise that resolves to a client connected to your WCD instance. - */ -export function connectToWCD(clusterURL: string, options?: ConnectToWCDOptions): Promise { - console.warn( - 'The `connectToWCD` method is deprecated. Please use `connectToWeaviateCloud` instead. This method will be removed in a future release.' - ); - return helpers.connectToWeaviateCloud(clusterURL, client, options); -} - -/** - * Connect to your own Weaviate Cloud Service (WCS) instance. - * - * @deprecated Use `connectToWeaviateCloud` instead. - * - * @param {string} clusterURL The URL of your WCD instance. E.g., `https://example.weaviate.network`. - * @param {ConnectToWCSOptions} [options] Additional options for the connection. - * @returns {Promise} A Promise that resolves to a client connected to your WCS instance. - */ -export function connectToWCS(clusterURL: string, options?: ConnectToWCSOptions): Promise { - console.warn( - 'The `connectToWCS` method is deprecated. Please use `connectToWeaviateCloud` instead. This method will be removed in a future release.' - ); - return helpers.connectToWeaviateCloud(clusterURL, client, options); -} - -/** - * Connect to your own Weaviate Cloud (WCD) instance. - * - * @param {string} clusterURL The URL of your WCD instance. E.g., `https://example.weaviate.network`. - * @param {ConnectToWeaviateCloudOptions} [options] Additional options for the connection. - * @returns {Promise} A Promise that resolves to a client connected to your WCD instance. - */ -export function connectToWeaviateCloud( - clusterURL: string, - options?: ConnectToWeaviateCloudOptions -): Promise { - return helpers.connectToWeaviateCloud(clusterURL, client, options); -} +export type Context = { + transportsMaker: TransportsMaker; + toBase64FromMedia: ToBase64FromMedia; +}; -async function client(params: ClientParams): Promise { +const client = async ( + context: Context, + params: ClientParams +): Promise> => { let { host: httpHost } = params.connectionParams.http; let { host: grpcHost } = params.connectionParams.grpc; const { port: httpPort, secure: httpSecure, path: httpPath } = params.connectionParams.http; @@ -209,24 +144,27 @@ async function client(params: ClientParams): Promise { const scheme = httpSecure ? 'https' : 'http'; const agent = httpSecure ? new HttpsAgent({ keepAlive: true }) : new HttpAgent({ keepAlive: true }); - const { connection, dbVersionProvider, dbVersionSupport } = await ConnectionGRPC.use({ - host: `${scheme}://${httpHost}:${httpPort}${httpPath || ''}`, - scheme: scheme, - headers: params.headers, - grpcAddress: `${grpcHost}:${grpcPort}`, - grpcSecure: grpcSecure, - grpcProxyUrl: params.proxies?.grpc, - apiKey: isApiKey(params.auth) ? mapApiKey(params.auth) : undefined, - authClientSecret: isApiKey(params.auth) ? undefined : params.auth, - agent, - timeout: params.timeout, - skipInitChecks: params.skipInitChecks, - }); + const { connection, dbVersionProvider, dbVersionSupport } = await ConnectionGRPC.use( + context.transportsMaker, + { + host: `${scheme}://${httpHost}:${httpPort}${httpPath || ''}`, + scheme: scheme, + headers: params.headers, + grpcAddress: `${grpcHost}:${grpcPort}`, + grpcSecure: grpcSecure, + grpcProxyUrl: params.proxies?.grpc, + apiKey: isApiKey(params.auth) ? mapApiKey(params.auth) : undefined, + authClientSecret: isApiKey(params.auth) ? undefined : params.auth, + agent, + timeout: params.timeout, + skipInitChecks: params.skipInitChecks, + } + ); - const ifc: WeaviateClient = { + const ifc: IWeaviateClient = { backup: backup(connection), cluster: cluster(connection), - collections: collections(connection, dbVersionSupport), + collections: collections(connection, dbVersionSupport, context.toBase64FromMedia), roles: roles(connection), users: users(connection), close: () => Promise.resolve(connection.close()), // hedge against future changes to add I/O to .close() @@ -240,31 +178,14 @@ async function client(params: ClientParams): Promise { if (connection.oidcAuth) ifc.oidcAuth = connection.oidcAuth; return ifc; -} - -const app = { - connectToCustom, - connectToLocal, - connectToWCD, - connectToWCS, - connectToWeaviateCloud, - client, - ApiKey, - AuthUserPasswordCredentials, - AuthAccessTokenCredentials, - AuthClientCredentials, - configure, - configGuards, - filter: filter(), - reconfigure, - permissions, }; -export default app; -export * from './collections/index.js'; +export default client; +export * from './collections.js'; export * from './connection/index.js'; +export * from './errors.js'; export * from './roles/types.js'; -export * from './utils/base64.js'; +// export * from './utils/base64.js'; export * from './utils/uuid.js'; export { AccessTokenCredentialsInput, @@ -281,5 +202,8 @@ export { ProxiesParams, TimeoutParams, UserPasswordCredentialsInput, + filter, + helpers, + permissions, weaviateV2, }; diff --git a/src/collections/iterator/index.ts b/packages/core/src/iterator/index.ts similarity index 94% rename from src/collections/iterator/index.ts rename to packages/core/src/iterator/index.ts index 0e631bb9..0328f82a 100644 --- a/src/collections/iterator/index.ts +++ b/packages/core/src/iterator/index.ts @@ -1,4 +1,4 @@ -import { WeaviateDeserializationError } from '../../errors.js'; +import { WeaviateDeserializationError } from '../errors.js'; import { WeaviateObject } from '../types/index.js'; const ITERATOR_CACHE_SIZE = 100; diff --git a/src/openapi/schema.ts b/packages/core/src/openapi/schema.ts similarity index 100% rename from src/openapi/schema.ts rename to packages/core/src/openapi/schema.ts diff --git a/src/openapi/types.ts b/packages/core/src/openapi/types.ts similarity index 100% rename from src/openapi/types.ts rename to packages/core/src/openapi/types.ts diff --git a/src/proto/google/health/v1/health.ts b/packages/core/src/proto/google/health/v1/health.ts similarity index 100% rename from src/proto/google/health/v1/health.ts rename to packages/core/src/proto/google/health/v1/health.ts diff --git a/src/proto/google/protobuf/struct.ts b/packages/core/src/proto/google/protobuf/struct.ts similarity index 100% rename from src/proto/google/protobuf/struct.ts rename to packages/core/src/proto/google/protobuf/struct.ts diff --git a/packages/core/src/proto/index.ts b/packages/core/src/proto/index.ts new file mode 100644 index 00000000..9141a08d --- /dev/null +++ b/packages/core/src/proto/index.ts @@ -0,0 +1,2 @@ +export { HealthCheckResponse_ServingStatus, HealthDefinition } from './google/health/v1/health.js'; +export { WeaviateDefinition } from './v1/weaviate.js'; \ No newline at end of file diff --git a/src/proto/v1/aggregate.ts b/packages/core/src/proto/v1/aggregate.ts similarity index 100% rename from src/proto/v1/aggregate.ts rename to packages/core/src/proto/v1/aggregate.ts diff --git a/src/proto/v1/base.ts b/packages/core/src/proto/v1/base.ts similarity index 100% rename from src/proto/v1/base.ts rename to packages/core/src/proto/v1/base.ts diff --git a/src/proto/v1/base_search.ts b/packages/core/src/proto/v1/base_search.ts similarity index 100% rename from src/proto/v1/base_search.ts rename to packages/core/src/proto/v1/base_search.ts diff --git a/src/proto/v1/batch.ts b/packages/core/src/proto/v1/batch.ts similarity index 100% rename from src/proto/v1/batch.ts rename to packages/core/src/proto/v1/batch.ts diff --git a/src/proto/v1/batch_delete.ts b/packages/core/src/proto/v1/batch_delete.ts similarity index 100% rename from src/proto/v1/batch_delete.ts rename to packages/core/src/proto/v1/batch_delete.ts diff --git a/src/proto/v1/generative.ts b/packages/core/src/proto/v1/generative.ts similarity index 100% rename from src/proto/v1/generative.ts rename to packages/core/src/proto/v1/generative.ts diff --git a/src/proto/v1/properties.ts b/packages/core/src/proto/v1/properties.ts similarity index 100% rename from src/proto/v1/properties.ts rename to packages/core/src/proto/v1/properties.ts diff --git a/src/proto/v1/search_get.ts b/packages/core/src/proto/v1/search_get.ts similarity index 100% rename from src/proto/v1/search_get.ts rename to packages/core/src/proto/v1/search_get.ts diff --git a/src/proto/v1/tenants.ts b/packages/core/src/proto/v1/tenants.ts similarity index 100% rename from src/proto/v1/tenants.ts rename to packages/core/src/proto/v1/tenants.ts diff --git a/src/proto/v1/weaviate.ts b/packages/core/src/proto/v1/weaviate.ts similarity index 100% rename from src/proto/v1/weaviate.ts rename to packages/core/src/proto/v1/weaviate.ts diff --git a/src/collections/query/check.ts b/packages/core/src/query/check.ts similarity index 96% rename from src/collections/query/check.ts rename to packages/core/src/query/check.ts index 2e562a2b..38a676f9 100644 --- a/src/collections/query/check.ts +++ b/packages/core/src/query/check.ts @@ -1,9 +1,9 @@ -import Connection from '../../connection/grpc.js'; -import { WeaviateUnsupportedFeatureError } from '../../errors.js'; -import { ConsistencyLevel } from '../../index.js'; -import { DbVersionSupport } from '../../utils/dbVersion.js'; -import { GenerativeConfigRuntime, GroupByOptions } from '../index.js'; +import { GenerativeConfigRuntime, GroupByOptions } from '../collections.js'; +import Connection from '../connection/grpc.js'; +import { WeaviateUnsupportedFeatureError } from '../errors.js'; +import { ConsistencyLevel } from '../index.js'; import { Serialize } from '../serialize/index.js'; +import { DbVersionSupport } from '../utils/dbVersion.js'; import { BaseBm25Options, BaseHybridOptions, diff --git a/src/collections/query/index.ts b/packages/core/src/query/index.ts similarity index 84% rename from src/collections/query/index.ts rename to packages/core/src/query/index.ts index 9fb5b58e..9cc1c340 100644 --- a/src/collections/query/index.ts +++ b/packages/core/src/query/index.ts @@ -1,16 +1,15 @@ -import Connection from '../../connection/grpc.js'; +import Connection from '../connection/grpc.js'; -import { toBase64FromMedia } from '../../utils/base64.js'; +import { ConsistencyLevel } from '../replication.js'; +import { DbVersionSupport } from '../utils/dbVersion.js'; -import { ConsistencyLevel } from '../../data/index.js'; -import { DbVersionSupport } from '../../utils/dbVersion.js'; - -import { SearchReply } from '../../proto/v1/search_get.js'; import { Deserialize } from '../deserialize/index.js'; +import { SearchReply } from '../proto/v1/search_get.js'; import { Serialize } from '../serialize/index.js'; import { GroupByOptions, GroupByReturn, WeaviateObject, WeaviateReturn } from '../types/index.js'; -import { WeaviateInvalidInputError } from '../../errors.js'; +import { WeaviateInvalidInputError } from '../errors.js'; +import { ToBase64FromMedia } from '../utils/base64.js'; import { Check } from './check.js'; import { BaseBm25Options, @@ -34,21 +33,27 @@ import { SearchOptions, } from './types.js'; -class QueryManager implements Query { +class QueryManager implements Query { private check: Check; + private toBase64FromMedia: ToBase64FromMedia; - private constructor(check: Check) { + private constructor(check: Check, toBase64FromMedia: ToBase64FromMedia) { this.check = check; + this.toBase64FromMedia = toBase64FromMedia; } - public static use( + public static use( connection: Connection, name: string, dbVersionSupport: DbVersionSupport, + toBase64FromMedia: ToBase64FromMedia, consistencyLevel?: ConsistencyLevel, tenant?: string - ): QueryManager { - return new QueryManager(new Check(connection, name, dbVersionSupport, consistencyLevel, tenant)); + ): QueryManager { + return new QueryManager( + new Check(connection, name, dbVersionSupport, consistencyLevel, tenant), + toBase64FromMedia + ); } private async parseReply(reply: SearchReply) { @@ -106,13 +111,13 @@ class QueryManager implements Query { .then((reply) => this.parseGroupByReply(opts, reply)); } - public nearImage(image: string | Buffer, opts?: BaseNearOptions): Promise>; - public nearImage(image: string | Buffer, opts: GroupByNearOptions): Promise>; - public nearImage(image: string | Buffer, opts?: NearOptions): QueryReturn { + public nearImage(image: M, opts?: BaseNearOptions): Promise>; + public nearImage(image: M, opts: GroupByNearOptions): Promise>; + public nearImage(image: M, opts?: NearOptions): QueryReturn { return this.check .nearSearch(opts) .then(({ search, supportsTargets, supportsWeightsForTargets }) => { - return toBase64FromMedia(image).then((image) => + return this.toBase64FromMedia(image).then((image) => search.withNearImage( Serialize.search.nearImage( { @@ -128,17 +133,9 @@ class QueryManager implements Query { .then((reply) => this.parseGroupByReply(opts, reply)); } - public nearMedia( - media: string | Buffer, - type: NearMediaType, - opts?: BaseNearOptions - ): Promise>; - public nearMedia( - media: string | Buffer, - type: NearMediaType, - opts: GroupByNearOptions - ): Promise>; - public nearMedia(media: string | Buffer, type: NearMediaType, opts?: NearOptions): QueryReturn { + public nearMedia(media: M, type: NearMediaType, opts?: BaseNearOptions): Promise>; + public nearMedia(media: M, type: NearMediaType, opts: GroupByNearOptions): Promise>; + public nearMedia(media: M, type: NearMediaType, opts?: NearOptions): QueryReturn { return this.check .nearSearch(opts) .then(({ search, supportsTargets, supportsWeightsForTargets }) => { @@ -173,7 +170,7 @@ class QueryManager implements Query { default: throw new WeaviateInvalidInputError(`Invalid media type: ${type}`); } - return toBase64FromMedia(media).then(send); + return this.toBase64FromMedia(media).then(send); }) .then((reply) => this.parseGroupByReply(opts, reply)); } diff --git a/src/collections/query/types.ts b/packages/core/src/query/types.ts similarity index 94% rename from src/collections/query/types.ts rename to packages/core/src/query/types.ts index 5eaf0f53..16edd3b5 100644 --- a/src/collections/query/types.ts +++ b/packages/core/src/query/types.ts @@ -1,5 +1,5 @@ +import { MultiTargetVectorJoin } from '../collections.js'; import { FilterValue } from '../filters/index.js'; -import { MultiTargetVectorJoin } from '../index.js'; import { Sorting } from '../sort/classes.js'; import { GroupByOptions, @@ -283,7 +283,7 @@ interface Hybrid { hybrid(query: string, opts?: HybridOptions): QueryReturn; } -interface NearImage { +interface NearImage { /** * Search for objects by image in this collection using an image-capable vectorization module and vector-based similarity search. * You must have an image-capable vectorization module installed in order to use this method, @@ -293,11 +293,11 @@ interface NearImage { * * This overload is for performing a search without the `groupBy` param. * - * @param {string | Buffer} image - The image to search on. This can be a base64 string, a file path string, or a buffer. + * @param {M} image - The image to search on. This can be a base64 string, a file path string, or a buffer. * @param {BaseNearOptions} [opts] - The available options for the search excluding the `groupBy` param. * @returns {Promise>} - The result of the search within the fetched collection. */ - nearImage(image: string | Buffer, opts?: BaseNearOptions): Promise>; + nearImage(image: M, opts?: BaseNearOptions): Promise>; /** * Search for objects by image in this collection using an image-capable vectorization module and vector-based similarity search. * You must have an image-capable vectorization module installed in order to use this method, @@ -307,11 +307,11 @@ interface NearImage { * * This overload is for performing a search with the `groupBy` param. * - * @param {string | Buffer} image - The image to search on. This can be a base64 string, a file path string, or a buffer. + * @param {M} image - The image to search on. This can be a base64 string, a file path string, or a buffer. * @param {GroupByNearOptions} opts - The available options for the search including the `groupBy` param. * @returns {Promise>} - The group by result of the search within the fetched collection. */ - nearImage(image: string | Buffer, opts: GroupByNearOptions): Promise>; + nearImage(image: M, opts: GroupByNearOptions): Promise>; /** * Search for objects by image in this collection using an image-capable vectorization module and vector-based similarity search. * You must have an image-capable vectorization module installed in order to use this method, @@ -321,14 +321,14 @@ interface NearImage { * * This overload is for performing a search with a programmatically defined `opts` param. * - * @param {string | Buffer} image - The image to search on. This can be a base64 string, a file path string, or a buffer. + * @param {M} image - The image to search on. This can be a base64 string, a file path string, or a buffer. * @param {NearOptions} [opts] - The available options for the search. * @returns {QueryReturn} - The result of the search within the fetched collection. */ - nearImage(image: string | Buffer, opts?: NearOptions): QueryReturn; + nearImage(image: M, opts?: NearOptions): QueryReturn; } -interface NearMedia { +interface NearMedia { /** * Search for objects by image in this collection using an image-capable vectorization module and vector-based similarity search. * You must have a multi-media-capable vectorization module installed in order to use this method, e.g. `multi2vec-bind` or `multi2vec-palm`. @@ -337,16 +337,12 @@ interface NearMedia { * * This overload is for performing a search without the `groupBy` param. * - * @param {string | Buffer} media - The media to search on. This can be a base64 string, a file path string, or a buffer. + * @param {M} media - The media to search on. This can be a base64 string, a file path string, or a buffer. * @param {NearMediaType} type - The type of media to search for, e.g. 'audio'. * @param {BaseNearOptions} [opts] - The available options for the search excluding the `groupBy` param. * @returns {Promise>} - The result of the search within the fetched collection. */ - nearMedia( - media: string | Buffer, - type: NearMediaType, - opts?: BaseNearOptions - ): Promise>; + nearMedia(media: M, type: NearMediaType, opts?: BaseNearOptions): Promise>; /** * Search for objects by image in this collection using an image-capable vectorization module and vector-based similarity search. * You must have a multi-media-capable vectorization module installed in order to use this method, e.g. `multi2vec-bind` or `multi2vec-palm`. @@ -355,16 +351,12 @@ interface NearMedia { * * This overload is for performing a search with the `groupBy` param. * - * @param {string | Buffer} media - The media to search on. This can be a base64 string, a file path string, or a buffer. + * @param {M} media - The media to search on. This can be a base64 string, a file path string, or a buffer. * @param {NearMediaType} type - The type of media to search for, e.g. 'audio'. * @param {GroupByNearOptions} opts - The available options for the search including the `groupBy` param. * @returns {Promise>} - The group by result of the search within the fetched collection. */ - nearMedia( - media: string | Buffer, - type: NearMediaType, - opts: GroupByNearOptions - ): Promise>; + nearMedia(media: M, type: NearMediaType, opts: GroupByNearOptions): Promise>; /** * Search for objects by image in this collection using an image-capable vectorization module and vector-based similarity search. * You must have a multi-media-capable vectorization module installed in order to use this method, e.g. `multi2vec-bind` or `multi2vec-palm`. @@ -373,12 +365,12 @@ interface NearMedia { * * This overload is for performing a search with a programmatically defined `opts` param. * - * @param {string | Buffer} media - The media to search on. This can be a base64 string, a file path string, or a buffer. + * @param {M} media - The media to search on. This can be a base64 string, a file path string, or a buffer. * @param {NearMediaType} type - The type of media to search for, e.g. 'audio'. * @param {NearOptions} [opts] - The available options for the search. * @returns {QueryReturn} - The result of the search within the fetched collection. */ - nearMedia(media: string | Buffer, type: NearMediaType, opts?: NearOptions): QueryReturn; + nearMedia(media: M, type: NearMediaType, opts?: NearOptions): QueryReturn; } interface NearObject { @@ -505,11 +497,11 @@ interface NearVector { } /** All the available methods on the `.query` namespace. */ -export interface Query +export interface Query extends Bm25, Hybrid, - NearImage, - NearMedia, + NearImage, + NearMedia, NearObject, NearText, NearVector { diff --git a/src/collections/query/utils.ts b/packages/core/src/query/utils.ts similarity index 96% rename from src/collections/query/utils.ts rename to packages/core/src/query/utils.ts index 0450679d..4cda381b 100644 --- a/src/collections/query/utils.ts +++ b/packages/core/src/query/utils.ts @@ -1,4 +1,4 @@ -import { MultiTargetVectorJoin } from '../index.js'; +import { MultiTargetVectorJoin } from '../collections.js'; import { Bm25OperatorOptions, Bm25OperatorOr, NearVectorInputType, TargetVectorInputType } from './types.js'; export class NearVectorInputGuards { diff --git a/src/collections/references/classes.ts b/packages/core/src/references/classes.ts similarity index 100% rename from src/collections/references/classes.ts rename to packages/core/src/references/classes.ts diff --git a/src/collections/references/index.ts b/packages/core/src/references/index.ts similarity index 100% rename from src/collections/references/index.ts rename to packages/core/src/references/index.ts diff --git a/src/collections/references/types.ts b/packages/core/src/references/types.ts similarity index 100% rename from src/collections/references/types.ts rename to packages/core/src/references/types.ts diff --git a/src/collections/references/utils.ts b/packages/core/src/references/utils.ts similarity index 100% rename from src/collections/references/utils.ts rename to packages/core/src/references/utils.ts diff --git a/src/data/replication.ts b/packages/core/src/replication.ts similarity index 100% rename from src/data/replication.ts rename to packages/core/src/replication.ts diff --git a/src/roles/index.ts b/packages/core/src/roles/index.ts similarity index 99% rename from src/roles/index.ts rename to packages/core/src/roles/index.ts index 68dd7e4f..f06d7706 100644 --- a/src/roles/index.ts +++ b/packages/core/src/roles/index.ts @@ -1,4 +1,4 @@ -import { ConnectionREST } from '../index.js'; +import { ConnectionREST } from '../connection/index.js'; import { WeaviateAssignedUser, Permission as WeaviatePermission, diff --git a/src/roles/types.ts b/packages/core/src/roles/types.ts similarity index 100% rename from src/roles/types.ts rename to packages/core/src/roles/types.ts diff --git a/src/roles/util.ts b/packages/core/src/roles/util.ts similarity index 100% rename from src/roles/util.ts rename to packages/core/src/roles/util.ts diff --git a/src/collections/serialize/index.ts b/packages/core/src/serialize/index.ts similarity index 98% rename from src/collections/serialize/index.ts rename to packages/core/src/serialize/index.ts index ddebb8e4..a3b6ad8b 100644 --- a/src/collections/serialize/index.ts +++ b/packages/core/src/serialize/index.ts @@ -1,5 +1,5 @@ import { v4 as uuidv4 } from 'uuid'; -import { WhereFilter } from '../../openapi/types.js'; +import { WhereFilter } from '../openapi/types.js'; import { BM25, CombinationMethod, @@ -20,19 +20,19 @@ import { Targets, VectorForTarget, WeightsForTarget, -} from '../../proto/v1/base_search.js'; +} from '../proto/v1/base_search.js'; import { BatchObject as BatchObjectGRPC, BatchObject_MultiTargetRefProps, BatchObject_Properties, BatchObject_SingleTargetRefProps, -} from '../../proto/v1/batch.js'; +} from '../proto/v1/batch.js'; import { GenerativeProvider, GenerativeSearch, GenerativeSearch_Grouped, GenerativeSearch_Single, -} from '../../proto/v1/generative.js'; +} from '../proto/v1/generative.js'; import { GroupBy, MetadataRequest, @@ -40,13 +40,33 @@ import { PropertiesRequest, Rerank, SortBy as SortByGrpc, -} from '../../proto/v1/search_get.js'; +} from '../proto/v1/search_get.js'; +import { + AggregateBaseOptions, + AggregateHybridOptions, + AggregateNearOptions, + GenerativeConfigRuntime, + GroupByAggregate, + GroupedTask, + MultiTargetVectorJoin, + PrimitiveKeys, + PropertiesMetrics, + SinglePrompt, +} from '../collections.js'; import { WeaviateInvalidInputError, WeaviateSerializationError, WeaviateUnsupportedFeatureError, -} from '../../errors.js'; +} from '../errors.js'; +import { FilterId } from '../filters/classes.js'; +import { FilterValue, Filters } from '../filters/index.js'; +import { + FilterValueType, + GeoRangeFilter, + PrimitiveFilterValueType, + PrimitiveListFilterValueType, +} from '../filters/types.js'; import { AggregateFetchArgs, AggregateHybridArgs, @@ -54,7 +74,7 @@ import { AggregateNearObjectArgs, AggregateNearTextArgs, AggregateNearVectorArgs, -} from '../../grpc/aggregator.js'; +} from '../grpc/aggregator.js'; import { BaseSearchArgs, SearchBm25Args, @@ -69,8 +89,7 @@ import { SearchNearThermalArgs, SearchNearVectorArgs, SearchNearVideoArgs, -} from '../../grpc/searcher.js'; -import { toBase64FromMedia } from '../../index.js'; +} from '../grpc/searcher.js'; import { AggregateRequest_Aggregation, AggregateRequest_Aggregation_Boolean, @@ -79,7 +98,7 @@ import { AggregateRequest_Aggregation_Number, AggregateRequest_Aggregation_Text, AggregateRequest_GroupBy, -} from '../../proto/v1/aggregate.js'; +} from '../proto/v1/aggregate.js'; import { BooleanArrayProperties, FilterTarget, @@ -93,27 +112,7 @@ import { TextArray, TextArrayProperties, Vectors as VectorsGrpc, -} from '../../proto/v1/base.js'; -import { FilterId } from '../filters/classes.js'; -import { FilterValue, Filters } from '../filters/index.js'; -import { - FilterValueType, - GeoRangeFilter, - PrimitiveFilterValueType, - PrimitiveListFilterValueType, -} from '../filters/types.js'; -import { - AggregateBaseOptions, - AggregateHybridOptions, - AggregateNearOptions, - GenerativeConfigRuntime, - GroupByAggregate, - GroupedTask, - MultiTargetVectorJoin, - PrimitiveKeys, - PropertiesMetrics, - SinglePrompt, -} from '../index.js'; +} from '../proto/v1/base.js'; import { BaseHybridOptions, BaseNearOptions, @@ -161,6 +160,7 @@ import { SortBy, WeaviateField, } from '../types/index.js'; +import { ToBase64FromMedia } from '../utils/base64.js'; class FilterGuards { static isFilters = ( @@ -505,7 +505,7 @@ class Search { | string[] | undefined; const refProperties = references; - const objectProperties = properties?.filter((property) => typeof property === 'object') as + const objectProperties = properties?.filter((property) => typeof property === 'object') as unknown as | QueryNested[] | undefined; @@ -833,6 +833,7 @@ export class Serialize { private static generativeQuery = async ( generative: GenerativeConfigRuntime, + toBase64FromMedia: ToBase64FromMedia, opts?: { metadata?: boolean; images?: (string | Buffer)[]; imageProperties?: string[] } ): Promise => { const withImages = async >( @@ -896,6 +897,7 @@ export class Serialize { public static generative = async ( args: { supportsSingleGrouped: boolean }, + toBase64FromMedia: ToBase64FromMedia, opts?: GenerateOptions ): Promise => { const singlePrompt = Serialize.isSinglePrompt(opts?.singlePrompt) @@ -921,14 +923,16 @@ export class Serialize { ? GenerativeSearch_Single.fromPartial({ prompt: singlePrompt, debug: singlePromptDebug, - queries: opts.config ? [await Serialize.generativeQuery(opts.config, singleOpts)] : undefined, + queries: opts.config + ? [await Serialize.generativeQuery(opts.config, toBase64FromMedia, singleOpts)] + : undefined, }) : undefined, grouped: opts?.groupedTask ? GenerativeSearch_Grouped.fromPartial({ task: groupedTask, queries: opts.config - ? [await Serialize.generativeQuery(opts.config, groupedOpts)] + ? [await Serialize.generativeQuery(opts.config, toBase64FromMedia, groupedOpts)] : undefined, properties: groupedProperties ? TextArray.fromPartial({ values: groupedProperties as string[] }) @@ -1869,7 +1873,7 @@ export class Serialize { vectorBytes = Serialize.vectorToBytes(obj.vectors); // required in case collection was made with <1.24.0 and has since been migrated to >=1.24.0 } else if (obj.vectors !== undefined) { - vectorBytes = Serialize.vectorToBytes(obj.vectors); + vectorBytes = Serialize.vectorToBytes(obj.vectors as any); } objs.push( @@ -1909,7 +1913,7 @@ export class Serialize { }; public static tenants(tenants: T[], mapper: (tenant: T) => M): M[][] { - const mapped = []; + const mapped: M[][] = []; const batches = Math.ceil(tenants.length / 100); for (let i = 0; i < batches; i++) { const batch = tenants.slice(i * 100, (i + 1) * 100); diff --git a/src/collections/sort/classes.ts b/packages/core/src/sort/classes.ts similarity index 100% rename from src/collections/sort/classes.ts rename to packages/core/src/sort/classes.ts diff --git a/src/collections/sort/index.ts b/packages/core/src/sort/index.ts similarity index 100% rename from src/collections/sort/index.ts rename to packages/core/src/sort/index.ts diff --git a/src/collections/sort/types.ts b/packages/core/src/sort/types.ts similarity index 100% rename from src/collections/sort/types.ts rename to packages/core/src/sort/types.ts diff --git a/src/collections/tenants/index.ts b/packages/core/src/tenants/index.ts similarity index 96% rename from src/collections/tenants/index.ts rename to packages/core/src/tenants/index.ts index 320f166d..e93344e2 100644 --- a/src/collections/tenants/index.ts +++ b/packages/core/src/tenants/index.ts @@ -1,10 +1,10 @@ -import { ConnectionGRPC } from '../../connection/index.js'; -import { WeaviateUnexpectedStatusCodeError, WeaviateUnsupportedFeatureError } from '../../errors.js'; -import { Tenant as TenantREST } from '../../openapi/types.js'; -import { TenantsCreator, TenantsDeleter, TenantsGetter, TenantsUpdater } from '../../schema/index.js'; -import { DbVersionSupport } from '../../utils/dbVersion.js'; +import { ConnectionGRPC } from '../connection/index.js'; import { Deserialize } from '../deserialize/index.js'; +import { WeaviateUnexpectedStatusCodeError, WeaviateUnsupportedFeatureError } from '../errors.js'; +import { Tenant as TenantREST } from '../openapi/types.js'; import { Serialize } from '../serialize/index.js'; +import { DbVersionSupport } from '../utils/dbVersion.js'; +import { TenantsCreator, TenantsDeleter, TenantsGetter, TenantsUpdater } from '../v2/schema/index.js'; import { Tenant, TenantBC, TenantBase, TenantCreate, TenantUpdate } from './types.js'; const checkSupportForGRPCTenantsGetEndpoint = async (dbVersionSupport: DbVersionSupport) => { diff --git a/src/collections/tenants/types.ts b/packages/core/src/tenants/types.ts similarity index 100% rename from src/collections/tenants/types.ts rename to packages/core/src/tenants/types.ts diff --git a/src/collections/types/batch.ts b/packages/core/src/types/batch.ts similarity index 80% rename from src/collections/types/batch.ts rename to packages/core/src/types/batch.ts index 0048cb41..a01fb210 100644 --- a/src/collections/types/batch.ts +++ b/packages/core/src/types/batch.ts @@ -1,6 +1,6 @@ -import { BatchReference } from '../../openapi/types.js'; -import { BatchObject as BatchObjectGRPC } from '../../proto/v1/batch.js'; -import { NonReferenceInputs, ReferenceInputs, Vectors } from '../index.js'; +import { BatchReference } from '../openapi/types.js'; +import { BatchObject as BatchObjectGRPC } from '../proto/v1/batch.js'; +import { NonReferenceInputs, ReferenceInputs, Vectors } from './index.js'; export type BatchObjectsReturn = { allResponses: (string | ErrorObject)[]; diff --git a/src/collections/types/data.ts b/packages/core/src/types/data.ts similarity index 100% rename from src/collections/types/data.ts rename to packages/core/src/types/data.ts diff --git a/src/collections/types/generate.ts b/packages/core/src/types/generate.ts similarity index 99% rename from src/collections/types/generate.ts rename to packages/core/src/types/generate.ts index a330002a..2150494b 100644 --- a/src/collections/types/generate.ts +++ b/packages/core/src/types/generate.ts @@ -26,8 +26,8 @@ import { GenerativeOpenAIMetadata, GenerativeXAI as GenerativeXAIGRPC, GenerativeXAIMetadata, -} from '../../proto/v1/generative.js'; -import { GenerativeXAIConfig, ModuleConfig } from '../index.js'; +} from '../proto/v1/generative.js'; +import { GenerativeXAIConfig, ModuleConfig } from './index.js'; import { GroupByObject, GroupByResult, WeaviateGenericObject, WeaviateNonGenericObject } from './query.js'; export type GenerativeGenericObject< diff --git a/src/collections/types/index.ts b/packages/core/src/types/index.ts similarity index 95% rename from src/collections/types/index.ts rename to packages/core/src/types/index.ts index ec2c993f..bc0577f1 100644 --- a/src/collections/types/index.ts +++ b/packages/core/src/types/index.ts @@ -1,6 +1,5 @@ export * from '../config/types/index.js'; export * from '../configure/types/index.js'; -export type { CollectionConfigCreate } from '../index.js'; export * from './batch.js'; export * from './data.js'; export * from './generate.js'; @@ -25,7 +24,7 @@ export * from './query.js'; import { GeoCoordinate as GeoCoordinateGRPC, PhoneNumber as PhoneNumberGRPC, -} from '../../proto/v1/properties.js'; +} from '../proto/v1/properties.js'; import { CrossReference } from '../references/index.js'; diff --git a/src/collections/types/internal.ts b/packages/core/src/types/internal.ts similarity index 99% rename from src/collections/types/internal.ts rename to packages/core/src/types/internal.ts index 001c24ab..43d40b4e 100644 --- a/src/collections/types/internal.ts +++ b/packages/core/src/types/internal.ts @@ -1,3 +1,5 @@ +import { ReferenceManager } from '../references/classes.js'; +import { CrossReference } from '../references/index.js'; import { NestedProperties, PhoneNumber, @@ -7,9 +9,7 @@ import { RefPropertyDefault, ReferenceToMultiTarget, WeaviateField, -} from '../index.js'; -import { ReferenceManager } from '../references/classes.js'; -import { CrossReference } from '../references/index.js'; +} from './index.js'; export type ExtractCrossReferenceType = T extends CrossReference ? U : never; diff --git a/src/collections/types/query.ts b/packages/core/src/types/query.ts similarity index 99% rename from src/collections/types/query.ts rename to packages/core/src/types/query.ts index 1e8b3c25..b26b64c5 100644 --- a/src/collections/types/query.ts +++ b/packages/core/src/types/query.ts @@ -1,5 +1,5 @@ -import { WeaviateField } from '../index.js'; import { CrossReferenceDefault } from '../references/index.js'; +import { WeaviateField } from './index.js'; import { ExtractCrossReferenceType, NonRefKeys, diff --git a/src/users/index.ts b/packages/core/src/users/index.ts similarity index 99% rename from src/users/index.ts rename to packages/core/src/users/index.ts index 3bae45f5..210ad06b 100644 --- a/src/users/index.ts +++ b/packages/core/src/users/index.ts @@ -1,5 +1,5 @@ +import { ConnectionREST } from '../connection/index.js'; import { WeaviateUnexpectedStatusCodeError } from '../errors.js'; -import { ConnectionREST } from '../index.js'; import { WeaviateUserTypeInternal as UserTypeInternal, WeaviateDBUser, diff --git a/src/users/types.ts b/packages/core/src/users/types.ts similarity index 100% rename from src/users/types.ts rename to packages/core/src/users/types.ts diff --git a/packages/core/src/utils/base64.ts b/packages/core/src/utils/base64.ts new file mode 100644 index 00000000..b9d61387 --- /dev/null +++ b/packages/core/src/utils/base64.ts @@ -0,0 +1,8 @@ +/** + * This function converts a file buffer into a base64 string so that it can be + * sent to Weaviate and stored as a media field. + * + * @param {string | Buffer} file The media to convert either as a base64 string, a file path string, an url, or as a buffer. If you passed a base64 string, the function does nothing and returns the string as is. + * @returns {string} The base64 string + */ +export type ToBase64FromMedia = (media: M) => Promise; diff --git a/src/utils/beaconPath.ts b/packages/core/src/utils/beaconPath.ts similarity index 100% rename from src/utils/beaconPath.ts rename to packages/core/src/utils/beaconPath.ts diff --git a/src/utils/dbVersion.ts b/packages/core/src/utils/dbVersion.ts similarity index 99% rename from src/utils/dbVersion.ts rename to packages/core/src/utils/dbVersion.ts index a945e414..1ed893d1 100644 --- a/src/utils/dbVersion.ts +++ b/packages/core/src/utils/dbVersion.ts @@ -1,5 +1,5 @@ -import { ConnectionGQL } from '../index.js'; -import MetaGetter from '../misc/metaGetter.js'; +import ConnectionGQL from '../connection/gql.js'; +import MetaGetter from '../v2/misc/metaGetter.js'; export class DbVersionSupport { private dbVersionProvider: VersionProvider; diff --git a/src/utils/testData.ts b/packages/core/src/utils/testData.ts similarity index 100% rename from src/utils/testData.ts rename to packages/core/src/utils/testData.ts diff --git a/src/utils/uuid.ts b/packages/core/src/utils/uuid.ts similarity index 100% rename from src/utils/uuid.ts rename to packages/core/src/utils/uuid.ts diff --git a/src/backup/backupCreateStatusGetter.ts b/packages/core/src/v2/backup/backupCreateStatusGetter.ts similarity index 80% rename from src/backup/backupCreateStatusGetter.ts rename to packages/core/src/v2/backup/backupCreateStatusGetter.ts index ea131685..a854daf2 100644 --- a/src/backup/backupCreateStatusGetter.ts +++ b/packages/core/src/v2/backup/backupCreateStatusGetter.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { WeaviateInvalidInputError } from '../errors.js'; -import { BackupCreateStatusResponse } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { WeaviateInvalidInputError } from '../../errors.js'; +import { BackupCreateStatusResponse } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; import { Backend } from './index.js'; import { validateBackend, validateBackupId } from './validation.js'; diff --git a/src/backup/backupCreator.ts b/packages/core/src/v2/backup/backupCreator.ts similarity index 95% rename from src/backup/backupCreator.ts rename to packages/core/src/v2/backup/backupCreator.ts index 5e9d5697..927f3e3f 100644 --- a/src/backup/backupCreator.ts +++ b/packages/core/src/v2/backup/backupCreator.ts @@ -1,12 +1,12 @@ -import Connection from '../connection/index.js'; -import { WeaviateInvalidInputError } from '../errors.js'; +import Connection from '../../connection/index.js'; +import { WeaviateInvalidInputError } from '../../errors.js'; import { BackupConfig, BackupCreateRequest, BackupCreateResponse, BackupCreateStatusResponse, -} from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +} from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; import BackupCreateStatusGetter from './backupCreateStatusGetter.js'; import { Backend } from './index.js'; import { diff --git a/src/backup/backupGetter.ts b/packages/core/src/v2/backup/backupGetter.ts similarity index 75% rename from src/backup/backupGetter.ts rename to packages/core/src/v2/backup/backupGetter.ts index 71c1142f..eda057fb 100644 --- a/src/backup/backupGetter.ts +++ b/packages/core/src/v2/backup/backupGetter.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { WeaviateInvalidInputError } from '../errors.js'; -import { BackupCreateResponse } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { WeaviateInvalidInputError } from '../../errors.js'; +import { BackupCreateResponse } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; import { Backend } from './index.js'; import { validateBackend } from './validation.js'; diff --git a/src/backup/backupRestoreStatusGetter.ts b/packages/core/src/v2/backup/backupRestoreStatusGetter.ts similarity index 79% rename from src/backup/backupRestoreStatusGetter.ts rename to packages/core/src/v2/backup/backupRestoreStatusGetter.ts index 3599287f..a2a49831 100644 --- a/src/backup/backupRestoreStatusGetter.ts +++ b/packages/core/src/v2/backup/backupRestoreStatusGetter.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { WeaviateInvalidInputError } from '../errors.js'; -import { BackupRestoreStatusResponse } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { WeaviateInvalidInputError } from '../../errors.js'; +import { BackupRestoreStatusResponse } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; import { Backend } from './index.js'; import { validateBackend, validateBackupId } from './validation.js'; diff --git a/src/backup/backupRestorer.ts b/packages/core/src/v2/backup/backupRestorer.ts similarity index 95% rename from src/backup/backupRestorer.ts rename to packages/core/src/v2/backup/backupRestorer.ts index e2f76c0f..b4ca9623 100644 --- a/src/backup/backupRestorer.ts +++ b/packages/core/src/v2/backup/backupRestorer.ts @@ -1,12 +1,12 @@ -import Connection from '../connection/index.js'; -import { WeaviateInvalidInputError } from '../errors.js'; +import Connection from '../../connection/index.js'; +import { WeaviateInvalidInputError } from '../../errors.js'; import { BackupRestoreRequest, BackupRestoreResponse, BackupRestoreStatusResponse, RestoreConfig, -} from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +} from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; import BackupRestoreStatusGetter from './backupRestoreStatusGetter.js'; import { Backend } from './index.js'; import { diff --git a/src/backup/index.ts b/packages/core/src/v2/backup/index.ts similarity index 96% rename from src/backup/index.ts rename to packages/core/src/v2/backup/index.ts index 9b395cd6..bdfc9160 100644 --- a/src/backup/index.ts +++ b/packages/core/src/v2/backup/index.ts @@ -1,4 +1,4 @@ -import Connection from '../connection/index.js'; +import Connection from '../../connection/index.js'; import BackupCreateStatusGetter from './backupCreateStatusGetter.js'; import BackupCreator from './backupCreator.js'; import BackupRestoreStatusGetter from './backupRestoreStatusGetter.js'; diff --git a/src/backup/journey.test.ts b/packages/core/src/v2/backup/journey.test.ts similarity index 99% rename from src/backup/journey.test.ts rename to packages/core/src/v2/backup/journey.test.ts index fc04ff09..55c4eccd 100644 --- a/src/backup/journey.test.ts +++ b/packages/core/src/v2/backup/journey.test.ts @@ -3,8 +3,8 @@ import { BackupCreateStatusResponse, BackupRestoreResponse, BackupRestoreStatusResponse, -} from '../openapi/types.js'; -import weaviate, { WeaviateClient } from '../v2/index.js'; +} from '../../openapi/types.js'; +import weaviate, { WeaviateClient } from '../../v2/index.js'; import { Backend } from './index.js'; const { diff --git a/src/backup/validation.ts b/packages/core/src/v2/backup/validation.ts similarity index 95% rename from src/backup/validation.ts rename to packages/core/src/v2/backup/validation.ts index 778ecb87..4f6ab98e 100644 --- a/src/backup/validation.ts +++ b/packages/core/src/v2/backup/validation.ts @@ -1,4 +1,4 @@ -import { isValidStringProperty } from '../validation/string.js'; +import { isValidStringProperty } from '../../validation/string.js'; export function validateIncludeClassNames(classNames?: string[]) { if (Array.isArray(classNames)) { diff --git a/src/batch/index.ts b/packages/core/src/v2/batch/index.ts similarity index 87% rename from src/batch/index.ts rename to packages/core/src/v2/batch/index.ts index fa2b1486..d6f863c5 100644 --- a/src/batch/index.ts +++ b/packages/core/src/v2/batch/index.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { BeaconPath } from '../utils/beaconPath.js'; -import { DbVersionSupport } from '../utils/dbVersion.js'; +import Connection from '../../connection/index.js'; +import { BeaconPath } from '../../utils/beaconPath.js'; +import { DbVersionSupport } from '../../utils/dbVersion.js'; import ObjectsBatchDeleter from './objectsBatchDeleter.js'; import ObjectsBatcher from './objectsBatcher.js'; import ReferencePayloadBuilder from './referencePayloadBuilder.js'; diff --git a/src/batch/journey.test.ts b/packages/core/src/v2/batch/journey.test.ts similarity index 99% rename from src/batch/journey.test.ts rename to packages/core/src/v2/batch/journey.test.ts index d75e785e..d9c0d64c 100644 --- a/src/batch/journey.test.ts +++ b/packages/core/src/v2/batch/journey.test.ts @@ -6,8 +6,8 @@ import { Tenant, WeaviateClass, WeaviateObject, -} from '../openapi/types.js'; -import weaviate, { WeaviateClient } from '../v2/index.js'; +} from '../../openapi/types.js'; +import weaviate, { WeaviateClient } from '../../v2/index.js'; const thingClassName = 'BatchJourneyTestThing'; const otherThingClassName = 'BatchJourneyTestOtherThing'; diff --git a/src/batch/objectsBatchDeleter.ts b/packages/core/src/v2/batch/objectsBatchDeleter.ts similarity index 91% rename from src/batch/objectsBatchDeleter.ts rename to packages/core/src/v2/batch/objectsBatchDeleter.ts index 5998af12..a73335d6 100644 --- a/src/batch/objectsBatchDeleter.ts +++ b/packages/core/src/v2/batch/objectsBatchDeleter.ts @@ -1,8 +1,8 @@ -import Connection from '../connection/index.js'; +import Connection from '../../connection/index.js'; +import { BatchDelete, BatchDeleteResponse, WhereFilter } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; +import { isValidStringProperty } from '../../validation/string.js'; import { ConsistencyLevel } from '../data/replication.js'; -import { BatchDelete, BatchDeleteResponse, WhereFilter } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; -import { isValidStringProperty } from '../validation/string.js'; import { DeleteOutput } from './index.js'; import { buildObjectsPath } from './path.js'; diff --git a/src/batch/objectsBatcher.ts b/packages/core/src/v2/batch/objectsBatcher.ts similarity index 92% rename from src/batch/objectsBatcher.ts rename to packages/core/src/v2/batch/objectsBatcher.ts index df9d02d2..06738796 100644 --- a/src/batch/objectsBatcher.ts +++ b/packages/core/src/v2/batch/objectsBatcher.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; +import Connection from '../../connection/index.js'; +import { BatchRequest, WeaviateObject, WeaviateObjectsGet } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; import { ConsistencyLevel } from '../data/replication.js'; -import { BatchRequest, WeaviateObject, WeaviateObjectsGet } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; import { buildObjectsPath } from './path.js'; export default class ObjectsBatcher extends CommandBase { diff --git a/src/batch/path.test.ts b/packages/core/src/v2/batch/path.test.ts similarity index 100% rename from src/batch/path.test.ts rename to packages/core/src/v2/batch/path.test.ts diff --git a/src/batch/path.ts b/packages/core/src/v2/batch/path.ts similarity index 100% rename from src/batch/path.ts rename to packages/core/src/v2/batch/path.ts diff --git a/src/batch/referencePayloadBuilder.ts b/packages/core/src/v2/batch/referencePayloadBuilder.ts similarity index 88% rename from src/batch/referencePayloadBuilder.ts rename to packages/core/src/v2/batch/referencePayloadBuilder.ts index ddf76e27..9b31193b 100644 --- a/src/batch/referencePayloadBuilder.ts +++ b/packages/core/src/v2/batch/referencePayloadBuilder.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { BatchReference } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; -import { isValidStringProperty } from '../validation/string.js'; +import Connection from '../../connection/index.js'; +import { BatchReference } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; +import { isValidStringProperty } from '../../validation/string.js'; export default class ReferencesBatcher extends CommandBase { private fromClassName?: string; diff --git a/src/batch/referencesBatcher.ts b/packages/core/src/v2/batch/referencesBatcher.ts similarity index 90% rename from src/batch/referencesBatcher.ts rename to packages/core/src/v2/batch/referencesBatcher.ts index 13e89bc2..e9a5803d 100644 --- a/src/batch/referencesBatcher.ts +++ b/packages/core/src/v2/batch/referencesBatcher.ts @@ -1,8 +1,8 @@ -import Connection from '../connection/index.js'; +import Connection from '../../connection/index.js'; +import { BatchReference, BatchReferenceResponse } from '../../openapi/types.js'; +import { BeaconPath } from '../../utils/beaconPath.js'; +import { CommandBase } from '../../validation/commandBase.js'; import { ConsistencyLevel } from '../data/replication.js'; -import { BatchReference, BatchReferenceResponse } from '../openapi/types.js'; -import { BeaconPath } from '../utils/beaconPath.js'; -import { CommandBase } from '../validation/commandBase.js'; import { buildRefsPath } from './path.js'; export default class ReferencesBatcher extends CommandBase { diff --git a/src/c11y/conceptsGetter.ts b/packages/core/src/v2/c11y/conceptsGetter.ts similarity index 83% rename from src/c11y/conceptsGetter.ts rename to packages/core/src/v2/c11y/conceptsGetter.ts index e8bd7840..28181bcb 100644 --- a/src/c11y/conceptsGetter.ts +++ b/packages/core/src/v2/c11y/conceptsGetter.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { C11yWordsResponse } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { C11yWordsResponse } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; export default class ConceptsGetter extends CommandBase { private concept?: string; diff --git a/src/c11y/extensionCreator.ts b/packages/core/src/v2/c11y/extensionCreator.ts similarity index 89% rename from src/c11y/extensionCreator.ts rename to packages/core/src/v2/c11y/extensionCreator.ts index eee75ea3..127e13ce 100644 --- a/src/c11y/extensionCreator.ts +++ b/packages/core/src/v2/c11y/extensionCreator.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { C11yExtension } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { C11yExtension } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; export default class ExtensionCreator extends CommandBase { private concept?: string; diff --git a/src/c11y/index.ts b/packages/core/src/v2/c11y/index.ts similarity index 91% rename from src/c11y/index.ts rename to packages/core/src/v2/c11y/index.ts index e9ee7281..2a10a5eb 100644 --- a/src/c11y/index.ts +++ b/packages/core/src/v2/c11y/index.ts @@ -1,4 +1,4 @@ -import Connection from '../connection/index.js'; +import Connection from '../../connection/index.js'; import ConceptsGetter from './conceptsGetter.js'; import ExtensionCreator from './extensionCreator.js'; diff --git a/src/c11y/journey.test.ts b/packages/core/src/v2/c11y/journey.test.ts similarity index 90% rename from src/c11y/journey.test.ts rename to packages/core/src/v2/c11y/journey.test.ts index 5ffcfdb3..f27bd994 100644 --- a/src/c11y/journey.test.ts +++ b/packages/core/src/v2/c11y/journey.test.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ -import { C11yExtension, C11yWordsResponse } from '../openapi/types.js'; -import weaviate from '../v2/index.js'; +import { C11yExtension, C11yWordsResponse } from '../../openapi/types.js'; +import weaviate from '../../v2/index.js'; describe('c11y endpoints', () => { const client = weaviate.client({ diff --git a/src/classifications/contextual.journey.test.ts b/packages/core/src/v2/classifications/contextual.journey.test.ts similarity index 97% rename from src/classifications/contextual.journey.test.ts rename to packages/core/src/v2/classifications/contextual.journey.test.ts index 5a2f5455..e1c7dd3c 100644 --- a/src/classifications/contextual.journey.test.ts +++ b/packages/core/src/v2/classifications/contextual.journey.test.ts @@ -1,5 +1,5 @@ -import { Classification } from '../openapi/types.js'; -import weaviate from '../v2/index.js'; +import { Classification } from '../../openapi/types.js'; +import weaviate from '../../v2/index.js'; const targetDessertId = '9f399d3e-45a4-44f4-b0fd-fa291abfb211'; const targetSavoryId = 'b7a64fbd-7c22-44ac-afbb-8d1432b8061b'; diff --git a/src/classifications/getter.ts b/packages/core/src/v2/classifications/getter.ts similarity index 83% rename from src/classifications/getter.ts rename to packages/core/src/v2/classifications/getter.ts index ba06739c..a890356c 100644 --- a/src/classifications/getter.ts +++ b/packages/core/src/v2/classifications/getter.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { Classification } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { Classification } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; export default class ClassificationsGetter extends CommandBase { private id?: string; diff --git a/src/classifications/index.ts b/packages/core/src/v2/classifications/index.ts similarity index 91% rename from src/classifications/index.ts rename to packages/core/src/v2/classifications/index.ts index 21708781..4c4335e2 100644 --- a/src/classifications/index.ts +++ b/packages/core/src/v2/classifications/index.ts @@ -1,4 +1,4 @@ -import Connection from '../connection/index.js'; +import Connection from '../../connection/index.js'; import ClassificationsGetter from './getter.js'; import ClassificationsScheduler from './scheduler.js'; diff --git a/src/classifications/knn.journey.test.ts b/packages/core/src/v2/classifications/knn.journey.test.ts similarity index 98% rename from src/classifications/knn.journey.test.ts rename to packages/core/src/v2/classifications/knn.journey.test.ts index 2d8ee246..5b25008c 100644 --- a/src/classifications/knn.journey.test.ts +++ b/packages/core/src/v2/classifications/knn.journey.test.ts @@ -1,5 +1,5 @@ -import { Classification } from '../openapi/types.js'; -import weaviate, { WeaviateClient } from '../v2/index.js'; +import { Classification } from '../../openapi/types.js'; +import weaviate, { WeaviateClient } from '../../v2/index.js'; const targetDessertId = 'cd54852a-209d-423b-bf1c-884468215237'; const targetSavoryId = 'e5da0127-327e-4184-85b8-7b9d1af4a850'; diff --git a/src/classifications/scheduler.ts b/packages/core/src/v2/classifications/scheduler.ts similarity index 95% rename from src/classifications/scheduler.ts rename to packages/core/src/v2/classifications/scheduler.ts index a46045e3..fcfddcb8 100644 --- a/src/classifications/scheduler.ts +++ b/packages/core/src/v2/classifications/scheduler.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { Classification } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { Classification } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; import ClassificationsGetter from './getter.js'; export default class ClassificationsScheduler extends CommandBase { diff --git a/src/cluster/index.ts b/packages/core/src/v2/cluster/index.ts similarity index 89% rename from src/cluster/index.ts rename to packages/core/src/v2/cluster/index.ts index a26567a2..cb321d7d 100644 --- a/src/cluster/index.ts +++ b/packages/core/src/v2/cluster/index.ts @@ -1,4 +1,4 @@ -import Connection from '../connection/index.js'; +import Connection from '../../connection/index.js'; import NodesStatusGetter from './nodesStatusGetter.js'; export type NodeStatus = 'HEALTHY' | 'UNHEALTHY' | 'UNAVAILABLE'; diff --git a/src/cluster/nodesStatusGetter.ts b/packages/core/src/v2/cluster/nodesStatusGetter.ts similarity index 80% rename from src/cluster/nodesStatusGetter.ts rename to packages/core/src/v2/cluster/nodesStatusGetter.ts index b29ed7a2..bed73291 100644 --- a/src/cluster/nodesStatusGetter.ts +++ b/packages/core/src/v2/cluster/nodesStatusGetter.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { NodesStatusResponse } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { NodesStatusResponse } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; export default class NodesStatusGetter extends CommandBase { private className?: string; diff --git a/src/data/checker.ts b/packages/core/src/v2/data/checker.ts similarity index 93% rename from src/data/checker.ts rename to packages/core/src/v2/data/checker.ts index 2e824732..515b4059 100644 --- a/src/data/checker.ts +++ b/packages/core/src/v2/data/checker.ts @@ -1,5 +1,5 @@ -import Connection from '../connection/index.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { CommandBase } from '../../validation/commandBase.js'; import { ObjectsPath } from './path.js'; import { ConsistencyLevel } from './replication.js'; diff --git a/src/data/creator.ts b/packages/core/src/v2/data/creator.ts similarity index 89% rename from src/data/creator.ts rename to packages/core/src/v2/data/creator.ts index a22912da..0c8120ce 100644 --- a/src/data/creator.ts +++ b/packages/core/src/v2/data/creator.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { Properties, WeaviateObject } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; -import { isValidStringProperty } from '../validation/string.js'; +import Connection from '../../connection/index.js'; +import { Properties, WeaviateObject } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; +import { isValidStringProperty } from '../../validation/string.js'; import { ObjectsPath } from './path.js'; import { ConsistencyLevel } from './replication.js'; diff --git a/src/data/deleter.ts b/packages/core/src/v2/data/deleter.ts similarity index 93% rename from src/data/deleter.ts rename to packages/core/src/v2/data/deleter.ts index 93cc070d..5f8ef2e3 100644 --- a/src/data/deleter.ts +++ b/packages/core/src/v2/data/deleter.ts @@ -1,5 +1,5 @@ -import Connection from '../connection/index.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { CommandBase } from '../../validation/commandBase.js'; import { ObjectsPath } from './path.js'; import { ConsistencyLevel } from './replication.js'; diff --git a/src/data/getter.ts b/packages/core/src/v2/data/getter.ts similarity index 88% rename from src/data/getter.ts rename to packages/core/src/v2/data/getter.ts index e6c5b441..4d004ecc 100644 --- a/src/data/getter.ts +++ b/packages/core/src/v2/data/getter.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { WeaviateObjectsList } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { WeaviateObjectsList } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; import { ObjectsPath } from './path.js'; export default class Getter extends CommandBase { diff --git a/src/data/getterById.ts b/packages/core/src/v2/data/getterById.ts similarity index 91% rename from src/data/getterById.ts rename to packages/core/src/v2/data/getterById.ts index 6b0df240..ecec2f8d 100644 --- a/src/data/getterById.ts +++ b/packages/core/src/v2/data/getterById.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { WeaviateObject } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { WeaviateObject } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; import { ObjectsPath } from './path.js'; import { ConsistencyLevel } from './replication.js'; diff --git a/src/data/index.ts b/packages/core/src/v2/data/index.ts similarity index 94% rename from src/data/index.ts rename to packages/core/src/v2/data/index.ts index c0161027..22542809 100644 --- a/src/data/index.ts +++ b/packages/core/src/v2/data/index.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { BeaconPath } from '../utils/beaconPath.js'; -import { DbVersionSupport } from '../utils/dbVersion.js'; +import Connection from '../../connection/index.js'; +import { BeaconPath } from '../../utils/beaconPath.js'; +import { DbVersionSupport } from '../../utils/dbVersion.js'; import Checker from './checker.js'; import Creator from './creator.js'; import Deleter from './deleter.js'; diff --git a/src/data/journey.test.ts b/packages/core/src/v2/data/journey.test.ts similarity index 99% rename from src/data/journey.test.ts rename to packages/core/src/v2/data/journey.test.ts index d29e8278..8c29bdf6 100644 --- a/src/data/journey.test.ts +++ b/packages/core/src/v2/data/journey.test.ts @@ -6,8 +6,8 @@ import { WeaviateError, WeaviateObject, WeaviateObjectsList, -} from '../openapi/types.js'; -import weaviate, { WeaviateClient } from '../v2/index.js'; +} from '../../openapi/types.js'; +import weaviate, { WeaviateClient } from '../../v2/index.js'; const thingClassName = 'DataJourneyTestThing'; const refSourceClassName = 'DataJourneyTestRefSource'; diff --git a/src/data/merger.ts b/packages/core/src/v2/data/merger.ts similarity index 87% rename from src/data/merger.ts rename to packages/core/src/v2/data/merger.ts index 2d62024f..0714fe64 100644 --- a/src/data/merger.ts +++ b/packages/core/src/v2/data/merger.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { Properties, WeaviateObject } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; -import { isValidStringProperty } from '../validation/string.js'; +import Connection from '../../connection/index.js'; +import { Properties, WeaviateObject } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; +import { isValidStringProperty } from '../../validation/string.js'; import { ObjectsPath } from './path.js'; import { ConsistencyLevel } from './replication.js'; diff --git a/src/data/path.test.ts b/packages/core/src/v2/data/path.test.ts similarity index 94% rename from src/data/path.test.ts rename to packages/core/src/v2/data/path.test.ts index a2b605d4..e1b0ca36 100644 --- a/src/data/path.test.ts +++ b/packages/core/src/v2/data/path.test.ts @@ -1,5 +1,5 @@ -import { TestDbVersionProvider } from '../../test/dbVersionProvider.js'; -import { DbVersionSupport } from '../utils/dbVersion.js'; +import { TestDbVersionProvider } from '../../../../test/dbVersionProvider.js'; +import { DbVersionSupport } from '../../utils/dbVersion.js'; import { ObjectsPath, ReferencesPath } from './path.js'; // This can be anything > 1.14.2, to support class-namespaced urls. diff --git a/src/data/path.ts b/packages/core/src/v2/data/path.ts similarity index 97% rename from src/data/path.ts rename to packages/core/src/v2/data/path.ts index 871c33d4..a5250a43 100644 --- a/src/data/path.ts +++ b/packages/core/src/v2/data/path.ts @@ -1,6 +1,6 @@ -import { DbVersionSupport } from '../utils/dbVersion.js'; -import { isValidStringProperty } from '../validation/string.js'; -import { isValidWeaviateVersion } from '../validation/version.js'; +import { DbVersionSupport } from '../../utils/dbVersion.js'; +import { isValidStringProperty } from '../../validation/string.js'; +import { isValidWeaviateVersion } from '../../validation/version.js'; import { ConsistencyLevel } from './replication.js'; const objectsPathPrefix = '/objects'; diff --git a/src/data/referenceCreator.ts b/packages/core/src/v2/data/referenceCreator.ts similarity index 90% rename from src/data/referenceCreator.ts rename to packages/core/src/v2/data/referenceCreator.ts index b99888e7..8788d28b 100644 --- a/src/data/referenceCreator.ts +++ b/packages/core/src/v2/data/referenceCreator.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { Reference } from '../openapi/types.js'; -import { BeaconPath } from '../utils/beaconPath.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { Reference } from '../../openapi/types.js'; +import { BeaconPath } from '../../utils/beaconPath.js'; +import { CommandBase } from '../../validation/commandBase.js'; import { ReferencesPath } from './path.js'; import { ConsistencyLevel } from './replication.js'; diff --git a/src/data/referenceDeleter.ts b/packages/core/src/v2/data/referenceDeleter.ts similarity index 90% rename from src/data/referenceDeleter.ts rename to packages/core/src/v2/data/referenceDeleter.ts index 667e5e10..9d08da6c 100644 --- a/src/data/referenceDeleter.ts +++ b/packages/core/src/v2/data/referenceDeleter.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { Reference } from '../openapi/types.js'; -import { BeaconPath } from '../utils/beaconPath.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { Reference } from '../../openapi/types.js'; +import { BeaconPath } from '../../utils/beaconPath.js'; +import { CommandBase } from '../../validation/commandBase.js'; import { ReferencesPath } from './path.js'; import { ConsistencyLevel } from './replication.js'; diff --git a/src/data/referencePayloadBuilder.ts b/packages/core/src/v2/data/referencePayloadBuilder.ts similarity index 82% rename from src/data/referencePayloadBuilder.ts rename to packages/core/src/v2/data/referencePayloadBuilder.ts index 6822d7c0..9c91152c 100644 --- a/src/data/referencePayloadBuilder.ts +++ b/packages/core/src/v2/data/referencePayloadBuilder.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { Reference } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; -import { isValidStringProperty } from '../validation/string.js'; +import Connection from '../../connection/index.js'; +import { Reference } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; +import { isValidStringProperty } from '../../validation/string.js'; export default class ReferencePayloadBuilder extends CommandBase { private className?: string; diff --git a/src/data/referenceReplacer.ts b/packages/core/src/v2/data/referenceReplacer.ts similarity index 91% rename from src/data/referenceReplacer.ts rename to packages/core/src/v2/data/referenceReplacer.ts index 98b2e29d..f694e309 100644 --- a/src/data/referenceReplacer.ts +++ b/packages/core/src/v2/data/referenceReplacer.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { Reference } from '../openapi/types.js'; -import { BeaconPath } from '../utils/beaconPath.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { Reference } from '../../openapi/types.js'; +import { BeaconPath } from '../../utils/beaconPath.js'; +import { CommandBase } from '../../validation/commandBase.js'; import { ReferencesPath } from './path.js'; import { ConsistencyLevel } from './replication.js'; diff --git a/packages/core/src/v2/data/replication.ts b/packages/core/src/v2/data/replication.ts new file mode 100644 index 00000000..67600eb6 --- /dev/null +++ b/packages/core/src/v2/data/replication.ts @@ -0,0 +1 @@ +export type ConsistencyLevel = 'ALL' | 'ONE' | 'QUORUM'; diff --git a/src/data/updater.ts b/packages/core/src/v2/data/updater.ts similarity index 90% rename from src/data/updater.ts rename to packages/core/src/v2/data/updater.ts index 39cf0365..9fb27377 100644 --- a/src/data/updater.ts +++ b/packages/core/src/v2/data/updater.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { Properties, WeaviateObject } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; -import { isValidStringProperty } from '../validation/string.js'; +import Connection from '../../connection/index.js'; +import { Properties, WeaviateObject } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; +import { isValidStringProperty } from '../../validation/string.js'; import { ObjectsPath } from './path.js'; import { ConsistencyLevel } from './replication.js'; diff --git a/src/data/validator.ts b/packages/core/src/v2/data/validator.ts similarity index 82% rename from src/data/validator.ts rename to packages/core/src/v2/data/validator.ts index ff6e6d34..e18ea674 100644 --- a/src/data/validator.ts +++ b/packages/core/src/v2/data/validator.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { Properties } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; -import { isValidStringProperty } from '../validation/string.js'; +import Connection from '../../connection/index.js'; +import { Properties } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; +import { isValidStringProperty } from '../../validation/string.js'; export default class Validator extends CommandBase { private className?: string; diff --git a/src/graphql/aggregator.ts b/packages/core/src/v2/graphql/aggregator.ts similarity index 96% rename from src/graphql/aggregator.ts rename to packages/core/src/v2/graphql/aggregator.ts index 1ec2b838..f46a705a 100644 --- a/src/graphql/aggregator.ts +++ b/packages/core/src/v2/graphql/aggregator.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { WhereFilter } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; -import { isValidPositiveIntProperty } from '../validation/number.js'; +import Connection from '../../connection/index.js'; +import { WhereFilter } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; +import { isValidPositiveIntProperty } from '../../validation/number.js'; import Hybrid, { HybridArgs } from './hybrid.js'; import NearMedia, { NearAudioArgs, diff --git a/src/graphql/ask.ts b/packages/core/src/v2/graphql/ask.ts similarity index 100% rename from src/graphql/ask.ts rename to packages/core/src/v2/graphql/ask.ts diff --git a/src/graphql/bm25.ts b/packages/core/src/v2/graphql/bm25.ts similarity index 100% rename from src/graphql/bm25.ts rename to packages/core/src/v2/graphql/bm25.ts diff --git a/src/graphql/explorer.ts b/packages/core/src/v2/graphql/explorer.ts similarity index 97% rename from src/graphql/explorer.ts rename to packages/core/src/v2/graphql/explorer.ts index 6854b1d6..683c787c 100644 --- a/src/graphql/explorer.ts +++ b/packages/core/src/v2/graphql/explorer.ts @@ -1,5 +1,5 @@ -import Connection from '../connection/index.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { CommandBase } from '../../validation/commandBase.js'; import Ask, { AskArgs } from './ask.js'; import NearImage, { NearImageArgs } from './nearImage.js'; import NearMedia, { diff --git a/src/graphql/generate.ts b/packages/core/src/v2/graphql/generate.ts similarity index 100% rename from src/graphql/generate.ts rename to packages/core/src/v2/graphql/generate.ts diff --git a/src/graphql/getter.test.ts b/packages/core/src/v2/graphql/getter.test.ts similarity index 99% rename from src/graphql/getter.test.ts rename to packages/core/src/v2/graphql/getter.test.ts index 4ff90f51..123bba29 100644 --- a/src/graphql/getter.test.ts +++ b/packages/core/src/v2/graphql/getter.test.ts @@ -1,4 +1,4 @@ -import { WhereFilter } from '../openapi/types.js'; +import { WhereFilter } from '../../openapi/types.js'; import { AskArgs } from './ask.js'; import Getter, { FusionType } from './getter.js'; import { NearImageArgs } from './nearImage.js'; diff --git a/src/graphql/getter.ts b/packages/core/src/v2/graphql/getter.ts similarity index 97% rename from src/graphql/getter.ts rename to packages/core/src/v2/graphql/getter.ts index 1f57d209..690b22b5 100644 --- a/src/graphql/getter.ts +++ b/packages/core/src/v2/graphql/getter.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { ConsistencyLevel } from '../data/index.js'; -import { WhereFilter } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { WhereFilter } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; +import { ConsistencyLevel } from '../data/replication.js'; import Ask, { AskArgs } from './ask.js'; import Bm25, { Bm25Args } from './bm25.js'; import { GenerateArgs, GraphQLGenerate } from './generate.js'; diff --git a/src/graphql/group.ts b/packages/core/src/v2/graphql/group.ts similarity index 100% rename from src/graphql/group.ts rename to packages/core/src/v2/graphql/group.ts diff --git a/src/graphql/groupBy.ts b/packages/core/src/v2/graphql/groupBy.ts similarity index 100% rename from src/graphql/groupBy.ts rename to packages/core/src/v2/graphql/groupBy.ts diff --git a/src/graphql/hybrid.ts b/packages/core/src/v2/graphql/hybrid.ts similarity index 100% rename from src/graphql/hybrid.ts rename to packages/core/src/v2/graphql/hybrid.ts diff --git a/src/graphql/index.ts b/packages/core/src/v2/graphql/index.ts similarity index 93% rename from src/graphql/index.ts rename to packages/core/src/v2/graphql/index.ts index 298ef296..ce0e6aa8 100644 --- a/src/graphql/index.ts +++ b/packages/core/src/v2/graphql/index.ts @@ -1,4 +1,4 @@ -import Connection from '../connection/index.js'; +import Connection from '../../connection/index.js'; import Aggregator from './aggregator.js'; import Explorer from './explorer.js'; import GraphQLGetter from './getter.js'; diff --git a/src/graphql/journey.test.ts b/packages/core/src/v2/graphql/journey.test.ts similarity index 99% rename from src/graphql/journey.test.ts rename to packages/core/src/v2/graphql/journey.test.ts index c3dde018..fa66c595 100644 --- a/src/graphql/journey.test.ts +++ b/packages/core/src/v2/graphql/journey.test.ts @@ -9,7 +9,7 @@ import weaviate, { WeaviateError, WeaviateObject, WhereFilter, -} from '../v2/index.js'; +} from '../../v2/index.js'; import { FusionType } from './hybrid.js'; describe('the graphql journey', () => { diff --git a/src/graphql/nearImage.ts b/packages/core/src/v2/graphql/nearImage.ts similarity index 100% rename from src/graphql/nearImage.ts rename to packages/core/src/v2/graphql/nearImage.ts diff --git a/src/graphql/nearMedia.ts b/packages/core/src/v2/graphql/nearMedia.ts similarity index 100% rename from src/graphql/nearMedia.ts rename to packages/core/src/v2/graphql/nearMedia.ts diff --git a/src/graphql/nearObject.ts b/packages/core/src/v2/graphql/nearObject.ts similarity index 100% rename from src/graphql/nearObject.ts rename to packages/core/src/v2/graphql/nearObject.ts diff --git a/src/graphql/nearText.ts b/packages/core/src/v2/graphql/nearText.ts similarity index 100% rename from src/graphql/nearText.ts rename to packages/core/src/v2/graphql/nearText.ts diff --git a/src/graphql/nearVector.ts b/packages/core/src/v2/graphql/nearVector.ts similarity index 100% rename from src/graphql/nearVector.ts rename to packages/core/src/v2/graphql/nearVector.ts diff --git a/src/graphql/raw.test.ts b/packages/core/src/v2/graphql/raw.test.ts similarity index 100% rename from src/graphql/raw.test.ts rename to packages/core/src/v2/graphql/raw.test.ts diff --git a/src/graphql/raw.ts b/packages/core/src/v2/graphql/raw.ts similarity index 88% rename from src/graphql/raw.ts rename to packages/core/src/v2/graphql/raw.ts index 689328c7..b68619cc 100644 --- a/src/graphql/raw.ts +++ b/packages/core/src/v2/graphql/raw.ts @@ -1,5 +1,5 @@ -import Connection from '../connection/index.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { CommandBase } from '../../validation/commandBase.js'; export default class RawGraphQL extends CommandBase { private query?: string; diff --git a/src/graphql/sort.ts b/packages/core/src/v2/graphql/sort.ts similarity index 100% rename from src/graphql/sort.ts rename to packages/core/src/v2/graphql/sort.ts diff --git a/src/graphql/where.ts b/packages/core/src/v2/graphql/where.ts similarity index 98% rename from src/graphql/where.ts rename to packages/core/src/v2/graphql/where.ts index 17531098..cdbc9235 100644 --- a/src/graphql/where.ts +++ b/packages/core/src/v2/graphql/where.ts @@ -1,4 +1,4 @@ -import { WhereFilter } from '../openapi/types.js'; +import { WhereFilter } from '../../openapi/types.js'; export default class GraphQLWhere { private operands?: string; diff --git a/src/v2/index.ts b/packages/core/src/v2/index.ts similarity index 70% rename from src/v2/index.ts rename to packages/core/src/v2/index.ts index 57c0e51b..79561ccc 100644 --- a/src/v2/index.ts +++ b/packages/core/src/v2/index.ts @@ -1,8 +1,3 @@ -import backup, { Backup } from '../backup/index.js'; -import batch, { Batch } from '../batch/index.js'; -import c11y, { C11y } from '../c11y/index.js'; -import classifications, { Classifications } from '../classifications/index.js'; -import cluster, { Cluster } from '../cluster/index.js'; import { ApiKey, AuthAccessTokenCredentials, @@ -11,12 +6,17 @@ import { OidcAuthenticator, } from '../connection/auth.js'; import { ConnectionGQL, InternalConnectionParams as ConnectionParams } from '../connection/index.js'; -import data, { Data } from '../data/index.js'; -import graphql, { GraphQL } from '../graphql/index.js'; -import misc, { Misc } from '../misc/index.js'; -import MetaGetter from '../misc/metaGetter.js'; -import schema, { Schema } from '../schema/index.js'; import { DbVersionProvider, DbVersionSupport } from '../utils/dbVersion.js'; +import backup, { Backup } from './backup/index.js'; +import batch, { Batch } from './batch/index.js'; +import c11y, { C11y } from './c11y/index.js'; +import classifications, { Classifications } from './classifications/index.js'; +import cluster, { Cluster } from './cluster/index.js'; +import data, { Data } from './data/index.js'; +import graphql, { GraphQL } from './graphql/index.js'; +import misc, { Misc } from './misc/index.js'; +import MetaGetter from './misc/metaGetter.js'; +import schema, { Schema } from './schema/index.js'; export interface WeaviateClient { graphql: GraphQL; @@ -82,16 +82,16 @@ function initDbVersionProvider(conn: ConnectionGQL) { } export default app; -export * from '../backup/index.js'; -export * from '../batch/index.js'; -export * from '../c11y/index.js'; -export * from '../classifications/index.js'; -export * from '../cluster/index.js'; export * from '../connection/index.js'; -export * from '../data/index.js'; -export * from '../graphql/index.js'; -export * from '../misc/index.js'; export * from '../openapi/types.js'; -export * from '../schema/index.js'; export * from '../utils/base64.js'; export * from '../utils/uuid.js'; +export * from './backup/index.js'; +export * from './batch/index.js'; +export * from './c11y/index.js'; +export * from './classifications/index.js'; +export * from './cluster/index.js'; +export * from './data/index.js'; +export * from './graphql/index.js'; +export * from './misc/index.js'; +export * from './schema/index.js'; diff --git a/src/misc/index.ts b/packages/core/src/v2/misc/index.ts similarity index 90% rename from src/misc/index.ts rename to packages/core/src/v2/misc/index.ts index ffe68035..c97fff75 100644 --- a/src/misc/index.ts +++ b/packages/core/src/v2/misc/index.ts @@ -1,5 +1,5 @@ -import Connection from '../connection/index.js'; -import { DbVersionProvider } from '../utils/dbVersion.js'; +import Connection from '../../connection/index.js'; +import { DbVersionProvider } from '../../utils/dbVersion.js'; import LiveChecker from './liveChecker.js'; import MetaGetter from './metaGetter.js'; import OpenidConfigurationGetter from './openidConfigurationGetter.js'; diff --git a/src/misc/journey.test.ts b/packages/core/src/v2/misc/journey.test.ts similarity index 98% rename from src/misc/journey.test.ts rename to packages/core/src/v2/misc/journey.test.ts index 4959f639..b2bf6259 100644 --- a/src/misc/journey.test.ts +++ b/packages/core/src/v2/misc/journey.test.ts @@ -1,4 +1,4 @@ -import weaviate from '../v2/index.js'; +import weaviate from '../../v2/index.js'; describe('misc endpoints', () => { const client = weaviate.client({ diff --git a/src/misc/liveChecker.ts b/packages/core/src/v2/misc/liveChecker.ts similarity index 75% rename from src/misc/liveChecker.ts rename to packages/core/src/v2/misc/liveChecker.ts index efc172f8..ea88f939 100644 --- a/src/misc/liveChecker.ts +++ b/packages/core/src/v2/misc/liveChecker.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { DbVersionProvider } from '../utils/dbVersion.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { DbVersionProvider } from '../../utils/dbVersion.js'; +import { CommandBase } from '../../validation/commandBase.js'; export default class LiveChecker extends CommandBase { private dbVersionProvider: DbVersionProvider; diff --git a/src/misc/metaGetter.ts b/packages/core/src/v2/misc/metaGetter.ts similarity index 59% rename from src/misc/metaGetter.ts rename to packages/core/src/v2/misc/metaGetter.ts index 9c020da4..f483beb0 100644 --- a/src/misc/metaGetter.ts +++ b/packages/core/src/v2/misc/metaGetter.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { Meta } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { Meta } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; export default class MetaGetter extends CommandBase { constructor(client: Connection) { diff --git a/src/misc/openidConfigurationGetter.ts b/packages/core/src/v2/misc/openidConfigurationGetter.ts similarity index 91% rename from src/misc/openidConfigurationGetter.ts rename to packages/core/src/v2/misc/openidConfigurationGetter.ts index 8239243d..d3dfe2ae 100644 --- a/src/misc/openidConfigurationGetter.ts +++ b/packages/core/src/v2/misc/openidConfigurationGetter.ts @@ -1,4 +1,4 @@ -import { HttpClient } from '../connection/http.js'; +import { HttpClient } from '../../connection/http.js'; export default class OpenidConfigurationGetterGetter { private client: HttpClient; diff --git a/src/misc/readyChecker.ts b/packages/core/src/v2/misc/readyChecker.ts similarity index 75% rename from src/misc/readyChecker.ts rename to packages/core/src/v2/misc/readyChecker.ts index 8831f6c5..74f5b774 100644 --- a/src/misc/readyChecker.ts +++ b/packages/core/src/v2/misc/readyChecker.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { DbVersionProvider } from '../utils/dbVersion.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { DbVersionProvider } from '../../utils/dbVersion.js'; +import { CommandBase } from '../../validation/commandBase.js'; export default class ReadyChecker extends CommandBase { private dbVersionProvider: DbVersionProvider; diff --git a/src/schema/classCreator.ts b/packages/core/src/v2/schema/classCreator.ts similarity index 81% rename from src/schema/classCreator.ts rename to packages/core/src/v2/schema/classCreator.ts index 7a74cb09..5148c967 100644 --- a/src/schema/classCreator.ts +++ b/packages/core/src/v2/schema/classCreator.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { WeaviateClass } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { WeaviateClass } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; export default class ClassCreator extends CommandBase { private class!: WeaviateClass; diff --git a/src/schema/classDeleter.ts b/packages/core/src/v2/schema/classDeleter.ts similarity index 80% rename from src/schema/classDeleter.ts rename to packages/core/src/v2/schema/classDeleter.ts index 149c076b..5cff742e 100644 --- a/src/schema/classDeleter.ts +++ b/packages/core/src/v2/schema/classDeleter.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { CommandBase } from '../validation/commandBase.js'; -import { isValidStringProperty } from '../validation/string.js'; +import Connection from '../../connection/index.js'; +import { CommandBase } from '../../validation/commandBase.js'; +import { isValidStringProperty } from '../../validation/string.js'; export default class ClassDeleter extends CommandBase { private className?: string; diff --git a/src/schema/classExists.ts b/packages/core/src/v2/schema/classExists.ts similarity index 77% rename from src/schema/classExists.ts rename to packages/core/src/v2/schema/classExists.ts index 114e440d..7e0ce50e 100644 --- a/src/schema/classExists.ts +++ b/packages/core/src/v2/schema/classExists.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { WeaviateSchema } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; -import { isValidStringProperty } from '../validation/string.js'; +import Connection from '../../connection/index.js'; +import { WeaviateSchema } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; +import { isValidStringProperty } from '../../validation/string.js'; export default class ClassExists extends CommandBase { private className?: string; diff --git a/src/schema/classGetter.ts b/packages/core/src/v2/schema/classGetter.ts similarity index 75% rename from src/schema/classGetter.ts rename to packages/core/src/v2/schema/classGetter.ts index 80e329e9..a4e90e2f 100644 --- a/src/schema/classGetter.ts +++ b/packages/core/src/v2/schema/classGetter.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { WeaviateClass } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; -import { isValidStringProperty } from '../validation/string.js'; +import Connection from '../../connection/index.js'; +import { WeaviateClass } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; +import { isValidStringProperty } from '../../validation/string.js'; export default class ClassGetter extends CommandBase { private className?: string; diff --git a/src/schema/classUpdater.ts b/packages/core/src/v2/schema/classUpdater.ts similarity index 81% rename from src/schema/classUpdater.ts rename to packages/core/src/v2/schema/classUpdater.ts index 2c0ebb4d..70b2a2ad 100644 --- a/src/schema/classUpdater.ts +++ b/packages/core/src/v2/schema/classUpdater.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { WeaviateClass } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { WeaviateClass } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; export default class ClassUpdater extends CommandBase { private class!: WeaviateClass; diff --git a/src/schema/deleteAll.ts b/packages/core/src/v2/schema/deleteAll.ts similarity index 89% rename from src/schema/deleteAll.ts rename to packages/core/src/v2/schema/deleteAll.ts index 24f4ed90..b5445393 100644 --- a/src/schema/deleteAll.ts +++ b/packages/core/src/v2/schema/deleteAll.ts @@ -1,4 +1,4 @@ -import Connection from '../connection/index.js'; +import Connection from '../../connection/index.js'; import ClassDeleter from './classDeleter.js'; import SchemaGetter from './getter.js'; diff --git a/src/schema/getter.ts b/packages/core/src/v2/schema/getter.ts similarity index 69% rename from src/schema/getter.ts rename to packages/core/src/v2/schema/getter.ts index 3a43eccc..63cee0ed 100644 --- a/src/schema/getter.ts +++ b/packages/core/src/v2/schema/getter.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { WeaviateSchema } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { WeaviateSchema } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; export default class SchemaGetter extends CommandBase { constructor(client: Connection) { diff --git a/src/schema/index.ts b/packages/core/src/v2/schema/index.ts similarity index 97% rename from src/schema/index.ts rename to packages/core/src/v2/schema/index.ts index 94e1db63..c7b463ab 100644 --- a/src/schema/index.ts +++ b/packages/core/src/v2/schema/index.ts @@ -1,5 +1,5 @@ -import Connection from '../connection/index.js'; -import { Tenant } from '../openapi/types.js'; +import Connection from '../../connection/index.js'; +import { Tenant } from '../../openapi/types.js'; import ClassCreator from './classCreator.js'; import ClassDeleter from './classDeleter.js'; import ClassExists from './classExists.js'; diff --git a/src/schema/journey.test.ts b/packages/core/src/v2/schema/journey.test.ts similarity index 99% rename from src/schema/journey.test.ts rename to packages/core/src/v2/schema/journey.test.ts index eb67dc5f..fcc3ee2d 100644 --- a/src/schema/journey.test.ts +++ b/packages/core/src/v2/schema/journey.test.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ -import { Meta, Property, ShardStatus, ShardStatusList, Tenant, WeaviateClass } from '../openapi/types.js'; -import weaviate, { WeaviateClient } from '../v2/index.js'; +import { Meta, Property, ShardStatus, ShardStatusList, Tenant, WeaviateClass } from '../../openapi/types.js'; +import weaviate, { WeaviateClient } from '../../v2/index.js'; const isVer = (client: WeaviateClient, minor: number, patch: number) => client.misc diff --git a/src/schema/propertyCreator.ts b/packages/core/src/v2/schema/propertyCreator.ts similarity index 82% rename from src/schema/propertyCreator.ts rename to packages/core/src/v2/schema/propertyCreator.ts index 4c1f2d82..a06eb9fc 100644 --- a/src/schema/propertyCreator.ts +++ b/packages/core/src/v2/schema/propertyCreator.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { Property } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; -import { isValidStringProperty } from '../validation/string.js'; +import Connection from '../../connection/index.js'; +import { Property } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; +import { isValidStringProperty } from '../../validation/string.js'; export default class PropertyCreator extends CommandBase { private className!: string; diff --git a/src/schema/shardUpdater.ts b/packages/core/src/v2/schema/shardUpdater.ts similarity index 89% rename from src/schema/shardUpdater.ts rename to packages/core/src/v2/schema/shardUpdater.ts index dbebbdd9..87d12309 100644 --- a/src/schema/shardUpdater.ts +++ b/packages/core/src/v2/schema/shardUpdater.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { CommandBase } from '../validation/commandBase.js'; -import { isValidStringProperty } from '../validation/string.js'; +import Connection from '../../connection/index.js'; +import { CommandBase } from '../../validation/commandBase.js'; +import { isValidStringProperty } from '../../validation/string.js'; export default class ShardUpdater extends CommandBase { private className!: string; diff --git a/src/schema/shardsGetter.ts b/packages/core/src/v2/schema/shardsGetter.ts similarity index 81% rename from src/schema/shardsGetter.ts rename to packages/core/src/v2/schema/shardsGetter.ts index bce06794..cb4e349d 100644 --- a/src/schema/shardsGetter.ts +++ b/packages/core/src/v2/schema/shardsGetter.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { ShardStatusList } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; -import { isValidStringProperty } from '../validation/string.js'; +import Connection from '../../connection/index.js'; +import { ShardStatusList } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; +import { isValidStringProperty } from '../../validation/string.js'; export default class ShardsGetter extends CommandBase { private className?: string; diff --git a/src/schema/shardsUpdater.ts b/packages/core/src/v2/schema/shardsUpdater.ts similarity index 89% rename from src/schema/shardsUpdater.ts rename to packages/core/src/v2/schema/shardsUpdater.ts index 83b5ec5c..a55b7f14 100644 --- a/src/schema/shardsUpdater.ts +++ b/packages/core/src/v2/schema/shardsUpdater.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { ShardStatusList } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; -import { isValidStringProperty } from '../validation/string.js'; +import Connection from '../../connection/index.js'; +import { ShardStatusList } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; +import { isValidStringProperty } from '../../validation/string.js'; import { updateShard } from './shardUpdater.js'; import { getShards } from './shardsGetter.js'; diff --git a/src/schema/tenantsCreator.ts b/packages/core/src/v2/schema/tenantsCreator.ts similarity index 74% rename from src/schema/tenantsCreator.ts rename to packages/core/src/v2/schema/tenantsCreator.ts index a2514738..115f13ff 100644 --- a/src/schema/tenantsCreator.ts +++ b/packages/core/src/v2/schema/tenantsCreator.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { Tenant } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { Tenant } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; export default class TenantsCreator extends CommandBase { private className: string; diff --git a/src/schema/tenantsDeleter.ts b/packages/core/src/v2/schema/tenantsDeleter.ts similarity index 80% rename from src/schema/tenantsDeleter.ts rename to packages/core/src/v2/schema/tenantsDeleter.ts index c929265e..ccc312d3 100644 --- a/src/schema/tenantsDeleter.ts +++ b/packages/core/src/v2/schema/tenantsDeleter.ts @@ -1,5 +1,5 @@ -import Connection from '../connection/index.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { CommandBase } from '../../validation/commandBase.js'; export default class TenantsDeleter extends CommandBase { private className: string; diff --git a/src/schema/tenantsExists.ts b/packages/core/src/v2/schema/tenantsExists.ts similarity index 79% rename from src/schema/tenantsExists.ts rename to packages/core/src/v2/schema/tenantsExists.ts index 752d578a..2aae2312 100644 --- a/src/schema/tenantsExists.ts +++ b/packages/core/src/v2/schema/tenantsExists.ts @@ -1,5 +1,5 @@ -import Connection from '../connection/index.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { CommandBase } from '../../validation/commandBase.js'; export default class TenantsExists extends CommandBase { private className: string; diff --git a/src/schema/tenantsGetter.ts b/packages/core/src/v2/schema/tenantsGetter.ts similarity index 68% rename from src/schema/tenantsGetter.ts rename to packages/core/src/v2/schema/tenantsGetter.ts index 1733a4fa..ad9acd18 100644 --- a/src/schema/tenantsGetter.ts +++ b/packages/core/src/v2/schema/tenantsGetter.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { Tenant } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { Tenant } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; export default class TenantsGetter extends CommandBase { private className: string; diff --git a/src/schema/tenantsUpdater.ts b/packages/core/src/v2/schema/tenantsUpdater.ts similarity index 73% rename from src/schema/tenantsUpdater.ts rename to packages/core/src/v2/schema/tenantsUpdater.ts index db38ad4f..59a8ce47 100644 --- a/src/schema/tenantsUpdater.ts +++ b/packages/core/src/v2/schema/tenantsUpdater.ts @@ -1,6 +1,6 @@ -import Connection from '../connection/index.js'; -import { Tenant } from '../openapi/types.js'; -import { CommandBase } from '../validation/commandBase.js'; +import Connection from '../../connection/index.js'; +import { Tenant } from '../../openapi/types.js'; +import { CommandBase } from '../../validation/commandBase.js'; export default class TenantsUpdater extends CommandBase { private className: string; diff --git a/src/schema/vectorAdder.ts b/packages/core/src/v2/schema/vectorAdder.ts similarity index 85% rename from src/schema/vectorAdder.ts rename to packages/core/src/v2/schema/vectorAdder.ts index ccdd494e..83e6d691 100644 --- a/src/schema/vectorAdder.ts +++ b/packages/core/src/v2/schema/vectorAdder.ts @@ -1,7 +1,7 @@ -import Connection from '../connection/index.js'; -import { VectorConfig } from '../index.js'; -import { CommandBase } from '../validation/commandBase.js'; -import { isValidStringProperty } from '../validation/string.js'; +import { VectorConfig } from '../../collections.js'; +import Connection from '../../connection/index.js'; +import { CommandBase } from '../../validation/commandBase.js'; +import { isValidStringProperty } from '../../validation/string.js'; import ClassGetter from './classGetter.js'; export default class VectorAdder extends CommandBase { diff --git a/src/validation/commandBase.ts b/packages/core/src/validation/commandBase.ts similarity index 100% rename from src/validation/commandBase.ts rename to packages/core/src/validation/commandBase.ts diff --git a/src/validation/number.ts b/packages/core/src/validation/number.ts similarity index 100% rename from src/validation/number.ts rename to packages/core/src/validation/number.ts diff --git a/src/validation/string.ts b/packages/core/src/validation/string.ts similarity index 100% rename from src/validation/string.ts rename to packages/core/src/validation/string.ts diff --git a/src/validation/version.ts b/packages/core/src/validation/version.ts similarity index 100% rename from src/validation/version.ts rename to packages/core/src/validation/version.ts diff --git a/src/collections/vectors/multiTargetVector.ts b/packages/core/src/vectors/multiTargetVector.ts similarity index 100% rename from src/collections/vectors/multiTargetVector.ts rename to packages/core/src/vectors/multiTargetVector.ts diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json new file mode 100644 index 00000000..213f0d89 --- /dev/null +++ b/packages/core/tsconfig.json @@ -0,0 +1,46 @@ +// { +// "compilerOptions": { +// "target": "ES6", +// "strict": true, +// "preserveConstEnums": true, +// "alwaysStrict": true, +// "noImplicitAny": true, +// "noImplicitThis": true, +// "strictFunctionTypes": true, +// "module": "NodeNext", +// "moduleResolution": "NodeNext", +// "skipLibCheck": true, +// "forceConsistentCasingInFileNames": true, +// "esModuleInterop": true, +// "outDir": "./dist/core", +// "declaration": true, +// "rootDir": ".", +// "types": ["node", "uuid", "jest"] +// }, +// "include": ["./**/*"], +// "exclude": ["./**/*.test.ts", "./dist/**/*"] +// } +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "target": "ES6", + "strict": true, + "preserveConstEnums": true, + "alwaysStrict": true, + "noImplicitAny": true, + "noImplicitThis": true, + "strictFunctionTypes": true, + "module": "NodeNext", + "moduleResolution": "NodeNext", + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "esModuleInterop": true, + "outDir": "./dist/core", + "declaration": true, + "rootDir": ".", + "types": ["node", "uuid", "jest"] + }, + "include": ["src"], + "exclude": ["src/**/*.test.ts", "dist/**/*"], +} \ No newline at end of file diff --git a/packages/node/package.json b/packages/node/package.json new file mode 100644 index 00000000..bc54ff68 --- /dev/null +++ b/packages/node/package.json @@ -0,0 +1,54 @@ +{ + "name": "@weaviate/node", + "version": "1.0.0", + "description": "JS/TS node client for Weaviate", + "main": "dist/cjs/src/index.js", + "type": "module", + "exports": { + ".": { + "types": { + "require": "./dist/cjs/src/index.d.ts", + "default": "./dist/esm/src/index.d.ts" + }, + "default": { + "require": "./dist/cjs/src/index.js", + "default": "./dist/esm/src/index.js" + } + } + }, + "files": [ + "dist/cjs", + "dist/esm" + ], + "engines": { + "node": ">=20.0.0" + }, + "scripts": { + "build:cjs": "tsc --module commonjs --moduleResolution node10 --outDir dist/cjs && touch dist/cjs/package.json && echo '{\"type\": \"commonjs\"}' > dist/cjs/package.json", + "build:esm": "tsc --outDir dist/esm && touch dist/esm/package.json && echo '{\"type\": \"module\"}' > dist/esm/package.json", + "build": "npm run build:cjs && npm run build:esm" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/weaviate/typescript-client.git" + }, + "keywords": [ + "weaviate" + ], + "author": "Weaviate", + "license": "BSD 3-Clause", + "bugs": { + "url": "https://github.com/weaviate/typescript-client/issues" + }, + "homepage": "https://github.com/weaviate/typescript-client#readme", + "dependencies": { + "@weaviate/core": "workspace:^1.0.0", + "nice-grpc": "^2.1.12", + "nice-grpc-client-middleware-retry": "^3.1.10", + "vitest": "^3.2.4" + }, + "devDependencies": { + "@types/node": "^18.14.0", + "@types/uuid": "^9.0.1" + } +} diff --git a/src/utils/base64.test.ts b/packages/node/src/base64.test.ts similarity index 56% rename from src/utils/base64.test.ts rename to packages/node/src/base64.test.ts index bb33d3af..8d249991 100644 --- a/src/utils/base64.test.ts +++ b/packages/node/src/base64.test.ts @@ -1,29 +1,27 @@ -import { httpClient } from '../connection/http.js'; import { downloadImageFromURLAsBase64 } from './base64.js'; +import { beforeEach, describe, expect, it, vitest, Mock } from 'vitest'; -jest.mock('../connection/http.js'); +vitest.mock('../connection/http.js'); describe('downloadImageFromURLAsBase64()', () => { - const mockHttpClient = { - externalGet: jest.fn(), - }; + const mockFetch = vitest.fn(); beforeEach(() => { - jest.clearAllMocks(); - (httpClient as jest.Mock).mockReturnValue(mockHttpClient); + vitest.clearAllMocks(); + (fetch as Mock).mockReturnValue(mockFetch); }); it('should convert a downloaded image to base64', async () => { const mockUrl = 'https://example.com/image.jpg'; const mockImageData = Buffer.from('image binary data'); - mockHttpClient.externalGet.mockResolvedValue(mockImageData); + mockFetch.mockResolvedValue(mockImageData); const result = await downloadImageFromURLAsBase64(mockUrl); expect(result).toBe(mockImageData.toString('base64')); - expect(httpClient).toHaveBeenCalledWith({ headers: { 'Content-Type': 'image/*' }, host: '' }); - expect(mockHttpClient.externalGet).toHaveBeenCalledWith(mockUrl); + expect(fetch).toHaveBeenCalledWith({ headers: { 'Content-Type': 'image/*' }, host: '' }); + expect(mockFetch).toHaveBeenCalledWith(mockUrl); }); it('should throw an error if the URL is invalid', async () => { @@ -35,29 +33,29 @@ describe('downloadImageFromURLAsBase64()', () => { it('should throw an error if the image download fails', async () => { const mockUrl = 'https://example.com/image.jpg'; - mockHttpClient.externalGet.mockRejectedValue(new Error('Network error')); + mockFetch.mockRejectedValue(new Error('Network error')); await expect(downloadImageFromURLAsBase64(mockUrl)).rejects.toThrow('Failed to download image from URL'); - expect(httpClient).toHaveBeenCalledWith({ headers: { 'Content-Type': 'image/*' }, host: '' }); - expect(mockHttpClient.externalGet).toHaveBeenCalledWith(mockUrl); + expect(fetch).toHaveBeenCalledWith({ headers: { 'Content-Type': 'image/*' }, host: '' }); + expect(mockFetch).toHaveBeenCalledWith(mockUrl); }); it('should handle empty response data gracefully', async () => { const mockUrl = 'https://example.com/image.jpg'; - mockHttpClient.externalGet.mockResolvedValue(Buffer.alloc(0)); + mockFetch.mockResolvedValue(Buffer.alloc(0)); const result = await downloadImageFromURLAsBase64(mockUrl); expect(result).toBe(''); - expect(httpClient).toHaveBeenCalledWith({ headers: { 'Content-Type': 'image/*' }, host: '' }); - expect(mockHttpClient.externalGet).toHaveBeenCalledWith(mockUrl); + expect(fetch).toHaveBeenCalledWith({ headers: { 'Content-Type': 'image/*' }, host: '' }); + expect(mockFetch).toHaveBeenCalledWith(mockUrl); }); it('should throw an error if the response is not a buffer', async () => { const mockUrl = 'wrong-url.com'; - mockHttpClient.externalGet.mockResolvedValue('not a buffer'); + mockFetch.mockResolvedValue('not a buffer'); await expect(downloadImageFromURLAsBase64(mockUrl)).rejects.toThrow('Invalid URL'); }); diff --git a/src/utils/base64.ts b/packages/node/src/base64.ts similarity index 93% rename from src/utils/base64.ts rename to packages/node/src/base64.ts index 57a09ef8..be6e0cb9 100644 --- a/src/utils/base64.ts +++ b/packages/node/src/base64.ts @@ -1,5 +1,4 @@ import fs from 'fs'; -import { httpClient } from '../connection/http.js'; const isFilePromise = (file: string | Buffer): Promise => new Promise((resolve, reject) => { @@ -39,13 +38,10 @@ export const downloadImageFromURLAsBase64 = async (url: string): Promise } try { - const client = httpClient({ + const response = await fetch(url, { headers: { 'Content-Type': 'image/*' }, - host: '', }); - const response = await client.externalGet(url); - if (!Buffer.isBuffer(response)) { throw new Error('Response is not a buffer'); } diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts new file mode 100644 index 00000000..f2200785 --- /dev/null +++ b/packages/node/src/index.ts @@ -0,0 +1,122 @@ +import weaviate, { + ApiKey, + AuthAccessTokenCredentials, + AuthClientCredentials, + AuthUserPasswordCredentials, + ClientParams, + configGuards, + configure, + ConnectToCustomOptions, + ConnectToLocalOptions, + ConnectToWCDOptions, + ConnectToWCSOptions, + ConnectToWeaviateCloudOptions, + Context, + filter, + helpers, + permissions, + reconfigure, + IWeaviateClient, + ICollections, + ICollection, +} from '@weaviate/core'; +import { toBase64FromMedia } from './base64.js'; +import { transportsMaker } from './transports.js'; + +const context: Context = { + transportsMaker, + toBase64FromMedia, +}; + +/** + * Connect to a custom Weaviate deployment, e.g. your own self-hosted Kubernetes cluster. + * + * @param {ConnectToCustomOptions} options Options for the connection. + * @returns {Promise} A Promise that resolves to a client connected to your custom Weaviate deployment. + */ +export function connectToCustom(options: ConnectToCustomOptions): Promise { + return helpers.connectToCustom(weaviate, context, options); +} + +/** + * Connect to a locally-deployed Weaviate instance, e.g. as a Docker compose stack. + * + * @param {ConnectToLocalOptions} [options] Options for the connection. + * @returns {Promise} A Promise that resolves to a client connected to your local Weaviate instance. + */ +export function connectToLocal(options?: ConnectToLocalOptions): Promise { + return helpers.connectToLocal(weaviate, context, options); +} + +/** + * Connect to your own Weaviate Cloud (WCD) instance. + * + * @deprecated Use `connectToWeaviateCloud` instead. + * + * @param {string} clusterURL The URL of your WCD instance. E.g., `https://example.weaviate.network`. + * @param {ConnectToWCDOptions} [options] Additional options for the connection. + * @returns {Promise} A Promise that resolves to a client connected to your WCD instance. + */ +export function connectToWCD(clusterURL: string, options?: ConnectToWCDOptions): Promise { + console.warn( + 'The `connectToWCD` method is deprecated. Please use `connectToWeaviateCloud` instead. This method will be removed in a future release.' + ); + return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, options); +} + +/** + * Connect to your own Weaviate Cloud Service (WCS) instance. + * + * @deprecated Use `connectToWeaviateCloud` instead. + * + * @param {string} clusterURL The URL of your WCD instance. E.g., `https://example.weaviate.network`. + * @param {ConnectToWCSOptions} [options] Additional options for the connection. + * @returns {Promise} A Promise that resolves to a client connected to your WCS instance. + */ +export function connectToWCS(clusterURL: string, options?: ConnectToWCSOptions): Promise { + console.warn( + 'The `connectToWCS` method is deprecated. Please use `connectToWeaviateCloud` instead. This method will be removed in a future release.' + ); + return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, options); +} + +/** + * Connect to your own Weaviate Cloud (WCD) instance. + * + * @param {string} clusterURL The URL of your WCD instance. E.g., `https://example.weaviate.network`. + * @param {ConnectToWeaviateCloudOptions} [options] Additional options for the connection. + * @returns {Promise} A Promise that resolves to a client connected to your WCD instance. + */ +export function connectToWeaviateCloud( + clusterURL: string, + options?: ConnectToWeaviateCloudOptions +): Promise { + return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, options); +} + +const app = { + connectToCustom, + connectToLocal, + connectToWCD, + connectToWCS, + connectToWeaviateCloud, + client: (params: ClientParams) => weaviate(context, params), + ApiKey, + AuthUserPasswordCredentials, + AuthAccessTokenCredentials, + AuthClientCredentials, + configure, + configGuards, + filter: filter(), + reconfigure, + permissions, +}; + +export interface WeaviateClient extends IWeaviateClient {} +export interface Collections extends ICollections {} +export interface Collection extends ICollection {} + +export default app; + +export * from '@weaviate/core'; +export * from './base64.js'; diff --git a/packages/node/src/transports.ts b/packages/node/src/transports.ts new file mode 100644 index 00000000..98c465e8 --- /dev/null +++ b/packages/node/src/transports.ts @@ -0,0 +1,21 @@ +import { ChannelCredentials, ChannelOptions, createChannel, createClientFactory } from 'nice-grpc'; + +import { HealthDefinition, WeaviateDefinition } from '@weaviate/core/proto'; + +import { Transports, TransportsParams } from '@weaviate/core'; + +const clientFactory = createClientFactory(); + +export const transportsMaker = (params: TransportsParams): Transports => { + const channel = createChannel( + params.grpcAddress, + params.grpcSecure ? ChannelCredentials.createSsl() : ChannelCredentials.createInsecure(), + { + 'grpc.max_receive_message_length': params.grpcMaxMessageLength, + } as ChannelOptions + ); + return { + weaviate: clientFactory.create(WeaviateDefinition, channel), + health: clientFactory.create(HealthDefinition, channel), + }; +}; diff --git a/packages/node/tsconfig.json b/packages/node/tsconfig.json new file mode 100644 index 00000000..bf681916 --- /dev/null +++ b/packages/node/tsconfig.json @@ -0,0 +1,27 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "target": "ES6", + "strict": true, + "preserveConstEnums": true, + "alwaysStrict": true, + "noImplicitAny": true, + "noImplicitThis": true, + "strictFunctionTypes": true, + "module": "NodeNext", + "moduleResolution": "NodeNext", + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "esModuleInterop": true, + "declaration": true, + "rootDir": ".", + "types": ["node", "uuid"], + "paths": { + "@weaviate/core": ["../core/src"], + "@weaviate/core/proto": ["../core/src/proto"] + } + }, + "include": ["src"], + "references": [{ "path": "../core" }] +} diff --git a/packages/test/package.json b/packages/test/package.json new file mode 100644 index 00000000..423f9a5f --- /dev/null +++ b/packages/test/package.json @@ -0,0 +1,15 @@ +{ + "name": "@weaviate/test", + "private": true, + "scripts": { + "test": "vitest run", + "test:watch": "vitest" + }, + "devDependencies": { + "@weaviate/core": "workspace:^1.0.0", + "@weaviate/node": "workspace:^1.0.0", + "express": "^4.21.2", + "nice-grpc": "^2.1.12", + "vitest": "^3.2.4" + } +} diff --git a/src/collections/aggregate/integration.test.ts b/packages/test/src/aggregate/integration.test.ts similarity index 98% rename from src/collections/aggregate/integration.test.ts rename to packages/test/src/aggregate/integration.test.ts index 284606b6..4f4f5ff8 100644 --- a/src/collections/aggregate/integration.test.ts +++ b/packages/test/src/aggregate/integration.test.ts @@ -1,10 +1,10 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */ -import { WeaviateQueryError, WeaviateUnsupportedFeatureError } from '../../errors.js'; -import weaviate, { AggregateText, WeaviateClient } from '../../index.js'; -import { Collection } from '../collection/index.js'; -import { CrossReference } from '../references/index.js'; -import { DataObject } from '../types/index.js'; +import { WeaviateQueryError, WeaviateUnsupportedFeatureError } from '@weaviate/core'; +import weaviate, { AggregateText, Collection, WeaviateClient } from '@weaviate/node'; +import { CrossReference } from '@weaviate/core/references'; +import { DataObject } from '@weaviate/core/types'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; describe('Testing of the collection.aggregate methods', () => { type TestCollectionAggregate = { diff --git a/src/collections/backup/integration.test.ts b/packages/test/src/backup/integration.test.ts similarity index 94% rename from src/collections/backup/integration.test.ts rename to packages/test/src/backup/integration.test.ts index 66b38b2d..004acd15 100644 --- a/src/collections/backup/integration.test.ts +++ b/packages/test/src/backup/integration.test.ts @@ -1,8 +1,9 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */ /* eslint-disable no-await-in-loop */ -import { Backend } from '../../backup/index.js'; -import weaviate, { Collection, WeaviateClient } from '../../index.js'; +import { Backend } from '@weaviate/core/v2/backup'; +import weaviate, { Collection, WeaviateClient } from '@weaviate/node/src'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; // These must run sequentially because Weaviate is not capable of running multiple backups at the same time describe('Integration testing of backups', () => { diff --git a/src/collections/backup/unit.test.ts b/packages/test/src/backup/unit.test.ts similarity index 92% rename from src/collections/backup/unit.test.ts rename to packages/test/src/backup/unit.test.ts index f5131d03..7eb8e6d5 100644 --- a/src/collections/backup/unit.test.ts +++ b/packages/test/src/backup/unit.test.ts @@ -1,17 +1,18 @@ import express, { Response } from 'express'; import { Server as HttpServer } from 'http'; import { Server as GrpcServer, createServer } from 'nice-grpc'; -import { WeaviateBackupCanceled } from '../../errors'; -import weaviate, { WeaviateClient } from '../../index.js'; +import { WeaviateBackupCanceled } from '@weaviate/core/errors'; +import weaviate, { WeaviateClient } from '@weaviate/node'; import { HealthCheckRequest, HealthCheckResponse, HealthCheckResponse_ServingStatus, HealthDefinition, HealthServiceImplementation, -} from '../../proto/google/health/v1/health'; -import { BackupCreateResponse, BackupCreateStatusResponse, BackupRestoreResponse } from '../../v2'; -import { BackupStatus } from './types'; +} from '@weaviate/core/proto/google/health/v1/health'; +import { BackupCreateResponse, BackupCreateStatusResponse, BackupRestoreResponse } from '@weaviate/core/v2'; +import { BackupStatus } from '@weaviate/core/backup/types'; +import { afterAll, beforeAll, describe, expect, it, vitest } from 'vitest'; const BACKUP_ID = 'test-backup-123'; const BACKEND = 'filesystem'; @@ -88,7 +89,7 @@ class CancelMock { const healthMockImpl: HealthServiceImplementation = { check: (request: HealthCheckRequest): Promise => Promise.resolve(HealthCheckResponse.create({ status: HealthCheckResponse_ServingStatus.SERVING })), - watch: jest.fn(), + watch: vitest.fn(), }; const grpc = createServer(); diff --git a/src/integration.test.ts b/packages/test/src/client/integration.test.ts similarity index 76% rename from src/integration.test.ts rename to packages/test/src/client/integration.test.ts index 8bc7e603..2b37761e 100644 --- a/src/integration.test.ts +++ b/packages/test/src/client/integration.test.ts @@ -1,4 +1,5 @@ -import weaviate from './index.js'; +import weaviate from '@weaviate/node'; +import { afterAll, beforeAll, describe, expect, it, vitest } from 'vitest'; describe('Integration testing of the client methods', () => { it('should connect using connectToLocal defaults', () => { @@ -6,7 +7,7 @@ describe('Integration testing of the client methods', () => { }); it('should connect using connectToLocal with schema-ed host', () => { - const logSpy = jest.spyOn(console, 'warn'); + const logSpy = vitest.spyOn(console, 'warn'); return weaviate .connectToLocal({ host: 'http://localhost', diff --git a/src/collections/cluster/integration.test.ts b/packages/test/src/cluster/integration.test.ts similarity index 95% rename from src/collections/cluster/integration.test.ts rename to packages/test/src/cluster/integration.test.ts index 1ec26095..c46b3e22 100644 --- a/src/collections/cluster/integration.test.ts +++ b/packages/test/src/cluster/integration.test.ts @@ -1,4 +1,5 @@ -import weaviate, { WeaviateClient } from '../../index.js'; +import weaviate, { WeaviateClient } from '@weaviate/node'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; describe('Testing of the client.cluster methods', () => { let client: WeaviateClient; diff --git a/src/collections/integration.test.ts b/packages/test/src/collections/integration.test.ts similarity index 99% rename from src/collections/integration.test.ts rename to packages/test/src/collections/integration.test.ts index df424745..e505500b 100644 --- a/src/collections/integration.test.ts +++ b/packages/test/src/collections/integration.test.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ -import weaviate, { WeaviateClient } from '../index'; +import weaviate, { WeaviateClient } from '@weaviate/node'; import { CollectionConfigCreate, GeoCoordinate, @@ -10,7 +10,8 @@ import { Text2VecContextionaryConfig, Text2VecOpenAIConfig, VectorIndexConfigHNSW, -} from './types/index'; +} from '@weaviate/core'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; describe('Testing of the collections.create method', () => { let cluster: WeaviateClient; diff --git a/src/collections/config/integration.test.ts b/packages/test/src/config/integration.test.ts similarity index 98% rename from src/collections/config/integration.test.ts rename to packages/test/src/config/integration.test.ts index ead96726..aaf5cd6b 100644 --- a/src/collections/config/integration.test.ts +++ b/packages/test/src/config/integration.test.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ -import { requireAtLeast } from '../../../test/version.js'; -import { WeaviateUnsupportedFeatureError } from '../../errors.js'; -import weaviate, { WeaviateClient, weaviateV2 } from '../../index.js'; +import { requireAtLeast } from '../version.js'; +import { WeaviateUnsupportedFeatureError } from '@weaviate/core/errors'; +import weaviate, { WeaviateClient, weaviateV2 } from '@weaviate/node'; import { GenerativeCohereConfig, ModuleConfig, @@ -10,11 +10,8 @@ import { RerankerCohereConfig, VectorIndexConfigDynamic, VectorIndexConfigHNSW, -} from './types/index.js'; - -const fail = (msg: string) => { - throw new Error(msg); -}; +} from '@weaviate/core/config/types'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; describe('Testing of the collection.config namespace', () => { let client: WeaviateClient; diff --git a/src/collections/config/unit.test.ts b/packages/test/src/config/unit.test.ts similarity index 97% rename from src/collections/config/unit.test.ts rename to packages/test/src/config/unit.test.ts index b8fc8596..c694956e 100644 --- a/src/collections/config/unit.test.ts +++ b/packages/test/src/config/unit.test.ts @@ -3,9 +3,10 @@ import { WeaviateModuleConfig, WeaviateMultiTenancyConfig, WeaviateVectorsConfig, -} from '../../openapi/types'; -import { MergeWithExisting } from './classes'; -import { GenerativeCohereConfig, RerankerCohereConfig } from './types'; +} from '@weaviate/core/openapi/types'; +import { MergeWithExisting } from '@weaviate/core/config/classes'; +import { GenerativeCohereConfig, RerankerCohereConfig } from '@weaviate/core/config/types'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; describe('Unit testing of the MergeWithExisting class', () => { const deepCopy = (config: any) => JSON.parse(JSON.stringify(config)); diff --git a/src/collections/configure/unit.test.ts b/packages/test/src/configure/unit.test.ts similarity index 99% rename from src/collections/configure/unit.test.ts rename to packages/test/src/configure/unit.test.ts index 0eddb278..4af32678 100644 --- a/src/collections/configure/unit.test.ts +++ b/packages/test/src/configure/unit.test.ts @@ -18,8 +18,8 @@ import { RerankerTransformersConfig, RerankerVoyageAIConfig, VectorConfigCreate, -} from '../types/index.js'; -import { configure } from './index.js'; +} from '@weaviate/core/types'; +import { configure } from '@weaviate/core/configure'; import { InvertedIndexConfigCreate, MultiTenancyConfigCreate, @@ -28,7 +28,8 @@ import { ShardingConfigCreate, VectorIndexConfigFlatCreate, VectorIndexConfigHNSWCreate, -} from './types/index.js'; +} from '@weaviate/core/configure/types'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; describe('Unit testing of the configure & reconfigure factory classes', () => { it('should create the correct InvertedIndexConfig type with defaults', () => { diff --git a/src/connection/helpers.test.ts b/packages/test/src/connection/helpers.test.ts similarity index 89% rename from src/connection/helpers.test.ts rename to packages/test/src/connection/helpers.test.ts index 7e0f4276..5746b7bf 100644 --- a/src/connection/helpers.test.ts +++ b/packages/test/src/connection/helpers.test.ts @@ -1,4 +1,5 @@ -import weaviate from '../index.js'; +import weaviate from '@weaviate/node'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; const WCD_URL = 'https://piblpmmdsiknacjnm1ltla.c1.europe-west3.gcp.weaviate.cloud'; const WCD_KEY = 'cy4ua772mBlMdfw3YnclqAWzFhQt0RLIN0sl'; diff --git a/src/connection/integration.test.ts b/packages/test/src/connection/integration.test.ts similarity index 83% rename from src/connection/integration.test.ts rename to packages/test/src/connection/integration.test.ts index 9f229782..e69720fc 100644 --- a/src/connection/integration.test.ts +++ b/packages/test/src/connection/integration.test.ts @@ -1,8 +1,9 @@ import { StartedWeaviateContainer, WeaviateContainer } from '@testcontainers/weaviate'; -import weaviate from '..'; -import { WeaviateStartUpError } from '../errors'; -import { Meta } from '../openapi/types'; -import { DbVersion } from '../utils/dbVersion'; +import weaviate from '@weaviate/node'; +import { WeaviateStartUpError } from '@weaviate/core/errors'; +import { Meta } from '@weaviate/core/openapi/types'; +import { DbVersion } from '@weaviate/core/utils/dbVersion'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; describe('Integration testing of the ConnectionGRPC class', () => { let container: StartedWeaviateContainer; diff --git a/src/connection/journey.test.ts b/packages/test/src/connection/journey.test.ts similarity index 96% rename from src/connection/journey.test.ts rename to packages/test/src/connection/journey.test.ts index fbf8ea1d..00105e15 100644 --- a/src/connection/journey.test.ts +++ b/packages/test/src/connection/journey.test.ts @@ -3,11 +3,12 @@ import { AuthAccessTokenCredentials, AuthClientCredentials, AuthUserPasswordCredentials, -} from './auth.js'; -import Connection from './index.js'; +} from '@weaviate/core/connection/auth'; +import Connection from '@weaviate/core/connection'; -import { WeaviateStartUpError } from '../errors.js'; -import weaviate from '../index.js'; +import { WeaviateStartUpError } from '@weaviate/core/errors'; +import weaviate from '@weaviate/node'; +import { afterAll, beforeAll, describe, expect, it, vitest } from 'vitest'; describe('connection', () => { it('makes a logged-in request when client host param has trailing slashes', async () => { @@ -264,7 +265,7 @@ describe('connection', () => { }); it('warns when client auth is configured, but server auth is not', async () => { - const logSpy = jest.spyOn(console, 'warn'); + const logSpy = vitest.spyOn(console, 'warn'); const client = await weaviate.connectToLocal({ authCredentials: new AuthUserPasswordCredentials({ @@ -286,7 +287,7 @@ describe('connection', () => { }); it('warns when client access token expires, no refresh token provided', async () => { - const logSpy = jest.spyOn(console, 'warn'); + const logSpy = vitest.spyOn(console, 'warn'); const conn = new Connection({ scheme: 'http', diff --git a/src/connection/proxy.test.ts b/packages/test/src/connection/proxy.test.ts similarity index 91% rename from src/connection/proxy.test.ts rename to packages/test/src/connection/proxy.test.ts index c23db967..85033418 100644 --- a/src/connection/proxy.test.ts +++ b/packages/test/src/connection/proxy.test.ts @@ -1,4 +1,5 @@ -import weaviate from '../index.js'; +import weaviate from '@weaviate/node'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; describe('Testing of the client connecting to a proxied Weaviate instance', () => { // Skip because Envoy Proxy in CI is too flaky with strange error: diff --git a/src/connection/unit.test.ts b/packages/test/src/connection/unit.test.ts similarity index 92% rename from src/connection/unit.test.ts rename to packages/test/src/connection/unit.test.ts index 3ead6a88..4997933b 100644 --- a/src/connection/unit.test.ts +++ b/packages/test/src/connection/unit.test.ts @@ -1,14 +1,14 @@ import express from 'express'; import { Server as HttpServer } from 'http'; -import { testServer } from '../../test/server.js'; +import { testServer } from '../server'; import { ApiKey, AuthAccessTokenCredentials, AuthClientCredentials, AuthUserPasswordCredentials, -} from './auth.js'; -import Connection from './index.js'; +} from '@weaviate/core/connection/auth'; +import Connection from '@weaviate/core/connection'; import { createServer, Server as GrpcServer } from 'nice-grpc'; import { @@ -17,16 +17,17 @@ import { HealthCheckResponse_ServingStatus, HealthDefinition, HealthServiceImplementation, -} from '../proto/google/health/v1/health'; -import { TenantsGetReply } from '../proto/v1/tenants'; -import { WeaviateDefinition, WeaviateServiceImplementation } from '../proto/v1/weaviate'; - -import { WeaviateRequestTimeoutError } from '../errors.js'; -import weaviate, { Collection, WeaviateClient } from '../index'; -import { AggregateReply } from '../proto/v1/aggregate.js'; -import { BatchObjectsReply } from '../proto/v1/batch.js'; -import { BatchDeleteReply } from '../proto/v1/batch_delete.js'; -import { SearchReply } from '../proto/v1/search_get.js'; +} from '@weaviate/core/proto/google/health/v1/health'; +import { TenantsGetReply } from '@weaviate/core/proto/v1/tenants'; +import { WeaviateDefinition, WeaviateServiceImplementation } from '@weaviate/core/proto/v1/weaviate'; + +import { WeaviateRequestTimeoutError } from '@weaviate/core/errors'; +import weaviate, { Collection, WeaviateClient } from '@weaviate/node'; +import { AggregateReply } from '@weaviate/core/proto/v1/aggregate'; +import { BatchObjectsReply } from '@weaviate/core/proto/v1/batch'; +import { BatchDeleteReply } from '@weaviate/core/proto/v1/batch_delete'; +import { SearchReply } from '@weaviate/core/proto/v1/search_get'; +import { afterAll, beforeAll, describe, expect, it, vitest } from 'vitest'; describe('mock server auth tests', () => { const server = testServer(); @@ -285,7 +286,7 @@ const makeGrpcApp = () => { const healthMockImpl: HealthServiceImplementation = { check: (request: HealthCheckRequest): Promise => Promise.resolve(HealthCheckResponse.create({ status: HealthCheckResponse_ServingStatus.SERVING })), - watch: jest.fn(), + watch: vitest.fn(), }; const grpcApp = createServer(); diff --git a/src/collections/data/integration.test.ts b/packages/test/src/data/integration.test.ts similarity index 98% rename from src/collections/data/integration.test.ts rename to packages/test/src/data/integration.test.ts index 681609a2..1435db76 100644 --- a/src/collections/data/integration.test.ts +++ b/packages/test/src/data/integration.test.ts @@ -1,12 +1,12 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */ import { v4 } from 'uuid'; -import { WeaviateUnsupportedFeatureError } from '../../errors.js'; -import weaviate, { WeaviateClient, weaviateV2 } from '../../index.js'; -import { GeoCoordinate, PhoneNumber } from '../../proto/v1/properties.js'; -import { Collection } from '../collection/index.js'; -import { CrossReference, CrossReferences, Reference } from '../references/index.js'; -import { DataObject, WeaviateObject } from '../types/index.js'; +import { WeaviateUnsupportedFeatureError } from '@weaviate/core/errors'; +import weaviate, { WeaviateClient, weaviateV2, Collection } from '@weaviate/node'; +import { GeoCoordinate, PhoneNumber } from '@weaviate/core/proto/v1/properties'; +import { CrossReference, CrossReferences, Reference } from '@weaviate/core/references'; +import { DataObject, WeaviateObject } from '@weaviate/core/types'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; type TestCollectionData = { testProp: string; diff --git a/test/dbVersionProvider.ts b/packages/test/src/dbVersionProvider.ts similarity index 82% rename from test/dbVersionProvider.ts rename to packages/test/src/dbVersionProvider.ts index 54a18c25..c98f4b05 100644 --- a/test/dbVersionProvider.ts +++ b/packages/test/src/dbVersionProvider.ts @@ -1,4 +1,4 @@ -import { DbVersion, VersionProvider } from '../src/utils/dbVersion.js'; +import { DbVersion, VersionProvider } from '@weaviate/core/utils/dbVersion'; export class TestDbVersionProvider implements VersionProvider { private version: string; diff --git a/src/collections/filters/integration.test.ts b/packages/test/src/filters/integration.test.ts similarity index 97% rename from src/collections/filters/integration.test.ts rename to packages/test/src/filters/integration.test.ts index b634fc20..a5401ca5 100644 --- a/src/collections/filters/integration.test.ts +++ b/packages/test/src/filters/integration.test.ts @@ -1,10 +1,10 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */ -import weaviate, { WeaviateClient } from '../../index.js'; -import { Collection } from '../collection/index.js'; -import { CrossReference, Reference } from '../references/index.js'; -import { GeoCoordinate } from '../types/index.js'; -import { Filters } from './index.js'; +import weaviate, { WeaviateClient, Collection } from '@weaviate/node'; +import { CrossReference, Reference } from '@weaviate/core/references'; +import { GeoCoordinate } from '@weaviate/core/types'; +import { Filters } from '@weaviate/core/filters'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; describe('Testing of the filter class with a simple collection', () => { let client: WeaviateClient; diff --git a/src/collections/filters/unit.test.ts b/packages/test/src/filters/unit.test.ts similarity index 98% rename from src/collections/filters/unit.test.ts rename to packages/test/src/filters/unit.test.ts index b56580a5..64d0f4a6 100644 --- a/src/collections/filters/unit.test.ts +++ b/packages/test/src/filters/unit.test.ts @@ -1,8 +1,9 @@ -import { WhereFilter } from '../../openapi/types.js'; -import { CrossReference } from '../references/index.js'; -import { Serialize } from '../serialize/index.js'; -import maker, { FilterValue, Filters } from './index.js'; -import { GeoRangeFilter } from './types.js'; +import { WhereFilter } from '@weaviate/core/openapi/types'; +import { CrossReference } from '@weaviate/core/references'; +import { Serialize } from '@weaviate/core/serialize'; +import maker, { FilterValue, Filters } from '@weaviate/core/filters'; +import { GeoRangeFilter } from '@weaviate/core/filters/types'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; describe('Unit testing of filters', () => { type Person = { diff --git a/src/collections/generate/integration.test.ts b/packages/test/src/generate/integration.test.ts similarity index 98% rename from src/collections/generate/integration.test.ts rename to packages/test/src/generate/integration.test.ts index 39e8e351..f07b06f0 100644 --- a/src/collections/generate/integration.test.ts +++ b/packages/test/src/generate/integration.test.ts @@ -1,10 +1,10 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */ -import { WeaviateUnsupportedFeatureError } from '../../errors.js'; -import weaviate, { WeaviateClient } from '../../index.js'; -import { Collection } from '../collection/index.js'; -import { GenerateOptions, GroupByOptions } from '../types/index.js'; -import { generativeParameters } from './config.js'; +import { WeaviateUnsupportedFeatureError } from '@weaviate/core/errors'; +import weaviate, { WeaviateClient, Collection } from '@weaviate/node'; +import { GenerateOptions, GroupByOptions } from '@weaviate/core/types'; +import { generativeParameters } from '@weaviate/core/generate/config'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; const maybe = process.env.OPENAI_APIKEY ? describe : describe.skip; diff --git a/src/collections/generate/mock.test.ts b/packages/test/src/generate/mock.test.ts similarity index 90% rename from src/collections/generate/mock.test.ts rename to packages/test/src/generate/mock.test.ts index 444901ef..6391cf57 100644 --- a/src/collections/generate/mock.test.ts +++ b/packages/test/src/generate/mock.test.ts @@ -1,18 +1,19 @@ import express from 'express'; import { Server as HttpServer } from 'http'; import { Server as GrpcServer, createServer } from 'nice-grpc'; -import weaviate, { Collection, GenerativeConfigRuntime, WeaviateClient } from '../..'; +import weaviate, { Collection, GenerativeConfigRuntime, WeaviateClient } from '@weaviate/node'; import { HealthCheckRequest, HealthCheckResponse, HealthCheckResponse_ServingStatus, HealthDefinition, HealthServiceImplementation, -} from '../../proto/google/health/v1/health'; -import { GenerativeResult } from '../../proto/v1/generative'; -import { SearchReply, SearchRequest, SearchResult } from '../../proto/v1/search_get'; -import { WeaviateDefinition, WeaviateServiceImplementation } from '../../proto/v1/weaviate'; -import { generativeParameters } from './config'; +} from '@weaviate/core/proto/google/health/v1/health'; +import { GenerativeResult } from '@weaviate/core/proto/v1/generative'; +import { SearchReply, SearchRequest, SearchResult } from '@weaviate/core/proto/v1/search_get'; +import { WeaviateDefinition, WeaviateServiceImplementation } from '@weaviate/core/proto/v1/weaviate'; +import { generativeParameters } from '@weaviate/core/generate/config'; +import { afterAll, beforeAll, describe, expect, it, vitest } from 'vitest'; const mockedSingleGenerative = 'Mocked single response'; const mockedGroupedGenerative = 'Mocked group response'; @@ -35,7 +36,7 @@ class GenerateMock { const healthMockImpl: HealthServiceImplementation = { check: (request: HealthCheckRequest): Promise => Promise.resolve(HealthCheckResponse.create({ status: HealthCheckResponse_ServingStatus.SERVING })), - watch: jest.fn(), + watch: vitest.fn(), }; const grpc = createServer(); @@ -43,8 +44,8 @@ class GenerateMock { // Search endpoint returning generative mock data const weaviateMockImpl: WeaviateServiceImplementation = { - aggregate: jest.fn(), - tenantsGet: jest.fn(), + aggregate: vitest.fn(), + tenantsGet: vitest.fn(), search: (req: SearchRequest): Promise => { expect(req.generative?.grouped?.queries.length).toBeGreaterThan(0); expect(req.generative?.single?.queries.length).toBeGreaterThan(0); @@ -77,8 +78,8 @@ class GenerateMock { }) ); }, - batchDelete: jest.fn(), - batchObjects: jest.fn(), + batchDelete: vitest.fn(), + batchObjects: vitest.fn(), }; grpc.add(WeaviateDefinition, weaviateMockImpl); diff --git a/src/collections/generate/unit.test.ts b/packages/test/src/generate/unit.test.ts similarity index 97% rename from src/collections/generate/unit.test.ts rename to packages/test/src/generate/unit.test.ts index 0b8a47bd..85697391 100644 --- a/src/collections/generate/unit.test.ts +++ b/packages/test/src/generate/unit.test.ts @@ -1,5 +1,6 @@ -import { GenerativeConfigRuntimeType, ModuleConfig } from '../types'; -import { generativeParameters } from './config'; +import { GenerativeConfigRuntimeType, ModuleConfig } from '@weaviate/core/types'; +import { generativeParameters } from '@weaviate/core/generate/config'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; // only tests fields that must be mapped from some public name to a gRPC name, e.g. baseURL -> baseUrl and stop: string[] -> stop: TextArray describe('Unit testing of the generativeParameters factory methods', () => { diff --git a/src/collections/iterator/integration.test.ts b/packages/test/src/iterator/integration.test.ts similarity index 95% rename from src/collections/iterator/integration.test.ts rename to packages/test/src/iterator/integration.test.ts index c4757083..df46d491 100644 --- a/src/collections/iterator/integration.test.ts +++ b/packages/test/src/iterator/integration.test.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */ -import weaviate, { WeaviateClient } from '../../index.js'; -import { Collection } from '../collection/index.js'; +import weaviate, { WeaviateClient, Collection } from '@weaviate/node'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; describe('Testing of the collection.iterator method with a simple collection', () => { let client: WeaviateClient; diff --git a/src/collections/journey.test.ts b/packages/test/src/journey.test.ts similarity index 96% rename from src/collections/journey.test.ts rename to packages/test/src/journey.test.ts index 85da3a8f..9e946e02 100644 --- a/src/collections/journey.test.ts +++ b/packages/test/src/journey.test.ts @@ -1,5 +1,6 @@ -import weaviate, { CollectionConfig, WeaviateClient } from '../index.js'; -import { GeoCoordinate } from '../proto/v1/properties.js'; +import weaviate, { CollectionConfig, WeaviateClient } from '@weaviate/node'; +import { GeoCoordinate } from '@weaviate/core/proto/v1/properties'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; describe('Journey testing of the client using a WCD cluster', () => { let client: WeaviateClient; diff --git a/src/collections/query/integration.test.ts b/packages/test/src/query/integration.test.ts similarity index 99% rename from src/collections/query/integration.test.ts rename to packages/test/src/query/integration.test.ts index 8e559c96..fed26241 100644 --- a/src/collections/query/integration.test.ts +++ b/packages/test/src/query/integration.test.ts @@ -1,12 +1,12 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */ -import { requireAtLeast } from '../../../test/version.js'; -import { WeaviateUnsupportedFeatureError } from '../../errors.js'; -import weaviate, { WeaviateClient } from '../../index.js'; -import { Collection } from '../collection/index.js'; -import { CrossReference, Reference } from '../references/index.js'; -import { GroupByOptions } from '../types/index.js'; -import { Bm25Operator } from './utils.js'; +import { requireAtLeast } from '../version.js'; +import { WeaviateUnsupportedFeatureError } from '@weaviate/core/errors'; +import weaviate, { WeaviateClient, Collection } from '@weaviate/node'; +import { CrossReference, Reference } from '@weaviate/core/references'; +import { GroupByOptions } from '@weaviate/core/types'; +import { Bm25Operator } from '@weaviate/core/query/utils'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; describe('Testing of the collection.query methods with a simple collection', () => { let client: WeaviateClient; diff --git a/src/roles/integration.test.ts b/packages/test/src/roles/integration.test.ts similarity index 98% rename from src/roles/integration.test.ts rename to packages/test/src/roles/integration.test.ts index c5886b57..f42250b0 100644 --- a/src/roles/integration.test.ts +++ b/packages/test/src/roles/integration.test.ts @@ -8,9 +8,10 @@ import weaviate, { TenantsAction, UserAssignment, WeaviateClient, -} from '..'; -import { requireAtLeast } from '../../test/version'; -import { WeaviateStartUpError, WeaviateUnexpectedStatusCodeError } from '../errors'; +} from '@weaviate/node'; +import { requireAtLeast } from '../version'; +import { WeaviateStartUpError, WeaviateUnexpectedStatusCodeError } from '@weaviate/core/errors'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; type TestCase = { roleName: string; diff --git a/src/collections/serialize/unit.test.ts b/packages/test/src/serialize/unit.test.ts similarity index 97% rename from src/collections/serialize/unit.test.ts rename to packages/test/src/serialize/unit.test.ts index 6d9f9612..f9e3768d 100644 --- a/src/collections/serialize/unit.test.ts +++ b/packages/test/src/serialize/unit.test.ts @@ -1,3 +1,5 @@ +import { Filters as FiltersFactory } from '@weaviate/core/filters/classes'; +import filter from '@weaviate/core/filters'; import { SearchBm25Args, SearchFetchArgs, @@ -11,8 +13,8 @@ import { SearchNearThermalArgs, SearchNearVectorArgs, SearchNearVideoArgs, -} from '../../grpc/searcher.js'; -import { Filters, Filters_Operator } from '../../proto/v1/base.js'; +} from '@weaviate/core/grpc/searcher'; +import { Filters, Filters_Operator } from '@weaviate/core/proto/v1/base'; import { BM25, CombinationMethod, @@ -29,17 +31,16 @@ import { NearVector, NearVideoSearch, Targets, -} from '../../proto/v1/base_search.js'; -import { GenerativeSearch } from '../../proto/v1/generative.js'; -import { GroupBy, MetadataRequest, PropertiesRequest } from '../../proto/v1/search_get.js'; -import { Filters as FiltersFactory } from '../filters/classes.js'; -import filter from '../filters/index.js'; -import { TargetVectorInputType } from '../query/types.js'; -import { Reference } from '../references/index.js'; -import sort from '../sort/index.js'; -import { WeaviateField } from '../types/index.js'; -import multiTargetVector from '../vectors/multiTargetVector.js'; -import { DataGuards, Serialize } from './index.js'; +} from '@weaviate/core/proto/v1/base_search'; +import { GenerativeSearch } from '@weaviate/core/proto/v1/generative'; +import { GroupBy, MetadataRequest, PropertiesRequest } from '@weaviate/core/proto/v1/search_get'; +import { TargetVectorInputType } from '@weaviate/core/query/types'; +import { Reference } from '@weaviate/core/references'; +import sort from '@weaviate/core/sort'; +import { WeaviateField } from '@weaviate/core/types'; +import multiTargetVector from '@weaviate/core/vectors/multiTargetVector'; +import { DataGuards, Serialize } from '@weaviate/core/serialize'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; describe('Unit testing of Serialize', () => { it('should parse args for fetchObjects', () => { @@ -442,14 +443,11 @@ describe('Unit testing of Serialize', () => { }); it('should parse args for generative', async () => { - const args = await Serialize.generative( - { supportsSingleGrouped: false }, - { - singlePrompt: 'test', - groupedProperties: ['name'], - groupedTask: 'testing', - } - ); + const args = await Serialize.generative({ supportsSingleGrouped: false }, (any) => Promise.resolve(''), { + singlePrompt: 'test', + groupedProperties: ['name'], + groupedTask: 'testing', + }); expect(args).toEqual({ singleResponsePrompt: 'test', groupedProperties: ['name'], diff --git a/test/server.ts b/packages/test/src/server.ts similarity index 100% rename from test/server.ts rename to packages/test/src/server.ts diff --git a/src/collections/sort/integration.test.ts b/packages/test/src/sort/integration.test.ts similarity index 98% rename from src/collections/sort/integration.test.ts rename to packages/test/src/sort/integration.test.ts index 8800ee2c..af6a62a0 100644 --- a/src/collections/sort/integration.test.ts +++ b/packages/test/src/sort/integration.test.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */ -import weaviate, { WeaviateClient } from '../../index.js'; -import { Collection } from '../collection/index.js'; +import weaviate, { WeaviateClient, Collection, Collections } from '@weaviate/node'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; describe('Testing of the Sort class with a simple collection', () => { let client: WeaviateClient; diff --git a/src/collections/tenants/integration.test.ts b/packages/test/src/tenants/integration.test.ts similarity index 97% rename from src/collections/tenants/integration.test.ts rename to packages/test/src/tenants/integration.test.ts index b574759a..bfa0b985 100644 --- a/src/collections/tenants/integration.test.ts +++ b/packages/test/src/tenants/integration.test.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ -import { WeaviateUnsupportedFeatureError } from '../../errors.js'; -import weaviate, { WeaviateClient } from '../../index.js'; -import { Collection } from '../collection/index.js'; +import { WeaviateUnsupportedFeatureError } from '@weaviate/core/errors'; +import weaviate, { WeaviateClient, Collection } from '@weaviate/node'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; describe('Testing of the collection.tenants methods', () => { let client: WeaviateClient; diff --git a/src/collections/tenants/unit.test.ts b/packages/test/src/tenants/unit.test.ts similarity index 91% rename from src/collections/tenants/unit.test.ts rename to packages/test/src/tenants/unit.test.ts index 6b160bf1..a7fbaf17 100644 --- a/src/collections/tenants/unit.test.ts +++ b/packages/test/src/tenants/unit.test.ts @@ -8,11 +8,13 @@ import { HealthCheckResponse_ServingStatus, HealthDefinition, HealthServiceImplementation, -} from '../../proto/google/health/v1/health'; -import { TenantActivityStatus, TenantsGetReply, TenantsGetRequest } from '../../proto/v1/tenants'; -import { WeaviateDefinition, WeaviateServiceImplementation } from '../../proto/v1/weaviate'; +} from '@weaviate/core/proto/google/health/v1/health'; +import { TenantActivityStatus, TenantsGetReply, TenantsGetRequest } from '@weaviate/core/proto/v1/tenants'; +import { WeaviateDefinition, WeaviateServiceImplementation } from '@weaviate/core/proto/v1/weaviate'; -import weaviate, { Tenant } from '../../index'; +import weaviate, { Tenant } from '@weaviate/node'; + +import { afterAll, beforeAll, describe, expect, it, vitest } from 'vitest'; const TENANTS_COLLECTION_NAME = 'TestCollectionTenants'; @@ -33,7 +35,7 @@ const makeRestApp = (version: string) => { const makeGrpcApp = () => { const weaviateMockImpl: WeaviateServiceImplementation = { - aggregate: jest.fn(), + aggregate: vitest.fn(), tenantsGet: (request: TenantsGetRequest): Promise => Promise.resolve({ took: 0.1, @@ -45,14 +47,14 @@ const makeGrpcApp = () => { { name: 'unfreezing', activityStatus: TenantActivityStatus.TENANT_ACTIVITY_STATUS_UNFREEZING }, ], }), - search: jest.fn(), - batchDelete: jest.fn(), - batchObjects: jest.fn(), + search: vitest.fn(), + batchDelete: vitest.fn(), + batchObjects: vitest.fn(), }; const healthMockImpl: HealthServiceImplementation = { check: (request: HealthCheckRequest): Promise => Promise.resolve(HealthCheckResponse.create({ status: HealthCheckResponse_ServingStatus.SERVING })), - watch: jest.fn(), + watch: vitest.fn(), }; const grpcApp = createServer(); diff --git a/src/users/integration.test.ts b/packages/test/src/users/integration.test.ts similarity index 96% rename from src/users/integration.test.ts rename to packages/test/src/users/integration.test.ts index 2559789d..9a44fae9 100644 --- a/src/users/integration.test.ts +++ b/packages/test/src/users/integration.test.ts @@ -1,7 +1,8 @@ -import weaviate, { ApiKey, WeaviateClient } from '..'; -import { requireAtLeast } from '../../test/version.js'; -import { WeaviateUserTypeDB } from '../openapi/types.js'; -import { GetUserOptions, UserDB } from './types.js'; +import { requireAtLeast } from '../version.js'; +import weaviate, { ApiKey, WeaviateClient } from '@weaviate/node'; +import { WeaviateUserTypeDB } from '@weaviate/core/openapi/types'; +import { GetUserOptions, UserDB } from '@weaviate/core/users/types'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; requireAtLeast(1, 29, 0).describe('Integration testing of the users namespace', () => { const makeClient = (key: string) => diff --git a/src/utils/journey.test.ts b/packages/test/src/utils/journey.test.ts similarity index 92% rename from src/utils/journey.test.ts rename to packages/test/src/utils/journey.test.ts index 832669c0..ddbd7b05 100644 --- a/src/utils/journey.test.ts +++ b/packages/test/src/utils/journey.test.ts @@ -1,4 +1,5 @@ -import { DbVersionProvider, DbVersionSupport } from './dbVersion.js'; +import { DbVersionProvider, DbVersionSupport } from '@weaviate/core/utils/dbVersion'; +import { describe, expect, it } from 'vitest'; const EMPTY_VERSION = ''; const VERSION_1 = '1.2.3'; @@ -29,7 +30,7 @@ describe('db version provider', () => { case 2: return Promise.resolve(VERSION_2); default: - fail('should not be called more then 2 times'); + throw new Error('should not be called more then 2 times'); } }; const dbVersionProvider = new DbVersionProvider(versionGetter); @@ -47,7 +48,7 @@ describe('db version provider', () => { case 1: return Promise.resolve(VERSION_1); default: - fail('should not be called more then 1 time'); + throw new Error('should not be called more then 1 time'); } }; const dbVersionProvider = new DbVersionProvider(versionGetter); @@ -70,7 +71,7 @@ describe('db version provider', () => { case 3: return Promise.resolve(VERSION_1); default: - fail('should not be called more then 3 times'); + throw new Error('should not be called more then 3 times'); } }; const dbVersionProvider = new DbVersionProvider(versionGetter); diff --git a/test/version.ts b/packages/test/src/version.ts similarity index 71% rename from test/version.ts rename to packages/test/src/version.ts index 0678b3a7..be3f75ae 100644 --- a/test/version.ts +++ b/packages/test/src/version.ts @@ -1,9 +1,10 @@ -import { DbVersion } from '../src/utils/dbVersion'; +import { DbVersion } from '@weaviate/core/utils/dbVersion'; +import { describe, it, SuiteAPI, TestAPI } from 'vitest'; const version = DbVersion.fromString(`v${process.env.WEAVIATE_VERSION!}`); /** Run the suite / test only for Weaviate version above this. */ -export const requireAtLeast = (...semver: [...Parameters]) => +export const requireAtLeast = (...semver: [...Parameters]): any => version.isAtLeast(...semver) ? { describe, diff --git a/packages/test/tsconfig.json b/packages/test/tsconfig.json new file mode 100644 index 00000000..aeda3c1f --- /dev/null +++ b/packages/test/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "types": ["vitest"], + "strict": true, + "esModuleInterop": true, + "paths": { + "@weaviate/core/*": ["../core/src/*"], + "@weaviate/node": ["../node/src"] + } + }, + "include": ["src"], + "references": [{ "path": "../core" }, { "path": "../node" }] + +} diff --git a/packages/test/vitest.config.ts b/packages/test/vitest.config.ts new file mode 100644 index 00000000..32f861f6 --- /dev/null +++ b/packages/test/vitest.config.ts @@ -0,0 +1,22 @@ +import { defineConfig } from 'vitest/config'; +import path from 'path'; + +export default defineConfig({ + test: { + environment: 'node', + clearMocks: false, + coverage: { + provider: 'v8', + include: ['src/**/*.ts'], + exclude: ['node_modules', 'dist', 'src/proto'], + reporter: ['text', 'json', 'html'], + }, + testTimeout: 100000, + }, + resolve: { + alias: { + '@weaviate/core': path.resolve(__dirname, '../core/src'), + '@weaviate/core/*': path.resolve(__dirname, '../core/src/*'), + }, + }, +}); diff --git a/packages/web/package.json b/packages/web/package.json new file mode 100644 index 00000000..20959aff --- /dev/null +++ b/packages/web/package.json @@ -0,0 +1,53 @@ +{ + "name": "@weaviate/web", + "version": "1.0.0", + "description": "JS/TS web client for Weaviate", + "main": "dist/cjs/src/index.js", + "type": "module", + "exports": { + ".": { + "types": { + "require": "./dist/cjs/src/index.d.ts", + "default": "./dist/esm/src/index.d.ts" + }, + "default": { + "require": "./dist/cjs/src/index.js", + "default": "./dist/esm/src/index.js" + } + } + }, + "engines": { + "node": ">=20.0.0" + }, + "files": [ + "dist/cjs", + "dist/esm" + ], + "scripts": { + "build:cjs": "tsc --module commonjs --moduleResolution node10 --outDir dist/cjs && touch dist/cjs/package.json && echo '{\"type\": \"commonjs\"}' > dist/cjs/package.json", + "build:esm": "tsc --outDir dist/esm && touch dist/esm/package.json && echo '{\"type\": \"module\"}' > dist/esm/package.json", + "build": "npm run build:cjs && npm run build:esm" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/weaviate/typescript-client.git" + }, + "keywords": [ + "weaviate" + ], + "author": "Weaviate", + "license": "BSD 3-Clause", + "bugs": { + "url": "https://github.com/weaviate/typescript-client/issues" + }, + "homepage": "https://github.com/weaviate/typescript-client#readme", + "dependencies": { + "@weaviate/core": "workspace:^1.0.0", + "nice-grpc-web": "^3.3.7", + "vitest": "^3.2.4" + }, + "devDependencies": { + "@types/node": "^18.14.0", + "@types/uuid": "^9.0.1" + } +} diff --git a/packages/web/src/base64.test.ts b/packages/web/src/base64.test.ts new file mode 100644 index 00000000..8d249991 --- /dev/null +++ b/packages/web/src/base64.test.ts @@ -0,0 +1,62 @@ +import { downloadImageFromURLAsBase64 } from './base64.js'; +import { beforeEach, describe, expect, it, vitest, Mock } from 'vitest'; + +vitest.mock('../connection/http.js'); + +describe('downloadImageFromURLAsBase64()', () => { + const mockFetch = vitest.fn(); + + beforeEach(() => { + vitest.clearAllMocks(); + (fetch as Mock).mockReturnValue(mockFetch); + }); + + it('should convert a downloaded image to base64', async () => { + const mockUrl = 'https://example.com/image.jpg'; + const mockImageData = Buffer.from('image binary data'); + + mockFetch.mockResolvedValue(mockImageData); + + const result = await downloadImageFromURLAsBase64(mockUrl); + + expect(result).toBe(mockImageData.toString('base64')); + expect(fetch).toHaveBeenCalledWith({ headers: { 'Content-Type': 'image/*' }, host: '' }); + expect(mockFetch).toHaveBeenCalledWith(mockUrl); + }); + + it('should throw an error if the URL is invalid', async () => { + const invalidUrl = 'invalid-url'; + + await expect(downloadImageFromURLAsBase64(invalidUrl)).rejects.toThrow('Invalid URL'); + }); + + it('should throw an error if the image download fails', async () => { + const mockUrl = 'https://example.com/image.jpg'; + + mockFetch.mockRejectedValue(new Error('Network error')); + + await expect(downloadImageFromURLAsBase64(mockUrl)).rejects.toThrow('Failed to download image from URL'); + expect(fetch).toHaveBeenCalledWith({ headers: { 'Content-Type': 'image/*' }, host: '' }); + expect(mockFetch).toHaveBeenCalledWith(mockUrl); + }); + + it('should handle empty response data gracefully', async () => { + const mockUrl = 'https://example.com/image.jpg'; + + mockFetch.mockResolvedValue(Buffer.alloc(0)); + + const result = await downloadImageFromURLAsBase64(mockUrl); + + expect(result).toBe(''); + expect(fetch).toHaveBeenCalledWith({ headers: { 'Content-Type': 'image/*' }, host: '' }); + expect(mockFetch).toHaveBeenCalledWith(mockUrl); + }); + + it('should throw an error if the response is not a buffer', async () => { + const mockUrl = 'wrong-url.com'; + + mockFetch.mockResolvedValue('not a buffer'); + + await expect(downloadImageFromURLAsBase64(mockUrl)).rejects.toThrow('Invalid URL'); + }); +}); diff --git a/packages/web/src/base64.ts b/packages/web/src/base64.ts new file mode 100644 index 00000000..f4715d92 --- /dev/null +++ b/packages/web/src/base64.ts @@ -0,0 +1,62 @@ +const isUrl = (input: string): boolean => { + try { + new URL(input); // eslint-disable-line no-new + return true; + } catch { + return false; + } +}; + +const blobToBase64 = (blob: Blob): Promise => + new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onloadend = () => { + const result = reader.result; + if (typeof result === 'string') { + const base64 = result.split(',')[1]; // remove data:mime/type;base64, + resolve(base64); + } else { + reject(new Error('Could not convert blob to base64')); + } + }; + reader.onerror = reject; + reader.readAsDataURL(blob); + }); + +export const downloadImageFromURLAsBase64 = async (url: string): Promise => { + if (!isUrl(url)) { + throw new Error('Invalid URL'); + } + + const response = await fetch(url); + if (!response.ok) { + throw new Error(`Failed to fetch image: ${response.statusText}`); + } + + const blob = await response.blob(); + return blobToBase64(blob); +}; + +/** + * Converts media input into a base64 string. + * Accepts: + * - A base64 string (returns it unchanged) + * - A URL (fetches the image and converts to base64) + * - A `Blob` or `File` (uses FileReader) + */ +export const toBase64FromMedia = (media: string | Blob): Promise => { + if (typeof media === 'string') { + if (media.startsWith('data:') || /^[A-Za-z0-9+/=]+$/.test(media)) { + // Already base64 string + return Promise.resolve(media); + } else if (isUrl(media)) { + return downloadImageFromURLAsBase64(media); + } else { + throw new Error('Unsupported string format. Must be base64 or a valid URL.'); + } + } else if (media instanceof Blob) { + return blobToBase64(media); + } else { + throw new Error('Unsupported media type'); + } +}; diff --git a/packages/web/src/index.ts b/packages/web/src/index.ts new file mode 100644 index 00000000..ea92a3ce --- /dev/null +++ b/packages/web/src/index.ts @@ -0,0 +1,121 @@ +import weaviate, { + ApiKey, + AuthAccessTokenCredentials, + AuthClientCredentials, + AuthUserPasswordCredentials, + ClientParams, + configGuards, + configure, + ConnectToCustomOptions, + ConnectToLocalOptions, + ConnectToWCDOptions, + ConnectToWCSOptions, + ConnectToWeaviateCloudOptions, + Context, + filter, + helpers, + permissions, + reconfigure, + IWeaviateClient, + ICollections, + ICollection, +} from '@weaviate/core'; +import { toBase64FromMedia } from './base64.js'; +import { transportsMaker } from './transports.js'; + +const context: Context = { + transportsMaker, + toBase64FromMedia, +}; + +/** + * Connect to a custom Weaviate deployment, e.g. your own self-hosted Kubernetes cluster. + * + * @param {ConnectToCustomOptions} options Options for the connection. + * @returns {Promise} A Promise that resolves to a client connected to your custom Weaviate deployment. + */ +export function connectToCustom(options: ConnectToCustomOptions): Promise { + return helpers.connectToCustom(weaviate, context, options); +} + +/** + * Connect to a locally-deployed Weaviate instance, e.g. as a Docker compose stack. + * + * @param {ConnectToLocalOptions} [options] Options for the connection. + * @returns {Promise} A Promise that resolves to a client connected to your local Weaviate instance. + */ +export function connectToLocal(options?: ConnectToLocalOptions): Promise { + return helpers.connectToLocal(weaviate, context, options); +} + +/** + * Connect to your own Weaviate Cloud (WCD) instance. + * + * @deprecated Use `connectToWeaviateCloud` instead. + * + * @param {string} clusterURL The URL of your WCD instance. E.g., `https://example.weaviate.network`. + * @param {ConnectToWCDOptions} [options] Additional options for the connection. + * @returns {Promise} A Promise that resolves to a client connected to your WCD instance. + */ +export function connectToWCD(clusterURL: string, options?: ConnectToWCDOptions): Promise { + console.warn( + 'The `connectToWCD` method is deprecated. Please use `connectToWeaviateCloud` instead. This method will be removed in a future release.' + ); + return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, options); +} + +/** + * Connect to your own Weaviate Cloud Service (WCS) instance. + * + * @deprecated Use `connectToWeaviateCloud` instead. + * + * @param {string} clusterURL The URL of your WCD instance. E.g., `https://example.weaviate.network`. + * @param {ConnectToWCSOptions} [options] Additional options for the connection. + * @returns {Promise} A Promise that resolves to a client connected to your WCS instance. + */ +export function connectToWCS(clusterURL: string, options?: ConnectToWCSOptions): Promise { + console.warn( + 'The `connectToWCS` method is deprecated. Please use `connectToWeaviateCloud` instead. This method will be removed in a future release.' + ); + return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, options); +} + +/** + * Connect to your own Weaviate Cloud (WCD) instance. + * + * @param {string} clusterURL The URL of your WCD instance. E.g., `https://example.weaviate.network`. + * @param {ConnectToWeaviateCloudOptions} [options] Additional options for the connection. + * @returns {Promise} A Promise that resolves to a client connected to your WCD instance. + */ +export function connectToWeaviateCloud( + clusterURL: string, + options?: ConnectToWeaviateCloudOptions +): Promise { + return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, options); +} + +const app = { + connectToCustom, + connectToLocal, + connectToWCD, + connectToWCS, + connectToWeaviateCloud, + client: (params: ClientParams) => weaviate(context, params), + ApiKey, + AuthUserPasswordCredentials, + AuthAccessTokenCredentials, + AuthClientCredentials, + configure, + configGuards, + filter: filter(), + reconfigure, + permissions, +}; + +export interface WeaviateClient extends IWeaviateClient {} +export interface Collections extends ICollections {} +export interface Collection extends ICollection {} + +export default app; + +export * from '@weaviate/core'; diff --git a/packages/web/src/transports.ts b/packages/web/src/transports.ts new file mode 100644 index 00000000..25aade5d --- /dev/null +++ b/packages/web/src/transports.ts @@ -0,0 +1,15 @@ +import { Transports, TransportsParams } from '@weaviate/core'; + +import { createChannel, createClientFactory } from 'nice-grpc-web'; + +import { HealthDefinition, WeaviateDefinition } from '@weaviate/core/proto'; + +const clientFactory = createClientFactory(); + +export const transportsMaker = (params: TransportsParams): Transports => { + const channel = createChannel(params.grpcAddress); + return { + weaviate: clientFactory.create(WeaviateDefinition, channel), + health: clientFactory.create(HealthDefinition, channel), + }; +}; diff --git a/packages/web/tsconfig.json b/packages/web/tsconfig.json new file mode 100644 index 00000000..be968e24 --- /dev/null +++ b/packages/web/tsconfig.json @@ -0,0 +1,30 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "target": "es2017", + "strict": true, + "preserveConstEnums": true, + "alwaysStrict": true, + "noImplicitAny": true, + "noImplicitThis": true, + "strictFunctionTypes": true, + "module": "esnext", + "moduleResolution": "bundler", + "lib": ["es2017", "dom"], + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "esModuleInterop": true, + "outDir": "./dist", + "declaration": true, + "rootDir": ".", + "types": ["node", "uuid"], + "moduleDetection": "force", + "paths": { + "@weaviate/core": ["../core/src"], + "@weaviate/core/proto": ["../core/src/proto"] + } + }, + "include": ["src"], + "references": [{ "path": "../core" }] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..c1778b0c --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,7900 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@typescript-eslint/eslint-plugin': + specifier: ^6.21.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/parser': + specifier: ^6.21.0 + version: 6.21.0(eslint@8.57.1)(typescript@5.8.3) + eslint: + specifier: ^8.57.1 + version: 8.57.1 + eslint-config-prettier: + specifier: ^8.10.0 + version: 8.10.0(eslint@8.57.1) + eslint-plugin-prettier: + specifier: ^4.2.1 + version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.1))(eslint@8.57.1)(prettier@2.8.8) + husky: + specifier: ^8.0.3 + version: 8.0.3 + lint-staged: + specifier: ^13.3.0 + version: 13.3.0 + openapi-typescript: + specifier: ^5.4.2 + version: 5.4.2 + prettier: + specifier: ^2.8.8 + version: 2.8.8 + prettier-plugin-organize-imports: + specifier: ^3.2.4 + version: 3.2.4(prettier@2.8.8)(typescript@5.8.3) + ts-proto: + specifier: ^1.181.2 + version: 1.181.2 + typedoc: + specifier: ^0.26.11 + version: 0.26.11(typescript@5.8.3) + typedoc-plugin-extras: + specifier: ^3.1.0 + version: 3.1.0(typedoc@0.26.11(typescript@5.8.3)) + typescript: + specifier: ^5.8.3 + version: 5.8.3 + + packages/core: + dependencies: + abort-controller-x: + specifier: ^0.4.3 + version: 0.4.3 + graphql: + specifier: ^16.10.0 + version: 16.11.0 + graphql-request: + specifier: ^6.1.0 + version: 6.1.0(graphql@16.11.0) + long: + specifier: ^5.2.4 + version: 5.3.2 + nice-grpc-common: + specifier: ^2.0.2 + version: 2.0.2 + uuid: + specifier: ^9.0.1 + version: 9.0.1 + devDependencies: + '@babel/core': + specifier: ^7.20.12 + version: 7.27.4 + '@babel/preset-typescript': + specifier: ^7.18.6 + version: 7.27.1(@babel/core@7.27.4) + '@babel/runtime': + specifier: ^7.20.7 + version: 7.27.6 + '@curveball/bodyparser': + specifier: 0.5.0 + version: 0.5.0(@curveball/kernel@0.20.1) + '@curveball/core': + specifier: 0.20.0 + version: 0.20.0 + '@curveball/kernel': + specifier: 0.20.1 + version: 0.20.1 + '@rollup/plugin-babel': + specifier: ^5.3.1 + version: 5.3.1(@babel/core@7.27.4)(@types/babel__core@7.20.5)(rollup@4.44.0) + '@testcontainers/weaviate': + specifier: ^10.14.0 + version: 10.28.0 + '@types/express': + specifier: ^4.17.21 + version: 4.17.23 + '@types/isomorphic-fetch': + specifier: ^0.0.36 + version: 0.0.36 + '@types/jest': + specifier: ^29.4.0 + version: 29.5.14 + '@types/node': + specifier: ^18.14.0 + version: 18.19.112 + '@types/uuid': + specifier: ^9.0.1 + version: 9.0.8 + '@typescript-eslint/eslint-plugin': + specifier: ^6.21.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/parser': + specifier: ^6.21.0 + version: 6.21.0(eslint@8.57.1)(typescript@5.8.3) + babel-jest: + specifier: ^29.4.3 + version: 29.7.0(@babel/core@7.27.4) + eslint: + specifier: ^8.35.0 + version: 8.57.1 + eslint-config-prettier: + specifier: ^8.7.0 + version: 8.10.0(eslint@8.57.1) + eslint-plugin-prettier: + specifier: ^4.2.1 + version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.1))(eslint@8.57.1)(prettier@2.8.8) + express: + specifier: ^4.19.2 + version: 4.21.2 + grpc-tools: + specifier: ^1.12.4 + version: 1.13.0 + husky: + specifier: ^8.0.3 + version: 8.0.3 + jest: + specifier: ^29.4.3 + version: 29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)) + lint-staged: + specifier: ^13.2.0 + version: 13.3.0 + openapi-typescript: + specifier: ^5.4.1 + version: 5.4.2 + prettier: + specifier: ^2.8.4 + version: 2.8.8 + prettier-plugin-organize-imports: + specifier: ^3.2.4 + version: 3.2.4(prettier@2.8.8)(typescript@5.8.3) + protobufjs: + specifier: ^7.2.6 + version: 7.5.3 + ts-jest: + specifier: ^29.0.5 + version: 29.4.0(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(esbuild@0.25.5)(jest-util@29.7.0)(jest@29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)))(typescript@5.8.3) + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@18.19.112)(typescript@5.8.3) + ts-proto: + specifier: ^1.163.0 + version: 1.181.2 + tsup: + specifier: ^8.0.2 + version: 8.5.0(postcss@8.5.6)(typescript@5.8.3)(yaml@2.8.0) + typedoc: + specifier: ^0.26.0 + version: 0.26.11(typescript@5.8.3) + typedoc-plugin-extras: + specifier: ^3.0.0 + version: 3.1.0(typedoc@0.26.11(typescript@5.8.3)) + typescript: + specifier: ^5.3.3 + version: 5.8.3 + + packages/node: + dependencies: + '@weaviate/core': + specifier: workspace:^1.0.0 + version: link:../core + nice-grpc: + specifier: ^2.1.12 + version: 2.1.12 + nice-grpc-client-middleware-retry: + specifier: ^3.1.10 + version: 3.1.11 + vitest: + specifier: ^3.2.4 + version: 3.2.4(@types/node@18.19.112) + devDependencies: + '@types/node': + specifier: ^18.14.0 + version: 18.19.112 + '@types/uuid': + specifier: ^9.0.1 + version: 9.0.8 + + packages/test: + devDependencies: + '@weaviate/core': + specifier: workspace:^1.0.0 + version: link:../core + '@weaviate/node': + specifier: workspace:^1.0.0 + version: link:../node + express: + specifier: ^4.21.2 + version: 4.21.2 + nice-grpc: + specifier: ^2.1.12 + version: 2.1.12 + vitest: + specifier: ^3.2.4 + version: 3.2.4(@types/node@18.19.112) + + packages/web: + dependencies: + '@weaviate/core': + specifier: workspace:^1.0.0 + version: link:../core + nice-grpc-web: + specifier: ^3.3.7 + version: 3.3.7(ws@8.18.2) + vitest: + specifier: ^3.2.4 + version: 3.2.4(@types/node@18.19.112) + devDependencies: + '@types/node': + specifier: ^18.14.0 + version: 18.19.112 + '@types/uuid': + specifier: ^9.0.1 + version: 9.0.8 + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.27.5': + resolution: {integrity: sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.27.4': + resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.27.5': + resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.27.1': + resolution: {integrity: sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-member-expression-to-functions@7.27.1': + resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.27.3': + resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-replace-supers@7.27.1': + resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.27.6': + resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.27.5': + resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.27.1': + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.27.1': + resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.27.1': + resolution: {integrity: sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.27.1': + resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.27.6': + resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.27.4': + resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.6': + resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==} + engines: {node: '>=6.9.0'} + + '@balena/dockerignore@1.0.2': + resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@curveball/bodyparser@0.5.0': + resolution: {integrity: sha512-xuD5X4YgCSPG0dq2E6xjEQsVM2+rJDhKyz0gpEflOJX/Nm8tS9ROiy22nLWBEskbrfBKx8XhuUqM+Bt/ojsVxA==} + peerDependencies: + '@curveball/kernel': '>=0.20.0 <1' + + '@curveball/core@0.20.0': + resolution: {integrity: sha512-hLsCgRpvPQyJ4LAS5zpaMnHO98lyDWz6ph+Ch2TiX3WQLPPkTB14Iuwm9hq0PKovwO+2qQ53HJAtqXi1DXxFPQ==} + engines: {node: '>=14.4'} + + '@curveball/http-errors@0.4.1': + resolution: {integrity: sha512-RJe0IOQQpgvCwUY8ZKK7/YgfWi1MqMzMrIHilwXHaMFykoVjpRNzaeO3FmrKSUlmJSb6vuPd37LEPNUne4PxZA==} + + '@curveball/kernel@0.20.1': + resolution: {integrity: sha512-Cc++ud5IfR4UbR30F9zM7XDiasCzMwGWUWALXrzozt/2ocZeNzSX+ekk7PeXHsu5Ua34F6ve5POt9RfjMuaOLQ==} + engines: {node: '>=14.4'} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.25.5': + resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.25.5': + resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.25.5': + resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.25.5': + resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.25.5': + resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.5': + resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.25.5': + resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.5': + resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.25.5': + resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.25.5': + resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.25.5': + resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.25.5': + resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.25.5': + resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.25.5': + resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.5': + resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.25.5': + resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.25.5': + resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.5': + resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.5': + resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.5': + resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.5': + resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.25.5': + resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.25.5': + resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.25.5': + resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.25.5': + resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.7.0': + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + + '@graphql-typed-document-node/core@3.2.0': + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@grpc/grpc-js@1.13.4': + resolution: {integrity: sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==} + engines: {node: '>=12.10.0'} + + '@grpc/proto-loader@0.7.15': + resolution: {integrity: sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==} + engines: {node: '>=6'} + hasBin: true + + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/core@29.7.0': + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/reporters@29.7.0': + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@js-sdsl/ordered-map@4.4.2': + resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + + '@mapbox/node-pre-gyp@1.0.11': + resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} + hasBin: true + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + + '@rollup/plugin-babel@5.3.1': + resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} + engines: {node: '>= 10.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true + + '@rollup/pluginutils@3.1.0': + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + + '@rollup/rollup-android-arm-eabi@4.44.0': + resolution: {integrity: sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.44.0': + resolution: {integrity: sha512-uNSk/TgvMbskcHxXYHzqwiyBlJ/lGcv8DaUfcnNwict8ba9GTTNxfn3/FAoFZYgkaXXAdrAA+SLyKplyi349Jw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.44.0': + resolution: {integrity: sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.44.0': + resolution: {integrity: sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.44.0': + resolution: {integrity: sha512-u5AZzdQJYJXByB8giQ+r4VyfZP+walV+xHWdaFx/1VxsOn6eWJhK2Vl2eElvDJFKQBo/hcYIBg/jaKS8ZmKeNQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.44.0': + resolution: {integrity: sha512-qC0kS48c/s3EtdArkimctY7h3nHicQeEUdjJzYVJYR3ct3kWSafmn6jkNCA8InbUdge6PVx6keqjk5lVGJf99g==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.44.0': + resolution: {integrity: sha512-x+e/Z9H0RAWckn4V2OZZl6EmV0L2diuX3QB0uM1r6BvhUIv6xBPL5mrAX2E3e8N8rEHVPwFfz/ETUbV4oW9+lQ==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.44.0': + resolution: {integrity: sha512-1exwiBFf4PU/8HvI8s80icyCcnAIB86MCBdst51fwFmH5dyeoWVPVgmQPcKrMtBQ0W5pAs7jBCWuRXgEpRzSCg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.44.0': + resolution: {integrity: sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.44.0': + resolution: {integrity: sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.44.0': + resolution: {integrity: sha512-xw+FTGcov/ejdusVOqKgMGW3c4+AgqrfvzWEVXcNP6zq2ue+lsYUgJ+5Rtn/OTJf7e2CbgTFvzLW2j0YAtj0Gg==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.44.0': + resolution: {integrity: sha512-bKGibTr9IdF0zr21kMvkZT4K6NV+jjRnBoVMt2uNMG0BYWm3qOVmYnXKzx7UhwrviKnmK46IKMByMgvpdQlyJQ==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.44.0': + resolution: {integrity: sha512-vV3cL48U5kDaKZtXrti12YRa7TyxgKAIDoYdqSIOMOFBXqFj2XbChHAtXquEn2+n78ciFgr4KIqEbydEGPxXgA==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.44.0': + resolution: {integrity: sha512-TDKO8KlHJuvTEdfw5YYFBjhFts2TR0VpZsnLLSYmB7AaohJhM8ctDSdDnUGq77hUh4m/djRafw+9zQpkOanE2Q==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.44.0': + resolution: {integrity: sha512-8541GEyktXaw4lvnGp9m84KENcxInhAt6vPWJ9RodsB/iGjHoMB2Pp5MVBCiKIRxrxzJhGCxmNzdu+oDQ7kwRA==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.44.0': + resolution: {integrity: sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.44.0': + resolution: {integrity: sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.44.0': + resolution: {integrity: sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.44.0': + resolution: {integrity: sha512-3XJ0NQtMAXTWFW8FqZKcw3gOQwBtVWP/u8TpHP3CRPXD7Pd6s8lLdH3sHWh8vqKCyyiI8xW5ltJScQmBU9j7WA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.44.0': + resolution: {integrity: sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==} + cpu: [x64] + os: [win32] + + '@shikijs/core@1.29.2': + resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==} + + '@shikijs/engine-javascript@1.29.2': + resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==} + + '@shikijs/engine-oniguruma@1.29.2': + resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==} + + '@shikijs/langs@1.29.2': + resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==} + + '@shikijs/themes@1.29.2': + resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==} + + '@shikijs/types@1.29.2': + resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@testcontainers/weaviate@10.28.0': + resolution: {integrity: sha512-SR4JWacoJwaoD6P6O7CwInG/xjDfIDTUqtunxJPzent4JiDF86jpC1HjLGhp0dciemJWoa1hRR5/REgIcAyBow==} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.7': + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + + '@types/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} + + '@types/chai@5.2.2': + resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/docker-modem@3.0.6': + resolution: {integrity: sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==} + + '@types/dockerode@3.3.41': + resolution: {integrity: sha512-5kOi6bcnEjqfJ68ZNV/bBvSMLNIucc0XbRmBO4hg5OoFCoP99eSRcbMysjkzV7ZxQEmmc/zMnv4A7odwuKFzDA==} + + '@types/estree@0.0.39': + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/express-serve-static-core@4.19.6': + resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + + '@types/express@4.17.23': + resolution: {integrity: sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/http-errors@2.0.5': + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} + + '@types/isomorphic-fetch@0.0.36': + resolution: {integrity: sha512-ulw4d+vW1HKn4oErSmNN2HYEcHGq0N1C5exlrMM0CRqX1UUpFhGb5lwiom5j9KN3LBJJDLRmYIZz1ghm7FIzZw==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@29.5.14': + resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/node@18.19.112': + resolution: {integrity: sha512-i+Vukt9POdS/MBI7YrrkkI5fMfwFtOjphSmt4WXYLfwqsfr6z/HdCx7LqT9M7JktGob8WNgj8nFB4TbGNE4Cog==} + + '@types/qs@6.14.0': + resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/semver@7.7.0': + resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} + + '@types/send@0.17.5': + resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} + + '@types/serve-static@1.15.8': + resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==} + + '@types/ssh2-streams@0.1.12': + resolution: {integrity: sha512-Sy8tpEmCce4Tq0oSOYdfqaBpA3hDM8SoxoFh5vzFsu2oL+znzGz8oVWW7xb4K920yYMUY+PIG31qZnFMfPWNCg==} + + '@types/ssh2@0.5.52': + resolution: {integrity: sha512-lbLLlXxdCZOSJMCInKH2+9V/77ET2J6NPQHpFI0kda61Dd1KglJs+fPQBchizmzYSOJBgdTajhPqBO1xxLywvg==} + + '@types/ssh2@1.15.5': + resolution: {integrity: sha512-N1ASjp/nXH3ovBHddRJpli4ozpk6UdDYIX4RJWFa9L1YKnzdhTlVmiGHm4DZnj/jLbqZpes4aeR30EFGQtvhQQ==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + + '@typescript-eslint/eslint-plugin@6.21.0': + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@6.21.0': + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@6.21.0': + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/type-utils@6.21.0': + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@6.21.0': + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/typescript-estree@6.21.0': + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@6.21.0': + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + + '@typescript-eslint/visitor-keys@6.21.0': + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@vitest/expect@3.2.4': + resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + + '@vitest/mocker@3.2.4': + resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@3.2.4': + resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + + '@vitest/runner@3.2.4': + resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} + + '@vitest/snapshot@3.2.4': + resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} + + '@vitest/spy@3.2.4': + resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + + '@vitest/utils@3.2.4': + resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + + abort-controller-x@0.4.3: + resolution: {integrity: sha512-VtUwTNU8fpMwvWGn4xE93ywbogTYsuT+AUxAXOeelbXuQVIwNmC5YLeho9sH4vZ4ITW8414TTAOG1nW6uIVHCA==} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + engines: {node: '>=12'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + + archiver-utils@5.0.2: + resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} + engines: {node: '>= 14'} + + archiver@7.0.1: + resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} + engines: {node: '>= 14'} + + are-we-there-yet@2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + deprecated: This package is no longer supported. + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + async-lock@1.4.1: + resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + b4a@1.6.7: + resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + bare-events@2.5.4: + resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} + + bare-fs@4.1.5: + resolution: {integrity: sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==} + engines: {bare: '>=1.16.0'} + peerDependencies: + bare-buffer: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + + bare-os@3.6.1: + resolution: {integrity: sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==} + engines: {bare: '>=1.14.0'} + + bare-path@3.0.0: + resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} + + bare-stream@2.6.5: + resolution: {integrity: sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==} + peerDependencies: + bare-buffer: '*' + bare-events: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + bare-events: + optional: true + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.25.0: + resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-crc32@1.0.0: + resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} + engines: {node: '>=8.0.0'} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + buildcheck@0.0.6: + resolution: {integrity: sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==} + engines: {node: '>=10.0.0'} + + bundle-require@5.1.0: + resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.18' + + byline@5.0.0: + resolution: {integrity: sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==} + engines: {node: '>=0.10.0'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001724: + resolution: {integrity: sha512-WqJo7p0TbHDOythNTqYujmaJTvtYRZrjpP8TCvH6Vb9CYJerJNKamKzIWOM4BkQatWj9H2lYulpdAQNBe7QhNA==} + + case-anything@2.1.13: + resolution: {integrity: sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==} + engines: {node: '>=12.13'} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + engines: {node: '>=12'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + + cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cli-truncate@3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@11.0.0: + resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} + engines: {node: '>=16'} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + compress-commons@6.0.2: + resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} + engines: {node: '>= 14'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cpu-features@0.0.10: + resolution: {integrity: sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==} + engines: {node: '>=10.0.0'} + + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + crc32-stream@6.0.0: + resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} + engines: {node: '>= 14'} + + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-fetch@3.2.0: + resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dedent@1.6.0: + resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + engines: {node: '>=8'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + docker-compose@0.24.8: + resolution: {integrity: sha512-plizRs/Vf15H+GCVxq2EUvyPK7ei9b/cVesHvjnX4xaXjM9spHe2Ytq0BitndFgvTJ3E3NljPNUEl7BAN43iZw==} + engines: {node: '>= 6.0.0'} + + docker-modem@5.0.6: + resolution: {integrity: sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==} + engines: {node: '>= 8.0'} + + dockerode@4.0.7: + resolution: {integrity: sha512-R+rgrSRTRdU5mH14PZTCPZtW/zw3HDWNTS/1ZAQpL/5Upe/ye5K9WQkIysu4wBoiMwKynsz0a8qWuGsHgEvSAA==} + engines: {node: '>= 8.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dprint-node@1.0.8: + resolution: {integrity: sha512-iVKnUtYfGrYcW1ZAlfR/F59cUVL8QIhWoBJoSjkkdua/dkWIgjZfiLMeTjiB06X0ZLkQ0M2C1VbUj/CxkIf1zg==} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.5.171: + resolution: {integrity: sha512-scWpzXEJEMrGJa4Y6m/tVotb0WuvNmasv3wWVzUAeCgKU0ToFOhUW6Z+xWnRQANMYGxN4ngJXIThgBJOqzVPCQ==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + emoji-regex-xs@1.0.0: + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.25.5: + resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-prettier@8.10.0: + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-plugin-prettier@4.2.1: + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expect-type@1.2.1: + resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} + engines: {node: '>=12.0.0'} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + express@4.21.2: + resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + engines: {node: '>= 0.10.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fdir@6.4.6: + resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + engines: {node: '>= 0.8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + fix-dts-default-cjs-exports@1.0.1: + resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gauge@3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + deprecated: This package is no longer supported. + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-port@7.1.0: + resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} + engines: {node: '>=16'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + graphql-request@6.1.0: + resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==} + peerDependencies: + graphql: 14 - 16 + + graphql@16.11.0: + resolution: {integrity: sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + + grpc-tools@1.13.0: + resolution: {integrity: sha512-7CbkJ1yWPfX0nHjbYG58BQThNhbICXBZynzCUxCb3LzX5X9B3hQbRY2STiRgIEiLILlK9fgl0z0QVGwPCdXf5g==} + hasBin: true + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + + husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} + engines: {node: '>=14'} + hasBin: true + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isomorphic-ws@5.0.0: + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@29.7.0: + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + + js-base64@3.7.7: + resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + + lint-staged@13.3.0: + resolution: {integrity: sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + + listr2@6.6.1: + resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==} + engines: {node: '>=16.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-update@5.0.1: + resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + + loupe@3.1.4: + resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mlly@1.7.4: + resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nan@2.22.2: + resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + nice-grpc-client-middleware-retry@3.1.11: + resolution: {integrity: sha512-xW/imz/kNG2g0DwTfH2eYEGrg1chSLrXtvGp9fg2qkhTgGFfAS/Pq3+t+9G8KThcC4hK/xlEyKvZWKk++33S6A==} + + nice-grpc-common@2.0.2: + resolution: {integrity: sha512-7RNWbls5kAL1QVUOXvBsv1uO0wPQK3lHv+cY1gwkTzirnG1Nop4cBJZubpgziNbaVc/bl9QJcyvsf/NQxa3rjQ==} + + nice-grpc-web@3.3.7: + resolution: {integrity: sha512-9RyOGxmPm5rCLizn2uNFSSnlBPU/2n1i8inaNSAT52QAcOITKvCTFmOUnU+1CAJrKlxiGV64KFfcxJG77JDV5w==} + + nice-grpc@2.1.12: + resolution: {integrity: sha512-J1n4Wg+D3IhRhGQb+iqh2OpiM0GzTve/kf2lnlW4S+xczmIEd0aHUDV1OsJ5a3q8GSTqJf+s4Rgg1M8uJltarw==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + npmlog@5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + deprecated: This package is no longer supported. + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + oniguruma-to-es@2.3.0: + resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==} + + openapi-typescript@5.4.2: + resolution: {integrity: sha512-tHeRv39Yh7brqJpbUntdjtUaXrTHmC4saoyTLU/0J2I8LEFQYDXRLgnmWTMiMOB2GXugJiqHa5n9sAyd6BRqiA==} + engines: {node: '>= 14.0.0'} + hasBin: true + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier-plugin-organize-imports@3.2.4: + resolution: {integrity: sha512-6m8WBhIp0dfwu0SkgfOxJqh+HpdyfqSSLfKKRZSFbDuEQXDDndb8fTpRWkUrX/uBenkex3MgnVk0J3b3Y5byog==} + peerDependencies: + '@volar/vue-language-plugin-pug': ^1.0.4 + '@volar/vue-typescript': ^1.0.4 + prettier: '>=2.0' + typescript: '>=2.9' + peerDependenciesMeta: + '@volar/vue-language-plugin-pug': + optional: true + '@volar/vue-typescript': + optional: true + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + proper-lockfile@4.1.2: + resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} + + properties-reader@2.3.0: + resolution: {integrity: sha512-z597WicA7nDZxK12kZqHr2TcvwNU1GCfA5UwfDY/HDp3hXPoPlb5rlEx9bwGTiJnc0OqbBTkU975jDToth8Gxw==} + engines: {node: '>=14'} + + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + + protobufjs@7.5.3: + resolution: {integrity: sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==} + engines: {node: '>=12.0.0'} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + pump@3.0.3: + resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + regex-recursion@5.1.1: + resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@5.1.1: + resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup@4.44.0: + resolution: {integrity: sha512-qHcdEzLCiktQIfwBq420pn2dP+30uzqYxv9ETm91wdt2R9AFcWfjNAmje4NWlnCIQ5RMTzVf0ZyisOKqHR6RwA==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shiki@1.29.2: + resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + split-ca@1.0.1: + resolution: {integrity: sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + ssh-remote-port-forward@1.0.4: + resolution: {integrity: sha512-x0LV1eVDwjf1gmG7TTnfqIzf+3VPRz7vrNIjX6oYLbeCrf/PeVY6hkT68Mg+q02qXxQhrLjB0jfgvhevoCRmLQ==} + + ssh2@1.16.0: + resolution: {integrity: sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg==} + engines: {node: '>=10.16.0'} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + + streamx@2.22.1: + resolution: {integrity: sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@3.0.0: + resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tar-fs@2.1.3: + resolution: {integrity: sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==} + + tar-fs@3.0.10: + resolution: {integrity: sha512-C1SwlQGNLe/jPNqapK8epDsXME7CAJR5RL3GcE6KWx1d9OUByzoHVcbu1VPI8tevg9H8Alae0AApHHFGzrD5zA==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + testcontainers@10.28.0: + resolution: {integrity: sha512-1fKrRRCsgAQNkarjHCMKzBKXSJFmzNTiTbhb5E/j5hflRXChEtHvkefjaHlgkNUjfw92/Dq8LTgwQn6RDBFbMg==} + + text-decoder@1.2.3: + resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} + + tinypool@1.1.1: + resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + + tinyspy@4.0.3: + resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} + engines: {node: '>=14.0.0'} + + tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + ts-api-utils@1.4.3: + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-error@1.0.6: + resolution: {integrity: sha512-tLJxacIQUM82IR7JO1UUkKlYuUTmoY9HBJAmNWFzheSlDS5SPMcNIepejHJa4BpPQLAcbRhRf3GDJzyj6rbKvA==} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-jest@29.4.0: + resolution: {integrity: sha512-d423TJMnJGu80/eSgfQ5w/R+0zFJvdtTxwtF9KzFFunOpSeD+79lHJQIiAhluJoyGRbvj9NZJsl9WjCUo0ND7Q==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 || ^30.0.0 + '@jest/types': ^29.0.0 || ^30.0.0 + babel-jest: ^29.0.0 || ^30.0.0 + esbuild: '*' + jest: ^29.0.0 || ^30.0.0 + jest-util: ^29.0.0 || ^30.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/transform': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + jest-util: + optional: true + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + ts-poet@6.12.0: + resolution: {integrity: sha512-xo+iRNMWqyvXpFTaOAvLPA5QAWO6TZrSUs5s4Odaya3epqofBu/fMLHEWl8jPmjhA0s9sgj9sNvF1BmaQlmQkA==} + + ts-proto-descriptors@1.16.0: + resolution: {integrity: sha512-3yKuzMLpltdpcyQji1PJZRfoo4OJjNieKTYkQY8pF7xGKsYz/RHe3aEe4KiRxcinoBmnEhmuI+yJTxLb922ULA==} + + ts-proto@1.181.2: + resolution: {integrity: sha512-knJ8dtjn2Pd0c5ZGZG8z9DMiD4PUY8iGI9T9tb8DvGdWRMkLpf0WcPO7G+7cmbZyxvNTAG6ci3fybEaFgMZIvg==} + hasBin: true + + tsup@8.5.0: + resolution: {integrity: sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + + tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typedoc-plugin-extras@3.1.0: + resolution: {integrity: sha512-8tNeq2fgl2HCUZ6eZuAoLLKEvB/WrRS4He9MtTfo3X3Pa8Iw3TS5D0g8krDhUXUk1uHpXVAVHm8rSOMS2mdJRw==} + peerDependencies: + typedoc: 0.26.x + + typedoc@0.26.11: + resolution: {integrity: sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==} + engines: {node: '>= 18'} + hasBin: true + 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 || 5.4.x || 5.5.x || 5.6.x + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + undici@5.29.0: + resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} + engines: {node: '>=14.0'} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vite-node@3.2.4: + resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + + vite@5.4.19: + resolution: {integrity: sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest@3.2.4: + resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.2.4 + '@vitest/ui': 3.2.4 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + ws@8.18.2: + resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} + 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 + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@2.3.1: + resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} + engines: {node: '>= 14'} + + yaml@2.8.0: + resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zip-stream@6.0.1: + resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} + engines: {node: '>= 14'} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.27.5': {} + + '@babel/core@7.27.4': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) + '@babel/helpers': 7.27.6 + '@babel/parser': 7.27.5 + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 + convert-source-map: 2.0.0 + debug: 4.4.1 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.27.5': + dependencies: + '@babel/parser': 7.27.5 + '@babel/types': 7.27.6 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.27.6 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.27.5 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.25.0 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.4) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.27.4 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-member-expression-to-functions@7.27.1': + dependencies: + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.27.6 + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.27.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.27.6': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.6 + + '@babel/parser@7.27.5': + dependencies: + '@babel/types': 7.27.6 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.4) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.4) + transitivePeerDependencies: + - supports-color + + '@babel/runtime@7.27.6': {} + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.27.5 + '@babel/types': 7.27.6 + + '@babel/traverse@7.27.4': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.5 + '@babel/parser': 7.27.5 + '@babel/template': 7.27.2 + '@babel/types': 7.27.6 + debug: 4.4.1 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.27.6': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@balena/dockerignore@1.0.2': {} + + '@bcoe/v8-coverage@0.2.3': {} + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@curveball/bodyparser@0.5.0(@curveball/kernel@0.20.1)': + dependencies: + '@curveball/kernel': 0.20.1 + + '@curveball/core@0.20.0': + dependencies: + '@curveball/http-errors': 0.4.1 + '@curveball/kernel': 0.20.1 + '@types/ws': 8.18.1 + raw-body: 2.5.2 + ws: 8.18.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@curveball/http-errors@0.4.1': {} + + '@curveball/kernel@0.20.1': + dependencies: + '@curveball/http-errors': 0.4.1 + '@types/ws': 8.18.1 + accepts: 1.3.8 + raw-body: 2.5.2 + ws: 8.18.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/aix-ppc64@0.25.5': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.25.5': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-arm@0.25.5': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/android-x64@0.25.5': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.25.5': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.25.5': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.25.5': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.25.5': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.25.5': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-arm@0.25.5': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.25.5': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.25.5': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.25.5': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.25.5': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.25.5': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.25.5': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/linux-x64@0.25.5': + optional: true + + '@esbuild/netbsd-arm64@0.25.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.25.5': + optional: true + + '@esbuild/openbsd-arm64@0.25.5': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.25.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.25.5': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.25.5': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.25.5': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@esbuild/win32-x64@0.25.5': + optional: true + + '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.4.1 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.57.1': {} + + '@fastify/busboy@2.1.1': {} + + '@graphql-typed-document-node/core@3.2.0(graphql@16.11.0)': + dependencies: + graphql: 16.11.0 + + '@grpc/grpc-js@1.13.4': + dependencies: + '@grpc/proto-loader': 0.7.15 + '@js-sdsl/ordered-map': 4.4.2 + + '@grpc/proto-loader@0.7.15': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.3.2 + protobufjs: 7.5.3 + yargs: 17.7.2 + + '@humanwhocodes/config-array@0.13.0': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.1 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.19.112 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.112 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.112 + jest-mock: 29.7.0 + + '@jest/expect-utils@29.7.0': + dependencies: + jest-get-type: 29.6.3 + + '@jest/expect@29.7.0': + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 18.19.112 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/globals@29.7.0': + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/reporters@29.7.0': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + '@types/node': 18.19.112 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - supports-color + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/source-map@29.6.3': + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + callsites: 3.1.0 + graceful-fs: 4.2.11 + + '@jest/test-result@29.7.0': + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + + '@jest/test-sequencer@29.7.0': + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.27.4 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 18.19.112 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@js-sdsl/ordered-map@4.4.2': {} + + '@mapbox/node-pre-gyp@1.0.11': + dependencies: + detect-libc: 2.0.4 + https-proxy-agent: 5.0.1 + make-dir: 3.1.0 + node-fetch: 2.7.0 + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.7.2 + tar: 6.2.1 + transitivePeerDependencies: + - encoding + - supports-color + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@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': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 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': {} + + '@rollup/plugin-babel@5.3.1(@babel/core@7.27.4)(@types/babel__core@7.20.5)(rollup@4.44.0)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-module-imports': 7.27.1 + '@rollup/pluginutils': 3.1.0(rollup@4.44.0) + rollup: 4.44.0 + optionalDependencies: + '@types/babel__core': 7.20.5 + transitivePeerDependencies: + - supports-color + + '@rollup/pluginutils@3.1.0(rollup@4.44.0)': + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 4.44.0 + + '@rollup/rollup-android-arm-eabi@4.44.0': + optional: true + + '@rollup/rollup-android-arm64@4.44.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.44.0': + optional: true + + '@rollup/rollup-darwin-x64@4.44.0': + optional: true + + '@rollup/rollup-freebsd-arm64@4.44.0': + optional: true + + '@rollup/rollup-freebsd-x64@4.44.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.44.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.44.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.44.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.44.0': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.44.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.44.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.44.0': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.44.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.44.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.44.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.44.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.44.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.44.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.44.0': + optional: true + + '@shikijs/core@1.29.2': + dependencies: + '@shikijs/engine-javascript': 1.29.2 + '@shikijs/engine-oniguruma': 1.29.2 + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 2.3.0 + + '@shikijs/engine-oniguruma@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + + '@shikijs/themes@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + + '@shikijs/types@1.29.2': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@sinclair/typebox@0.27.8': {} + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@10.3.0': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@testcontainers/weaviate@10.28.0': + dependencies: + testcontainers: 10.28.0 + transitivePeerDependencies: + - bare-buffer + - supports-color + + '@tsconfig/node10@1.0.11': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.27.5 + '@babel/types': 7.27.6 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.7 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.27.6 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.27.5 + '@babel/types': 7.27.6 + + '@types/babel__traverse@7.20.7': + dependencies: + '@babel/types': 7.27.6 + + '@types/body-parser@1.19.6': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 18.19.112 + + '@types/chai@5.2.2': + dependencies: + '@types/deep-eql': 4.0.2 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 18.19.112 + + '@types/deep-eql@4.0.2': {} + + '@types/docker-modem@3.0.6': + dependencies: + '@types/node': 18.19.112 + '@types/ssh2': 1.15.5 + + '@types/dockerode@3.3.41': + dependencies: + '@types/docker-modem': 3.0.6 + '@types/node': 18.19.112 + '@types/ssh2': 1.15.5 + + '@types/estree@0.0.39': {} + + '@types/estree@1.0.8': {} + + '@types/express-serve-static-core@4.19.6': + dependencies: + '@types/node': 18.19.112 + '@types/qs': 6.14.0 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.5 + + '@types/express@4.17.23': + dependencies: + '@types/body-parser': 1.19.6 + '@types/express-serve-static-core': 4.19.6 + '@types/qs': 6.14.0 + '@types/serve-static': 1.15.8 + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 18.19.112 + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/http-errors@2.0.5': {} + + '@types/isomorphic-fetch@0.0.36': {} + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/jest@29.5.14': + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + + '@types/json-schema@7.0.15': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mime@1.3.5': {} + + '@types/node@18.19.112': + dependencies: + undici-types: 5.26.5 + + '@types/qs@6.14.0': {} + + '@types/range-parser@1.2.7': {} + + '@types/semver@7.7.0': {} + + '@types/send@0.17.5': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 18.19.112 + + '@types/serve-static@1.15.8': + dependencies: + '@types/http-errors': 2.0.5 + '@types/node': 18.19.112 + '@types/send': 0.17.5 + + '@types/ssh2-streams@0.1.12': + dependencies: + '@types/node': 18.19.112 + + '@types/ssh2@0.5.52': + dependencies: + '@types/node': 18.19.112 + '@types/ssh2-streams': 0.1.12 + + '@types/ssh2@1.15.5': + dependencies: + '@types/node': 18.19.112 + + '@types/stack-utils@2.0.3': {} + + '@types/unist@3.0.3': {} + + '@types/uuid@9.0.8': {} + + '@types/ws@8.18.1': + dependencies: + '@types/node': 18.19.112 + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.33': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.4.1 + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + semver: 7.7.2 + ts-api-utils: 1.4.3(typescript@5.8.3) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3)': + dependencies: + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.4.1 + eslint: 8.57.1 + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@6.21.0': + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + + '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.8.3) + debug: 4.4.1 + eslint: 8.57.1 + ts-api-utils: 1.4.3(typescript@5.8.3) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@6.21.0': {} + + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.4.1 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.7.2 + ts-api-utils: 1.4.3(typescript@5.8.3) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.7.0 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.3) + eslint: 8.57.1 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@6.21.0': + dependencies: + '@typescript-eslint/types': 6.21.0 + eslint-visitor-keys: 3.4.3 + + '@ungap/structured-clone@1.3.0': {} + + '@vitest/expect@3.2.4': + dependencies: + '@types/chai': 5.2.2 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.2.0 + tinyrainbow: 2.0.0 + + '@vitest/mocker@3.2.4(vite@5.4.19(@types/node@18.19.112))': + dependencies: + '@vitest/spy': 3.2.4 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 5.4.19(@types/node@18.19.112) + + '@vitest/pretty-format@3.2.4': + dependencies: + tinyrainbow: 2.0.0 + + '@vitest/runner@3.2.4': + dependencies: + '@vitest/utils': 3.2.4 + pathe: 2.0.3 + strip-literal: 3.0.0 + + '@vitest/snapshot@3.2.4': + dependencies: + '@vitest/pretty-format': 3.2.4 + magic-string: 0.30.17 + pathe: 2.0.3 + + '@vitest/spy@3.2.4': + dependencies: + tinyspy: 4.0.3 + + '@vitest/utils@3.2.4': + dependencies: + '@vitest/pretty-format': 3.2.4 + loupe: 3.1.4 + tinyrainbow: 2.0.0 + + abbrev@1.1.1: {} + + abort-controller-x@0.4.3: {} + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.15.0 + + acorn@8.15.0: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-escapes@5.0.0: + dependencies: + type-fest: 1.4.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + aproba@2.0.0: {} + + archiver-utils@5.0.2: + dependencies: + glob: 10.4.5 + graceful-fs: 4.2.11 + is-stream: 2.0.1 + lazystream: 1.0.1 + lodash: 4.17.21 + normalize-path: 3.0.0 + readable-stream: 4.7.0 + + archiver@7.0.1: + dependencies: + archiver-utils: 5.0.2 + async: 3.2.6 + buffer-crc32: 1.0.0 + readable-stream: 4.7.0 + readdir-glob: 1.1.3 + tar-stream: 3.1.7 + zip-stream: 6.0.1 + + are-we-there-yet@2.0.0: + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + + arg@4.1.3: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + array-flatten@1.1.1: {} + + array-union@2.1.0: {} + + asn1@0.2.6: + dependencies: + safer-buffer: 2.1.2 + + assertion-error@2.0.1: {} + + async-lock@1.4.1: {} + + async@3.2.6: {} + + b4a@1.6.7: {} + + babel-jest@29.7.0(@babel/core@7.27.4): + dependencies: + '@babel/core': 7.27.4 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.27.4) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.27.1 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@29.6.3: + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.6 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.7 + + babel-preset-current-node-syntax@1.1.0(@babel/core@7.27.4): + dependencies: + '@babel/core': 7.27.4 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.27.4) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.27.4) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.27.4) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.4) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.27.4) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.27.4) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.27.4) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.27.4) + + babel-preset-jest@29.6.3(@babel/core@7.27.4): + dependencies: + '@babel/core': 7.27.4 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.4) + + balanced-match@1.0.2: {} + + bare-events@2.5.4: + optional: true + + bare-fs@4.1.5: + dependencies: + bare-events: 2.5.4 + bare-path: 3.0.0 + bare-stream: 2.6.5(bare-events@2.5.4) + optional: true + + bare-os@3.6.1: + optional: true + + bare-path@3.0.0: + dependencies: + bare-os: 3.6.1 + optional: true + + bare-stream@2.6.5(bare-events@2.5.4): + dependencies: + streamx: 2.22.1 + optionalDependencies: + bare-events: 2.5.4 + optional: true + + base64-js@1.5.1: {} + + bcrypt-pbkdf@1.0.2: + dependencies: + tweetnacl: 0.14.5 + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + body-parser@1.20.3: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.13.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.25.0: + dependencies: + caniuse-lite: 1.0.30001724 + electron-to-chromium: 1.5.171 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.25.0) + + bs-logger@0.2.6: + dependencies: + fast-json-stable-stringify: 2.1.0 + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-crc32@1.0.0: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buildcheck@0.0.6: + optional: true + + bundle-require@5.1.0(esbuild@0.25.5): + dependencies: + esbuild: 0.25.5 + load-tsconfig: 0.2.5 + + byline@5.0.0: {} + + bytes@3.1.2: {} + + cac@6.7.14: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001724: {} + + case-anything@2.1.13: {} + + ccount@2.0.1: {} + + chai@5.2.0: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.4 + pathval: 2.0.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + char-regex@1.0.2: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + check-error@2.1.1: {} + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + chownr@1.1.4: {} + + chownr@2.0.0: {} + + ci-info@3.9.0: {} + + cjs-module-lexer@1.4.3: {} + + cli-cursor@4.0.0: + dependencies: + restore-cursor: 4.0.0 + + cli-truncate@3.1.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 5.1.2 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + co@4.6.0: {} + + collect-v8-coverage@1.0.2: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + color-support@1.1.3: {} + + colorette@2.0.20: {} + + comma-separated-tokens@2.0.3: {} + + commander@11.0.0: {} + + commander@4.1.1: {} + + compress-commons@6.0.2: + dependencies: + crc-32: 1.2.2 + crc32-stream: 6.0.0 + is-stream: 2.0.1 + normalize-path: 3.0.0 + readable-stream: 4.7.0 + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + consola@3.4.2: {} + + console-control-strings@1.1.0: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + convert-source-map@2.0.0: {} + + cookie-signature@1.0.6: {} + + cookie@0.7.1: {} + + core-util-is@1.0.3: {} + + cpu-features@0.0.10: + dependencies: + buildcheck: 0.0.6 + nan: 2.22.2 + optional: true + + crc-32@1.2.2: {} + + crc32-stream@6.0.0: + dependencies: + crc-32: 1.2.2 + readable-stream: 4.7.0 + + create-jest@29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + create-require@1.1.1: {} + + cross-fetch@3.2.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.3.4: + dependencies: + ms: 2.1.2 + + debug@4.4.1: + dependencies: + ms: 2.1.3 + + dedent@1.6.0: {} + + deep-eql@5.0.2: {} + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + delegates@1.0.0: {} + + depd@2.0.0: {} + + dequal@2.0.3: {} + + destroy@1.2.0: {} + + detect-libc@1.0.3: {} + + detect-libc@2.0.4: {} + + detect-newline@3.1.0: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + diff-sequences@29.6.3: {} + + diff@4.0.2: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + docker-compose@0.24.8: + dependencies: + yaml: 2.8.0 + + docker-modem@5.0.6: + dependencies: + debug: 4.4.1 + readable-stream: 3.6.2 + split-ca: 1.0.1 + ssh2: 1.16.0 + transitivePeerDependencies: + - supports-color + + dockerode@4.0.7: + dependencies: + '@balena/dockerignore': 1.0.2 + '@grpc/grpc-js': 1.13.4 + '@grpc/proto-loader': 0.7.15 + docker-modem: 5.0.6 + protobufjs: 7.5.3 + tar-fs: 2.1.3 + uuid: 10.0.0 + transitivePeerDependencies: + - supports-color + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dprint-node@1.0.8: + dependencies: + detect-libc: 1.0.3 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + eastasianwidth@0.2.0: {} + + ee-first@1.1.1: {} + + ejs@3.1.10: + dependencies: + jake: 10.9.2 + + electron-to-chromium@1.5.171: {} + + emittery@0.13.1: {} + + emoji-regex-xs@1.0.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + entities@4.5.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.7.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + esbuild@0.25.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.5 + '@esbuild/android-arm': 0.25.5 + '@esbuild/android-arm64': 0.25.5 + '@esbuild/android-x64': 0.25.5 + '@esbuild/darwin-arm64': 0.25.5 + '@esbuild/darwin-x64': 0.25.5 + '@esbuild/freebsd-arm64': 0.25.5 + '@esbuild/freebsd-x64': 0.25.5 + '@esbuild/linux-arm': 0.25.5 + '@esbuild/linux-arm64': 0.25.5 + '@esbuild/linux-ia32': 0.25.5 + '@esbuild/linux-loong64': 0.25.5 + '@esbuild/linux-mips64el': 0.25.5 + '@esbuild/linux-ppc64': 0.25.5 + '@esbuild/linux-riscv64': 0.25.5 + '@esbuild/linux-s390x': 0.25.5 + '@esbuild/linux-x64': 0.25.5 + '@esbuild/netbsd-arm64': 0.25.5 + '@esbuild/netbsd-x64': 0.25.5 + '@esbuild/openbsd-arm64': 0.25.5 + '@esbuild/openbsd-x64': 0.25.5 + '@esbuild/sunos-x64': 0.25.5 + '@esbuild/win32-arm64': 0.25.5 + '@esbuild/win32-ia32': 0.25.5 + '@esbuild/win32-x64': 0.25.5 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-prettier@8.10.0(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + + eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.1))(eslint@8.57.1)(prettier@2.8.8): + dependencies: + eslint: 8.57.1 + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 + optionalDependencies: + eslint-config-prettier: 8.10.0(eslint@8.57.1) + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint@8.57.1: + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.3.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.1 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@9.6.1: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 3.4.3 + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@1.0.1: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + esutils@2.0.3: {} + + etag@1.8.1: {} + + event-target-shim@5.0.1: {} + + eventemitter3@5.0.1: {} + + events@3.3.0: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@7.2.0: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + + exit@0.1.2: {} + + expect-type@1.2.1: {} + + expect@29.7.0: + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + + express@4.21.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.13.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-fifo@1.3.2: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fdir@6.4.6(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.3.1: + dependencies: + debug: 2.6.9 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + fix-dts-default-cjs-exports@1.0.1: + dependencies: + magic-string: 0.30.17 + mlly: 1.7.4 + rollup: 4.44.0 + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + rimraf: 3.0.2 + + flatted@3.3.3: {} + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + forwarded@0.2.0: {} + + fresh@0.5.2: {} + + fs-constants@1.0.0: {} + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gauge@3.0.2: + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-package-type@0.1.0: {} + + get-port@7.1.0: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@6.0.1: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@11.12.0: {} + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globalyzer@0.1.0: {} + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globrex@0.1.2: {} + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + graphql-request@6.1.0(graphql@16.11.0): + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) + cross-fetch: 3.2.0 + graphql: 16.11.0 + transitivePeerDependencies: + - encoding + + graphql@16.11.0: {} + + grpc-tools@1.13.0: + dependencies: + '@mapbox/node-pre-gyp': 1.0.11 + transitivePeerDependencies: + - encoding + - supports-color + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-unicode@2.0.1: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + html-escaper@2.0.2: {} + + html-void-elements@3.0.0: {} + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + human-signals@4.3.1: {} + + husky@8.0.3: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ipaddr.js@1.9.1: {} + + is-arrayish@0.2.1: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-generator-fn@2.1.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-path-inside@3.0.3: {} + + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + isarray@1.0.0: {} + + isexe@2.0.0: {} + + isomorphic-ws@5.0.0(ws@8.18.2): + dependencies: + ws: 8.18.2 + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.27.4 + '@babel/parser': 7.27.5 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-instrument@6.0.3: + dependencies: + '@babel/core': 7.27.4 + '@babel/parser': 7.27.5 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.4.1 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jake@10.9.2: + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + + jest-changed-files@29.7.0: + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + + jest-circus@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.112 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.6.0 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.1.0 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-cli@29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-config@29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)): + dependencies: + '@babel/core': 7.27.4 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.27.4) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 18.19.112 + ts-node: 10.9.2(@types/node@18.19.112)(typescript@5.8.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-diff@29.7.0: + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-docblock@29.7.0: + dependencies: + detect-newline: 3.1.0 + + jest-each@29.7.0: + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + + jest-environment-node@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.112 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + jest-get-type@29.6.3: {} + + jest-haste-map@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 18.19.112 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-leak-detector@29.7.0: + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-matcher-utils@29.7.0: + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-message-util@29.7.0: + dependencies: + '@babel/code-frame': 7.27.1 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.19.112 + jest-util: 29.7.0 + + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + optionalDependencies: + jest-resolve: 29.7.0 + + jest-regex-util@29.6.3: {} + + jest-resolve-dependencies@29.7.0: + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + jest-resolve@29.7.0: + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.10 + resolve.exports: 2.0.3 + slash: 3.0.0 + + jest-runner@29.7.0: + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.112 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + + jest-runtime@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.112 + chalk: 4.1.2 + cjs-module-lexer: 1.4.3 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + jest-snapshot@29.7.0: + dependencies: + '@babel/core': 7.27.4 + '@babel/generator': 7.27.5 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.4) + '@babel/types': 7.27.6 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.4) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.19.112 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@29.7.0: + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + + jest-watcher@29.7.0: + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.112 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + + jest-worker@29.7.0: + dependencies: + '@types/node': 18.19.112 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + joycon@3.1.1: {} + + js-base64@3.7.7: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.1: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kleur@3.0.3: {} + + lazystream@1.0.1: + dependencies: + readable-stream: 2.3.8 + + leven@3.1.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lilconfig@2.1.0: {} + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + + lint-staged@13.3.0: + dependencies: + chalk: 5.3.0 + commander: 11.0.0 + debug: 4.3.4 + execa: 7.2.0 + lilconfig: 2.1.0 + listr2: 6.6.1 + micromatch: 4.0.5 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.3.1 + transitivePeerDependencies: + - enquirer + - supports-color + + listr2@6.6.1: + dependencies: + cli-truncate: 3.1.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 5.0.1 + rfdc: 1.4.1 + wrap-ansi: 8.1.0 + + load-tsconfig@0.2.5: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.memoize@4.1.2: {} + + lodash.merge@4.6.2: {} + + lodash.sortby@4.7.0: {} + + lodash@4.17.21: {} + + log-update@5.0.1: + dependencies: + ansi-escapes: 5.0.0 + cli-cursor: 4.0.0 + slice-ansi: 5.0.0 + strip-ansi: 7.1.0 + wrap-ansi: 8.1.0 + + long@5.3.2: {} + + loupe@3.1.4: {} + + lru-cache@10.4.3: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lunr@2.3.9: {} + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + make-dir@4.0.0: + dependencies: + semver: 7.7.2 + + make-error@1.3.6: {} + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + + math-intrinsics@1.1.0: {} + + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + + mdurl@2.0.0: {} + + media-typer@0.3.0: {} + + merge-descriptors@1.0.3: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + methods@1.1.2: {} + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-encode@2.0.1: {} + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromatch@4.0.5: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mime@3.0.0: {} + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.2 + + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.2 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + + minipass@7.1.2: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mkdirp-classic@0.5.3: {} + + mkdirp@1.0.4: {} + + mlly@1.7.4: + dependencies: + acorn: 8.15.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.1 + + ms@2.0.0: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nan@2.22.2: + optional: true + + nanoid@3.3.11: {} + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + nice-grpc-client-middleware-retry@3.1.11: + dependencies: + abort-controller-x: 0.4.3 + nice-grpc-common: 2.0.2 + + nice-grpc-common@2.0.2: + dependencies: + ts-error: 1.0.6 + + nice-grpc-web@3.3.7(ws@8.18.2): + dependencies: + abort-controller-x: 0.4.3 + isomorphic-ws: 5.0.0(ws@8.18.2) + js-base64: 3.7.7 + nice-grpc-common: 2.0.2 + transitivePeerDependencies: + - ws + + nice-grpc@2.1.12: + dependencies: + '@grpc/grpc-js': 1.13.4 + abort-controller-x: 0.4.3 + nice-grpc-common: 2.0.2 + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-int64@0.4.0: {} + + node-releases@2.0.19: {} + + nopt@5.0.0: + dependencies: + abbrev: 1.1.1 + + normalize-path@3.0.0: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + npmlog@5.0.1: + dependencies: + are-we-there-yet: 2.0.0 + console-control-strings: 1.1.0 + gauge: 3.0.2 + set-blocking: 2.0.0 + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + oniguruma-to-es@2.3.0: + dependencies: + emoji-regex-xs: 1.0.0 + regex: 5.1.1 + regex-recursion: 5.1.1 + + openapi-typescript@5.4.2: + dependencies: + js-yaml: 4.1.0 + mime: 3.0.0 + prettier: 2.8.8 + tiny-glob: 0.2.9 + undici: 5.29.0 + yargs-parser: 21.1.1 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parseurl@1.3.3: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-to-regexp@0.1.12: {} + + path-type@4.0.0: {} + + pathe@2.0.3: {} + + pathval@2.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pidtree@0.6.0: {} + + pirates@4.0.7: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.7.4 + pathe: 2.0.3 + + postcss-load-config@6.0.1(postcss@8.5.6)(yaml@2.8.0): + dependencies: + lilconfig: 3.1.3 + optionalDependencies: + postcss: 8.5.6 + yaml: 2.8.0 + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier-plugin-organize-imports@3.2.4(prettier@2.8.8)(typescript@5.8.3): + dependencies: + prettier: 2.8.8 + typescript: 5.8.3 + + prettier@2.8.8: {} + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + process-nextick-args@2.0.1: {} + + process@0.11.10: {} + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + proper-lockfile@4.1.2: + dependencies: + graceful-fs: 4.2.11 + retry: 0.12.0 + signal-exit: 3.0.7 + + properties-reader@2.3.0: + dependencies: + mkdirp: 1.0.4 + + property-information@7.1.0: {} + + protobufjs@7.5.3: + 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': 18.19.112 + long: 5.3.2 + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + pump@3.0.3: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + + punycode.js@2.3.1: {} + + punycode@2.3.1: {} + + pure-rand@6.1.0: {} + + qs@6.13.0: + dependencies: + side-channel: 1.1.0 + + queue-microtask@1.2.3: {} + + range-parser@1.2.1: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + react-is@18.3.1: {} + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readable-stream@4.7.0: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + + readdir-glob@1.1.3: + dependencies: + minimatch: 5.1.6 + + readdirp@4.1.2: {} + + regex-recursion@5.1.1: + dependencies: + regex: 5.1.1 + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@5.1.1: + dependencies: + regex-utilities: 2.3.0 + + require-directory@2.1.1: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve.exports@2.0.3: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@4.0.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + retry@0.12.0: {} + + reusify@1.1.0: {} + + rfdc@1.4.1: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup@4.44.0: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.44.0 + '@rollup/rollup-android-arm64': 4.44.0 + '@rollup/rollup-darwin-arm64': 4.44.0 + '@rollup/rollup-darwin-x64': 4.44.0 + '@rollup/rollup-freebsd-arm64': 4.44.0 + '@rollup/rollup-freebsd-x64': 4.44.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.44.0 + '@rollup/rollup-linux-arm-musleabihf': 4.44.0 + '@rollup/rollup-linux-arm64-gnu': 4.44.0 + '@rollup/rollup-linux-arm64-musl': 4.44.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.44.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.44.0 + '@rollup/rollup-linux-riscv64-gnu': 4.44.0 + '@rollup/rollup-linux-riscv64-musl': 4.44.0 + '@rollup/rollup-linux-s390x-gnu': 4.44.0 + '@rollup/rollup-linux-x64-gnu': 4.44.0 + '@rollup/rollup-linux-x64-musl': 4.44.0 + '@rollup/rollup-win32-arm64-msvc': 4.44.0 + '@rollup/rollup-win32-ia32-msvc': 4.44.0 + '@rollup/rollup-win32-x64-msvc': 4.44.0 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + semver@6.3.1: {} + + semver@7.7.2: {} + + send@0.19.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.2: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0 + transitivePeerDependencies: + - supports-color + + set-blocking@2.0.0: {} + + setprototypeof@1.2.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shiki@1.29.2: + dependencies: + '@shikijs/core': 1.29.2 + '@shikijs/engine-javascript': 1.29.2 + '@shikijs/engine-oniguruma': 1.29.2 + '@shikijs/langs': 1.29.2 + '@shikijs/themes': 1.29.2 + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + siginfo@2.0.0: {} + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + source-map-js@1.2.1: {} + + source-map-support@0.5.13: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + source-map@0.8.0-beta.0: + dependencies: + whatwg-url: 7.1.0 + + space-separated-tokens@2.0.2: {} + + split-ca@1.0.1: {} + + sprintf-js@1.0.3: {} + + ssh-remote-port-forward@1.0.4: + dependencies: + '@types/ssh2': 0.5.52 + ssh2: 1.16.0 + + ssh2@1.16.0: + dependencies: + asn1: 0.2.6 + bcrypt-pbkdf: 1.0.2 + optionalDependencies: + cpu-features: 0.0.10 + nan: 2.22.2 + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + stackback@0.0.2: {} + + statuses@2.0.1: {} + + std-env@3.9.0: {} + + streamx@2.22.1: + dependencies: + fast-fifo: 1.3.2 + text-decoder: 1.2.3 + optionalDependencies: + bare-events: 2.5.4 + + string-argv@0.3.2: {} + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-json-comments@3.1.1: {} + + strip-literal@3.0.0: + dependencies: + js-tokens: 9.0.1 + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + ts-interface-checker: 0.1.13 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + tar-fs@2.1.3: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.3 + tar-stream: 2.2.0 + + tar-fs@3.0.10: + dependencies: + pump: 3.0.3 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 4.1.5 + bare-path: 3.0.0 + transitivePeerDependencies: + - bare-buffer + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.5 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + + tar-stream@3.1.7: + dependencies: + b4a: 1.6.7 + fast-fifo: 1.3.2 + streamx: 2.22.1 + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + testcontainers@10.28.0: + dependencies: + '@balena/dockerignore': 1.0.2 + '@types/dockerode': 3.3.41 + archiver: 7.0.1 + async-lock: 1.4.1 + byline: 5.0.0 + debug: 4.4.1 + docker-compose: 0.24.8 + dockerode: 4.0.7 + get-port: 7.1.0 + proper-lockfile: 4.1.2 + properties-reader: 2.3.0 + ssh-remote-port-forward: 1.0.4 + tar-fs: 3.0.10 + tmp: 0.2.3 + undici: 5.29.0 + transitivePeerDependencies: + - bare-buffer + - supports-color + + text-decoder@1.2.3: + dependencies: + b4a: 1.6.7 + + text-table@0.2.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + tiny-glob@0.2.9: + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + + tinybench@2.9.0: {} + + tinyexec@0.3.2: {} + + tinyglobby@0.2.14: + dependencies: + fdir: 6.4.6(picomatch@4.0.2) + picomatch: 4.0.2 + + tinypool@1.1.1: {} + + tinyrainbow@2.0.0: {} + + tinyspy@4.0.3: {} + + tmp@0.2.3: {} + + tmpl@1.0.5: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + tr46@0.0.3: {} + + tr46@1.0.1: + dependencies: + punycode: 2.3.1 + + tree-kill@1.2.2: {} + + trim-lines@3.0.1: {} + + ts-api-utils@1.4.3(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + + ts-error@1.0.6: {} + + ts-interface-checker@0.1.13: {} + + ts-jest@29.4.0(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(esbuild@0.25.5)(jest-util@29.7.0)(jest@29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)))(typescript@5.8.3): + dependencies: + bs-logger: 0.2.6 + ejs: 3.1.10 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)) + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.7.2 + type-fest: 4.41.0 + typescript: 5.8.3 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.27.4 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.27.4) + esbuild: 0.25.5 + jest-util: 29.7.0 + + ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.19.112 + acorn: 8.15.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.8.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + ts-poet@6.12.0: + dependencies: + dprint-node: 1.0.8 + + ts-proto-descriptors@1.16.0: + dependencies: + long: 5.3.2 + protobufjs: 7.5.3 + + ts-proto@1.181.2: + dependencies: + case-anything: 2.1.13 + protobufjs: 7.5.3 + ts-poet: 6.12.0 + ts-proto-descriptors: 1.16.0 + + tsup@8.5.0(postcss@8.5.6)(typescript@5.8.3)(yaml@2.8.0): + dependencies: + bundle-require: 5.1.0(esbuild@0.25.5) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.2 + debug: 4.4.1 + esbuild: 0.25.5 + fix-dts-default-cjs-exports: 1.0.1 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(postcss@8.5.6)(yaml@2.8.0) + resolve-from: 5.0.0 + rollup: 4.44.0 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.14 + tree-kill: 1.2.2 + optionalDependencies: + postcss: 8.5.6 + typescript: 5.8.3 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + + tweetnacl@0.14.5: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.0.8: {} + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type-fest@1.4.0: {} + + type-fest@4.41.0: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typedoc-plugin-extras@3.1.0(typedoc@0.26.11(typescript@5.8.3)): + dependencies: + typedoc: 0.26.11(typescript@5.8.3) + + typedoc@0.26.11(typescript@5.8.3): + dependencies: + lunr: 2.3.9 + markdown-it: 14.1.0 + minimatch: 9.0.5 + shiki: 1.29.2 + typescript: 5.8.3 + yaml: 2.8.0 + + typescript@5.8.3: {} + + uc.micro@2.1.0: {} + + ufo@1.6.1: {} + + undici-types@5.26.5: {} + + undici@5.29.0: + dependencies: + '@fastify/busboy': 2.1.1 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + unpipe@1.0.0: {} + + update-browserslist-db@1.1.3(browserslist@4.25.0): + dependencies: + browserslist: 4.25.0 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + util-deprecate@1.0.2: {} + + utils-merge@1.0.1: {} + + uuid@10.0.0: {} + + uuid@9.0.1: {} + + v8-compile-cache-lib@3.0.1: {} + + v8-to-istanbul@9.3.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + + vary@1.1.2: {} + + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + + vite-node@3.2.4(@types/node@18.19.112): + dependencies: + cac: 6.7.14 + debug: 4.4.1 + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 5.4.19(@types/node@18.19.112) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vite@5.4.19(@types/node@18.19.112): + dependencies: + esbuild: 0.21.5 + postcss: 8.5.6 + rollup: 4.44.0 + optionalDependencies: + '@types/node': 18.19.112 + fsevents: 2.3.3 + + vitest@3.2.4(@types/node@18.19.112): + dependencies: + '@types/chai': 5.2.2 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(vite@5.4.19(@types/node@18.19.112)) + '@vitest/pretty-format': 3.2.4 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.2.0 + debug: 4.4.1 + expect-type: 1.2.1 + magic-string: 0.30.17 + pathe: 2.0.3 + picomatch: 4.0.2 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.14 + tinypool: 1.1.1 + tinyrainbow: 2.0.0 + vite: 5.4.19(@types/node@18.19.112) + vite-node: 3.2.4(@types/node@18.19.112) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 18.19.112 + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + webidl-conversions@3.0.1: {} + + webidl-conversions@4.0.2: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + whatwg-url@7.1.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + wide-align@1.1.5: + dependencies: + string-width: 4.2.3 + + word-wrap@1.2.5: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + ws@8.18.2: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml@2.3.1: {} + + yaml@2.8.0: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yn@3.1.1: {} + + yocto-queue@0.1.0: {} + + zip-stream@6.0.1: + dependencies: + archiver-utils: 5.0.2 + compress-commons: 6.0.2 + readable-stream: 4.7.0 + + zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..ccdc80cd --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - "packages/*" \ No newline at end of file diff --git a/src/connection/http.ts b/src/connection/http.ts deleted file mode 100644 index 6fc554c0..00000000 --- a/src/connection/http.ts +++ /dev/null @@ -1,154 +0,0 @@ -import OpenidConfigurationGetter from '../misc/openidConfigurationGetter.js'; - -import { WeaviateInvalidInputError } from '../errors.js'; -import { OidcAuthenticator } from './auth.js'; -import { HttpClient, InternalConnectionParams, httpClient } from './transports/http.js'; - -export interface ConnectionDetails { - host: string; - bearerToken?: string; - headers?: HeadersInit; -} - -export default class ConnectionREST { - private apiKey?: string; - private headers?: HeadersInit; - protected authEnabled: boolean; - public readonly host: string; - public readonly http: HttpClient; - public oidcAuth?: OidcAuthenticator; - - constructor(params: InternalConnectionParams) { - params = this.sanitizeParams(params); - this.host = params.host; - this.headers = params.headers; - this.http = httpClient(params); - this.authEnabled = this.parseAuthParams(params); - } - - private parseAuthParams(params: InternalConnectionParams): boolean { - if (params.authClientSecret && params.apiKey) { - throw new WeaviateInvalidInputError( - 'must provide one of authClientSecret (OIDC) or apiKey, cannot provide both' - ); - } - if (params.authClientSecret) { - this.oidcAuth = new OidcAuthenticator(this.http, params.authClientSecret); - return true; - } - if (params.apiKey) { - this.apiKey = params.apiKey?.apiKey; - return true; - } - return false; - } - - private sanitizeParams(params: InternalConnectionParams) { - // Remove trailing slashes from the host - while (params.host.endsWith('/')) { - params.host = params.host.slice(0, -1); - } - - const protocolPattern = /^(https?|ftp|file)(?::\/\/)/; - const extractedSchemeMatch = params.host.match(protocolPattern); - - // Check for the existence of scheme in params - if (params.scheme) { - // If the host contains a scheme different than provided scheme, replace it and throw a warning - if (extractedSchemeMatch && extractedSchemeMatch[1] !== `${params.scheme}`) { - throw new WeaviateInvalidInputError( - `The host contains a different protocol than specified in the scheme (scheme: ${params.scheme} != host: ${extractedSchemeMatch[1]})` - ); - } else if (!extractedSchemeMatch) { - // If no scheme in the host, simply prefix with the provided scheme - params.host = `${params.scheme}://${params.host}`; - } - // If there's no scheme in params, ensure the host starts with a recognized protocol - } else if (!extractedSchemeMatch) { - throw new WeaviateInvalidInputError( - 'The host must start with a recognized protocol (e.g., http or https) if no scheme is provided.' - ); - } - - return params; - } - - postReturn = (path: string, payload: B): Promise => { - if (this.authEnabled) { - return this.login().then((token) => this.http.post(path, payload, true, token) as T); - } - return this.http.post(path, payload, true, '') as Promise; - }; - - postEmpty = (path: string, payload: B): Promise => { - if (this.authEnabled) { - return this.login().then((token) => this.http.post(path, payload, false, token)); - } - return this.http.post(path, payload, false, ''); - }; - - put = (path: string, payload: any, expectReturnContent = true) => { - if (this.authEnabled) { - return this.login().then((token) => this.http.put(path, payload, expectReturnContent, token)); - } - return this.http.put(path, payload, expectReturnContent); - }; - - patch = (path: string, payload: any) => { - if (this.authEnabled) { - return this.login().then((token) => this.http.patch(path, payload, token)); - } - return this.http.patch(path, payload); - }; - - delete = (path: string, payload: any, expectReturnContent = false) => { - if (this.authEnabled) { - return this.login().then((token) => this.http.delete(path, payload, expectReturnContent, token)); - } - return this.http.delete(path, payload, expectReturnContent); - }; - - head = (path: string, payload: any) => { - if (this.authEnabled) { - return this.login().then((token) => this.http.head(path, payload, token)); - } - return this.http.head(path, payload); - }; - - get = (path: string, expectReturnContent = true) => { - if (this.authEnabled) { - return this.login().then((token) => this.http.get(path, expectReturnContent, token)); - } - return this.http.get(path, expectReturnContent); - }; - - login = async () => { - if (this.apiKey) { - return this.apiKey; - } - - if (!this.oidcAuth) { - return ''; - } - - const localConfig = await new OpenidConfigurationGetter(this.http).do(); - - if (localConfig === undefined) { - console.warn('client is configured for authentication, but server is not'); - return ''; - } - - if (Date.now() >= this.oidcAuth.getExpiresAt()) { - await this.oidcAuth.refresh(localConfig); - } - return this.oidcAuth.getAccessToken(); - }; - - getDetails = async (): Promise => ({ - host: new URL(this.host).host, // removes default port - bearerToken: this.authEnabled ? await this.login().then((token) => `Bearer ${token}`) : undefined, - headers: this.headers, - }); -} - -export * from './auth.js'; diff --git a/src/connection/transports/grpc/node.ts b/src/connection/transports/grpc/node.ts deleted file mode 100644 index 5078b22d..00000000 --- a/src/connection/transports/grpc/node.ts +++ /dev/null @@ -1,165 +0,0 @@ -import { isAbortError } from 'abort-controller-x'; - -import { InternalConnectionParams } from '../http.js'; - -import { ConsistencyLevel } from '../../../data/index.js'; - -import { - ChannelCredentials, - ChannelOptions, - ClientError, - createChannel, - createClientFactory, - Metadata, - Status, -} from 'nice-grpc'; - -import { - HealthCheckResponse_ServingStatus, - HealthDefinition, -} from '../../../proto/google/health/v1/health.js'; -import { WeaviateDefinition } from '../../../proto/v1/weaviate.js'; - -import Aggregator, { Aggregate } from '../../../grpc/aggregator.js'; -import Batcher, { Batch } from '../../../grpc/batcher.js'; -import Searcher, { Search } from '../../../grpc/searcher.js'; -import TenantsManager, { Tenants } from '../../../grpc/tenantsManager.js'; - -import { retryMiddleware } from 'nice-grpc-client-middleware-retry'; -import { WeaviateGRPCUnavailableError } from '../../../errors.js'; - -export interface GrpcConnectionParams extends InternalConnectionParams { - grpcAddress: string; - grpcSecure: boolean; -} - -const clientFactory = createClientFactory().use(retryMiddleware); - -export interface GrpcClient { - aggregate: ( - collection: string, - consistencyLevel?: ConsistencyLevel, - tenant?: string, - bearerToken?: string - ) => Aggregate; - batch: ( - collection: string, - consistencyLevel?: ConsistencyLevel, - tenant?: string, - bearerToken?: string - ) => Batch; - close: () => void; - health: () => Promise; - search: ( - collection: string, - consistencyLevel?: ConsistencyLevel, - tenant?: string, - bearerToken?: string - ) => Search; - tenants: (collection: string, bearerToken?: string) => Tenants; -} - -export const grpcClient = (config: GrpcConnectionParams & { grpcMaxMessageLength: number }): GrpcClient => { - const channelOptions: ChannelOptions = { - 'grpc.max_send_message_length': config.grpcMaxMessageLength, - 'grpc.max_receive_message_length': config.grpcMaxMessageLength, - }; - if (config.grpcProxyUrl) { - // grpc.http_proxy is not used by grpc.js under-the-hood - // only uses the env var and whether http_proxy is enabled - process.env.grpc_proxy = config.grpcProxyUrl; - channelOptions['grpc.enabled_http_proxy'] = true; - } - const channel = createChannel( - config.grpcAddress, - config.grpcSecure ? ChannelCredentials.createSsl() : ChannelCredentials.createInsecure(), - channelOptions - ); - const client = clientFactory.create(WeaviateDefinition, channel); - const health = clientFactory.create(HealthDefinition, channel); - return { - aggregate: ( - collection: string, - consistencyLevel?: ConsistencyLevel, - tenant?: string, - bearerToken?: string - ) => - Aggregator.use( - client, - collection, - new Metadata(bearerToken ? { ...config.headers, authorization: bearerToken } : config.headers), - config.timeout?.query || 30, - consistencyLevel, - tenant - ), - batch: (collection: string, consistencyLevel?: ConsistencyLevel, tenant?: string, bearerToken?: string) => - Batcher.use( - client, - collection, - getMetadataWithEmbeddingServiceAuth(config, bearerToken), - config.timeout?.insert || 90, - consistencyLevel, - tenant - ), - close: () => channel.close(), - health: () => { - const controller = new AbortController(); - const timeoutId = setTimeout(() => controller.abort(), (config.timeout?.init || 2) * 1000); - return health - .check( - { service: '/grpc.health.v1.Health/Check' }, - { - signal: controller.signal, - retry: true, - retryMaxAttempts: 1, - retryableStatuses: [Status.UNAVAILABLE], - onRetryableError(error: ClientError, attempt: number, delayMs: number) { - console.warn(error, `Healthcheck ${attempt} failed. Retrying in ${delayMs}ms.`); - }, - } - ) - .then((res) => res.status === HealthCheckResponse_ServingStatus.SERVING) - .catch((err) => { - if (isAbortError(err)) { - throw new WeaviateGRPCUnavailableError(config.grpcAddress); - } - throw err; - }) - .finally(() => clearTimeout(timeoutId)); - }, - search: ( - collection: string, - consistencyLevel?: ConsistencyLevel, - tenant?: string, - bearerToken?: string - ) => - Searcher.use( - client, - collection, - getMetadataWithEmbeddingServiceAuth(config, bearerToken), - config.timeout?.query || 30, - consistencyLevel, - tenant - ), - tenants: (collection: string, bearerToken?: string) => - TenantsManager.use( - client, - collection, - new Metadata(bearerToken ? { ...config.headers, authorization: bearerToken } : config.headers), - config.timeout?.query || 30 - ), - }; -}; - -const getMetadataWithEmbeddingServiceAuth = (config: GrpcConnectionParams, bearerToken?: string) => - new Metadata( - bearerToken - ? { - ...config.headers, - authorization: bearerToken, - 'X-Weaviate-Cluster-Url': config.host, - // keeping for backwards compatibility for older clusters for now. On newer clusters, Embedding Service reuses Authorization header. - 'X-Weaviate-Api-Key': bearerToken, - } - : config.headers - ); diff --git a/src/connection/transports/grpc/web.ts b/src/connection/transports/grpc/web.ts deleted file mode 100644 index da962310..00000000 --- a/src/connection/transports/grpc/web.ts +++ /dev/null @@ -1,143 +0,0 @@ -import { isAbortError } from 'abort-controller-x'; - -import { InternalConnectionParams } from '../http.js'; - -import { ConsistencyLevel } from '../../../data/index.js'; - -import { ClientError, createChannel, createClientFactory, Metadata, Status } from 'nice-grpc-web'; - -import { - HealthCheckResponse_ServingStatus, - HealthDefinition, -} from '../../../proto/google/health/v1/health.js'; -import { WeaviateDefinition } from '../../../proto/v1/weaviate.js'; - -import Aggregator, { Aggregate } from '../../../grpc/aggregator.js'; -import Batcher, { Batch } from '../../../grpc/batcher.js'; -import Searcher, { Search } from '../../../grpc/searcher.js'; -import TenantsManager, { Tenants } from '../../../grpc/tenantsManager.js'; - -import { retryMiddleware } from 'nice-grpc-client-middleware-retry'; -import { WeaviateGRPCUnavailableError } from '../../../errors.js'; - -export interface GrpcConnectionParams extends InternalConnectionParams { - grpcAddress: string; - grpcSecure: boolean; -} - -const clientFactory = createClientFactory().use(retryMiddleware); - -export interface GrpcClient { - aggregate: ( - collection: string, - consistencyLevel?: ConsistencyLevel, - tenant?: string, - bearerToken?: string - ) => Aggregate; - batch: ( - collection: string, - consistencyLevel?: ConsistencyLevel, - tenant?: string, - bearerToken?: string - ) => Batch; - close: () => void; - health: () => Promise; - search: ( - collection: string, - consistencyLevel?: ConsistencyLevel, - tenant?: string, - bearerToken?: string - ) => Search; - tenants: (collection: string, bearerToken?: string) => Tenants; -} - -export const grpcClient = (config: GrpcConnectionParams & { grpcMaxMessageLength: number }): GrpcClient => { - const channel = createChannel(config.grpcAddress); - const client = clientFactory.create(WeaviateDefinition, channel); - const health = clientFactory.create(HealthDefinition, channel); - return { - aggregate: ( - collection: string, - consistencyLevel?: ConsistencyLevel, - tenant?: string, - bearerToken?: string - ) => - Aggregator.use( - client, - collection, - new Metadata(bearerToken ? { ...config.headers, authorization: bearerToken } : config.headers), - config.timeout?.query || 30, - consistencyLevel, - tenant - ), - batch: (collection: string, consistencyLevel?: ConsistencyLevel, tenant?: string, bearerToken?: string) => - Batcher.use( - client, - collection, - getMetadataWithEmbeddingServiceAuth(config, bearerToken), - config.timeout?.insert || 90, - consistencyLevel, - tenant - ), - close: () => {}, - health: () => { - const controller = new AbortController(); - const timeoutId = setTimeout(() => controller.abort(), (config.timeout?.init || 2) * 1000); - return health - .check( - { service: '/grpc.health.v1.Health/Check' }, - { - signal: controller.signal, - retry: true, - retryMaxAttempts: 1, - retryableStatuses: [Status.UNAVAILABLE], - onRetryableError(error: ClientError, attempt: number, delayMs: number) { - console.warn(error, `Healthcheck ${attempt} failed. Retrying in ${delayMs}ms.`); - }, - } - ) - .then((res) => res.status === HealthCheckResponse_ServingStatus.SERVING) - .catch((err) => { - if (isAbortError(err)) { - throw new WeaviateGRPCUnavailableError(config.grpcAddress); - } - throw err; - }) - .finally(() => clearTimeout(timeoutId)); - }, - search: ( - collection: string, - consistencyLevel?: ConsistencyLevel, - tenant?: string, - bearerToken?: string - ) => - Searcher.use( - client, - collection, - getMetadataWithEmbeddingServiceAuth(config, bearerToken), - config.timeout?.query || 30, - consistencyLevel, - tenant - ), - tenants: (collection: string, bearerToken?: string) => - TenantsManager.use( - client, - collection, - new Metadata(bearerToken ? { ...config.headers, authorization: bearerToken } : config.headers), - config.timeout?.query || 30 - ), - }; -}; - -const getMetadataWithEmbeddingServiceAuth = (config: GrpcConnectionParams, bearerToken?: string) => - new Metadata( - bearerToken - ? { - ...config.headers, - authorization: bearerToken, - 'X-Weaviate-Cluster-Url': config.host, - // keeping for backwards compatibility for older clusters for now. On newer clusters, Embedding Service reuses Authorization header. - 'X-Weaviate-Api-Key': bearerToken, - } - : config.headers - ); diff --git a/tools/refresh_protos.sh b/tools/refresh_protos.sh index 4bfb0bbf..d6711fba 100755 --- a/tools/refresh_protos.sh +++ b/tools/refresh_protos.sh @@ -2,19 +2,20 @@ branchOrTag="${1:-main}" dir="tools" +srcDir="./packages/core/src" mkdir -p ${dir} curl -LkSs https://api.github.com/repos/weaviate/weaviate/tarball/${branchOrTag} -o ${dir}/weaviate.tar.gz tar --strip-components=3 -C ${dir} -xvf ${dir}/weaviate.tar.gz $(tar -tf ${dir}/weaviate.tar.gz | grep '^weaviate-weaviate-[^/]\+/grpc/proto/v1') ./node_modules/.bin/grpc_tools_node_protoc -I ${dir} \ - --ts_proto_out=./src/proto \ + --ts_proto_out=${srcDir}/proto \ --ts_proto_opt=forceLong==bigint \ --ts_proto_opt=esModuleInterop=true \ --ts_proto_opt=outputServices=nice-grpc,outputServices=generic-definitions,useExactTypes=false \ ${dir}/v1/*.proto ./node_modules/.bin/grpc_tools_node_protoc -I ${dir} \ - --ts_proto_out=./src/proto/google/health/v1 \ + --ts_proto_out=${srcDir}/proto/google/health/v1 \ --ts_proto_opt=forceLong==bigint \ --ts_proto_opt=esModuleInterop=true \ --ts_proto_opt=outputServices=nice-grpc,outputServices=generic-definitions,useExactTypes=false \ diff --git a/tools/refresh_schema.sh b/tools/refresh_schema.sh index d4f9389b..6c6bca60 100755 --- a/tools/refresh_schema.sh +++ b/tools/refresh_schema.sh @@ -3,5 +3,6 @@ set -euo pipefail branchOrTag="${1:-main}" -npx openapi-typescript https://raw.githubusercontent.com/weaviate/weaviate/${branchOrTag}/openapi-specs/schema.json -o ./src/openapi/schema.ts -npx prettier --write --no-error-on-unmatched-pattern './src/openapi/schema.ts' +srcDir="./packages/core/src" +npx openapi-typescript https://raw.githubusercontent.com/weaviate/weaviate/${branchOrTag}/openapi-specs/schema.json -o ${srcDir}/openapi/schema.ts +npx prettier --write --no-error-on-unmatched-pattern '${srcDir}/openapi/schema.ts' diff --git a/tsconfig.json b/tsconfig.json index b31935ca..6eb4128d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,22 +1,30 @@ +// { +// "compilerOptions": { +// "target": "ES6", +// "strict": true, +// "preserveConstEnums": true, +// "alwaysStrict": true, +// "noImplicitAny": true, +// "noImplicitThis": true, +// "strictFunctionTypes": true, +// "module": "NodeNext", +// "moduleResolution": "NodeNext", +// "skipLibCheck": true, +// "forceConsistentCasingInFileNames": true, +// "esModuleInterop": true, +// "declaration": true, +// "rootDir": ".", +// "types": ["node", "jest", "uuid"], +// }, +// "include": ["./**/*"], +// "exclude": ["./**/*.test.ts", "./dist/**/*"] +// } { - "compilerOptions": { - "target": "ES6", - "strict": true, - "preserveConstEnums": true, - "alwaysStrict": true, - "noImplicitAny": true, - "noImplicitThis": true, - "strictFunctionTypes": true, - "module": "NodeNext", - "moduleResolution": "NodeNext", - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - "esModuleInterop": true, - "outDir": "./dist/node", - "declaration": true, - "rootDir": "./src", - "types": ["node", "uuid", "jest"] - }, - "include": ["./src/**/*"], - "exclude": ["**/*.test.ts"] -} + "files": [], + "references": [ + { "path": "packages/core" }, + { "path": "packages/node" }, + { "path": "packages/web" }, + { "path": "packages/test" } + ] +} \ No newline at end of file From 3cfe9cd185f13e0ee1fb139a23a9aaca877acbec Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 20 Jun 2025 14:52:50 +0100 Subject: [PATCH 03/62] Correct typos in CI --- .github/workflows/main.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 4aaedac1..5c6e11fc 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -33,6 +33,7 @@ jobs: npm ci npm run lint npm run format:check + npm run build:all npm run docs tests-without-auth: @@ -64,7 +65,7 @@ jobs: username: ${{secrets.DOCKER_USERNAME}} password: ${{secrets.DOCKER_PASSWORD}} - name: "Transpile the package" - run: npm run build + run: npm run build:all - name: "Install dependencies" run: | npm ci @@ -95,7 +96,7 @@ jobs: username: ${{secrets.DOCKER_USERNAME}} password: ${{secrets.DOCKER_PASSWORD}} - name: "Transpile the package" - run: npm run build + run: npm run build:all - name: "Install dependencies" run: | npm ci @@ -127,7 +128,7 @@ jobs: node-version: '22.x' registry-url: 'https://registry.npmjs.org' - run: npm ci - - run: npm run build + - run: npm run build:all - run: npm publish env: NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTOMATION_TOKEN }} From f088194dfcda905ee4591fc778d457efbb3db50d Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 20 Jun 2025 14:54:49 +0100 Subject: [PATCH 04/62] Build core in checks step --- .github/workflows/main.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 5c6e11fc..ba5059c8 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -30,10 +30,10 @@ jobs: node-version: '22.x' - name: "Run checks" run: | + npm run build:core npm ci npm run lint npm run format:check - npm run build:all npm run docs tests-without-auth: From 487e301485da869ca93227f76e1db97fa4d4d838 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 20 Jun 2025 15:16:40 +0100 Subject: [PATCH 05/62] Add `pnpm` to steps, improve `npm run ci` cmd --- .github/workflows/main.yaml | 27 ++++++++++++++++++--------- package.json | 14 +++++++++----- packages/core/package.json | 4 ---- packages/core/tsconfig.json | 2 +- 4 files changed, 28 insertions(+), 19 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index ba5059c8..3756d643 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -28,10 +28,13 @@ jobs: - uses: actions/setup-node@v3 with: node-version: '22.x' + cache: 'pnpm' + - uses: pnpm/action-setup@v3 + with: + version: '10.x' - name: "Run checks" run: | - npm run build:core - npm ci + npm run ci npm run lint npm run format:check npm run docs @@ -58,6 +61,10 @@ jobs: - uses: actions/setup-node@v3 with: node-version: ${{ matrix.versions.node }} + cache: 'pnpm' + - uses: pnpm/action-setup@v3 + with: + version: '10.x' - name: Login to Docker Hub if: ${{ !github.event.pull_request.head.repo.fork && github.triggering_actor != 'dependabot[bot]' }} uses: docker/login-action@v3 @@ -68,10 +75,10 @@ jobs: run: npm run build:all - name: "Install dependencies" run: | - npm ci + npm run ci ci/run_dependencies.sh ${{ matrix.versions.weaviate }} - name: "Run tests without authentication tests" - run: WEAVIATE_VERSION=${{ matrix.versions.weaviate }} npm test + run: WEAVIATE_VERSION=${{ matrix.versions.weaviate }} npm run test - name: "Stop Weaviate" run: ci/stop_dependencies.sh ${{ matrix.versions.weaviate }} @@ -89,17 +96,19 @@ jobs: - uses: actions/setup-node@v3 with: node-version: ${{ matrix.versions.node }} + cache: 'pnpm' + - uses: pnpm/action-setup@v3 + with: + version: '10.x' - name: Login to Docker Hub if: ${{ !github.event.pull_request.head.repo.fork && github.triggering_actor != 'dependabot[bot]' }} uses: docker/login-action@v3 with: username: ${{secrets.DOCKER_USERNAME}} password: ${{secrets.DOCKER_PASSWORD}} - - name: "Transpile the package" - run: npm run build:all - name: "Install dependencies" run: | - npm ci + npm run ci ci/run_dependencies.sh ${{ matrix.versions.weaviate }} - name: "Run tests with authentication tests" if: ${{ !github.event.pull_request.head.repo.fork }} @@ -108,7 +117,7 @@ jobs: WCS_DUMMY_CI_PW: ${{ secrets.WCS_DUMMY_CI_PW }} AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }} OKTA_CLIENT_SECRET: ${{ secrets.OKTA_CLIENT_SECRET }} - run: WEAVIATE_VERSION=${{ matrix.versions.weaviate }} npm test + run: WEAVIATE_VERSION=${{ matrix.versions.weaviate }} npm run test - name: "Stop Weaviate" run: ci/stop_dependencies.sh ${{ matrix.versions.weaviate }} @@ -127,7 +136,7 @@ jobs: with: node-version: '22.x' registry-url: 'https://registry.npmjs.org' - - run: npm ci + - run: npm run ci - run: npm run build:all - run: npm publish env: diff --git a/package.json b/package.json index 82f82dbc..38932b1c 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,6 @@ ], "scripts": { "test": "pnpm --filter @weaviate/test test", - "prepack": "npm run build", "lint": "eslint --ext .ts,.js .", "lint:fix": "npm run lint -- --fix", "lint:staged": "npm run format:check && npm run lint -- --cache", @@ -22,10 +21,15 @@ "refresh-schema": "./tools/refresh_schema.sh", "refresh-protos": "./tools/refresh_protos.sh", "docs": "typedoc --plugin typedoc-plugin-extras --favicon public/favicon.ico --out docs/ ./packages/core/src ./packages/node/src ./packages/web/src", - "build:core": "cd packages/core && npm run build", - "build:web": "cd packages/web && npm run build", - "build:node": "cd packages/node && npm run build", - "build:all": "npm run build:core && npm run build:web && npm run build:node" + "install:core": "pnpm install --filter @weaviate/core... --no-frozen-lockfile", + "install:node": "pnpm install --filter @weaviate/node... --no-frozen-lockfile", + "install:web": "pnpm install --filter @weaviate/web... --no-frozen-lockfile", + "install": "npm run install:core && npm run install:node && npm run install:web", + "build:core": "pnpm install --filter @weaviate/core... run build", + "build:node": "pnpm install --filter @weaviate/node... run build", + "build:web": "pnpm install --filter @weaviate/web... run build", + "build": "npm run build:core && npm run build:node && npm run build:web", + "ci": "npm run install:core && npm run build:core && npm run install:node && npm run install:web" }, "repository": { "type": "git", diff --git a/packages/core/package.json b/packages/core/package.json index b4e227bf..fdedf062 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -59,25 +59,21 @@ "@testcontainers/weaviate": "^10.14.0", "@types/express": "^4.17.21", "@types/isomorphic-fetch": "^0.0.36", - "@types/jest": "^29.4.0", "@types/node": "^18.14.0", "@types/uuid": "^9.0.1", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", - "babel-jest": "^29.4.3", "eslint": "^8.35.0", "eslint-config-prettier": "^8.7.0", "eslint-plugin-prettier": "^4.2.1", "express": "^4.19.2", "grpc-tools": "^1.12.4", "husky": "^8.0.3", - "jest": "^29.4.3", "lint-staged": "^13.2.0", "openapi-typescript": "^5.4.1", "prettier": "^2.8.4", "prettier-plugin-organize-imports": "^3.2.4", "protobufjs": "^7.2.6", - "ts-jest": "^29.0.5", "ts-node": "^10.9.2", "ts-proto": "^1.163.0", "tsup": "^8.0.2", diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index 213f0d89..c1a74bd4 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -39,7 +39,7 @@ "outDir": "./dist/core", "declaration": true, "rootDir": ".", - "types": ["node", "uuid", "jest"] + "types": ["node", "uuid"] }, "include": ["src"], "exclude": ["src/**/*.test.ts", "dist/**/*"], From 69075cb950c0096417905e3c3d193bdac6fc7e53 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 20 Jun 2025 15:21:29 +0100 Subject: [PATCH 06/62] Change order of pnpm and node installs in CI --- .github/workflows/main.yaml | 38 ++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 3756d643..16ed4503 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -25,13 +25,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: pnpm/action-setup@v4 with: - node-version: '22.x' - cache: 'pnpm' - - uses: pnpm/action-setup@v3 + version: 10 + - uses: actions/setup-node@v4 with: - version: '10.x' + node-version: 22 + cache: 'pnpm' - name: "Run checks" run: | npm run ci @@ -58,13 +58,13 @@ jobs: ] steps: - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: pnpm/action-setup@v4 with: - node-version: ${{ matrix.versions.node }} - cache: 'pnpm' - - uses: pnpm/action-setup@v3 + version: 10 + - uses: actions/setup-node@v4 with: - version: '10.x' + node-version: 22 + cache: 'pnpm' - name: Login to Docker Hub if: ${{ !github.event.pull_request.head.repo.fork && github.triggering_actor != 'dependabot[bot]' }} uses: docker/login-action@v3 @@ -93,13 +93,13 @@ jobs: ] steps: - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: pnpm/action-setup@v4 with: - node-version: ${{ matrix.versions.node }} - cache: 'pnpm' - - uses: pnpm/action-setup@v3 + version: 10 + - uses: actions/setup-node@v4 with: - version: '10.x' + node-version: 22 + cache: 'pnpm' - name: Login to Docker Hub if: ${{ !github.event.pull_request.head.repo.fork && github.triggering_actor != 'dependabot[bot]' }} uses: docker/login-action@v3 @@ -132,9 +132,13 @@ jobs: steps: - uses: actions/checkout@v3 # Setup .npmrc file to publish to npm - - uses: actions/setup-node@v3 + - uses: pnpm/action-setup@v4 + with: + version: 10 + - uses: actions/setup-node@v4 with: - node-version: '22.x' + node-version: 22 + cache: 'pnpm' registry-url: 'https://registry.npmjs.org' - run: npm run ci - run: npm run build:all From 920e09b7b4754502b53d7b42aaac85ec22c4bd9c Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 20 Jun 2025 15:26:53 +0100 Subject: [PATCH 07/62] Remove ellipsis from intsall cmds --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 38932b1c..c0b79933 100644 --- a/package.json +++ b/package.json @@ -21,9 +21,9 @@ "refresh-schema": "./tools/refresh_schema.sh", "refresh-protos": "./tools/refresh_protos.sh", "docs": "typedoc --plugin typedoc-plugin-extras --favicon public/favicon.ico --out docs/ ./packages/core/src ./packages/node/src ./packages/web/src", - "install:core": "pnpm install --filter @weaviate/core... --no-frozen-lockfile", - "install:node": "pnpm install --filter @weaviate/node... --no-frozen-lockfile", - "install:web": "pnpm install --filter @weaviate/web... --no-frozen-lockfile", + "install:core": "pnpm install --filter @weaviate/core --no-frozen-lockfile", + "install:node": "pnpm install --filter @weaviate/node --no-frozen-lockfile", + "install:web": "pnpm install --filter @weaviate/web --no-frozen-lockfile", "install": "npm run install:core && npm run install:node && npm run install:web", "build:core": "pnpm install --filter @weaviate/core... run build", "build:node": "pnpm install --filter @weaviate/node... run build", From fa6fe74bc234604797139f83b561a4d106f8dce8 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 20 Jun 2025 15:40:54 +0100 Subject: [PATCH 08/62] Remove `install` script from `package.json` root --- package.json | 9 +- pnpm-lock.yaml | 1709 +----------------------------------------------- 2 files changed, 11 insertions(+), 1707 deletions(-) diff --git a/package.json b/package.json index c0b79933..bde1f045 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "packages/*" ], "scripts": { - "test": "pnpm --filter @weaviate/test test", + "test": "pnpm --filter @weaviate/test run test", "lint": "eslint --ext .ts,.js .", "lint:fix": "npm run lint -- --fix", "lint:staged": "npm run format:check && npm run lint -- --cache", @@ -24,10 +24,9 @@ "install:core": "pnpm install --filter @weaviate/core --no-frozen-lockfile", "install:node": "pnpm install --filter @weaviate/node --no-frozen-lockfile", "install:web": "pnpm install --filter @weaviate/web --no-frozen-lockfile", - "install": "npm run install:core && npm run install:node && npm run install:web", - "build:core": "pnpm install --filter @weaviate/core... run build", - "build:node": "pnpm install --filter @weaviate/node... run build", - "build:web": "pnpm install --filter @weaviate/web... run build", + "build:core": "pnpm --filter @weaviate/core... run build", + "build:node": "pnpm --filter @weaviate/node... run build", + "build:web": "pnpm --filter @weaviate/web... run build", "build": "npm run build:core && npm run build:node && npm run build:web", "ci": "npm run install:core && npm run build:core && npm run install:node && npm run install:web" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c1778b0c..0ab7a3dd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -102,9 +102,6 @@ importers: '@types/isomorphic-fetch': specifier: ^0.0.36 version: 0.0.36 - '@types/jest': - specifier: ^29.4.0 - version: 29.5.14 '@types/node': specifier: ^18.14.0 version: 18.19.112 @@ -117,9 +114,6 @@ importers: '@typescript-eslint/parser': specifier: ^6.21.0 version: 6.21.0(eslint@8.57.1)(typescript@5.8.3) - babel-jest: - specifier: ^29.4.3 - version: 29.7.0(@babel/core@7.27.4) eslint: specifier: ^8.35.0 version: 8.57.1 @@ -138,9 +132,6 @@ importers: husky: specifier: ^8.0.3 version: 8.0.3 - jest: - specifier: ^29.4.3 - version: 29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)) lint-staged: specifier: ^13.2.0 version: 13.3.0 @@ -156,9 +147,6 @@ importers: protobufjs: specifier: ^7.2.6 version: 7.5.3 - ts-jest: - specifier: ^29.0.5 - version: 29.4.0(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(esbuild@0.25.5)(jest-util@29.7.0)(jest@29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)))(typescript@5.8.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@18.19.112)(typescript@5.8.3) @@ -326,91 +314,12 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-bigint@7.8.3': - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.27.1': - resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.27.1': resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.27.1': resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} engines: {node: '>=6.9.0'} @@ -454,9 +363,6 @@ packages: '@balena/dockerignore@1.0.2': resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==} - '@bcoe/v8-coverage@0.2.3': - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -818,80 +724,6 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - '@istanbuljs/load-nyc-config@1.1.0': - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - - '@jest/console@29.7.0': - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/core@29.7.0': - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/environment@29.7.0': - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect-utils@29.7.0': - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect@29.7.0': - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/fake-timers@29.7.0': - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/globals@29.7.0': - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/reporters@29.7.0': - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/source-map@29.6.3': - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-result@29.7.0': - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-sequencer@29.7.0': - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/transform@29.7.0': - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jridgewell/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} @@ -1104,15 +936,6 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - - '@sinonjs/commons@3.0.1': - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - - '@sinonjs/fake-timers@10.3.0': - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - '@testcontainers/weaviate@10.28.0': resolution: {integrity: sha512-SR4JWacoJwaoD6P6O7CwInG/xjDfIDTUqtunxJPzent4JiDF86jpC1HjLGhp0dciemJWoa1hRR5/REgIcAyBow==} @@ -1170,9 +993,6 @@ packages: '@types/express@4.17.23': resolution: {integrity: sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==} - '@types/graceful-fs@4.1.9': - resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -1182,18 +1002,6 @@ packages: '@types/isomorphic-fetch@0.0.36': resolution: {integrity: sha512-ulw4d+vW1HKn4oErSmNN2HYEcHGq0N1C5exlrMM0CRqX1UUpFhGb5lwiom5j9KN3LBJJDLRmYIZz1ghm7FIzZw==} - '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - - '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - - '@types/istanbul-reports@3.0.4': - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - - '@types/jest@29.5.14': - resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1230,9 +1038,6 @@ packages: '@types/ssh2@1.15.5': resolution: {integrity: sha512-N1ASjp/nXH3ovBHddRJpli4ozpk6UdDYIX4RJWFa9L1YKnzdhTlVmiGHm4DZnj/jLbqZpes4aeR30EFGQtvhQQ==} - '@types/stack-utils@2.0.3': - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -1242,12 +1047,6 @@ packages: '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - '@types/yargs-parser@21.0.3': - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@typescript-eslint/eslint-plugin@6.21.0': resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} engines: {node: ^16.0.0 || >=18.0.0} @@ -1373,10 +1172,6 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - ansi-escapes@5.0.0: resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} engines: {node: '>=12'} @@ -1393,10 +1188,6 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -1404,10 +1195,6 @@ packages: any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} @@ -1427,9 +1214,6 @@ packages: arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -1456,31 +1240,6 @@ packages: b4a@1.6.7: resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} - babel-jest@29.7.0: - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - - babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - - babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - babel-preset-current-node-syntax@1.1.0: - resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-preset-jest@29.6.3: - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1542,20 +1301,10 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - bs-logger@0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} - - bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - buffer-crc32@1.0.0: resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} engines: {node: '>=8.0.0'} - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -1596,14 +1345,6 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - caniuse-lite@1.0.30001724: resolution: {integrity: sha512-WqJo7p0TbHDOythNTqYujmaJTvtYRZrjpP8TCvH6Vb9CYJerJNKamKzIWOM4BkQatWj9H2lYulpdAQNBe7QhNA==} @@ -1626,10 +1367,6 @@ packages: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} @@ -1651,13 +1388,6 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - - cjs-module-lexer@1.4.3: - resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} - cli-cursor@4.0.0: resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1670,13 +1400,6 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} - co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - - collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -1753,11 +1476,6 @@ packages: resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} engines: {node: '>= 14'} - create-jest@29.7.0: - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -1794,14 +1512,6 @@ packages: supports-color: optional: true - dedent@1.6.0: - resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} @@ -1809,10 +1519,6 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} @@ -1837,17 +1543,9 @@ packages: resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} engines: {node: '>=8'} - detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -1885,18 +1583,9 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - ejs@3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} - engines: {node: '>=0.10.0'} - hasBin: true - electron-to-chromium@1.5.171: resolution: {integrity: sha512-scWpzXEJEMrGJa4Y6m/tVotb0WuvNmasv3wWVzUAeCgKU0ToFOhUW6Z+xWnRQANMYGxN4ngJXIThgBJOqzVPCQ==} - emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -1921,9 +1610,6 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -1956,10 +1642,6 @@ packages: escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -1999,11 +1681,6 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - esquery@1.6.0: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} @@ -2041,26 +1718,14 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - execa@7.2.0: resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - expect-type@1.2.1: resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} engines: {node: '>=12.0.0'} - expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - express@4.21.2: resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} @@ -2087,9 +1752,6 @@ packages: fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - fdir@6.4.6: resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} peerDependencies: @@ -2102,9 +1764,6 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} - filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -2113,10 +1772,6 @@ packages: resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -2178,10 +1833,6 @@ packages: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} - get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - get-port@7.1.0: resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} engines: {node: '>=16'} @@ -2272,9 +1923,6 @@ packages: hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} @@ -2286,10 +1934,6 @@ packages: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} @@ -2314,11 +1958,6 @@ packages: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} - import-local@3.2.0: - resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} - engines: {node: '>=8'} - hasBin: true - imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -2334,13 +1973,6 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -2353,10 +1985,6 @@ packages: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} - is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -2388,167 +2016,9 @@ packages: peerDependencies: ws: '*' - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - - istanbul-lib-instrument@6.0.3: - resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} - engines: {node: '>=10'} - - istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - - istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} - engines: {node: '>=8'} - jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jake@10.9.2: - resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} - engines: {node: '>=10'} - hasBin: true - - jest-changed-files@29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-circus@29.7.0: - resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-cli@29.7.0: - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jest-config@29.7.0: - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - - jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-docblock@29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-each@29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-leak-detector@29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-pnp-resolver@1.2.3: - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - - jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve@29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runner@29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runtime@29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-snapshot@29.7.0: - resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-watcher@29.7.0: - resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest@29.7.0: - resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} @@ -2562,10 +2032,6 @@ packages: js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -2578,9 +2044,6 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -2595,18 +2058,10 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - lazystream@1.0.1: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} - leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -2643,10 +2098,6 @@ packages: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -2654,9 +2105,6 @@ packages: lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -2692,16 +2140,9 @@ packages: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} - make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} - make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - markdown-it@14.1.0: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true @@ -2873,9 +2314,6 @@ packages: encoding: optional: true - node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} @@ -2888,10 +2326,6 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2935,26 +2369,14 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -2962,10 +2384,6 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -2986,9 +2404,6 @@ packages: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.11.1: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} @@ -3027,10 +2442,6 @@ packages: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} @@ -3082,10 +2493,6 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -3093,10 +2500,6 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - proper-lockfile@4.1.2: resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} @@ -3126,9 +2529,6 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - qs@6.13.0: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} @@ -3144,9 +2544,6 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -3178,10 +2575,6 @@ packages: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -3190,15 +2583,6 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - resolve.exports@2.0.3: - resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} - engines: {node: '>=10'} - - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - restore-cursor@4.0.0: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3296,9 +2680,6 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -3311,13 +2692,6 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - source-map@0.8.0-beta.0: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} engines: {node: '>= 8'} @@ -3328,9 +2702,6 @@ packages: split-ca@1.0.1: resolution: {integrity: sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==} - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - ssh-remote-port-forward@1.0.4: resolution: {integrity: sha512-x0LV1eVDwjf1gmG7TTnfqIzf+3VPRz7vrNIjX6oYLbeCrf/PeVY6hkT68Mg+q02qXxQhrLjB0jfgvhevoCRmLQ==} @@ -3338,10 +2709,6 @@ packages: resolution: {integrity: sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg==} engines: {node: '>=10.16.0'} - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -3359,10 +2726,6 @@ packages: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} - string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -3388,14 +2751,6 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} - strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} @@ -3416,14 +2771,6 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - tar-fs@2.1.3: resolution: {integrity: sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==} @@ -3441,10 +2788,6 @@ packages: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} - test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - testcontainers@10.28.0: resolution: {integrity: sha512-1fKrRRCsgAQNkarjHCMKzBKXSJFmzNTiTbhb5E/j5hflRXChEtHvkefjaHlgkNUjfw92/Dq8LTgwQn6RDBFbMg==} @@ -3490,9 +2833,6 @@ packages: resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} engines: {node: '>=14.14'} - tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -3526,33 +2866,6 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - ts-jest@29.4.0: - resolution: {integrity: sha512-d423TJMnJGu80/eSgfQ5w/R+0zFJvdtTxwtF9KzFFunOpSeD+79lHJQIiAhluJoyGRbvj9NZJsl9WjCUo0ND7Q==} - engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/transform': ^29.0.0 || ^30.0.0 - '@jest/types': ^29.0.0 || ^30.0.0 - babel-jest: ^29.0.0 || ^30.0.0 - esbuild: '*' - jest: ^29.0.0 || ^30.0.0 - jest-util: ^29.0.0 || ^30.0.0 - typescript: '>=4.3 <6' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/transform': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - jest-util: - optional: true - ts-node@10.9.2: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true @@ -3603,26 +2916,14 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} - type-fest@4.41.0: - resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} - engines: {node: '>=16'} - type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -3703,10 +3004,6 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - v8-to-istanbul@9.3.0: - resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} - engines: {node: '>=10.12.0'} - vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -3781,9 +3078,6 @@ packages: jsdom: optional: true - walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -3824,10 +3118,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - ws@8.18.2: resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} engines: {node: '>=10.0.0'} @@ -4010,86 +3300,11 @@ snapshots: dependencies: '@babel/types': 7.27.6 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 @@ -4152,8 +3367,6 @@ snapshots: '@balena/dockerignore@1.0.2': {} - '@bcoe/v8-coverage@0.2.3': {} - '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 @@ -4392,178 +3605,6 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@istanbuljs/load-nyc-config@1.1.0': - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - - '@istanbuljs/schema@0.1.3': {} - - '@jest/console@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@types/node': 18.19.112 - chalk: 4.1.2 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3))': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 18.19.112 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - - '@jest/environment@29.7.0': - dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 18.19.112 - jest-mock: 29.7.0 - - '@jest/expect-utils@29.7.0': - dependencies: - jest-get-type: 29.6.3 - - '@jest/expect@29.7.0': - dependencies: - expect: 29.7.0 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - - '@jest/fake-timers@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 18.19.112 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 - - '@jest/globals@29.7.0': - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/types': 29.6.3 - jest-mock: 29.7.0 - transitivePeerDependencies: - - supports-color - - '@jest/reporters@29.7.0': - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 18.19.112 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.3 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - jest-worker: 29.7.0 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.3.0 - transitivePeerDependencies: - - supports-color - - '@jest/schemas@29.6.3': - dependencies: - '@sinclair/typebox': 0.27.8 - - '@jest/source-map@29.6.3': - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - callsites: 3.1.0 - graceful-fs: 4.2.11 - - '@jest/test-result@29.7.0': - dependencies: - '@jest/console': 29.7.0 - '@jest/types': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 - - '@jest/test-sequencer@29.7.0': - dependencies: - '@jest/test-result': 29.7.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - slash: 3.0.0 - - '@jest/transform@29.7.0': - dependencies: - '@babel/core': 7.27.4 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - micromatch: 4.0.8 - pirates: 4.0.7 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - - '@jest/types@29.6.3': - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 18.19.112 - '@types/yargs': 17.0.33 - chalk: 4.1.2 - '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 @@ -4754,16 +3795,6 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} - '@sinclair/typebox@0.27.8': {} - - '@sinonjs/commons@3.0.1': - dependencies: - type-detect: 4.0.8 - - '@sinonjs/fake-timers@10.3.0': - dependencies: - '@sinonjs/commons': 3.0.1 - '@testcontainers/weaviate@10.28.0': dependencies: testcontainers: 10.28.0 @@ -4786,19 +3817,23 @@ snapshots: '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.7 + optional: true '@types/babel__generator@7.27.0': dependencies: '@babel/types': 7.27.6 + optional: true '@types/babel__template@7.4.4': dependencies: '@babel/parser': 7.27.5 '@babel/types': 7.27.6 + optional: true '@types/babel__traverse@7.20.7': dependencies: '@babel/types': 7.27.6 + optional: true '@types/body-parser@1.19.6': dependencies: @@ -4844,10 +3879,6 @@ snapshots: '@types/qs': 6.14.0 '@types/serve-static': 1.15.8 - '@types/graceful-fs@4.1.9': - dependencies: - '@types/node': 18.19.112 - '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 @@ -4856,21 +3887,6 @@ snapshots: '@types/isomorphic-fetch@0.0.36': {} - '@types/istanbul-lib-coverage@2.0.6': {} - - '@types/istanbul-lib-report@3.0.3': - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - - '@types/istanbul-reports@3.0.4': - dependencies: - '@types/istanbul-lib-report': 3.0.3 - - '@types/jest@29.5.14': - dependencies: - expect: 29.7.0 - pretty-format: 29.7.0 - '@types/json-schema@7.0.15': {} '@types/mdast@4.0.4': @@ -4913,8 +3929,6 @@ snapshots: dependencies: '@types/node': 18.19.112 - '@types/stack-utils@2.0.3': {} - '@types/unist@3.0.3': {} '@types/uuid@9.0.8': {} @@ -4923,12 +3937,6 @@ snapshots: dependencies: '@types/node': 18.19.112 - '@types/yargs-parser@21.0.3': {} - - '@types/yargs@17.0.33': - dependencies: - '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -5095,10 +4103,6 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - ansi-escapes@5.0.0: dependencies: type-fest: 1.4.0 @@ -5111,17 +4115,10 @@ snapshots: dependencies: color-convert: 2.0.1 - ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} any-promise@1.3.0: {} - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - aproba@2.0.0: {} archiver-utils@5.0.2: @@ -5151,10 +4148,6 @@ snapshots: arg@4.1.3: {} - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - argparse@2.0.1: {} array-flatten@1.1.1: {} @@ -5173,61 +4166,6 @@ snapshots: b4a@1.6.7: {} - babel-jest@29.7.0(@babel/core@7.27.4): - dependencies: - '@babel/core': 7.27.4 - '@jest/transform': 29.7.0 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.27.4) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-istanbul@6.1.1: - dependencies: - '@babel/helper-plugin-utils': 7.27.1 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-jest-hoist@29.6.3: - dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.27.6 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.7 - - babel-preset-current-node-syntax@1.1.0(@babel/core@7.27.4): - dependencies: - '@babel/core': 7.27.4 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.27.4) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.27.4) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.27.4) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.4) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.27.4) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.27.4) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.27.4) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.27.4) - - babel-preset-jest@29.6.3(@babel/core@7.27.4): - dependencies: - '@babel/core': 7.27.4 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.4) - balanced-match@1.0.2: {} bare-events@2.5.4: @@ -5304,18 +4242,8 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.0) - bs-logger@0.2.6: - dependencies: - fast-json-stable-stringify: 2.1.0 - - bser@2.1.1: - dependencies: - node-int64: 0.4.0 - buffer-crc32@1.0.0: {} - buffer-from@1.1.2: {} - buffer@5.7.1: dependencies: base64-js: 1.5.1 @@ -5352,10 +4280,6 @@ snapshots: callsites@3.1.0: {} - camelcase@5.3.1: {} - - camelcase@6.3.0: {} - caniuse-lite@1.0.30001724: {} case-anything@2.1.13: {} @@ -5377,8 +4301,6 @@ snapshots: chalk@5.3.0: {} - char-regex@1.0.2: {} - character-entities-html4@2.1.0: {} character-entities-legacy@3.0.0: {} @@ -5393,10 +4315,6 @@ snapshots: chownr@2.0.0: {} - ci-info@3.9.0: {} - - cjs-module-lexer@1.4.3: {} - cli-cursor@4.0.0: dependencies: restore-cursor: 4.0.0 @@ -5412,10 +4330,6 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - co@4.6.0: {} - - collect-v8-coverage@1.0.2: {} - color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -5475,24 +4389,9 @@ snapshots: crc-32: 1.2.2 readable-stream: 4.7.0 - create-jest@29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - create-require@1.1.1: {} - - cross-fetch@3.2.0: + create-require@1.1.1: {} + + cross-fetch@3.2.0: dependencies: node-fetch: 2.7.0 transitivePeerDependencies: @@ -5516,14 +4415,10 @@ snapshots: dependencies: ms: 2.1.3 - dedent@1.6.0: {} - deep-eql@5.0.2: {} deep-is@0.1.4: {} - deepmerge@4.3.1: {} - delegates@1.0.0: {} depd@2.0.0: {} @@ -5536,14 +4431,10 @@ snapshots: detect-libc@2.0.4: {} - detect-newline@3.1.0: {} - devlop@1.1.0: dependencies: dequal: 2.0.3 - diff-sequences@29.6.3: {} - diff@4.0.2: {} dir-glob@3.0.1: @@ -5593,14 +4484,8 @@ snapshots: ee-first@1.1.1: {} - ejs@3.1.10: - dependencies: - jake: 10.9.2 - electron-to-chromium@1.5.171: {} - emittery@0.13.1: {} - emoji-regex-xs@1.0.0: {} emoji-regex@8.0.0: {} @@ -5617,10 +4502,6 @@ snapshots: entities@4.5.0: {} - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -5689,8 +4570,6 @@ snapshots: escape-html@1.0.3: {} - escape-string-regexp@2.0.0: {} - escape-string-regexp@4.0.0: {} eslint-config-prettier@8.10.0(eslint@8.57.1): @@ -5761,8 +4640,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 3.4.3 - esprima@4.0.1: {} - esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -5789,18 +4666,6 @@ snapshots: events@3.3.0: {} - execa@5.1.1: - dependencies: - cross-spawn: 7.0.6 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - execa@7.2.0: dependencies: cross-spawn: 7.0.6 @@ -5813,18 +4678,8 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 3.0.0 - exit@0.1.2: {} - expect-type@1.2.1: {} - expect@29.7.0: - dependencies: - '@jest/expect-utils': 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - express@4.21.2: dependencies: accepts: 1.3.8 @@ -5883,10 +4738,6 @@ snapshots: dependencies: reusify: 1.1.0 - fb-watchman@2.0.2: - dependencies: - bser: 2.1.1 - fdir@6.4.6(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -5895,10 +4746,6 @@ snapshots: dependencies: flat-cache: 3.2.0 - filelist@1.0.4: - dependencies: - minimatch: 5.1.6 - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -5915,11 +4762,6 @@ snapshots: transitivePeerDependencies: - supports-color - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -5990,8 +4832,6 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 - get-package-type@0.1.0: {} - get-port@7.1.0: {} get-proto@1.0.1: @@ -6097,8 +4937,6 @@ snapshots: dependencies: '@types/hast': 3.0.4 - html-escaper@2.0.2: {} - html-void-elements@3.0.0: {} http-errors@2.0.0: @@ -6116,8 +4954,6 @@ snapshots: transitivePeerDependencies: - supports-color - human-signals@2.1.0: {} - human-signals@4.3.1: {} husky@8.0.3: {} @@ -6135,11 +4971,6 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-local@3.2.0: - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - imurmurhash@0.1.4: {} inflight@1.0.6: @@ -6151,20 +4982,12 @@ snapshots: ipaddr.js@1.9.1: {} - is-arrayish@0.2.1: {} - - is-core-module@2.16.1: - dependencies: - hasown: 2.0.2 - is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} is-fullwidth-code-point@4.0.0: {} - is-generator-fn@2.1.0: {} - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -6185,369 +5008,12 @@ snapshots: dependencies: ws: 8.18.2 - istanbul-lib-coverage@3.2.2: {} - - istanbul-lib-instrument@5.2.1: - dependencies: - '@babel/core': 7.27.4 - '@babel/parser': 7.27.5 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - istanbul-lib-instrument@6.0.3: - dependencies: - '@babel/core': 7.27.4 - '@babel/parser': 7.27.5 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 7.7.2 - transitivePeerDependencies: - - supports-color - - istanbul-lib-report@3.0.1: - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 - - istanbul-lib-source-maps@4.0.1: - dependencies: - debug: 4.4.1 - istanbul-lib-coverage: 3.2.2 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - - istanbul-reports@3.1.7: - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jake@10.9.2: - dependencies: - async: 3.2.6 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 - - jest-changed-files@29.7.0: - dependencies: - execa: 5.1.1 - jest-util: 29.7.0 - p-limit: 3.1.0 - - jest-circus@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 18.19.112 - chalk: 4.1.2 - co: 4.6.0 - dedent: 1.6.0 - is-generator-fn: 2.1.0 - jest-each: 29.7.0 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - p-limit: 3.1.0 - pretty-format: 29.7.0 - pure-rand: 6.1.0 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-cli@29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest-config@29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)): - dependencies: - '@babel/core': 7.27.4 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.27.4) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 18.19.112 - ts-node: 10.9.2(@types/node@18.19.112)(typescript@5.8.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-diff@29.7.0: - dependencies: - chalk: 4.1.2 - diff-sequences: 29.6.3 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-docblock@29.7.0: - dependencies: - detect-newline: 3.1.0 - - jest-each@29.7.0: - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - jest-get-type: 29.6.3 - jest-util: 29.7.0 - pretty-format: 29.7.0 - - jest-environment-node@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 18.19.112 - jest-mock: 29.7.0 - jest-util: 29.7.0 - - jest-get-type@29.6.3: {} - - jest-haste-map@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.9 - '@types/node': 18.19.112 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - jest-worker: 29.7.0 - micromatch: 4.0.8 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - - jest-leak-detector@29.7.0: - dependencies: - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-matcher-utils@29.7.0: - dependencies: - chalk: 4.1.2 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-message-util@29.7.0: - dependencies: - '@babel/code-frame': 7.27.1 - '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 - - jest-mock@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 18.19.112 - jest-util: 29.7.0 - - jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - optionalDependencies: - jest-resolve: 29.7.0 - - jest-regex-util@29.6.3: {} - - jest-resolve-dependencies@29.7.0: - dependencies: - jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - - jest-resolve@29.7.0: - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 - resolve: 1.22.10 - resolve.exports: 2.0.3 - slash: 3.0.0 - - jest-runner@29.7.0: - dependencies: - '@jest/console': 29.7.0 - '@jest/environment': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 18.19.112 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.11 - jest-docblock: 29.7.0 - jest-environment-node: 29.7.0 - jest-haste-map: 29.7.0 - jest-leak-detector: 29.7.0 - jest-message-util: 29.7.0 - jest-resolve: 29.7.0 - jest-runtime: 29.7.0 - jest-util: 29.7.0 - jest-watcher: 29.7.0 - jest-worker: 29.7.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - - jest-runtime@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/globals': 29.7.0 - '@jest/source-map': 29.6.3 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 18.19.112 - chalk: 4.1.2 - cjs-module-lexer: 1.4.3 - collect-v8-coverage: 1.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - - jest-snapshot@29.7.0: - dependencies: - '@babel/core': 7.27.4 - '@babel/generator': 7.27.5 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.4) - '@babel/types': 7.27.6 - '@jest/expect-utils': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.4) - chalk: 4.1.2 - expect: 29.7.0 - graceful-fs: 4.2.11 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - natural-compare: 1.4.0 - pretty-format: 29.7.0 - semver: 7.7.2 - transitivePeerDependencies: - - supports-color - - jest-util@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 18.19.112 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - - jest-validate@29.7.0: - dependencies: - '@jest/types': 29.6.3 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.6.3 - leven: 3.1.0 - pretty-format: 29.7.0 - - jest-watcher@29.7.0: - dependencies: - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 18.19.112 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.7.0 - string-length: 4.0.2 - - jest-worker@29.7.0: - dependencies: - '@types/node': 18.19.112 - jest-util: 29.7.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jest@29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)) - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - joycon@3.1.1: {} js-base64@3.7.7: {} @@ -6556,11 +5022,6 @@ snapshots: js-tokens@9.0.1: {} - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - js-yaml@4.1.0: dependencies: argparse: 2.0.1 @@ -6569,8 +5030,6 @@ snapshots: json-buffer@3.0.1: {} - json-parse-even-better-errors@2.3.1: {} - json-schema-traverse@0.4.1: {} json-stable-stringify-without-jsonify@1.0.1: {} @@ -6581,14 +5040,10 @@ snapshots: dependencies: json-buffer: 3.0.1 - kleur@3.0.3: {} - lazystream@1.0.1: dependencies: readable-stream: 2.3.8 - leven@3.1.0: {} - levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -6631,18 +5086,12 @@ snapshots: load-tsconfig@0.2.5: {} - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - locate-path@6.0.0: dependencies: p-locate: 5.0.0 lodash.camelcase@4.3.0: {} - lodash.memoize@4.1.2: {} - lodash.merge@4.6.2: {} lodash.sortby@4.7.0: {} @@ -6677,16 +5126,8 @@ snapshots: dependencies: semver: 6.3.1 - make-dir@4.0.0: - dependencies: - semver: 7.7.2 - make-error@1.3.6: {} - makeerror@1.0.12: - dependencies: - tmpl: 1.0.5 - markdown-it@14.1.0: dependencies: argparse: 2.0.1 @@ -6852,8 +5293,6 @@ snapshots: dependencies: whatwg-url: 5.0.0 - node-int64@0.4.0: {} - node-releases@2.0.19: {} nopt@5.0.0: @@ -6862,10 +5301,6 @@ snapshots: normalize-path@3.0.0: {} - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - npm-run-path@5.3.0: dependencies: path-key: 4.0.0 @@ -6921,37 +5356,20 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - p-locate@5.0.0: dependencies: p-limit: 3.1.0 - p-try@2.2.0: {} - package-json-from-dist@1.0.1: {} parent-module@1.0.1: dependencies: callsites: 3.1.0 - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.27.1 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - parseurl@1.3.3: {} path-exists@4.0.0: {} @@ -6962,8 +5380,6 @@ snapshots: path-key@4.0.0: {} - path-parse@1.0.7: {} - path-scurry@1.11.1: dependencies: lru-cache: 10.4.3 @@ -6987,10 +5403,6 @@ snapshots: pirates@4.0.7: {} - pkg-dir@4.2.0: - dependencies: - find-up: 4.1.0 - pkg-types@1.3.1: dependencies: confbox: 0.1.8 @@ -7023,21 +5435,10 @@ snapshots: prettier@2.8.8: {} - pretty-format@29.7.0: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.3.1 - process-nextick-args@2.0.1: {} process@0.11.10: {} - prompts@2.4.2: - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - proper-lockfile@4.1.2: dependencies: graceful-fs: 4.2.11 @@ -7079,8 +5480,6 @@ snapshots: punycode@2.3.1: {} - pure-rand@6.1.0: {} - qs@6.13.0: dependencies: side-channel: 1.1.0 @@ -7096,8 +5495,6 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 - react-is@18.3.1: {} - readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 @@ -7141,22 +5538,10 @@ snapshots: require-directory@2.1.1: {} - resolve-cwd@3.0.0: - dependencies: - resolve-from: 5.0.0 - resolve-from@4.0.0: {} resolve-from@5.0.0: {} - resolve.exports@2.0.3: {} - - resolve@1.22.10: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - restore-cursor@4.0.0: dependencies: onetime: 5.1.2 @@ -7294,8 +5679,6 @@ snapshots: signal-exit@4.1.0: {} - sisteransi@1.0.5: {} - slash@3.0.0: {} slice-ansi@5.0.0: @@ -7305,13 +5688,6 @@ snapshots: source-map-js@1.2.1: {} - source-map-support@0.5.13: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - source-map@0.8.0-beta.0: dependencies: whatwg-url: 7.1.0 @@ -7320,8 +5696,6 @@ snapshots: split-ca@1.0.1: {} - sprintf-js@1.0.3: {} - ssh-remote-port-forward@1.0.4: dependencies: '@types/ssh2': 0.5.52 @@ -7335,10 +5709,6 @@ snapshots: cpu-features: 0.0.10 nan: 2.22.2 - stack-utils@2.0.6: - dependencies: - escape-string-regexp: 2.0.0 - stackback@0.0.2: {} statuses@2.0.1: {} @@ -7354,11 +5724,6 @@ snapshots: string-argv@0.3.2: {} - string-length@4.0.2: - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -7392,10 +5757,6 @@ snapshots: dependencies: ansi-regex: 6.1.0 - strip-bom@4.0.0: {} - - strip-final-newline@2.0.0: {} - strip-final-newline@3.0.0: {} strip-json-comments@3.1.1: {} @@ -7418,12 +5779,6 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - supports-preserve-symlinks-flag@1.0.0: {} - tar-fs@2.1.3: dependencies: chownr: 1.1.4 @@ -7464,12 +5819,6 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - test-exclude@6.0.0: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - testcontainers@10.28.0: dependencies: '@balena/dockerignore': 1.0.2 @@ -7527,8 +5876,6 @@ snapshots: tmp@0.2.3: {} - tmpl@1.0.5: {} - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -7553,27 +5900,6 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.4.0(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(esbuild@0.25.5)(jest-util@29.7.0)(jest@29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)))(typescript@5.8.3): - dependencies: - bs-logger: 0.2.6 - ejs: 3.1.10 - fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@18.19.112)(ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3)) - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.7.2 - type-fest: 4.41.0 - typescript: 5.8.3 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.27.4 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.27.4) - esbuild: 0.25.5 - jest-util: 29.7.0 - ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -7642,16 +5968,10 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-detect@4.0.8: {} - type-fest@0.20.2: {} - type-fest@0.21.3: {} - type-fest@1.4.0: {} - type-fest@4.41.0: {} - type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -7727,12 +6047,6 @@ snapshots: v8-compile-cache-lib@3.0.1: {} - v8-to-istanbul@9.3.0: - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 2.0.0 - vary@1.1.2: {} vfile-message@4.0.2: @@ -7810,10 +6124,6 @@ snapshots: - supports-color - terser - walker@1.0.8: - dependencies: - makeerror: 1.0.12 - webidl-conversions@3.0.1: {} webidl-conversions@4.0.2: {} @@ -7858,11 +6168,6 @@ snapshots: wrappy@1.0.2: {} - write-file-atomic@4.0.2: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - ws@8.18.2: {} y18n@5.0.8: {} From 8950c1c0e2abc437d77a562e3263185dc7cbb647 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 20 Jun 2025 15:44:13 +0100 Subject: [PATCH 09/62] Fix `build:all` typo in CI --- .github/workflows/main.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 16ed4503..74e81af5 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -38,6 +38,7 @@ jobs: npm run lint npm run format:check npm run docs + npm run build tests-without-auth: needs: checks @@ -71,8 +72,6 @@ jobs: with: username: ${{secrets.DOCKER_USERNAME}} password: ${{secrets.DOCKER_PASSWORD}} - - name: "Transpile the package" - run: npm run build:all - name: "Install dependencies" run: | npm run ci @@ -141,7 +140,7 @@ jobs: cache: 'pnpm' registry-url: 'https://registry.npmjs.org' - run: npm run ci - - run: npm run build:all + - run: npm run build - run: npm publish env: NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTOMATION_TOKEN }} From 7109d89c504d576062a9c674eb0cc9e8a4f42493 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 20 Jun 2025 15:50:25 +0100 Subject: [PATCH 10/62] Split `npm run ci` script into step-specific cmds --- .github/workflows/main.yaml | 8 ++++---- package.json | 4 +++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 74e81af5..7b7f5bb0 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -34,7 +34,7 @@ jobs: cache: 'pnpm' - name: "Run checks" run: | - npm run ci + npm run ci:checks npm run lint npm run format:check npm run docs @@ -74,7 +74,7 @@ jobs: password: ${{secrets.DOCKER_PASSWORD}} - name: "Install dependencies" run: | - npm run ci + npm run ci:test ci/run_dependencies.sh ${{ matrix.versions.weaviate }} - name: "Run tests without authentication tests" run: WEAVIATE_VERSION=${{ matrix.versions.weaviate }} npm run test @@ -107,7 +107,7 @@ jobs: password: ${{secrets.DOCKER_PASSWORD}} - name: "Install dependencies" run: | - npm run ci + npm run ci:test ci/run_dependencies.sh ${{ matrix.versions.weaviate }} - name: "Run tests with authentication tests" if: ${{ !github.event.pull_request.head.repo.fork }} @@ -139,7 +139,7 @@ jobs: node-version: 22 cache: 'pnpm' registry-url: 'https://registry.npmjs.org' - - run: npm run ci + - run: npm run ci:publish - run: npm run build - run: npm publish env: diff --git a/package.json b/package.json index bde1f045..4a8dbd23 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,9 @@ "build:node": "pnpm --filter @weaviate/node... run build", "build:web": "pnpm --filter @weaviate/web... run build", "build": "npm run build:core && npm run build:node && npm run build:web", - "ci": "npm run install:core && npm run build:core && npm run install:node && npm run install:web" + "ci:checks": "npm run install:core && npm run build:core && npm run install:node && npm run install:web", + "ci:test": "npm run ci:checks && npm run build:node", + "ci:publish": "npm run ci:test && npm run build:web" }, "repository": { "type": "git", From 9ecdd69c4cc2c83989cade016b5e97e25ea372d0 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 20 Jun 2025 15:56:49 +0100 Subject: [PATCH 11/62] Fix `ci:test` script --- .github/workflows/main.yaml | 3 ++- package.json | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 7b7f5bb0..5b100dec 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -140,7 +140,8 @@ jobs: cache: 'pnpm' registry-url: 'https://registry.npmjs.org' - run: npm run ci:publish - - run: npm run build + - run: npm run build:node + - run: npm run build:web - run: npm publish env: NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTOMATION_TOKEN }} diff --git a/package.json b/package.json index 4a8dbd23..4aa56480 100644 --- a/package.json +++ b/package.json @@ -24,13 +24,14 @@ "install:core": "pnpm install --filter @weaviate/core --no-frozen-lockfile", "install:node": "pnpm install --filter @weaviate/node --no-frozen-lockfile", "install:web": "pnpm install --filter @weaviate/web --no-frozen-lockfile", + "install:test": "pnpm install --filter @weaviate/test --no-frozen-lockfile", "build:core": "pnpm --filter @weaviate/core... run build", "build:node": "pnpm --filter @weaviate/node... run build", "build:web": "pnpm --filter @weaviate/web... run build", "build": "npm run build:core && npm run build:node && npm run build:web", "ci:checks": "npm run install:core && npm run build:core && npm run install:node && npm run install:web", - "ci:test": "npm run ci:checks && npm run build:node", - "ci:publish": "npm run ci:test && npm run build:web" + "ci:test": "npm run ci:checks && npm run build:node && npm run install:test", + "ci:publish": "npm run ci:checks" }, "repository": { "type": "git", From 6362c4c1b2a49c64aa5de989717256b9e10c5bc3 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 20 Jun 2025 16:04:33 +0100 Subject: [PATCH 12/62] Add missing dev deps to @weaviate/test --- packages/core/package.json | 25 -------------------- packages/test/package.json | 5 ++++ packages/test/src/connection/helpers.test.ts | 2 +- packages/test/src/connection/journey.test.ts | 2 +- packages/test/src/connection/proxy.test.ts | 2 +- packages/test/tsconfig.json | 2 +- pnpm-lock.yaml | 15 ++++++++++++ 7 files changed, 24 insertions(+), 29 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index fdedf062..e569d7a9 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -49,36 +49,11 @@ "uuid": "^9.0.1" }, "devDependencies": { - "@babel/core": "^7.20.12", - "@babel/preset-typescript": "^7.18.6", - "@babel/runtime": "^7.20.7", - "@curveball/bodyparser": "0.5.0", - "@curveball/core": "0.20.0", - "@curveball/kernel": "0.20.1", - "@rollup/plugin-babel": "^5.3.1", - "@testcontainers/weaviate": "^10.14.0", - "@types/express": "^4.17.21", - "@types/isomorphic-fetch": "^0.0.36", "@types/node": "^18.14.0", "@types/uuid": "^9.0.1", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "eslint": "^8.35.0", - "eslint-config-prettier": "^8.7.0", - "eslint-plugin-prettier": "^4.2.1", - "express": "^4.19.2", "grpc-tools": "^1.12.4", - "husky": "^8.0.3", - "lint-staged": "^13.2.0", "openapi-typescript": "^5.4.1", - "prettier": "^2.8.4", - "prettier-plugin-organize-imports": "^3.2.4", "protobufjs": "^7.2.6", - "ts-node": "^10.9.2", - "ts-proto": "^1.163.0", - "tsup": "^8.0.2", - "typedoc": "^0.26.0", - "typedoc-plugin-extras": "^3.0.0", "typescript": "^5.3.3" }, "lint-staged": { diff --git a/packages/test/package.json b/packages/test/package.json index 423f9a5f..aa66c6d6 100644 --- a/packages/test/package.json +++ b/packages/test/package.json @@ -6,10 +6,15 @@ "test:watch": "vitest" }, "devDependencies": { + "@curveball/bodyparser": "0.5.0", + "@testcontainers/weaviate": "^10.28.0", + "@types/express": "^4.17.23", + "@types/uuid": "^9.0.8", "@weaviate/core": "workspace:^1.0.0", "@weaviate/node": "workspace:^1.0.0", "express": "^4.21.2", "nice-grpc": "^2.1.12", + "uuid": "^9.0.1", "vitest": "^3.2.4" } } diff --git a/packages/test/src/connection/helpers.test.ts b/packages/test/src/connection/helpers.test.ts index 5746b7bf..0b542b04 100644 --- a/packages/test/src/connection/helpers.test.ts +++ b/packages/test/src/connection/helpers.test.ts @@ -1,5 +1,5 @@ import weaviate from '@weaviate/node'; -import { afterAll, beforeAll, describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'vitest'; const WCD_URL = 'https://piblpmmdsiknacjnm1ltla.c1.europe-west3.gcp.weaviate.cloud'; const WCD_KEY = 'cy4ua772mBlMdfw3YnclqAWzFhQt0RLIN0sl'; diff --git a/packages/test/src/connection/journey.test.ts b/packages/test/src/connection/journey.test.ts index 00105e15..7fd011bd 100644 --- a/packages/test/src/connection/journey.test.ts +++ b/packages/test/src/connection/journey.test.ts @@ -8,7 +8,7 @@ import Connection from '@weaviate/core/connection'; import { WeaviateStartUpError } from '@weaviate/core/errors'; import weaviate from '@weaviate/node'; -import { afterAll, beforeAll, describe, expect, it, vitest } from 'vitest'; +import { describe, expect, it, vitest } from 'vitest'; describe('connection', () => { it('makes a logged-in request when client host param has trailing slashes', async () => { diff --git a/packages/test/src/connection/proxy.test.ts b/packages/test/src/connection/proxy.test.ts index 85033418..fe9740d9 100644 --- a/packages/test/src/connection/proxy.test.ts +++ b/packages/test/src/connection/proxy.test.ts @@ -1,5 +1,5 @@ import weaviate from '@weaviate/node'; -import { afterAll, beforeAll, describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'vitest'; describe('Testing of the client connecting to a proxied Weaviate instance', () => { // Skip because Envoy Proxy in CI is too flaky with strange error: diff --git a/packages/test/tsconfig.json b/packages/test/tsconfig.json index aeda3c1f..658aaa3e 100644 --- a/packages/test/tsconfig.json +++ b/packages/test/tsconfig.json @@ -2,7 +2,7 @@ "extends": "../../tsconfig.json", "compilerOptions": { "composite": true, - "types": ["vitest"], + "types": ["express", "uuid", "vitest"], "strict": true, "esModuleInterop": true, "paths": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0ab7a3dd..19484f9b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -190,6 +190,18 @@ importers: packages/test: devDependencies: + '@curveball/bodyparser': + specifier: 0.5.0 + version: 0.5.0(@curveball/kernel@0.20.1) + '@testcontainers/weaviate': + specifier: ^10.28.0 + version: 10.28.0 + '@types/express': + specifier: ^4.17.23 + version: 4.17.23 + '@types/uuid': + specifier: ^9.0.8 + version: 9.0.8 '@weaviate/core': specifier: workspace:^1.0.0 version: link:../core @@ -202,6 +214,9 @@ importers: nice-grpc: specifier: ^2.1.12 version: 2.1.12 + uuid: + specifier: ^9.0.1 + version: 9.0.1 vitest: specifier: ^3.2.4 version: 3.2.4(@types/node@18.19.112) From b1bab4bc9050e9745adf7f092e95b664997d5e6f Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 20 Jun 2025 16:08:14 +0100 Subject: [PATCH 13/62] Add missing curveball deps to @weaviate/test --- packages/test/package.json | 2 + pnpm-lock.yaml | 1372 ++---------------------------------- 2 files changed, 72 insertions(+), 1302 deletions(-) diff --git a/packages/test/package.json b/packages/test/package.json index aa66c6d6..71c61e32 100644 --- a/packages/test/package.json +++ b/packages/test/package.json @@ -7,6 +7,8 @@ }, "devDependencies": { "@curveball/bodyparser": "0.5.0", + "@curveball/core": "^1.0.2", + "@curveball/kernel": "^1.0.0", "@testcontainers/weaviate": "^10.28.0", "@types/express": "^4.17.23", "@types/uuid": "^9.0.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 19484f9b..0efa1900 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -72,96 +72,21 @@ importers: specifier: ^9.0.1 version: 9.0.1 devDependencies: - '@babel/core': - specifier: ^7.20.12 - version: 7.27.4 - '@babel/preset-typescript': - specifier: ^7.18.6 - version: 7.27.1(@babel/core@7.27.4) - '@babel/runtime': - specifier: ^7.20.7 - version: 7.27.6 - '@curveball/bodyparser': - specifier: 0.5.0 - version: 0.5.0(@curveball/kernel@0.20.1) - '@curveball/core': - specifier: 0.20.0 - version: 0.20.0 - '@curveball/kernel': - specifier: 0.20.1 - version: 0.20.1 - '@rollup/plugin-babel': - specifier: ^5.3.1 - version: 5.3.1(@babel/core@7.27.4)(@types/babel__core@7.20.5)(rollup@4.44.0) - '@testcontainers/weaviate': - specifier: ^10.14.0 - version: 10.28.0 - '@types/express': - specifier: ^4.17.21 - version: 4.17.23 - '@types/isomorphic-fetch': - specifier: ^0.0.36 - version: 0.0.36 '@types/node': specifier: ^18.14.0 version: 18.19.112 '@types/uuid': specifier: ^9.0.1 version: 9.0.8 - '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) - '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.8.3) - eslint: - specifier: ^8.35.0 - version: 8.57.1 - eslint-config-prettier: - specifier: ^8.7.0 - version: 8.10.0(eslint@8.57.1) - eslint-plugin-prettier: - specifier: ^4.2.1 - version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.1))(eslint@8.57.1)(prettier@2.8.8) - express: - specifier: ^4.19.2 - version: 4.21.2 grpc-tools: specifier: ^1.12.4 version: 1.13.0 - husky: - specifier: ^8.0.3 - version: 8.0.3 - lint-staged: - specifier: ^13.2.0 - version: 13.3.0 openapi-typescript: specifier: ^5.4.1 version: 5.4.2 - prettier: - specifier: ^2.8.4 - version: 2.8.8 - prettier-plugin-organize-imports: - specifier: ^3.2.4 - version: 3.2.4(prettier@2.8.8)(typescript@5.8.3) protobufjs: specifier: ^7.2.6 version: 7.5.3 - ts-node: - specifier: ^10.9.2 - version: 10.9.2(@types/node@18.19.112)(typescript@5.8.3) - ts-proto: - specifier: ^1.163.0 - version: 1.181.2 - tsup: - specifier: ^8.0.2 - version: 8.5.0(postcss@8.5.6)(typescript@5.8.3)(yaml@2.8.0) - typedoc: - specifier: ^0.26.0 - version: 0.26.11(typescript@5.8.3) - typedoc-plugin-extras: - specifier: ^3.0.0 - version: 3.1.0(typedoc@0.26.11(typescript@5.8.3)) typescript: specifier: ^5.3.3 version: 5.8.3 @@ -192,7 +117,13 @@ importers: devDependencies: '@curveball/bodyparser': specifier: 0.5.0 - version: 0.5.0(@curveball/kernel@0.20.1) + version: 0.5.0(@curveball/kernel@1.0.0) + '@curveball/core': + specifier: ^1.0.2 + version: 1.0.2(@curveball/kernel@1.0.0) + '@curveball/kernel': + specifier: ^1.0.0 + version: 1.0.0 '@testcontainers/weaviate': specifier: ^10.28.0 version: 10.28.0 @@ -242,161 +173,27 @@ importers: packages: - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.27.5': - resolution: {integrity: sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.27.4': - resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.27.5': - resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-annotate-as-pure@7.27.3': - resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.27.2': - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-create-class-features-plugin@7.27.1': - resolution: {integrity: sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-member-expression-to-functions@7.27.1': - resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.27.1': - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.27.3': - resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-optimise-call-expression@7.27.1': - resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-replace-supers@7.27.1': - resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.27.1': - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.27.6': - resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.27.5': - resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/plugin-syntax-jsx@7.27.1': - resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-typescript@7.27.1': - resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.27.1': - resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typescript@7.27.1': - resolution: {integrity: sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-typescript@7.27.1': - resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/runtime@7.27.6': - resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.27.4': - resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.27.6': - resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==} - engines: {node: '>=6.9.0'} - '@balena/dockerignore@1.0.2': resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==} - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - '@curveball/bodyparser@0.5.0': resolution: {integrity: sha512-xuD5X4YgCSPG0dq2E6xjEQsVM2+rJDhKyz0gpEflOJX/Nm8tS9ROiy22nLWBEskbrfBKx8XhuUqM+Bt/ojsVxA==} peerDependencies: '@curveball/kernel': '>=0.20.0 <1' - '@curveball/core@0.20.0': - resolution: {integrity: sha512-hLsCgRpvPQyJ4LAS5zpaMnHO98lyDWz6ph+Ch2TiX3WQLPPkTB14Iuwm9hq0PKovwO+2qQ53HJAtqXi1DXxFPQ==} - engines: {node: '>=14.4'} + '@curveball/core@1.0.2': + resolution: {integrity: sha512-vgHUJoZKbZbqPSt2cpMTZAclzNuXwtgDTnXDYLtzkt7w+e4+BLlxlFwJFvLKxMCFhEdLKA/0IM8ryXO3P+8TCA==} + engines: {node: '>= 16'} + peerDependencies: + '@curveball/kernel': ^1 - '@curveball/http-errors@0.4.1': - resolution: {integrity: sha512-RJe0IOQQpgvCwUY8ZKK7/YgfWi1MqMzMrIHilwXHaMFykoVjpRNzaeO3FmrKSUlmJSb6vuPd37LEPNUne4PxZA==} + '@curveball/http-errors@0.5.0': + resolution: {integrity: sha512-aZ+l+BME9+BQwq3Mc+j9nal9D9lThubCRdirZYSjEuCn1Gc+lpsx1ETlvZ508Ac7ZleK7Zhg18TewOioRCk0Ew==} + engines: {node: '>= 14.4'} - '@curveball/kernel@0.20.1': - resolution: {integrity: sha512-Cc++ud5IfR4UbR30F9zM7XDiasCzMwGWUWALXrzozt/2ocZeNzSX+ekk7PeXHsu5Ua34F6ve5POt9RfjMuaOLQ==} - engines: {node: '>=14.4'} + '@curveball/kernel@1.0.0': + resolution: {integrity: sha512-zNi/4LvYLRua/wsjR9WwMNUsuIWZXoe0/5RjnjNra74WZR19tTewlOqMIkOermf6b2pYJ3pJt73P0YGhvZ8oaQ==} + engines: {node: '>=18'} '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} @@ -404,288 +201,138 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.5': - resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.5': - resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.5': - resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.5': - resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.5': - resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.5': - resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.5': - resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.5': - resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.5': - resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.5': - resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.5': - resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.5': - resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.5': - resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.5': - resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.5': - resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.5': - resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.5': - resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.25.5': - resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.5': - resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.25.5': - resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.5': - resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.5': - resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.5': - resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.5': - resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.5': - resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@eslint-community/eslint-utils@4.7.0': resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -739,27 +386,9 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} @@ -813,23 +442,6 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@rollup/plugin-babel@5.3.1': - resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} - engines: {node: '>= 10.0.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@types/babel__core': ^7.1.9 - rollup: ^1.20.0||^2.0.0 - peerDependenciesMeta: - '@types/babel__core': - optional: true - - '@rollup/pluginutils@3.1.0': - resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} - engines: {node: '>= 8.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 - '@rollup/rollup-android-arm-eabi@4.44.0': resolution: {integrity: sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA==} cpu: [arm] @@ -954,30 +566,6 @@ packages: '@testcontainers/weaviate@10.28.0': resolution: {integrity: sha512-SR4JWacoJwaoD6P6O7CwInG/xjDfIDTUqtunxJPzent4JiDF86jpC1HjLGhp0dciemJWoa1hRR5/REgIcAyBow==} - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.27.0': - resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.20.7': - resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} - '@types/body-parser@1.19.6': resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} @@ -996,9 +584,6 @@ packages: '@types/dockerode@3.3.41': resolution: {integrity: sha512-5kOi6bcnEjqfJ68ZNV/bBvSMLNIucc0XbRmBO4hg5OoFCoP99eSRcbMysjkzV7ZxQEmmc/zMnv4A7odwuKFzDA==} - '@types/estree@0.0.39': - resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} - '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -1014,9 +599,6 @@ packages: '@types/http-errors@2.0.5': resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} - '@types/isomorphic-fetch@0.0.36': - resolution: {integrity: sha512-ulw4d+vW1HKn4oErSmNN2HYEcHGq0N1C5exlrMM0CRqX1UUpFhGb5lwiom5j9KN3LBJJDLRmYIZz1ghm7FIzZw==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1171,10 +753,6 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -1207,9 +785,6 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} @@ -1226,9 +801,6 @@ packages: engines: {node: '>=10'} deprecated: This package is no longer supported. - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -1311,11 +883,6 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.25.0: - resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - buffer-crc32@1.0.0: resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} engines: {node: '>=8.0.0'} @@ -1330,12 +897,6 @@ packages: resolution: {integrity: sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==} engines: {node: '>=10.0.0'} - bundle-require@5.1.0: - resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.18' - byline@5.0.0: resolution: {integrity: sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==} engines: {node: '>=0.10.0'} @@ -1360,9 +921,6 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001724: - resolution: {integrity: sha512-WqJo7p0TbHDOythNTqYujmaJTvtYRZrjpP8TCvH6Vb9CYJerJNKamKzIWOM4BkQatWj9H2lYulpdAQNBe7QhNA==} - case-anything@2.1.13: resolution: {integrity: sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==} engines: {node: '>=12.13'} @@ -1392,10 +950,6 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} - chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -1436,10 +990,6 @@ packages: resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} engines: {node: '>=16'} - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - compress-commons@6.0.2: resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} engines: {node: '>= 14'} @@ -1447,13 +997,6 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - - consola@3.4.2: - resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} - engines: {node: ^14.18.0 || >=16.10.0} - console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} @@ -1465,9 +1008,6 @@ packages: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} @@ -1491,9 +1031,6 @@ packages: resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} engines: {node: '>= 14'} - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - cross-fetch@3.2.0: resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} @@ -1561,10 +1098,6 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -1598,9 +1131,6 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.171: - resolution: {integrity: sha512-scWpzXEJEMrGJa4Y6m/tVotb0WuvNmasv3wWVzUAeCgKU0ToFOhUW6Z+xWnRQANMYGxN4ngJXIThgBJOqzVPCQ==} - emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -1645,11 +1175,6 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.25.5: - resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} - engines: {node: '>=18'} - hasBin: true - escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -1708,9 +1233,6 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - estree-walker@1.0.1: - resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} - estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -1791,9 +1313,6 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - fix-dts-default-cjs-exports@1.0.1: - resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} - flat-cache@3.2.0: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -1836,10 +1355,6 @@ packages: engines: {node: '>=10'} deprecated: This package is no longer supported. - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -1876,10 +1391,6 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} @@ -2034,16 +1545,9 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} - js-base64@3.7.7: resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} @@ -2051,11 +1555,6 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -2065,11 +1564,6 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -2085,13 +1579,6 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} @@ -2109,10 +1596,6 @@ packages: enquirer: optional: true - load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -2123,9 +1606,6 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -2142,9 +1622,6 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} @@ -2155,9 +1632,6 @@ packages: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - markdown-it@14.1.0: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true @@ -2278,9 +1752,6 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.7.4: - resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} - ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -2290,9 +1761,6 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nan@2.22.2: resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==} @@ -2329,9 +1797,6 @@ packages: encoding: optional: true - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} engines: {node: '>=6'} @@ -2453,31 +1918,6 @@ packages: engines: {node: '>=0.10'} hasBin: true - pirates@4.0.7: - resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} - engines: {node: '>= 6'} - - pkg-types@1.3.1: - resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - - postcss-load-config@6.0.1: - resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} - engines: {node: '>= 18'} - peerDependencies: - jiti: '>=1.21.0' - postcss: '>=8.0.9' - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - jiti: - optional: true - postcss: - optional: true - tsx: - optional: true - yaml: - optional: true - postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} @@ -2573,10 +2013,6 @@ packages: readdir-glob@1.1.3: resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} - readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} - regex-recursion@5.1.1: resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} @@ -2594,10 +2030,6 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - restore-cursor@4.0.0: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2707,10 +2139,6 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} - space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -2777,11 +2205,6 @@ packages: strip-literal@3.0.0: resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -2812,13 +2235,6 @@ packages: text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} @@ -2859,13 +2275,6 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - - tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -2878,23 +2287,6 @@ packages: ts-error@1.0.6: resolution: {integrity: sha512-tLJxacIQUM82IR7JO1UUkKlYuUTmoY9HBJAmNWFzheSlDS5SPMcNIepejHJa4BpPQLAcbRhRf3GDJzyj6rbKvA==} - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - ts-poet@6.12.0: resolution: {integrity: sha512-xo+iRNMWqyvXpFTaOAvLPA5QAWO6TZrSUs5s4Odaya3epqofBu/fMLHEWl8jPmjhA0s9sgj9sNvF1BmaQlmQkA==} @@ -2905,25 +2297,6 @@ packages: resolution: {integrity: sha512-knJ8dtjn2Pd0c5ZGZG8z9DMiD4PUY8iGI9T9tb8DvGdWRMkLpf0WcPO7G+7cmbZyxvNTAG6ci3fybEaFgMZIvg==} hasBin: true - tsup@8.5.0: - resolution: {integrity: sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - '@microsoft/api-extractor': ^7.36.0 - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.5.0' - peerDependenciesMeta: - '@microsoft/api-extractor': - optional: true - '@swc/core': - optional: true - postcss: - optional: true - typescript: - optional: true - tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} @@ -2963,9 +2336,6 @@ packages: uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - ufo@1.6.1: - resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} - undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} @@ -2992,12 +2362,6 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -3016,9 +2380,6 @@ packages: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -3096,15 +2457,9 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -3123,277 +2478,74 @@ packages: engines: {node: '>=0.10.0'} wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@8.18.2: - resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} - 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 - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@2.3.1: - resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} - engines: {node: '>= 14'} - - yaml@2.8.0: - resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} - engines: {node: '>= 14.6'} - hasBin: true - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - zip-stream@6.0.1: - resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} - engines: {node: '>= 14'} - - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - -snapshots: - - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - '@babel/code-frame@7.27.1': - dependencies: - '@babel/helper-validator-identifier': 7.27.1 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/compat-data@7.27.5': {} - - '@babel/core@7.27.4': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) - '@babel/helpers': 7.27.6 - '@babel/parser': 7.27.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.6 - convert-source-map: 2.0.0 - debug: 4.4.1 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.27.5': - dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - - '@babel/helper-annotate-as-pure@7.27.3': - dependencies: - '@babel/types': 7.27.6 - - '@babel/helper-compilation-targets@7.27.2': - dependencies: - '@babel/compat-data': 7.27.5 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.0 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.4) - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.27.4 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-member-expression-to-functions@7.27.1': - dependencies: - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-imports@7.27.1': - dependencies: - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - - '@babel/helper-optimise-call-expression@7.27.1': - dependencies: - '@babel/types': 7.27.6 - - '@babel/helper-plugin-utils@7.27.1': {} - - '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - dependencies: - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-string-parser@7.27.1': {} + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} - '@babel/helper-validator-identifier@7.27.1': {} + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} - '@babel/helper-validator-option@7.27.1': {} + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - '@babel/helpers@7.27.6': - dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.27.6 + ws@8.18.2: + resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} + 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 - '@babel/parser@7.27.5': - dependencies: - '@babel/types': 7.27.6 + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 + yaml@2.3.1: + resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} + engines: {node: '>= 14'} - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color + yaml@2.8.0: + resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} + engines: {node: '>= 14.6'} + hasBin: true - '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.4) - transitivePeerDependencies: - - supports-color + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} - '@babel/preset-typescript@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.4) - transitivePeerDependencies: - - supports-color + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} - '@babel/runtime@7.27.6': {} + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} - '@babel/template@7.27.2': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 + zip-stream@6.0.1: + resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} + engines: {node: '>= 14'} - '@babel/traverse@7.27.4': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.5 - '@babel/parser': 7.27.5 - '@babel/template': 7.27.2 - '@babel/types': 7.27.6 - debug: 4.4.1 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - '@babel/types@7.27.6': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 +snapshots: '@balena/dockerignore@1.0.2': {} - '@cspotcode/source-map-support@0.8.1': + '@curveball/bodyparser@0.5.0(@curveball/kernel@1.0.0)': dependencies: - '@jridgewell/trace-mapping': 0.3.9 + '@curveball/kernel': 1.0.0 - '@curveball/bodyparser@0.5.0(@curveball/kernel@0.20.1)': + '@curveball/core@1.0.2(@curveball/kernel@1.0.0)': dependencies: - '@curveball/kernel': 0.20.1 - - '@curveball/core@0.20.0': - dependencies: - '@curveball/http-errors': 0.4.1 - '@curveball/kernel': 0.20.1 + '@curveball/kernel': 1.0.0 '@types/ws': 8.18.1 raw-body: 2.5.2 ws: 8.18.2 @@ -3401,11 +2553,11 @@ snapshots: - bufferutil - utf-8-validate - '@curveball/http-errors@0.4.1': {} + '@curveball/http-errors@0.5.0': {} - '@curveball/kernel@0.20.1': + '@curveball/kernel@1.0.0': dependencies: - '@curveball/http-errors': 0.4.1 + '@curveball/http-errors': 0.5.0 '@types/ws': 8.18.1 accepts: 1.3.8 raw-body: 2.5.2 @@ -3417,147 +2569,72 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.25.5': - optional: true - '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.25.5': - optional: true - '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.25.5': - optional: true - '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.25.5': - optional: true - '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.25.5': - optional: true - '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.25.5': - optional: true - '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.25.5': - optional: true - '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.25.5': - optional: true - '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.25.5': - optional: true - '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.25.5': - optional: true - '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.25.5': - optional: true - '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.25.5': - optional: true - '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.25.5': - optional: true - '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.25.5': - optional: true - '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.25.5': - optional: true - '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.25.5': - optional: true - '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.25.5': - optional: true - - '@esbuild/netbsd-arm64@0.25.5': - optional: true - '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.25.5': - optional: true - - '@esbuild/openbsd-arm64@0.25.5': - optional: true - '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.25.5': - optional: true - '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.25.5': - optional: true - '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.25.5': - optional: true - '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.25.5': - optional: true - '@esbuild/win32-x64@0.21.5': optional: true - '@esbuild/win32-x64@0.25.5': - optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': dependencies: eslint: 8.57.1 @@ -3620,28 +2697,8 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@jridgewell/gen-mapping@0.3.8': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - '@jridgewell/sourcemap-codec@1.5.0': {} - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - '@js-sdsl/ordered-map@4.4.2': {} '@mapbox/node-pre-gyp@1.0.11': @@ -3697,24 +2754,6 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@rollup/plugin-babel@5.3.1(@babel/core@7.27.4)(@types/babel__core@7.20.5)(rollup@4.44.0)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-module-imports': 7.27.1 - '@rollup/pluginutils': 3.1.0(rollup@4.44.0) - rollup: 4.44.0 - optionalDependencies: - '@types/babel__core': 7.20.5 - transitivePeerDependencies: - - supports-color - - '@rollup/pluginutils@3.1.0(rollup@4.44.0)': - dependencies: - '@types/estree': 0.0.39 - estree-walker: 1.0.1 - picomatch: 2.3.1 - rollup: 4.44.0 - '@rollup/rollup-android-arm-eabi@4.44.0': optional: true @@ -3817,39 +2856,6 @@ snapshots: - bare-buffer - supports-color - '@tsconfig/node10@1.0.11': {} - - '@tsconfig/node12@1.0.11': {} - - '@tsconfig/node14@1.0.3': {} - - '@tsconfig/node16@1.0.4': {} - - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 - '@types/babel__generator': 7.27.0 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.7 - optional: true - - '@types/babel__generator@7.27.0': - dependencies: - '@babel/types': 7.27.6 - optional: true - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 - optional: true - - '@types/babel__traverse@7.20.7': - dependencies: - '@babel/types': 7.27.6 - optional: true - '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 @@ -3876,8 +2882,6 @@ snapshots: '@types/node': 18.19.112 '@types/ssh2': 1.15.5 - '@types/estree@0.0.39': {} - '@types/estree@1.0.8': {} '@types/express-serve-static-core@4.19.6': @@ -3900,8 +2904,6 @@ snapshots: '@types/http-errors@2.0.5': {} - '@types/isomorphic-fetch@0.0.36': {} - '@types/json-schema@7.0.15': {} '@types/mdast@4.0.4': @@ -4099,10 +3101,6 @@ snapshots: dependencies: acorn: 8.15.0 - acorn-walk@8.3.4: - dependencies: - acorn: 8.15.0 - acorn@8.15.0: {} agent-base@6.0.2: @@ -4132,8 +3130,6 @@ snapshots: ansi-styles@6.2.1: {} - any-promise@1.3.0: {} - aproba@2.0.0: {} archiver-utils@5.0.2: @@ -4161,8 +3157,6 @@ snapshots: delegates: 1.0.0 readable-stream: 3.6.2 - arg@4.1.3: {} - argparse@2.0.1: {} array-flatten@1.1.1: {} @@ -4250,13 +3244,6 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.25.0: - dependencies: - caniuse-lite: 1.0.30001724 - electron-to-chromium: 1.5.171 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.0) - buffer-crc32@1.0.0: {} buffer@5.7.1: @@ -4272,11 +3259,6 @@ snapshots: buildcheck@0.0.6: optional: true - bundle-require@5.1.0(esbuild@0.25.5): - dependencies: - esbuild: 0.25.5 - load-tsconfig: 0.2.5 - byline@5.0.0: {} bytes@3.1.2: {} @@ -4295,8 +3277,6 @@ snapshots: callsites@3.1.0: {} - caniuse-lite@1.0.30001724: {} - case-anything@2.1.13: {} ccount@2.0.1: {} @@ -4322,10 +3302,6 @@ snapshots: check-error@2.1.1: {} - chokidar@4.0.3: - dependencies: - readdirp: 4.1.2 - chownr@1.1.4: {} chownr@2.0.0: {} @@ -4359,8 +3335,6 @@ snapshots: commander@11.0.0: {} - commander@4.1.1: {} - compress-commons@6.0.2: dependencies: crc-32: 1.2.2 @@ -4371,10 +3345,6 @@ snapshots: concat-map@0.0.1: {} - confbox@0.1.8: {} - - consola@3.4.2: {} - console-control-strings@1.1.0: {} content-disposition@0.5.4: @@ -4383,8 +3353,6 @@ snapshots: content-type@1.0.5: {} - convert-source-map@2.0.0: {} - cookie-signature@1.0.6: {} cookie@0.7.1: {} @@ -4404,8 +3372,6 @@ snapshots: crc-32: 1.2.2 readable-stream: 4.7.0 - create-require@1.1.1: {} - cross-fetch@3.2.0: dependencies: node-fetch: 2.7.0 @@ -4450,8 +3416,6 @@ snapshots: dependencies: dequal: 2.0.3 - diff@4.0.2: {} - dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -4499,8 +3463,6 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.171: {} - emoji-regex-xs@1.0.0: {} emoji-regex@8.0.0: {} @@ -4553,34 +3515,6 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.25.5: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.5 - '@esbuild/android-arm': 0.25.5 - '@esbuild/android-arm64': 0.25.5 - '@esbuild/android-x64': 0.25.5 - '@esbuild/darwin-arm64': 0.25.5 - '@esbuild/darwin-x64': 0.25.5 - '@esbuild/freebsd-arm64': 0.25.5 - '@esbuild/freebsd-x64': 0.25.5 - '@esbuild/linux-arm': 0.25.5 - '@esbuild/linux-arm64': 0.25.5 - '@esbuild/linux-ia32': 0.25.5 - '@esbuild/linux-loong64': 0.25.5 - '@esbuild/linux-mips64el': 0.25.5 - '@esbuild/linux-ppc64': 0.25.5 - '@esbuild/linux-riscv64': 0.25.5 - '@esbuild/linux-s390x': 0.25.5 - '@esbuild/linux-x64': 0.25.5 - '@esbuild/netbsd-arm64': 0.25.5 - '@esbuild/netbsd-x64': 0.25.5 - '@esbuild/openbsd-arm64': 0.25.5 - '@esbuild/openbsd-x64': 0.25.5 - '@esbuild/sunos-x64': 0.25.5 - '@esbuild/win32-arm64': 0.25.5 - '@esbuild/win32-ia32': 0.25.5 - '@esbuild/win32-x64': 0.25.5 - escalade@3.2.0: {} escape-html@1.0.3: {} @@ -4665,8 +3599,6 @@ snapshots: estraverse@5.3.0: {} - estree-walker@1.0.1: {} - estree-walker@3.0.3: dependencies: '@types/estree': 1.0.8 @@ -4782,12 +3714,6 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - fix-dts-default-cjs-exports@1.0.1: - dependencies: - magic-string: 0.30.17 - mlly: 1.7.4 - rollup: 4.44.0 - flat-cache@3.2.0: dependencies: flatted: 3.3.3 @@ -4830,8 +3756,6 @@ snapshots: strip-ansi: 6.0.1 wide-align: 1.1.5 - gensync@1.0.0-beta.2: {} - get-caller-file@2.0.5: {} get-intrinsic@1.3.0: @@ -4882,8 +3806,6 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - globals@11.12.0: {} - globals@13.24.0: dependencies: type-fest: 0.20.2 @@ -5029,28 +3951,20 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - joycon@3.1.1: {} - js-base64@3.7.7: {} - js-tokens@4.0.0: {} - js-tokens@9.0.1: {} js-yaml@4.1.0: dependencies: argparse: 2.0.1 - jsesc@3.1.0: {} - json-buffer@3.0.1: {} json-schema-traverse@0.4.1: {} json-stable-stringify-without-jsonify@1.0.1: {} - json5@2.2.3: {} - keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -5066,10 +3980,6 @@ snapshots: lilconfig@2.1.0: {} - lilconfig@3.1.3: {} - - lines-and-columns@1.2.4: {} - linkify-it@5.0.0: dependencies: uc.micro: 2.1.0 @@ -5099,8 +4009,6 @@ snapshots: rfdc: 1.4.1 wrap-ansi: 8.1.0 - load-tsconfig@0.2.5: {} - locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -5109,8 +4017,6 @@ snapshots: lodash.merge@4.6.2: {} - lodash.sortby@4.7.0: {} - lodash@4.17.21: {} log-update@5.0.1: @@ -5127,10 +4033,6 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - lunr@2.3.9: {} magic-string@0.30.17: @@ -5141,8 +4043,6 @@ snapshots: dependencies: semver: 6.3.1 - make-error@1.3.6: {} - markdown-it@14.1.0: dependencies: argparse: 2.0.1 @@ -5252,25 +4152,12 @@ snapshots: mkdirp@1.0.4: {} - mlly@1.7.4: - dependencies: - acorn: 8.15.0 - pathe: 2.0.3 - pkg-types: 1.3.1 - ufo: 1.6.1 - ms@2.0.0: {} ms@2.1.2: {} ms@2.1.3: {} - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - nan@2.22.2: optional: true @@ -5308,8 +4195,6 @@ snapshots: dependencies: whatwg-url: 5.0.0 - node-releases@2.0.19: {} - nopt@5.0.0: dependencies: abbrev: 1.1.1 @@ -5416,21 +4301,6 @@ snapshots: pidtree@0.6.0: {} - pirates@4.0.7: {} - - pkg-types@1.3.1: - dependencies: - confbox: 0.1.8 - mlly: 1.7.4 - pathe: 2.0.3 - - postcss-load-config@6.0.1(postcss@8.5.6)(yaml@2.8.0): - dependencies: - lilconfig: 3.1.3 - optionalDependencies: - postcss: 8.5.6 - yaml: 2.8.0 - postcss@8.5.6: dependencies: nanoid: 3.3.11 @@ -5538,8 +4408,6 @@ snapshots: dependencies: minimatch: 5.1.6 - readdirp@4.1.2: {} - regex-recursion@5.1.1: dependencies: regex: 5.1.1 @@ -5555,8 +4423,6 @@ snapshots: resolve-from@4.0.0: {} - resolve-from@5.0.0: {} - restore-cursor@4.0.0: dependencies: onetime: 5.1.2 @@ -5703,10 +4569,6 @@ snapshots: source-map-js@1.2.1: {} - source-map@0.8.0-beta.0: - dependencies: - whatwg-url: 7.1.0 - space-separated-tokens@2.0.2: {} split-ca@1.0.1: {} @@ -5780,16 +4642,6 @@ snapshots: dependencies: js-tokens: 9.0.1 - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - commander: 4.1.1 - glob: 10.4.5 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.7 - ts-interface-checker: 0.1.13 - supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -5861,14 +4713,6 @@ snapshots: text-table@0.2.0: {} - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 - - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 - tiny-glob@0.2.9: dependencies: globalyzer: 0.1.0 @@ -5899,12 +4743,6 @@ snapshots: tr46@0.0.3: {} - tr46@1.0.1: - dependencies: - punycode: 2.3.1 - - tree-kill@1.2.2: {} - trim-lines@3.0.1: {} ts-api-utils@1.4.3(typescript@5.8.3): @@ -5913,26 +4751,6 @@ snapshots: ts-error@1.0.6: {} - ts-interface-checker@0.1.13: {} - - ts-node@10.9.2(@types/node@18.19.112)(typescript@5.8.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 18.19.112 - acorn: 8.15.0 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.8.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - ts-poet@6.12.0: dependencies: dprint-node: 1.0.8 @@ -5949,34 +4767,6 @@ snapshots: ts-poet: 6.12.0 ts-proto-descriptors: 1.16.0 - tsup@8.5.0(postcss@8.5.6)(typescript@5.8.3)(yaml@2.8.0): - dependencies: - bundle-require: 5.1.0(esbuild@0.25.5) - cac: 6.7.14 - chokidar: 4.0.3 - consola: 3.4.2 - debug: 4.4.1 - esbuild: 0.25.5 - fix-dts-default-cjs-exports: 1.0.1 - joycon: 3.1.1 - picocolors: 1.1.1 - postcss-load-config: 6.0.1(postcss@8.5.6)(yaml@2.8.0) - resolve-from: 5.0.0 - rollup: 4.44.0 - source-map: 0.8.0-beta.0 - sucrase: 3.35.0 - tinyexec: 0.3.2 - tinyglobby: 0.2.14 - tree-kill: 1.2.2 - optionalDependencies: - postcss: 8.5.6 - typescript: 5.8.3 - transitivePeerDependencies: - - jiti - - supports-color - - tsx - - yaml - tweetnacl@0.14.5: {} type-check@0.4.0: @@ -6009,8 +4799,6 @@ snapshots: uc.micro@2.1.0: {} - ufo@1.6.1: {} - undici-types@5.26.5: {} undici@5.29.0: @@ -6042,12 +4830,6 @@ snapshots: unpipe@1.0.0: {} - update-browserslist-db@1.1.3(browserslist@4.25.0): - dependencies: - browserslist: 4.25.0 - escalade: 3.2.0 - picocolors: 1.1.1 - uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -6060,8 +4842,6 @@ snapshots: uuid@9.0.1: {} - v8-compile-cache-lib@3.0.1: {} - vary@1.1.2: {} vfile-message@4.0.2: @@ -6141,19 +4921,11 @@ snapshots: webidl-conversions@3.0.1: {} - webidl-conversions@4.0.2: {} - whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - whatwg-url@7.1.0: - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - which@2.0.2: dependencies: isexe: 2.0.0 @@ -6187,8 +4959,6 @@ snapshots: y18n@5.0.8: {} - yallist@3.1.1: {} - yallist@4.0.0: {} yaml@2.3.1: {} @@ -6207,8 +4977,6 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - yn@3.1.1: {} - yocto-queue@0.1.0: {} zip-stream@6.0.1: From 350a6943fcc748add3e1d318815ef3ae3d812699 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 20 Jun 2025 16:32:33 +0100 Subject: [PATCH 14/62] Remove `it.only` from config test --- packages/test/src/config/integration.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test/src/config/integration.test.ts b/packages/test/src/config/integration.test.ts index aaf5cd6b..2797e7f8 100644 --- a/packages/test/src/config/integration.test.ts +++ b/packages/test/src/config/integration.test.ts @@ -508,7 +508,7 @@ describe('Testing of the collection.config namespace', () => { expect(notUpdated?.status).toEqual('READY'); }); - it.only('should be able update the config of a collection', async () => { + it('should be able update the config of a collection', async () => { const collectionName = 'TestCollectionConfigUpdate'; const collection = await client.collections.create({ name: collectionName, From 4c3ac423ce63bff1d4e4e8bd416964f5bd0a5f50 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Tue, 23 Jun 2026 17:45:00 +0100 Subject: [PATCH 15/62] Fix issues during merge conflict resolution --- package.json | 2 +- packages/core/src/connection/grpc.ts | 27 +- packages/core/src/data/batch.ts | 9 +- packages/core/src/data/index.ts | 2 +- packages/core/src/data/unit.test.ts | 2 +- packages/core/tsconfig.json | 7 +- packages/node/package.json | 3 +- packages/node/src/batch.ts | 471 --------------------------- packages/web/package.json | 3 +- pnpm-lock.yaml | 81 +++-- 10 files changed, 77 insertions(+), 530 deletions(-) delete mode 100644 packages/node/src/batch.ts diff --git a/package.json b/package.json index 85bc00f7..b53dd84e 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,6 @@ "ts-proto": "^1.181.2", "typedoc": "^0.28.15", "typedoc-plugin-extras": "^4.0.1", - "typescript": "^5.8.3" + "typescript": "^5.9.3" } } diff --git a/packages/core/src/connection/grpc.ts b/packages/core/src/connection/grpc.ts index 05bb3824..94cc2255 100644 --- a/packages/core/src/connection/grpc.ts +++ b/packages/core/src/connection/grpc.ts @@ -27,12 +27,19 @@ const MAX_GRPC_MESSAGE_LENGTH = 104858000; // 10mb, needs to be synchronized wit // which are tightly coupled to ConnectionGQL export default class ConnectionGRPC extends ConnectionGQL { private grpc: GrpcClient; - // public grpcMaxMessageLength: number; - // private params: GrpcConnectionParams & { grpcMaxMessageLength: number }; + public grpcMaxMessageLength: number; + private params: GrpcConnectionParams & { grpcMaxMessageLength: number }; + private transports: Transports; - private constructor(transports: Transports, params: GrpcConnectionParams) { + private constructor( + transports: Transports, + params: GrpcConnectionParams & { grpcMaxMessageLength: number } + ) { super(params); - this.grpc = grpcClient(transports, params); + this.transports = transports; + this.grpc = grpcClient(this.transports, params); + this.grpcMaxMessageLength = params.grpcMaxMessageLength; + this.params = params; } static use = async (transportsMaker: TransportsMaker, params: GrpcConnectionParams) => { @@ -60,7 +67,7 @@ export default class ConnectionGRPC extends ConnectionGQL { grpcSecure: params.grpcSecure, grpcMaxMessageLength, }), - params + { ...params, grpcMaxMessageLength } ); if (!params.skipInitChecks) { const isHealthy = await connection.grpc.health(); @@ -72,6 +79,16 @@ export default class ConnectionGRPC extends ConnectionGQL { return { connection, dbVersionProvider, dbVersionSupport }; }; + public async reconnect() { + // Only need to reconnect grpc by making a new channel as rest/gql are stateless + this.grpc.close(); + this.grpc = grpcClient(this.transports, this.params); + const isHealthy = await this.grpc.health(); + if (!isHealthy) { + throw new WeaviateGRPCUnavailableError(this.params.grpcAddress); + } + } + batch = (collection: string, consistencyLevel?: ConsistencyLevel, tenant?: string) => { if (this.authEnabled) { return this.login().then((token) => diff --git a/packages/core/src/data/batch.ts b/packages/core/src/data/batch.ts index 26baea63..2aa690df 100644 --- a/packages/core/src/data/batch.ts +++ b/packages/core/src/data/batch.ts @@ -1,14 +1,13 @@ import { Deque } from '@datastructures-js/deque'; import { v4 as uuidv4 } from 'uuid'; -import Connection from '../../connection/grpc.js'; -import { ConsistencyLevel } from '../../index.js'; +import Connection from '../connection/grpc.js'; import { BatchObject as BatchObjectGRPC, BatchReference as BatchReferenceGRPC, BatchStreamRequest, -} from '../../proto/v1/batch.js'; -import { DbVersionSupport } from '../../utils/dbVersion.js'; -import { BatchObject, BatchReference, ErrorObject, ErrorReference } from '../index.js'; +} from '../proto/v1/batch.js'; +import { DbVersionSupport } from '../utils/dbVersion.js'; +import { BatchObject, BatchReference, ConsistencyLevel, ErrorObject, ErrorReference } from '../index.js'; import { Serialize } from '../serialize/index.js'; const GCP_STREAM_TIMEOUT = 160 * 1000; // 160 seconds diff --git a/packages/core/src/data/index.ts b/packages/core/src/data/index.ts index 965b750f..3b453ca4 100644 --- a/packages/core/src/data/index.ts +++ b/packages/core/src/data/index.ts @@ -22,7 +22,7 @@ import { DbVersionSupport } from '../utils/dbVersion.js'; import { buildRefsPath } from '../v2/batch/path.js'; import { Checker, ConsistencyLevel } from '../v2/data/index.js'; import { ObjectsPath, ReferencesPath } from '../v2/data/path.js'; -// import batch from './batch.js'; +import batch from './batch.js'; /** The available options to the `data.deleteMany` method. */ export type DeleteManyOptions = { diff --git a/packages/core/src/data/unit.test.ts b/packages/core/src/data/unit.test.ts index d25fae1d..99bec5ee 100644 --- a/packages/core/src/data/unit.test.ts +++ b/packages/core/src/data/unit.test.ts @@ -1,6 +1,6 @@ /* eslint-disable no-await-in-loop */ import { describe, expect, it } from 'vitest'; -import { Queue } from './batch'; +import { Queue } from './batch.js'; describe('Unit testing of the Queue class', () => { it('should push and pull items in FIFO order', async () => { diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index c1a74bd4..6918ba6b 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -24,15 +24,16 @@ "extends": "../../tsconfig.json", "compilerOptions": { "composite": true, - "target": "ES6", + "target": "es2022", + "lib": ["esnext"], "strict": true, "preserveConstEnums": true, "alwaysStrict": true, "noImplicitAny": true, "noImplicitThis": true, "strictFunctionTypes": true, - "module": "NodeNext", - "moduleResolution": "NodeNext", + "module": "node16", + "moduleResolution": "node16", "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "esModuleInterop": true, diff --git a/packages/node/package.json b/packages/node/package.json index 9509f0b0..576098aa 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -49,6 +49,7 @@ "devDependencies": { "@types/node": "^18.14.0", "@types/uuid": "^9.0.1", - "vitest": "^4.0.16" + "vitest": "^4.0.16", + "typescript": "^5.9.3" } } diff --git a/packages/node/src/batch.ts b/packages/node/src/batch.ts deleted file mode 100644 index 26baea63..00000000 --- a/packages/node/src/batch.ts +++ /dev/null @@ -1,471 +0,0 @@ -import { Deque } from '@datastructures-js/deque'; -import { v4 as uuidv4 } from 'uuid'; -import Connection from '../../connection/grpc.js'; -import { ConsistencyLevel } from '../../index.js'; -import { - BatchObject as BatchObjectGRPC, - BatchReference as BatchReferenceGRPC, - BatchStreamRequest, -} from '../../proto/v1/batch.js'; -import { DbVersionSupport } from '../../utils/dbVersion.js'; -import { BatchObject, BatchReference, ErrorObject, ErrorReference } from '../index.js'; -import { Serialize } from '../serialize/index.js'; - -const GCP_STREAM_TIMEOUT = 160 * 1000; // 160 seconds -const REFRESH_TIME = 10; // 10ms -const OOM_REFRESH_TIME = 1000; // 100ms -const QUEUE_PULL_TIMEOUT = 100; // 100ms -const PER_OBJECT_OVERHEAD = 4; // extra overhead bytes per object in the request to avoid hitting the gRPC max message size limit accidentally due to serialization overhead - -type Internal = { - entry: E; - index: number; -}; - -type InternalError = { - index: number; - message: string; - entry: E; - type: 'error'; -}; - -type InternalSuccess = { - index: number; - uuid?: string; - beacon?: string; - type: 'success'; -}; - -export const isInternalError = (obj: InternalError | InternalSuccess): obj is InternalError => { - return obj.type === 'error'; -}; - -const isBatchObject = (obj: BatchObject | BatchReference | null): obj is BatchObject => { - return (obj as BatchObject).collection !== undefined; -}; - -const isBatchReference = (obj: BatchObject | BatchReference | null): obj is BatchReference => { - return (obj as BatchReference).fromObjectCollection !== undefined; -}; - -export interface Batching { - addObject: (obj: BatchObject) => Promise; - addReference: (ref: BatchReference) => Promise; - stop: () => Promise; - hasErrors: () => boolean; - uuids: () => Record; - beacons: () => Record; - objErrors: () => Record>; - refErrors: () => Record; -} - -export interface Batch { - stream: (consistencyLevel?: ConsistencyLevel) => Promise; -} - -export default function (connection: Connection, dbVersionSupport: DbVersionSupport): Batch { - return { - stream: async (consistencyLevel) => { - const { supports, message } = await dbVersionSupport.supportsServerSideBatching(); - if (!supports) { - throw new Error(message); - } - const batcher = new Batcher({ consistencyLevel, isWcdOnGcp: connection.isWcdOnGcp() }); - let batchingErr: Error | null = null; - const context = batcher.start(connection).catch((err) => { - batchingErr = err; - }); - const check = () => { - if (batchingErr) { - throw batchingErr; - } - return batcher; - }; - return { - addObject: (obj) => check().addObject(obj), - addReference: (ref) => check().addReference(ref), - stop: () => { - check().stop(); - return context; - }, - hasErrors: () => - Object.keys(batcher.objErrors).length > 0 || Object.keys(batcher.refErrors).length > 0, - uuids: () => batcher.uuids, - beacons: () => batcher.beacons, - objErrors: () => batcher.objErrors, - refErrors: () => batcher.refErrors, - }; - }, - }; -} - -type BatcherArgs = { - consistencyLevel?: ConsistencyLevel; - isWcdOnGcp: boolean; -}; - -class Batcher { - private consistencyLevel?: ConsistencyLevel; - private queue: Queue | BatchReference>; - - private inflightObjs: Set = new Set(); - private inflightRefs: Set = new Set(); - private batchSize = 1000; - private objsCache: Record>> = {}; - private refsCache: Record> = {}; - private pendingObjs: BatchObjectGRPC[] = []; - private pendingRefs: BatchReferenceGRPC[] = []; - private isStarted = false; - private isShuttingDown = false; - private isOom = false; - private isStopped = false; - private isWcdOnGcp = false; - private isRenewingStream = false; - private oomWaitTime = 300; - - public objErrors: Record> = {}; - public refErrors: Record = {}; - public uuids: Record = {}; - public beacons: Record = {}; - - constructor(args: BatcherArgs) { - this.consistencyLevel = args.consistencyLevel; - this.queue = new Queue(); - this.isWcdOnGcp = args.isWcdOnGcp; - } - - private async acceptNext(inflight: number) { - if (this.isStopped) { - throw new Error('Batching has been stopped, cannot add more objects'); - } - while (inflight >= this.batchSize || this.isShuttingDown || this.isOom) { - // wait until there's room in the batch and the server is healthy before accepting more objects - await Batcher.sleep(REFRESH_TIME); // eslint-disable-line no-await-in-loop - } - } - - public addObject = (obj: BatchObject) => - this.acceptNext(this.inflightObjs.size).then(() => { - if (obj.id === undefined) { - obj.id = uuidv4(); - } - this.queue.push(obj); - return obj.id!; - }); - - public addReference = (ref: BatchReference) => - this.acceptNext(this.inflightRefs.size).then(() => this.queue.push(ref)); - - private static sleep(ms: number) { - return new Promise((resolve) => setTimeout(resolve, ms)); - } - - // eslint-disable-next-line complexity - private async *generateStreamRequests(grpcMaxMessageSize: number): AsyncGenerator { - while (!this.isStarted) { - console.info('Waiting for server to start the batch ingestion...'); - await Batcher.sleep(REFRESH_TIME); // eslint-disable-line no-await-in-loop - } - const streamStart = Date.now(); - - let req = BatchStreamRequest.create({ - data: { objects: { values: this.pendingObjs }, references: { values: this.pendingRefs } }, - }); - const emptyReqSize = BatchStreamRequest.encode(req).finish().length; - let totalSize = emptyReqSize; - - let objIndex = 0; - let refIndex = 0; - - while (true) { - if (this.isShuttingDown) { - console.warn('Server shutting down, closing the client-side of the stream'); - this.pendingObjs = req.data?.objects?.values || []; - this.pendingRefs = req.data?.references?.values || []; - return; - } - if (this.isWcdOnGcp && Date.now() - streamStart > GCP_STREAM_TIMEOUT) { - console.info( - 'GCP connections have a maximum lifetime. Re-establishing the batch stream to avoid timeout errors.' - ); - this.isRenewingStream = true; - yield BatchStreamRequest.create({ stop: {} }); - return; - } - - let logged = false; - const start = Date.now(); - while (this.isOom) { - if (!logged) { - console.warn( - 'Server out-of-memory, waiting for server to recover before resuming batch ingestion...' - ); - this.pendingObjs = req.data?.objects?.values || []; - this.pendingRefs = req.data?.references?.values || []; - logged = true; - } - if (Date.now() - start > this.oomWaitTime * 1000) { - throw new Error( - `Batch stream was not re-established within ${this.oomWaitTime} seconds after an OOM message. Terminating batch.` - ); - } - await Batcher.sleep(OOM_REFRESH_TIME); // eslint-disable-line no-await-in-loop - return; - } - - const entry = await this.queue.pull(QUEUE_PULL_TIMEOUT); // eslint-disable-line no-await-in-loop - if (entry === null && !this.isStopped) { - // user may be holding the batcher open and not added to it in the last second - continue; - } - if (entry === null && this.isStopped) { - // user has signaled to stop batching and there's nothing left in the queue, so close the stream - console.info('Batching stopped by user, closing the client-side of the stream'); - if ( - (req.data?.objects?.values.length !== undefined && req.data.objects.values.length > 0) || - (req.data?.references?.values.length !== undefined && req.data.references.values.length > 0) - ) { - yield req; - } - - yield BatchStreamRequest.create({ stop: {} }); - return; - } - - if (isBatchObject(entry)) { - const { grpc } = Serialize.batchObject(entry.collection, entry, false, entry.tenant); - this.objsCache[grpc.uuid] = { entry, index: objIndex }; - - const objSize = BatchObjectGRPC.encode(grpc).finish().length + PER_OBJECT_OVERHEAD; - if (objSize + emptyReqSize >= grpcMaxMessageSize) { - throw new Error( - `Object at index ${objIndex} exceeds the gRPC max message size limit and cannot be sent.` - ); - } - if (totalSize + objSize >= grpcMaxMessageSize || req.data!.objects!.values.length >= this.batchSize) { - while (this.inflightObjs.size >= this.batchSize) { - await Batcher.sleep(REFRESH_TIME); // eslint-disable-line no-await-in-loop - } - this.inflightObjs = new Set(req.data?.objects?.values.map((o) => o.uuid!)); - - yield req; - req = BatchStreamRequest.create({ data: { objects: { values: [] }, references: { values: [] } } }); - totalSize = BatchStreamRequest.encode(req).finish().length; - } - - req.data!.objects!.values.push(grpc); - totalSize += objSize; - objIndex++; // eslint-disable-line no-plusplus - } - - if (isBatchReference(entry)) { - const { grpc, beacon } = Serialize.batchReference(entry); - this.refsCache[beacon] = { entry, index: refIndex }; - - const refSize = BatchReferenceGRPC.encode(grpc).finish().length + PER_OBJECT_OVERHEAD; - if ( - totalSize + refSize >= grpcMaxMessageSize || - req.data!.references!.values.length >= this.batchSize - ) { - while (this.inflightRefs.size >= this.batchSize) { - await Batcher.sleep(REFRESH_TIME); // eslint-disable-line no-await-in-loop - } - this.inflightRefs = new Set( - req.data?.references?.values.map( - (r) => `weaviate://localhost/${r.fromCollection}/${r.fromUuid}/${r.name}` - ) - ); - yield req; - req = BatchStreamRequest.create({ data: { objects: { values: [] }, references: { values: [] } } }); - totalSize = BatchStreamRequest.encode(req).finish().length; - } - - req.data!.references!.values.push(grpc); - totalSize += refSize; - refIndex++; // eslint-disable-line no-plusplus - } - } - } - - async start(connection: Connection): Promise { - console.info('Starting batch ingestion'); - for await (const result of this.do(connection)) { - if (isInternalError(result)) { - const { index, ...error } = result; - if (isBatchObject(error.entry)) - this.objErrors[index] = { message: error.message, object: error.entry }; - if (isBatchReference(error.entry)) - this.refErrors[index] = { message: error.message, reference: error.entry }; - } else if (result.type === 'success') { - if (result.uuid !== undefined) this.uuids[result.index] = result.uuid; - if (result.beacon !== undefined) this.beacons[result.index] = result.beacon; - } - } - if (this.isShuttingDown) { - console.warn('Reconnecting after server shutdown...'); - await this.reconnect(connection); - console.warn('Reconnected, resuming batch ingestion...'); - return this.restart(connection); - } else if (this.isRenewingStream) { - console.info('Restarting batch recv after renewing stream...'); - this.isRenewingStream = false; - return this.restart(connection); - } - } - - private async reconnect(connection: Connection, retries: number = 0): Promise { - try { - await connection.reconnect(); - } catch (error) { - if (retries >= 5) { - throw new Error('Failed to reconnect after server shutdown'); - } - console.warn(`Reconnect attempt ${retries + 1} failed, retrying...`); - await Batcher.sleep(2 ** retries * 1000); - return this.reconnect(connection, retries + 1); - } - } - - private restart(connection: Connection): Promise { - this.isStarted = false; - return this.start(connection); - } - - public stop() { - this.isStopped = true; - } - - async *do( - connection: Connection - ): AsyncGenerator> | InternalError | InternalSuccess> { - const gen = await connection - .batch('', this.consistencyLevel) - .then((batch) => batch.withStream(this.generateStreamRequests(connection.grpcMaxMessageLength))); - for await (const msg of gen) { - if (msg.acks !== undefined) { - this.inflightObjs = this.inflightObjs.difference(new Set(msg.acks.uuids)); - this.inflightRefs = this.inflightRefs.difference(new Set(msg.acks.beacons)); - } - if (msg.backoff !== undefined) { - this.batchSize = msg.backoff.batchSize; - } - if (msg.outOfMemory !== undefined) { - this.isOom = true; - this.oomWaitTime = msg.outOfMemory.waitTime; - msg.outOfMemory.uuids.forEach((uuid) => this.queue.push(this.objsCache[uuid].entry)); - msg.outOfMemory.beacons.forEach((beacon) => this.queue.push(this.refsCache[beacon].entry)); - this.inflightObjs = this.inflightObjs.difference(new Set(msg.outOfMemory.uuids)); - this.inflightRefs = this.inflightRefs.difference(new Set(msg.outOfMemory.beacons)); - } - if (msg.shuttingDown !== undefined) { - console.warn('Received shutting down signal from server'); - this.isShuttingDown = true; - this.isOom = false; - } - if (msg.started !== undefined) { - this.isStarted = true; - } - if (msg.results !== undefined) { - for (const error of msg.results.errors) { - if (error.uuid !== undefined) { - const cached = this.objsCache[error.uuid]; - if (cached === undefined) { - continue; - } - yield { - index: cached.index, - message: error.error, - entry: cached.entry, - type: 'error', - }; - delete this.objsCache[error.uuid]; - } - if (error.beacon !== undefined) { - const cached = this.refsCache[error.beacon]; - if (cached === undefined) { - continue; - } - yield { - index: cached.index, - message: error.error, - entry: cached.entry, - type: 'error', - }; - delete this.refsCache[error.beacon]; - } - } - for (const success of msg.results.successes) { - if (success.uuid !== undefined) { - const cached = this.objsCache[success.uuid]; - if (cached === undefined) { - continue; - } - yield { - index: cached.index, - uuid: success.uuid, - type: 'success', - }; - delete this.objsCache[success.uuid]; - } - if (success.beacon !== undefined) { - const cached = this.refsCache[success.beacon]; - if (cached === undefined) { - continue; - } - yield { - index: cached.index, - beacon: success.beacon, - type: 'success', - }; - delete this.refsCache[success.beacon]; - } - } - } - } - console.info('Server closed its side of the stream'); - } -} - -type Resolver = (value: T) => void; - -export class Queue { - private resolvers: Deque>; - private promises: Deque>; - constructor() { - // invariant: at least one of the arrays is empty - this.resolvers = new Deque>(); - this.promises = new Deque>(); - } - _add() { - this.promises.pushBack(new Promise((resolve) => this.resolvers.pushBack(resolve))); - } - _readd(promise: Promise) { - this.promises.pushFront(promise); - } - push(t: T) { - if (!this.resolvers.size()) this._add(); - this.resolvers.popFront()!(t); - } - pull(timeout?: number): Promise { - if (!this.promises.size()) this._add(); - const promise = this.promises.popFront()!; - if (timeout === undefined) return promise; - - let timeoutRes: Resolver; - const mainPromise = promise.then((value) => { - clearTimeout(timer); - return value; - }); - const timeoutPromise = new Promise((resolve) => { - timeoutRes = resolve; - }); - const timer = setTimeout(() => { - this._readd(promise); - timeoutRes(null); - }, timeout); - return Promise.race([mainPromise, timeoutPromise]); - } - get length() { - return this.promises.size() - this.resolvers.size(); - } -} diff --git a/packages/web/package.json b/packages/web/package.json index 8b6d7a5f..ca79b170 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -48,6 +48,7 @@ "devDependencies": { "@types/node": "^18.14.0", "@types/uuid": "^9.0.1", - "vitest": "^4.0.16" + "vitest": "^4.0.16", + "typescript": "^5.9.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index afed2d1f..15dcab22 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,10 +10,10 @@ importers: devDependencies: '@typescript-eslint/eslint-plugin': specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) + version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.8.3) + version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -37,19 +37,19 @@ importers: version: 2.8.8 prettier-plugin-organize-imports: specifier: ^3.2.4 - version: 3.2.4(prettier@2.8.8)(typescript@5.8.3) + version: 3.2.4(prettier@2.8.8)(typescript@5.9.3) ts-proto: specifier: ^1.181.2 version: 1.181.2 typedoc: specifier: ^0.28.15 - version: 0.28.19(typescript@5.8.3) + version: 0.28.19(typescript@5.9.3) typedoc-plugin-extras: specifier: ^4.0.1 - version: 4.0.1(typedoc@0.28.19(typescript@5.8.3)) + version: 4.0.1(typedoc@0.28.19(typescript@5.9.3)) typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.3 + version: 5.9.3 packages/core: dependencies: @@ -112,6 +112,9 @@ importers: '@types/uuid': specifier: ^9.0.1 version: 9.0.8 + typescript: + specifier: ^5.9.3 + version: 5.9.3 vitest: specifier: ^4.0.16 version: 4.1.9(@types/node@18.19.112)(vite@5.4.19(@types/node@18.19.112)) @@ -170,6 +173,9 @@ importers: '@types/uuid': specifier: ^9.0.1 version: 9.0.8 + typescript: + specifier: ^5.9.3 + version: 5.9.3 vitest: specifier: ^4.0.16 version: 4.1.9(@types/node@18.19.112)(vite@5.4.19(@types/node@18.19.112)) @@ -2385,11 +2391,6 @@ packages: peerDependencies: typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x || 6.0.x - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} - engines: {node: '>=14.17'} - hasBin: true - typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -3067,13 +3068,13 @@ snapshots: dependencies: '@types/node': 18.19.112 - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.8.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.1 eslint: 8.57.1 @@ -3081,22 +3082,22 @@ snapshots: ignore: 5.3.2 natural-compare: 1.4.0 semver: 7.7.2 - ts-api-utils: 1.4.3(typescript@5.8.3) + ts-api-utils: 1.4.3(typescript@5.9.3) optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3)': + '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.1 eslint: 8.57.1 optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -3105,21 +3106,21 @@ snapshots: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.8.3)': + '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.9.3)': dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) debug: 4.4.1 eslint: 8.57.1 - ts-api-utils: 1.4.3(typescript@5.8.3) + ts-api-utils: 1.4.3(typescript@5.9.3) optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color '@typescript-eslint/types@6.21.0': {} - '@typescript-eslint/typescript-estree@6.21.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 @@ -3128,20 +3129,20 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.7.2 - ts-api-utils: 1.4.3(typescript@5.8.3) + ts-api-utils: 1.4.3(typescript@5.9.3) optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.8.3)': + '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) '@types/json-schema': 7.0.15 '@types/semver': 7.7.0 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) eslint: 8.57.1 semver: 7.7.2 transitivePeerDependencies: @@ -4438,10 +4439,10 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier-plugin-organize-imports@3.2.4(prettier@2.8.8)(typescript@5.8.3): + prettier-plugin-organize-imports@3.2.4(prettier@2.8.8)(typescript@5.9.3): dependencies: prettier: 2.8.8 - typescript: 5.8.3 + typescript: 5.9.3 prettier@2.8.8: {} @@ -4862,9 +4863,9 @@ snapshots: tr46@0.0.3: {} - ts-api-utils@1.4.3(typescript@5.8.3): + ts-api-utils@1.4.3(typescript@5.9.3): dependencies: - typescript: 5.8.3 + typescript: 5.9.3 ts-error@1.0.6: {} @@ -4899,21 +4900,19 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 - typedoc-plugin-extras@4.0.1(typedoc@0.28.19(typescript@5.8.3)): + typedoc-plugin-extras@4.0.1(typedoc@0.28.19(typescript@5.9.3)): dependencies: - typedoc: 0.28.19(typescript@5.8.3) + typedoc: 0.28.19(typescript@5.9.3) - typedoc@0.28.19(typescript@5.8.3): + typedoc@0.28.19(typescript@5.9.3): dependencies: '@gerrit0/mini-shiki': 3.23.0 lunr: 2.3.9 markdown-it: 14.2.0 minimatch: 10.2.5 - typescript: 5.8.3 + typescript: 5.9.3 yaml: 2.9.0 - typescript@5.8.3: {} - typescript@5.9.3: {} uc.micro@2.1.0: {} From b645a28202d76fe948d33e4698edbb7c2625df04 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Wed, 24 Jun 2026 09:21:43 +0100 Subject: [PATCH 16/62] Fix packaging --- packages/core/package.json | 16 ++++++++-------- packages/core/src/config/types/index.ts | 2 +- packages/core/tsconfig.json | 2 +- packages/node/tsconfig.json | 1 + 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index d1a77bef..64c3bb1b 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -2,24 +2,24 @@ "name": "@weaviate/core", "version": "1.0.0", "description": "JS/TS client for Weaviate", - "main": "dist/core/src/index.js", + "main": "dist/src/index.js", "type": "module", "exports": { ".": { - "types": "./dist/core/src/index.d.ts", - "default": "./dist/cjs/src/index.js" + "types": "./dist/src/index.d.ts", + "default": "./dist/src/index.js" }, "./proto": { - "types": "./dist/core/src/proto/index.d.ts", - "default": "./dist/core/src/proto/index.js" + "types": "./dist/src/proto/index.d.ts", + "default": "./dist/src/proto/index.js" }, "./errors": { - "types": "./dist/core/src/errors.d.ts", - "default": "./dist/core/src/errors.js" + "types": "./dist/src/errors.d.ts", + "default": "./dist/src/errors.js" } }, "files": [ - "dist/core" + "dist/" ], "engines": { "node": ">=20.0.0" diff --git a/packages/core/src/config/types/index.ts b/packages/core/src/config/types/index.ts index e82c4909..5d41f451 100644 --- a/packages/core/src/config/types/index.ts +++ b/packages/core/src/config/types/index.ts @@ -7,7 +7,7 @@ import { WeaviateAsyncReplicationConfig, WeaviateDropPropertyIndexName, WeaviateTokenization, -} from '../../../openapi/types.js'; +} from '../../openapi/types.js'; import { InvertedIndexConfigUpdate, MultiTenancyConfigUpdate, diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index 6918ba6b..4ce0bdca 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -37,7 +37,7 @@ "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "esModuleInterop": true, - "outDir": "./dist/core", + "outDir": "./dist", "declaration": true, "rootDir": ".", "types": ["node", "uuid"] diff --git a/packages/node/tsconfig.json b/packages/node/tsconfig.json index bf681916..37675826 100644 --- a/packages/node/tsconfig.json +++ b/packages/node/tsconfig.json @@ -14,6 +14,7 @@ "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "esModuleInterop": true, + "outDir": "./dist", "declaration": true, "rootDir": ".", "types": ["node", "uuid"], From e911864032ead6deb78d40ab9fca1d55ac2d5723 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Wed, 24 Jun 2026 09:24:54 +0100 Subject: [PATCH 17/62] Remove erroneous build:core cmd from ci:checks --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b53dd84e..c1cd0a99 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "build:node": "pnpm --filter @weaviate/node... run build", "build:web": "pnpm --filter @weaviate/web... run build", "build": "npm run build:core && npm run build:node && npm run build:web", - "ci:checks": "npm run install:core && npm run build:core && npm run install:node && npm run install:web", + "ci:checks": "npm run install:core && npm run install:node && npm run install:web", "ci:test": "npm run ci:checks && npm run build:node && npm run install:test", "ci:publish": "npm run ci:checks" }, From 68be4c5111a6034e2aea1088937eda6d20138f18 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Wed, 24 Jun 2026 09:27:41 +0100 Subject: [PATCH 18/62] Update nice-grpc deps --- packages/core/package.json | 2 +- packages/node/package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 64c3bb1b..7bbc62ad 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -46,7 +46,7 @@ "graphql": "^16.12.0", "graphql-request": "^6.1.0", "long": "^5.3.2", - "nice-grpc-common": "^2.0.2", + "nice-grpc-common": "^2.0.3", "uuid": "^14.0.0" }, "devDependencies": { diff --git a/packages/node/package.json b/packages/node/package.json index 576098aa..4b385a1f 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -43,8 +43,8 @@ "homepage": "https://github.com/weaviate/typescript-client#readme", "dependencies": { "@weaviate/core": "workspace:^1.0.0", - "nice-grpc": "^2.1.14", - "nice-grpc-client-middleware-retry": "^3.1.13" + "nice-grpc": "^2.1.16", + "nice-grpc-client-middleware-retry": "^3.1.15" }, "devDependencies": { "@types/node": "^18.14.0", From 91799d4834d61ed99733a8edc5fd65da4e21069f Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Wed, 24 Jun 2026 10:01:42 +0100 Subject: [PATCH 19/62] Add back build:core to ci:checks script --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c1cd0a99..34101888 100644 --- a/package.json +++ b/package.json @@ -28,8 +28,8 @@ "build:core": "pnpm --filter @weaviate/core... run build", "build:node": "pnpm --filter @weaviate/node... run build", "build:web": "pnpm --filter @weaviate/web... run build", - "build": "npm run build:core && npm run build:node && npm run build:web", - "ci:checks": "npm run install:core && npm run install:node && npm run install:web", + "build": "npm run build:node && npm run build:web", + "ci:checks": "npm run install:core && npm run build:core && npm run install:node && npm run install:web", "ci:test": "npm run ci:checks && npm run build:node && npm run install:test", "ci:publish": "npm run ci:checks" }, From e4c49a007c70487c62f057f3cbced9b64c401214 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Wed, 24 Jun 2026 12:52:23 +0100 Subject: [PATCH 20/62] Revert changes to `npm run build` too --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 34101888..b53dd84e 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "build:core": "pnpm --filter @weaviate/core... run build", "build:node": "pnpm --filter @weaviate/node... run build", "build:web": "pnpm --filter @weaviate/web... run build", - "build": "npm run build:node && npm run build:web", + "build": "npm run build:core && npm run build:node && npm run build:web", "ci:checks": "npm run install:core && npm run build:core && npm run install:node && npm run install:web", "ci:test": "npm run ci:checks && npm run build:node && npm run install:test", "ci:publish": "npm run ci:checks" From 60b55577960dfd8a5f6bd5ec7e5ff565d79dcab2 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Wed, 24 Jun 2026 13:10:14 +0100 Subject: [PATCH 21/62] Update pkgs, fix build errors in tests --- .github/workflows/main.yaml | 2 +- package.json | 2 +- packages/core/package.json | 2 +- packages/node/package.json | 2 +- packages/test/src/backup/integration.test.ts | 2 +- packages/test/src/data/integration.test.ts | 56 ++++++------- packages/test/src/data/mock.test.ts | 84 ++++++++++---------- packages/web/package.json | 2 +- 8 files changed, 76 insertions(+), 76 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 397c86e6..b316740f 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -131,7 +131,7 @@ jobs: node-version: 24 cache: 'pnpm' registry-url: "https://registry.npmjs.org" - - run: npm ci + - run: npm run ci:publish - run: npm run build - run: npm publish - run: npm run docs diff --git a/package.json b/package.json index b53dd84e..d2d4de69 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "build:web": "pnpm --filter @weaviate/web... run build", "build": "npm run build:core && npm run build:node && npm run build:web", "ci:checks": "npm run install:core && npm run build:core && npm run install:node && npm run install:web", - "ci:test": "npm run ci:checks && npm run build:node && npm run install:test", + "ci:test": "npm run ci:checks && npm run build:core && npm run build:node && npm run install:test", "ci:publish": "npm run ci:checks" }, "repository": { diff --git a/packages/core/package.json b/packages/core/package.json index 7bbc62ad..d0d81ff2 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -22,7 +22,7 @@ "dist/" ], "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" }, "scripts": { "build": "tsc" diff --git a/packages/node/package.json b/packages/node/package.json index 4b385a1f..f0989668 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -21,7 +21,7 @@ "dist/esm" ], "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" }, "scripts": { "build:cjs": "tsc --module commonjs --moduleResolution node10 --outDir dist/cjs && touch dist/cjs/package.json && echo '{\"type\": \"commonjs\"}' > dist/cjs/package.json", diff --git a/packages/test/src/backup/integration.test.ts b/packages/test/src/backup/integration.test.ts index 682c72f1..11d31308 100644 --- a/packages/test/src/backup/integration.test.ts +++ b/packages/test/src/backup/integration.test.ts @@ -3,7 +3,7 @@ /* eslint-disable no-await-in-loop */ import { WeaviateBackupFailed } from '@weaviate/core/errors'; import { Backend } from '@weaviate/core/v2/backup'; -import weaviate, { Collection, WeaviateClient } from '@weaviate/node/src'; +import weaviate, { Collection, WeaviateClient } from '@weaviate/node'; import { afterAll, beforeAll, describe, expect, it, test } from 'vitest'; import { requireAtLeast } from '../version'; diff --git a/packages/test/src/data/integration.test.ts b/packages/test/src/data/integration.test.ts index 91321202..e27a0a7c 100644 --- a/packages/test/src/data/integration.test.ts +++ b/packages/test/src/data/integration.test.ts @@ -9,7 +9,7 @@ import { CrossReference, CrossReferences, Reference } from '@weaviate/core/refer import { DataObject, WeaviateObject } from '@weaviate/core/types'; import weaviate, { Collection, WeaviateClient, weaviateV2 } from '@weaviate/node'; import { v4 } from 'uuid'; -import { requireAtLeast } from '../../version.js'; +import { requireAtLeast } from '../version.js'; type TestCollectionData = { testProp: string; @@ -1134,31 +1134,31 @@ requireAtLeast(1, 36, 0).describe('Testing of the collection.data.{import, inges expect(await collection.length()).toEqual(2000); }); - it('should be able to ingest 2000 self-referencing objects with vectors from the client object', async () => { - const batching = await client.batch.stream(); - - for (let i = 0; i < 2000; i++) { - const obj = { - collection: collectionName, - properties: { - text: `object ${i}`, - }, - vectors: Array.from({ length: 128 }, () => Math.random()), - }; - const id = await batching.addObject(obj); - await batching.addReference({ - fromObjectCollection: collectionName, - fromObjectUuid: id, - fromPropertyName: 'self', - toObjectUuid: id, - }); - } - - await batching.stop(); - - expect(batching.hasErrors()).toBeFalsy(); - expect(Object.values(batching.objErrors()).length).toEqual(0); - expect(Object.values(batching.uuids()).length).toEqual(2000); - expect(await collection.length()).toEqual(2000); - }); + // it('should be able to ingest 2000 self-referencing objects with vectors from the client object', async () => { + // const batching = await client.batch.stream(); + + // for (let i = 0; i < 2000; i++) { + // const obj = { + // collection: collectionName, + // properties: { + // text: `object ${i}`, + // }, + // vectors: Array.from({ length: 128 }, () => Math.random()), + // }; + // const id = await batching.addObject(obj); + // await batching.addReference({ + // fromObjectCollection: collectionName, + // fromObjectUuid: id, + // fromPropertyName: 'self', + // toObjectUuid: id, + // }); + // } + + // await batching.stop(); + + // expect(batching.hasErrors()).toBeFalsy(); + // expect(Object.values(batching.objErrors()).length).toEqual(0); + // expect(Object.values(batching.uuids()).length).toEqual(2000); + // expect(await collection.length()).toEqual(2000); + // }); }); diff --git a/packages/test/src/data/mock.test.ts b/packages/test/src/data/mock.test.ts index 98f6a830..e0201f15 100644 --- a/packages/test/src/data/mock.test.ts +++ b/packages/test/src/data/mock.test.ts @@ -4,45 +4,45 @@ import { ServerError, Status } from 'nice-grpc-common'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; import { listen, makeGrpcApp, makeRestApp } from '../mocks.js'; -describe('Mock testing of batch streaming when the server errors', () => { - let closeFn: () => Promise; - - const serverErr = new ServerError(Status.INTERNAL, 'Simulated server error'); - const clientErr = new WeaviateBatchStreamError( - '/weaviate.v1.Weaviate/BatchStream INTERNAL: Simulated server error' - ); - - beforeAll(async () => { - const restApp = makeRestApp('1.36.0'); - const grpcApp = makeGrpcApp({ - async *batchStream(request: any, context: any) { - yield { started: {} }; - throw serverErr; - }, - }); - const { close } = await listen(restApp, grpcApp, 8976, 'localhost:8977'); - closeFn = close; - }); - - afterAll(() => closeFn()); - - it('should handle server errors in batch streaming', async () => { - const client = await weaviate.connectToLocal({ port: 8976, grpcPort: 8977 }); - const batching = await client.batch.stream(); - - // give time for the server to throw the expected error - await new Promise((resolve) => setTimeout(resolve, 1000)); - - // errors are thrown at the creation of the promise and not as part of the promise rejection - expect(() => batching.addObject({ collection: 'Test Object' })).toThrowError(clientErr); - - // verify that error is still thrown if the promise is awaited instead - // eslint-disable-next-line no-return-await - await expect(async () => await batching.addObject({ collection: 'Test Object' })).rejects.toThrow( - clientErr - ); - - // ensure that error is thrown when stopping the batch too in case users aren't calling .addObject - expect(() => batching.stop()).toThrowError(clientErr); - }); -}); +// describe('Mock testing of batch streaming when the server errors', () => { +// let closeFn: () => Promise; + +// const serverErr = new ServerError(Status.INTERNAL, 'Simulated server error'); +// const clientErr = new WeaviateBatchStreamError( +// '/weaviate.v1.Weaviate/BatchStream INTERNAL: Simulated server error' +// ); + +// beforeAll(async () => { +// const restApp = makeRestApp('1.36.0'); +// const grpcApp = makeGrpcApp({ +// async *batchStream(request: any, context: any) { +// yield { started: {} }; +// throw serverErr; +// }, +// }); +// const { close } = await listen(restApp, grpcApp, 8976, 'localhost:8977'); +// closeFn = close; +// }); + +// afterAll(() => closeFn()); + +// it('should handle server errors in batch streaming', async () => { +// const client = await weaviate.connectToLocal({ port: 8976, grpcPort: 8977 }); +// const batching = await client.batch.stream(); + +// // give time for the server to throw the expected error +// await new Promise((resolve) => setTimeout(resolve, 1000)); + +// // errors are thrown at the creation of the promise and not as part of the promise rejection +// expect(() => batching.addObject({ collection: 'Test Object' })).toThrowError(clientErr); + +// // verify that error is still thrown if the promise is awaited instead +// // eslint-disable-next-line no-return-await +// await expect(async () => await batching.addObject({ collection: 'Test Object' })).rejects.toThrow( +// clientErr +// ); + +// // ensure that error is thrown when stopping the batch too in case users aren't calling .addObject +// expect(() => batching.stop()).toThrowError(clientErr); +// }); +// }); diff --git a/packages/web/package.json b/packages/web/package.json index ca79b170..85439b8d 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -17,7 +17,7 @@ } }, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" }, "files": [ "dist/cjs", From da2934a7e892a400d28d005b46155650ae82c341 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Wed, 24 Jun 2026 13:38:42 +0100 Subject: [PATCH 22/62] More testing fixes --- packages/core/src/generate/unit.test.ts | 357 ----- packages/core/src/serialize/unit.test.ts | 1218 ----------------- packages/test/package.json | 2 + .../src/cluster/mock.test.ts} | 4 +- .../{core => test}/src/config/unit.test.ts | 10 +- packages/test/src/connection/mock.test.ts | 3 + packages/test/src/connection/unit.test.ts | 370 ----- packages/test/src/data/mock.test.ts | 80 +- packages/{core => test}/src/data/unit.test.ts | 2 +- .../{core => test}/src/filters/unit.test.ts | 10 +- packages/test/src/tenants/integration.test.ts | 8 +- pnpm-lock.yaml | 24 +- 12 files changed, 72 insertions(+), 2016 deletions(-) delete mode 100644 packages/core/src/generate/unit.test.ts delete mode 100644 packages/core/src/serialize/unit.test.ts rename packages/{core/src/cluster/unit.test.ts => test/src/cluster/mock.test.ts} (98%) rename packages/{core => test}/src/config/unit.test.ts (97%) delete mode 100644 packages/test/src/connection/unit.test.ts rename packages/{core => test}/src/data/unit.test.ts (97%) rename packages/{core => test}/src/filters/unit.test.ts (98%) diff --git a/packages/core/src/generate/unit.test.ts b/packages/core/src/generate/unit.test.ts deleted file mode 100644 index fd31f9dc..00000000 --- a/packages/core/src/generate/unit.test.ts +++ /dev/null @@ -1,357 +0,0 @@ -import { describe, expect, it } from 'vitest'; -import { GenerativeConfigRuntimeType, ModuleConfig } from '../types'; -import { generativeParameters } from './config'; - -// only tests fields that must be mapped from some public name to a gRPC name, e.g. baseURL -> baseUrl and stop: string[] -> stop: TextArray -describe('Unit testing of the generativeParameters factory methods', () => { - describe('anthropic', () => { - it('with defaults', () => { - const config = generativeParameters.anthropic(); - expect(config).toEqual< - ModuleConfig<'generative-anthropic', GenerativeConfigRuntimeType<'generative-anthropic'> | undefined> - >({ - name: 'generative-anthropic', - config: undefined, - }); - }); - it('with values', () => { - const config = generativeParameters.anthropic({ - baseURL: 'http://localhost:8080', - stopSequences: ['a', 'b', 'c'], - }); - expect(config).toEqual< - ModuleConfig<'generative-anthropic', GenerativeConfigRuntimeType<'generative-anthropic'> | undefined> - >({ - name: 'generative-anthropic', - config: { - baseUrl: 'http://localhost:8080', - stopSequences: { values: ['a', 'b', 'c'] }, - }, - }); - }); - }); - - describe('anyscale', () => { - it('with defaults', () => { - const config = generativeParameters.anyscale(); - expect(config).toEqual< - ModuleConfig<'generative-anyscale', GenerativeConfigRuntimeType<'generative-anyscale'> | undefined> - >({ - name: 'generative-anyscale', - config: undefined, - }); - }); - it('with values', () => { - const config = generativeParameters.anyscale({ - baseURL: 'http://localhost:8080', - }); - expect(config).toEqual< - ModuleConfig<'generative-anyscale', GenerativeConfigRuntimeType<'generative-anyscale'> | undefined> - >({ - name: 'generative-anyscale', - config: { - baseUrl: 'http://localhost:8080', - }, - }); - }); - }); - - describe('aws', () => { - it('with defaults', () => { - const config = generativeParameters.aws(); - expect(config).toEqual< - ModuleConfig<'generative-aws', GenerativeConfigRuntimeType<'generative-aws'> | undefined> - >({ - name: 'generative-aws', - config: undefined, - }); - }); - }); - - describe('azure-openai', () => { - it('with defaults', () => { - const config = generativeParameters.azureOpenAI(); - expect(config).toEqual< - ModuleConfig<'generative-azure-openai', GenerativeConfigRuntimeType<'generative-azure-openai'>> - >({ - name: 'generative-azure-openai', - config: { isAzure: true }, - }); - }); - it('with values', () => { - const config = generativeParameters.azureOpenAI({ - baseURL: 'http://localhost:8080', - model: 'model', - stop: ['a', 'b', 'c'], - }); - expect(config).toEqual< - ModuleConfig<'generative-azure-openai', GenerativeConfigRuntimeType<'generative-azure-openai'>> - >({ - name: 'generative-azure-openai', - config: { - baseUrl: 'http://localhost:8080', - stop: { values: ['a', 'b', 'c'] }, - model: 'model', - isAzure: true, - }, - }); - }); - }); - - describe('cohere', () => { - it('with defaults', () => { - const config = generativeParameters.cohere(); - expect(config).toEqual< - ModuleConfig<'generative-cohere', GenerativeConfigRuntimeType<'generative-cohere'> | undefined> - >({ - name: 'generative-cohere', - config: undefined, - }); - }); - it('with values', () => { - const config = generativeParameters.cohere({ - baseURL: 'http://localhost:8080', - stopSequences: ['a', 'b', 'c'], - }); - expect(config).toEqual< - ModuleConfig<'generative-cohere', GenerativeConfigRuntimeType<'generative-cohere'> | undefined> - >({ - name: 'generative-cohere', - config: { - baseUrl: 'http://localhost:8080', - stopSequences: { values: ['a', 'b', 'c'] }, - }, - }); - }); - }); - - describe('databricks', () => { - it('with defaults', () => { - const config = generativeParameters.databricks(); - expect(config).toEqual< - ModuleConfig< - 'generative-databricks', - GenerativeConfigRuntimeType<'generative-databricks'> | undefined - > - >({ - name: 'generative-databricks', - config: undefined, - }); - }); - it('with values', () => { - const config = generativeParameters.databricks({ - stop: ['a', 'b', 'c'], - }); - expect(config).toEqual< - ModuleConfig< - 'generative-databricks', - GenerativeConfigRuntimeType<'generative-databricks'> | undefined - > - >({ - name: 'generative-databricks', - config: { - stop: { values: ['a', 'b', 'c'] }, - }, - }); - }); - }); - - describe('friendliai', () => { - it('with defaults', () => { - const config = generativeParameters.friendliai(); - expect(config).toEqual< - ModuleConfig< - 'generative-friendliai', - GenerativeConfigRuntimeType<'generative-friendliai'> | undefined - > - >({ - name: 'generative-friendliai', - config: undefined, - }); - }); - it('with values', () => { - const config = generativeParameters.friendliai({ - baseURL: 'http://localhost:8080', - }); - expect(config).toEqual< - ModuleConfig< - 'generative-friendliai', - GenerativeConfigRuntimeType<'generative-friendliai'> | undefined - > - >({ - name: 'generative-friendliai', - config: { - baseUrl: 'http://localhost:8080', - }, - }); - }); - }); - - describe('mistral', () => { - it('with defaults', () => { - const config = generativeParameters.mistral(); - expect(config).toEqual< - ModuleConfig<'generative-mistral', GenerativeConfigRuntimeType<'generative-mistral'> | undefined> - >({ - name: 'generative-mistral', - config: undefined, - }); - }); - it('with values', () => { - const config = generativeParameters.mistral({ - baseURL: 'http://localhost:8080', - }); - expect(config).toEqual< - ModuleConfig<'generative-mistral', GenerativeConfigRuntimeType<'generative-mistral'> | undefined> - >({ - name: 'generative-mistral', - config: { - baseUrl: 'http://localhost:8080', - }, - }); - }); - }); - - describe('nvidia', () => { - it('with defaults', () => { - const config = generativeParameters.nvidia(); - expect(config).toEqual< - ModuleConfig<'generative-nvidia', GenerativeConfigRuntimeType<'generative-nvidia'> | undefined> - >({ - name: 'generative-nvidia', - config: undefined, - }); - }); - it('with values', () => { - const config = generativeParameters.nvidia({ - baseURL: 'http://localhost:8080', - }); - expect(config).toEqual< - ModuleConfig<'generative-nvidia', GenerativeConfigRuntimeType<'generative-nvidia'> | undefined> - >({ - name: 'generative-nvidia', - config: { - baseUrl: 'http://localhost:8080', - }, - }); - }); - }); - - describe('ollama', () => { - it('with defaults', () => { - const config = generativeParameters.ollama(); - expect(config).toEqual< - ModuleConfig<'generative-ollama', GenerativeConfigRuntimeType<'generative-ollama'> | undefined> - >({ - name: 'generative-ollama', - config: undefined, - }); - }); - }); - - describe('openai', () => { - it('with defaults', () => { - const config = generativeParameters.openAI(); - expect(config).toEqual< - ModuleConfig<'generative-openai', GenerativeConfigRuntimeType<'generative-openai'>> - >({ - name: 'generative-openai', - config: { isAzure: false }, - }); - }); - it('with values', () => { - const config = generativeParameters.openAI({ - baseURL: 'http://localhost:8080', - model: 'model', - stop: ['a', 'b', 'c'], - }); - expect(config).toEqual< - ModuleConfig<'generative-openai', GenerativeConfigRuntimeType<'generative-openai'>> - >({ - name: 'generative-openai', - config: { - baseUrl: 'http://localhost:8080', - isAzure: false, - model: 'model', - stop: { values: ['a', 'b', 'c'] }, - }, - }); - }); - }); - - describe('xai', () => { - it('with defaults', () => { - const config = generativeParameters.xai(); - expect(config).toEqual< - ModuleConfig<'generative-xai', GenerativeConfigRuntimeType<'generative-xai'> | undefined> - >({ - name: 'generative-xai', - config: undefined, - }); - }); - it('with values', () => { - const config = generativeParameters.xai({ - baseURL: 'http://localhost:8080', - maxTokens: 100, - model: 'model', - temperature: 0.5, - topP: 0.9, - }); - expect(config).toEqual< - ModuleConfig<'generative-xai', GenerativeConfigRuntimeType<'generative-xai'> | undefined> - >({ - name: 'generative-xai', - config: { - baseUrl: 'http://localhost:8080', - maxTokens: 100, - model: 'model', - temperature: 0.5, - topP: 0.9, - }, - }); - }); - }); - - describe('contextualai', () => { - it('with defaults', () => { - const config = generativeParameters.contextualai(); - expect(config).toEqual< - ModuleConfig< - 'generative-contextualai', - GenerativeConfigRuntimeType<'generative-contextualai'> | undefined - > - >({ - name: 'generative-contextualai', - config: undefined, - }); - }); - it('with values', () => { - const config = generativeParameters.contextualai({ - model: 'v2', - maxNewTokens: 512, - temperature: 0.7, - topP: 0.9, - systemPrompt: 'sys', - avoidCommentary: false, - knowledge: ['knowledge1', 'knowledge2'], - }); - expect(config).toEqual< - ModuleConfig< - 'generative-contextualai', - GenerativeConfigRuntimeType<'generative-contextualai'> | undefined - > - >({ - name: 'generative-contextualai', - config: { - model: 'v2', - temperature: 0.7, - topP: 0.9, - maxNewTokens: 512, - systemPrompt: 'sys', - avoidCommentary: false, - knowledge: { values: ['knowledge1', 'knowledge2'] }, - }, - }); - }); - }); -}); diff --git a/packages/core/src/serialize/unit.test.ts b/packages/core/src/serialize/unit.test.ts deleted file mode 100644 index f9e68060..00000000 --- a/packages/core/src/serialize/unit.test.ts +++ /dev/null @@ -1,1218 +0,0 @@ -import { describe, expect, it } from 'vitest'; -import filter from '../filters'; -import { Filters as FiltersFactory } from '../filters/classes'; -import { - SearchBm25Args, - SearchFetchArgs, - SearchHybridArgs, - SearchNearAudioArgs, - SearchNearDepthArgs, - SearchNearIMUArgs, - SearchNearImageArgs, - SearchNearObjectArgs, - SearchNearTextArgs, - SearchNearThermalArgs, - SearchNearVectorArgs, - SearchNearVideoArgs, -} from '../grpc/searcher.js'; -import { Filters, Filters_Operator, Vectors, Vectors_VectorType } from '../proto/v1/base.js'; -import { - BM25, - CombinationMethod, - Hybrid, - Hybrid_FusionType, - NearAudioSearch, - NearDepthSearch, - NearIMUSearch, - NearImageSearch, - NearObject, - NearTextSearch, - NearTextSearch_Move, - NearThermalSearch, - NearVector, - NearVideoSearch, - Targets, -} from '../proto/v1/base_search'; -import { GenerativeSearch } from '../proto/v1/generative'; -import { GroupBy, MetadataRequest, PropertiesRequest } from '../proto/v1/search_get'; -import { TargetVectorInputType } from '../query/types'; -import { Reference } from '../references'; -import { DataGuards, Serialize } from '../serialize'; -import sort from '../sort'; -import { WeaviateField } from '../types'; -import multiTargetVector from '../vectors/multiTargetVector'; - -describe('Unit testing of Serialize', () => { - it('should parse args for fetchObjects', () => { - const args = Serialize.search.fetchObjects({ - limit: 1, - offset: 0, - after: 'one', - filters: filter().byProperty('name').equal('test'), - sort: sort().byProperty('name'), - includeVector: true, - returnMetadata: 'all', - returnProperties: ['name'], - returnReferences: [{ linkOn: 'ref' }], - }); - expect(args).toEqual({ - limit: 1, - offset: 0, - after: 'one', - filters: Filters.fromPartial({ - operator: Filters_Operator.OPERATOR_EQUAL, - target: { - property: 'name', - }, - valueText: 'test', - }), - sortBy: [{ ascending: true, path: ['name'] }], - metadata: MetadataRequest.fromPartial({ - certainty: true, - distance: true, - uuid: true, - vector: true, - vectors: undefined, - creationTimeUnix: true, - lastUpdateTimeUnix: true, - isConsistent: true, - explainScore: true, - score: true, - }), - properties: PropertiesRequest.fromPartial({ - nonRefProperties: ['name'], - refProperties: [ - { - metadata: MetadataRequest.fromPartial({ uuid: true }), - properties: PropertiesRequest.fromPartial({ returnAllNonrefProperties: true }), - referenceProperty: 'ref', - targetCollection: '', - }, - ], - }), - }); - }); - - it('should parse args for fetchObjects with all & queryProfile metadata', () => { - const args = Serialize.search.fetchObjects({ - returnMetadata: ['all', 'queryProfile'], - }); - expect(args).toEqual({ - metadata: MetadataRequest.fromPartial({ - uuid: true, - creationTimeUnix: true, - lastUpdateTimeUnix: true, - distance: true, - certainty: true, - score: true, - explainScore: true, - isConsistent: true, - queryProfile: true, - }), - }); - }); - - it('should parse args for fetchObjectById', () => { - const args = Serialize.search.fetchObjectById({ - id: '1', - includeVector: ['title'], - returnProperties: ['name'], - returnReferences: [{ linkOn: 'ref' }], - }); - expect(args).toEqual({ - filters: Filters.fromPartial({ - operator: Filters_Operator.OPERATOR_EQUAL, - target: { - property: '_id', - }, - valueText: '1', - }), - metadata: MetadataRequest.fromPartial({ - creationTimeUnix: true, - lastUpdateTimeUnix: true, - isConsistent: true, - uuid: true, - vectors: ['title'], - }), - properties: PropertiesRequest.fromPartial({ - nonRefProperties: ['name'], - refProperties: [ - { - metadata: MetadataRequest.fromPartial({ uuid: true }), - properties: PropertiesRequest.fromPartial({ returnAllNonrefProperties: true }), - referenceProperty: 'ref', - targetCollection: '', - }, - ], - }), - }); - }); - - it('should parse args for bm25', () => { - const args = Serialize.search.bm25('test', { - queryProperties: ['name'], - autoLimit: 1, - }); - expect(args).toEqual({ - bm25Search: BM25.fromPartial({ - query: 'test', - properties: ['name'], - }), - autocut: 1, - metadata: MetadataRequest.fromPartial({ uuid: true }), - }); - }); - - it('should parse args for simple hybrid <1.29', async () => { - const args = await Serialize.search.hybrid( - { - query: 'test', - supportsVectors: false, - }, - { - queryProperties: ['name'], - alpha: 0.6, - vector: [1, 2, 3], - targetVector: 'title', - fusionType: 'Ranked', - maxVectorDistance: 0.4, - } - ); - expect(args).toEqual({ - hybridSearch: Hybrid.fromPartial({ - query: 'test', - properties: ['name'], - alpha: 0.6, - vectorBytes: new Uint8Array(new Float32Array([1, 2, 3]).buffer), - targets: { - targetVectors: ['title'], - }, - fusionType: Hybrid_FusionType.FUSION_TYPE_RANKED, - vectorDistance: 0.4, - }), - metadata: MetadataRequest.fromPartial({ uuid: true }), - }); - }); - - it('should parse args for simple hybrid >=1.29', async () => { - const args = await Serialize.search.hybrid( - { - query: 'test', - supportsVectors: true, - }, - { - queryProperties: ['name'], - alpha: 0.6, - vector: [1, 2, 3], - targetVector: 'title', - fusionType: 'Ranked', - maxVectorDistance: 0.4, - } - ); - expect(args).toEqual({ - hybridSearch: Hybrid.fromPartial({ - query: 'test', - properties: ['name'], - alpha: 0.6, - vectors: [ - Vectors.fromPartial({ - type: Vectors_VectorType.VECTOR_TYPE_SINGLE_FP32, - vectorBytes: new Uint8Array(new Float32Array([1, 2, 3]).buffer), - }), - ], - targets: { - targetVectors: ['title'], - }, - fusionType: Hybrid_FusionType.FUSION_TYPE_RANKED, - vectorDistance: 0.4, - }), - metadata: MetadataRequest.fromPartial({ uuid: true }), - }); - }); - - it('should parse args for multi-vector & multi-target hybrid', async () => { - const args = await Serialize.search.hybrid( - { - query: 'test', - supportsVectors: false, - }, - { - queryProperties: ['name'], - alpha: 0.6, - vector: { - title: [ - [1, 2, 3], - [4, 5, 6], - ], - description: [7, 8, 9], - }, - targetVector: multiTargetVector().manualWeights({ title: [0.5, 0.5], description: 0.5 }), - fusionType: 'Ranked', - } - ); - expect(args).toEqual({ - hybridSearch: Hybrid.fromPartial({ - query: 'test', - properties: ['name'], - alpha: 0.6, - nearVector: NearVector.fromPartial({ - vectorForTargets: [ - { name: 'title', vectorBytes: new Uint8Array(new Float32Array([1, 2, 3]).buffer) }, - { name: 'title', vectorBytes: new Uint8Array(new Float32Array([4, 5, 6]).buffer) }, - { name: 'description', vectorBytes: new Uint8Array(new Float32Array([7, 8, 9]).buffer) }, - ], - }), - targets: Targets.fromPartial({ - combination: CombinationMethod.COMBINATION_METHOD_TYPE_MANUAL, - targetVectors: ['title', 'title', 'description'], - weightsForTargets: [ - { - target: 'title', - weight: 0.5, - }, - { - target: 'title', - weight: 0.5, - }, - { - target: 'description', - weight: 0.5, - }, - ], - }), - fusionType: Hybrid_FusionType.FUSION_TYPE_RANKED, - }), - metadata: MetadataRequest.fromPartial({ uuid: true }), - }); - }); - - it('should parse args for nearAudio', () => { - const args = Serialize.search.nearAudio( - { - audio: 'audio', - }, - { - certainty: 0.6, - distance: 0.4, - targetVector: 'audio', - } - ); - expect(args).toEqual({ - nearAudio: NearAudioSearch.fromPartial({ - audio: 'audio', - certainty: 0.6, - distance: 0.4, - targets: { - targetVectors: ['audio'], - }, - }), - metadata: MetadataRequest.fromPartial({ uuid: true }), - }); - }); - - it('should parse args for nearDepth', () => { - const args = Serialize.search.nearDepth({ - depth: 'depth', - }); - expect(args).toEqual({ - nearDepth: NearDepthSearch.fromPartial({ - depth: 'depth', - }), - metadata: MetadataRequest.fromPartial({ uuid: true }), - }); - }); - - it('should parse args for nearIMU', () => { - const args = Serialize.search.nearIMU({ - imu: 'imu', - }); - expect(args).toEqual({ - nearIMU: NearIMUSearch.fromPartial({ - imu: 'imu', - }), - metadata: MetadataRequest.fromPartial({ uuid: true }), - }); - }); - - it('should parse args for nearImage', () => { - const args = Serialize.search.nearImage({ - image: 'image', - }); - expect(args).toEqual({ - nearImage: NearImageSearch.fromPartial({ - image: 'image', - }), - metadata: MetadataRequest.fromPartial({ uuid: true }), - }); - }); - - it('should parse args for nearObject', () => { - const args = Serialize.search.nearObject({ - id: 'id', - }); - expect(args).toEqual({ - nearObject: NearObject.fromPartial({ - id: 'id', - }), - metadata: MetadataRequest.fromPartial({ uuid: true }), - }); - }); - - it('should parse args for nearText', () => { - const args = Serialize.search.nearText( - { - query: 'test', - }, - { - moveAway: { - objects: ['0'], - concepts: ['bad'], - force: 0.4, - }, - moveTo: { - objects: ['1'], - concepts: ['good'], - force: 0.6, - }, - } - ); - expect(args).toEqual({ - nearText: NearTextSearch.fromPartial({ - query: ['test'], - moveAway: NearTextSearch_Move.fromPartial({ - uuids: ['0'], - concepts: ['bad'], - force: 0.4, - }), - moveTo: NearTextSearch_Move.fromPartial({ - uuids: ['1'], - concepts: ['good'], - force: 0.6, - }), - }), - metadata: MetadataRequest.fromPartial({ uuid: true }), - }); - }); - - it('should parse args for nearThermal', () => { - const args = Serialize.search.nearThermal({ - thermal: 'thermal', - }); - expect(args).toEqual({ - nearThermal: NearThermalSearch.fromPartial({ - thermal: 'thermal', - }), - metadata: MetadataRequest.fromPartial({ uuid: true }), - }); - }); - - it('should parse args for nearVector with single vector <1.29', async () => { - const args = await Serialize.search.nearVector({ - vector: [1, 2, 3], - supportsVectors: false, - }); - expect(args).toEqual({ - nearVector: NearVector.fromPartial({ - vectorBytes: new Uint8Array(new Float32Array([1, 2, 3]).buffer), - }), - metadata: MetadataRequest.fromPartial({ uuid: true }), - }); - }); - - it('should parse args for nearVector with single vector >=1.29', async () => { - const args = await Serialize.search.nearVector({ - vector: [1, 2, 3], - supportsVectors: true, - }); - expect(args).toEqual({ - nearVector: NearVector.fromPartial({ - vectors: [ - Vectors.fromPartial({ - type: Vectors_VectorType.VECTOR_TYPE_SINGLE_FP32, - vectorBytes: new Uint8Array(new Float32Array([1, 2, 3]).buffer), - }), - ], - }), - metadata: MetadataRequest.fromPartial({ uuid: true }), - }); - }); - - it('should parse args for nearVector with two named vectors and all supports (==1.27.x)', async () => { - const args = await Serialize.search.nearVector({ - vector: { - a: [ - [1, 2, 3], - [4, 5, 6], - ], - b: [7, 8, 9], - }, - supportsVectors: false, - }); - expect(args).toEqual({ - nearVector: NearVector.fromPartial({ - vectorForTargets: [ - { name: 'a', vectorBytes: new Uint8Array(new Float32Array([1, 2, 3]).buffer) }, - { name: 'a', vectorBytes: new Uint8Array(new Float32Array([4, 5, 6]).buffer) }, - { name: 'b', vectorBytes: new Uint8Array(new Float32Array([7, 8, 9]).buffer) }, - ], - targets: { targetVectors: ['a', 'a', 'b'] }, - }), - metadata: MetadataRequest.fromPartial({ uuid: true }), - }); - }); - - it('should parse args for nearVideo', () => { - const args = Serialize.search.nearVideo({ - video: 'video', - }); - expect(args).toEqual({ - nearVideo: NearVideoSearch.fromPartial({ - video: 'video', - }), - metadata: MetadataRequest.fromPartial({ uuid: true }), - }); - }); - - it('should parse args for generative', async () => { - const args = await Serialize.generative({ supportsSingleGrouped: false }, (any) => Promise.resolve(''), { - singlePrompt: 'test', - groupedProperties: ['name'], - groupedTask: 'testing', - }); - expect(args).toEqual({ - singleResponsePrompt: 'test', - groupedProperties: ['name'], - groupedResponseTask: 'testing', - single: undefined, - grouped: undefined, - }); - }); - - it('should parse args for groupBy', () => { - const args = Serialize.search.groupBy({ - property: 'name', - numberOfGroups: 1, - objectsPerGroup: 2, - }); - expect(args).toEqual({ - path: ['name'], - numberOfGroups: 1, - objectsPerGroup: 2, - }); - }); - - it('should parse args for isGroupBy', () => { - const isGroupBy = Serialize.search.isGroupBy({ - groupBy: { - property: 'name', - numberOfGroups: 1, - objectsPerGroup: 2, - }, - }); - const isNotGroupBy = Serialize.search.isGroupBy({}); - expect(isGroupBy).toEqual(true); - expect(isNotGroupBy).toEqual(false); - }); - - it('should parse args for restProperties', () => { - const args = Serialize.restProperties( - { - name: 'John', - age: 30, - height: 1.8, - isHappy: true, - birthday: new Date(), - namedays: [new Date(), new Date()], - location: { - latitude: 1, - longitude: 1, - }, - phoneNumber: { - number: '+44 1234 567890', - }, - clothing: [ - { - type: 'shirt', - color: 'blue', - whenMade: new Date(), - }, - { - type: 'pants', - color: 'black', - whenMade: new Date(), - }, - ], - mindset: { - hopeful: true, - optimistic: true, - }, - }, - { - str: '1', - strs: ['2', '3'], - typeStr: { - targetCollection: 'A', - uuids: '4', - }, - typesStr: [ - { - targetCollection: 'B', - uuids: '5', - }, - { - targetCollection: 'C', - uuids: '6', - }, - ], - typeStrs: { - targetCollection: 'D', - uuids: ['7', '8'], - }, - typesStrs: [ - { - targetCollection: 'E', - uuids: ['9', '10'], - }, - { - targetCollection: 'F', - uuids: ['11', '12'], - }, - ], - mngrStrSngl: Reference.to('13'), - mngrsStrSngl: [Reference.to('14'), Reference.to('15')], - mngrStrMlt: Reference.toMultiTarget('16', 'G'), - mngrsStrMlt: [Reference.toMultiTarget(['17', '18'], 'H'), Reference.toMultiTarget(['19', '20'], 'I')], - mngrStrsSngl: Reference.to(['21', '22']), - mngrsStrsSngl: [Reference.to(['23', '24']), Reference.to(['25', '26'])], - mngrStrsMlt: Reference.toMultiTarget(['27', '28'], 'J'), - mngrsStrsMlt: [ - Reference.toMultiTarget(['29', '30'], 'K'), - Reference.toMultiTarget(['31', '32'], 'L'), - ], - } - ); - expect(args).toEqual({ - name: 'John', - age: 30, - height: 1.8, - isHappy: true, - birthday: expect.any(String), - namedays: [expect.any(String), expect.any(String)], - location: { - latitude: 1, - longitude: 1, - }, - phoneNumber: { - input: '+44 1234 567890', - }, - clothing: [ - { - type: 'shirt', - color: 'blue', - whenMade: expect.any(String), - }, - { - type: 'pants', - color: 'black', - whenMade: expect.any(String), - }, - ], - mindset: { - hopeful: true, - optimistic: true, - }, - str: [{ beacon: 'weaviate://localhost/1' }], - strs: [{ beacon: 'weaviate://localhost/2' }, { beacon: 'weaviate://localhost/3' }], - typeStr: [{ beacon: 'weaviate://localhost/A/4' }], - typesStr: [{ beacon: 'weaviate://localhost/B/5' }, { beacon: 'weaviate://localhost/C/6' }], - typeStrs: [{ beacon: 'weaviate://localhost/D/7' }, { beacon: 'weaviate://localhost/D/8' }], - typesStrs: [ - { beacon: 'weaviate://localhost/E/9' }, - { beacon: 'weaviate://localhost/E/10' }, - { beacon: 'weaviate://localhost/F/11' }, - { beacon: 'weaviate://localhost/F/12' }, - ], - mngrStrSngl: [{ beacon: 'weaviate://localhost/13' }], - mngrsStrSngl: [{ beacon: 'weaviate://localhost/14' }, { beacon: 'weaviate://localhost/15' }], - mngrStrMlt: [{ beacon: 'weaviate://localhost/G/16' }], - mngrsStrMlt: [ - { beacon: 'weaviate://localhost/H/17' }, - { beacon: 'weaviate://localhost/H/18' }, - { beacon: 'weaviate://localhost/I/19' }, - { beacon: 'weaviate://localhost/I/20' }, - ], - mngrStrsSngl: [{ beacon: 'weaviate://localhost/21' }, { beacon: 'weaviate://localhost/22' }], - mngrsStrsSngl: [ - { beacon: 'weaviate://localhost/23' }, - { beacon: 'weaviate://localhost/24' }, - { beacon: 'weaviate://localhost/25' }, - { beacon: 'weaviate://localhost/26' }, - ], - mngrStrsMlt: [{ beacon: 'weaviate://localhost/J/27' }, { beacon: 'weaviate://localhost/J/28' }], - mngrsStrsMlt: [ - { beacon: 'weaviate://localhost/K/29' }, - { beacon: 'weaviate://localhost/K/30' }, - { beacon: 'weaviate://localhost/L/31' }, - { beacon: 'weaviate://localhost/L/32' }, - ], - }); - }); - - it('should parse isMultiWeightPerTarget', () => { - expect( - Serialize.isMultiWeightPerTarget({ - targetVector: 'a', - }) - ).toEqual(false); - expect( - Serialize.isMultiWeightPerTarget({ - targetVector: ['a'], - }) - ).toEqual(false); - expect( - Serialize.isMultiWeightPerTarget({ - targetVector: multiTargetVector().manualWeights({ a: 0.5, b: 0.5 }), - }) - ).toEqual(false); - expect( - Serialize.isMultiWeightPerTarget({ - targetVector: multiTargetVector().manualWeights({ a: [0.5, 0.5], b: 0.5 }), - }) - ).toEqual(true); - }); - - describe('should parse TargetVectorInput type', () => { - type Out = { - targets?: Targets; - targetVectors?: string[]; - }; - type Test = { - name: string; - targetVector: TargetVectorInputType; - out: Out; - }; - const tests: Test[] = [ - { - name: 'should parse single target vector into targets', - targetVector: 'a', - out: { - targets: Targets.fromPartial({ targetVectors: ['a'] }), - }, - }, - { - name: 'should parse list of target vectors into targets', - targetVector: ['a', 'b'], - out: { - targets: Targets.fromPartial({ targetVectors: ['a', 'b'] }), - }, - }, - { - name: 'should parse MultiTargetJoin sum', - targetVector: multiTargetVector().average(['a', 'b']), - out: { - targets: Targets.fromPartial({ - combination: CombinationMethod.COMBINATION_METHOD_TYPE_AVERAGE, - targetVectors: ['a', 'b'], - }), - }, - }, - { - name: 'should parse MultiTargetJoin manual multiple weights per target', - targetVector: multiTargetVector().manualWeights({ a: [0.5, 0.5], b: 0.5 }), - out: { - targets: Targets.fromPartial({ - combination: CombinationMethod.COMBINATION_METHOD_TYPE_MANUAL, - targetVectors: ['a', 'a', 'b'], - weightsForTargets: [ - { target: 'a', weight: 0.5 }, - { target: 'a', weight: 0.5 }, - { target: 'b', weight: 0.5 }, - ], - }), - }, - }, - { - name: 'should parse MultiTargetJoin minimum', - targetVector: multiTargetVector().minimum(['a', 'b']), - out: { - targets: Targets.fromPartial({ - combination: CombinationMethod.COMBINATION_METHOD_TYPE_MIN, - targetVectors: ['a', 'b'], - }), - }, - }, - { - name: 'should parse MultiTargetJoin sum', - targetVector: multiTargetVector().average(['a', 'b']), - out: { - targets: Targets.fromPartial({ - combination: CombinationMethod.COMBINATION_METHOD_TYPE_AVERAGE, - targetVectors: ['a', 'b'], - }), - }, - }, - { - name: 'should parse MultiTargetJoin relativeScore multiple weights per target', - targetVector: multiTargetVector().relativeScore({ a: [0.5, 0.5], b: 0.5 }), - out: { - targets: Targets.fromPartial({ - combination: CombinationMethod.COMBINATION_METHOD_TYPE_RELATIVE_SCORE, - targetVectors: ['a', 'a', 'b'], - weightsForTargets: [ - { target: 'a', weight: 0.5 }, - { target: 'a', weight: 0.5 }, - { target: 'b', weight: 0.5 }, - ], - }), - }, - }, - { - name: 'should parse MultiTargetJoin sum', - targetVector: multiTargetVector().sum(['a', 'b']), - out: { - targets: Targets.fromPartial({ - combination: CombinationMethod.COMBINATION_METHOD_TYPE_SUM, - targetVectors: ['a', 'b'], - }), - }, - }, - ]; - const test = (test: Test) => - it(test.name, () => { - const args = Serialize.targetVector(test); - expect(args).toEqual(test.out); - }); - tests.forEach(test); - }); - - describe('.filtersGRPC', () => { - it('should parse a text property', () => { - const f = filter().byProperty('name').equal('test'); - const args = Serialize.filtersGRPC(f); - expect(args).toEqual({ - operator: Filters_Operator.OPERATOR_EQUAL, - on: [], - filters: [], - target: { - property: 'name', - }, - valueText: 'test', - }); - }); - it('should parse a text array property', () => { - const f = filter().byProperty('name').equal(['test1', 'test2']); - const args = Serialize.filtersGRPC(f); - expect(args).toEqual({ - operator: Filters_Operator.OPERATOR_EQUAL, - on: [], - filters: [], - target: { - property: 'name', - }, - valueTextArray: { values: ['test1', 'test2'] }, - }); - }); - it('should parse an int property', () => { - const f = filter().byProperty('age').equal(10); - const args = Serialize.filtersGRPC(f); - expect(args).toEqual({ - operator: Filters_Operator.OPERATOR_EQUAL, - on: [], - filters: [], - target: { - property: 'age', - }, - valueInt: 10, - }); - }); - it('should parse an int array property', () => { - const f = filter().byProperty('age').equal([10, 20]); - const args = Serialize.filtersGRPC(f); - expect(args).toEqual({ - operator: Filters_Operator.OPERATOR_EQUAL, - on: [], - filters: [], - target: { - property: 'age', - }, - valueIntArray: { values: [10, 20] }, - }); - }); - it('should parse a float property', () => { - const f = filter().byProperty('height').equal(1.8); - const args = Serialize.filtersGRPC(f); - expect(args).toEqual({ - operator: Filters_Operator.OPERATOR_EQUAL, - on: [], - filters: [], - target: { - property: 'height', - }, - valueNumber: 1.8, - }); - }); - it('should parse a float array property', () => { - const f = filter().byProperty('height').equal([1.8, 2.8]); - const args = Serialize.filtersGRPC(f); - expect(args).toEqual({ - operator: Filters_Operator.OPERATOR_EQUAL, - on: [], - filters: [], - target: { - property: 'height', - }, - valueNumberArray: { values: [1.8, 2.8] }, - }); - }); - it('should parse a boolean property', () => { - const f = filter().byProperty('isHappy').equal(true); - const args = Serialize.filtersGRPC(f); - expect(args).toEqual({ - operator: Filters_Operator.OPERATOR_EQUAL, - on: [], - filters: [], - target: { - property: 'isHappy', - }, - valueBoolean: true, - }); - }); - it('should parse a boolean array property', () => { - const f = filter().byProperty('isHappy').equal([true, false]); - const args = Serialize.filtersGRPC(f); - expect(args).toEqual({ - operator: Filters_Operator.OPERATOR_EQUAL, - on: [], - filters: [], - target: { - property: 'isHappy', - }, - valueBooleanArray: { values: [true, false] }, - }); - }); - it('should parse a date property', () => { - const date = new Date(); - const f = filter().byProperty('birthday').equal(date); - const args = Serialize.filtersGRPC(f); - expect(args).toEqual({ - operator: Filters_Operator.OPERATOR_EQUAL, - on: [], - filters: [], - target: { - property: 'birthday', - }, - valueText: date.toISOString(), - }); - }); - it('should parse a date array property', () => { - const date1 = new Date(); - const date2 = new Date(); - const f = filter().byProperty('birthday').equal([date1, date2]); - const args = Serialize.filtersGRPC(f); - expect(args).toEqual({ - operator: Filters_Operator.OPERATOR_EQUAL, - on: [], - filters: [], - target: { - property: 'birthday', - }, - valueTextArray: { values: [date1.toISOString(), date2.toISOString()] }, - }); - }); - it('should parse a geo property', () => { - const f = filter() - .byProperty('location') - .withinGeoRange({ latitude: 1, longitude: 1, distance: 1 }); - const args = Serialize.filtersGRPC(f); - expect(args).toEqual({ - operator: Filters_Operator.OPERATOR_WITHIN_GEO_RANGE, - on: [], - filters: [], - target: { - property: 'location', - }, - valueGeo: { - distance: 1, - latitude: 1, - longitude: 1, - }, - }); - }); - it('should parse several filters in a Filters.and', () => { - const f = FiltersFactory.and( - filter().byProperty('name').equal('test'), - filter().byProperty('age').equal(10) - ); - const args = Serialize.filtersGRPC(f); - expect(args).toEqual({ - operator: Filters_Operator.OPERATOR_AND, - on: [], - target: undefined, - filters: [ - { - operator: Filters_Operator.OPERATOR_EQUAL, - on: [], - filters: [], - target: { - property: 'name', - }, - valueText: 'test', - }, - { - operator: Filters_Operator.OPERATOR_EQUAL, - on: [], - filters: [], - target: { - property: 'age', - }, - valueInt: 10, - }, - ], - }); - }); - it('should parse several filters in a Filters.or', () => { - const f = FiltersFactory.or( - filter().byProperty('name').equal('test'), - filter().byProperty('age').equal(10) - ); - const args = Serialize.filtersGRPC(f); - expect(args).toEqual({ - operator: Filters_Operator.OPERATOR_OR, - on: [], - target: undefined, - filters: [ - { - operator: Filters_Operator.OPERATOR_EQUAL, - on: [], - filters: [], - target: { - property: 'name', - }, - valueText: 'test', - }, - { - operator: Filters_Operator.OPERATOR_EQUAL, - on: [], - filters: [], - target: { - property: 'age', - }, - valueInt: 10, - }, - ], - }); - }); - }); -}); - -describe('Unit testing of DataGuards', () => { - const values: WeaviateField[] = [ - 1, - 1.1, - NaN, - Infinity, - new Date(), - { prop: 'hi' }, - [], - true, - 'text', - { - latitude: 1, - longitude: 1, - }, - { - number: '+44 1234 567890', - }, - [1], - [1.1], - [NaN], - [Infinity], - [new Date()], - [{ prop: 'hi' }], - [true], - ['text'], - ]; - const opposite = - (f: (...args: any[]) => any) => - (...args: any[]): any => - !f(...args); - it('should check isText', () => { - const pred = (v: any) => v === 'text'; - values - .filter(pred) - .map(DataGuards.isText) - .forEach((result) => expect(result).toEqual(true)); - values - .filter(opposite(pred)) - .map(DataGuards.isText) - .forEach((result) => expect(result).toEqual(false)); - }); - - it('should check isTextArray', () => { - const pred = (v: any) => Array.isArray(v) && v[0] === 'text'; - values - .filter(pred) - .map(DataGuards.isTextArray) - .forEach((result) => expect(result).toEqual(true)); - values - .filter(opposite(pred)) - .map(DataGuards.isTextArray) - .forEach((result) => expect(result).toEqual(false)); - }); - - it('should check isInt', () => { - const pred = (v: any) => v === 1; - values - .filter(pred) - .map(DataGuards.isInt) - .forEach((result) => expect(result).toEqual(true)); - values - .filter(opposite(pred)) - .map(DataGuards.isInt) - .forEach((result) => expect(result).toEqual(false)); - }); - - it('should check isIntArray', () => { - const pred = (v: any) => Array.isArray(v) && v[0] === 1; - values - .filter(pred) - .map(DataGuards.isIntArray) - .forEach((result) => expect(result).toEqual(true)); - values - .filter(opposite(pred)) - .map(DataGuards.isIntArray) - .forEach((result) => expect(result).toEqual(false)); - }); - - it('should check isFloat', () => { - const pred = (v: any) => v === 1.1; - values - .filter(pred) - .map(DataGuards.isFloat) - .forEach((result) => expect(result).toEqual(true)); - values - .filter(opposite(pred)) - .map(DataGuards.isFloat) - .forEach((result) => expect(result).toEqual(false)); - }); - - it('should check isFloatArray', () => { - const pred = (v: any) => Array.isArray(v) && v[0] === 1.1; - values - .filter(pred) - .map(DataGuards.isFloatArray) - .forEach((result) => expect(result).toEqual(true)); - values - .filter(opposite(pred)) - .map(DataGuards.isFloatArray) - .forEach((result) => expect(result).toEqual(false)); - }); - - it('should check isBoolean', () => { - const pred = (v: any) => v === true; - values - .filter(pred) - .map(DataGuards.isBoolean) - .forEach((result) => expect(result).toEqual(true)); - values - .filter(opposite(pred)) - .map(DataGuards.isBoolean) - .forEach((result) => expect(result).toEqual(false)); - }); - - it('should check isBooleanArray', () => { - const pred = (v: any) => Array.isArray(v) && v[0] === true; - values - .filter(pred) - .map(DataGuards.isBooleanArray) - .forEach((result) => expect(result).toEqual(true)); - values - .filter(opposite(pred)) - .map(DataGuards.isBooleanArray) - .forEach((result) => expect(result).toEqual(false)); - }); - - it('should check isDate', () => { - const pred = (v: any) => v instanceof Date; - values - .filter(pred) - .map(DataGuards.isDate) - .forEach((result) => expect(result).toEqual(true)); - values - .filter(opposite(pred)) - .map(DataGuards.isDate) - .forEach((result) => expect(result).toEqual(false)); - }); - - it('should check isDateArray', () => { - const pred = (v: any) => Array.isArray(v) && v[0] instanceof Date; - values - .filter(pred) - .map(DataGuards.isDateArray) - .forEach((result) => expect(result).toEqual(true)); - values - .filter(opposite(pred)) - .map(DataGuards.isDateArray) - .forEach((result) => expect(result).toEqual(false)); - }); - - it('should check isGeoCoordinate', () => { - const pred = (v: any) => v.latitude && v.longitude; - values - .filter(pred) - .map(DataGuards.isGeoCoordinate) - .forEach((result) => expect(result).toEqual(true)); - values - .filter(opposite(pred)) - .map(DataGuards.isGeoCoordinate) - .forEach((result) => expect(result).toEqual(false)); - }); - - it('should check isPhoneNumber', () => { - const pred = (v: any) => v.number; - values - .filter(pred) - .map(DataGuards.isPhoneNumber) - .forEach((result) => expect(result).toEqual(true)); - values - .filter(opposite(pred)) - .map(DataGuards.isPhoneNumber) - .forEach((result) => expect(result).toEqual(false)); - }); - - it('should check isNested', () => { - const pred = (v: any) => v.prop === 'hi'; - values - .filter(pred) - .map(DataGuards.isNested) - .forEach((result) => expect(result).toEqual(true)); - values - .filter(opposite(pred)) - .map(DataGuards.isNested) - .forEach((result) => expect(result).toEqual(false)); - }); - - it('should check isNestedArray', () => { - const pred = (v: any) => Array.isArray(v) && v[0]?.prop === 'hi'; - values - .filter(pred) - .map(DataGuards.isNestedArray) - .forEach((result) => expect(result).toEqual(true)); - values - .filter(opposite(pred)) - .map(DataGuards.isNestedArray) - .forEach((result) => expect(result).toEqual(false)); - }); - - it('should check isEmptyArray', () => { - const pred = (v: any) => Array.isArray(v) && v.length === 0; - values - .filter(pred) - .map(DataGuards.isEmptyArray) - .forEach((result) => expect(result).toEqual(true)); - values - .filter(opposite(pred)) - .map(DataGuards.isEmptyArray) - .forEach((result) => expect(result).toEqual(false)); - }); -}); diff --git a/packages/test/package.json b/packages/test/package.json index 71c61e32..49b4f715 100644 --- a/packages/test/package.json +++ b/packages/test/package.json @@ -14,8 +14,10 @@ "@types/uuid": "^9.0.8", "@weaviate/core": "workspace:^1.0.0", "@weaviate/node": "workspace:^1.0.0", + "abort-controller-x": "^0.5.0", "express": "^4.21.2", "nice-grpc": "^2.1.12", + "nice-grpc-common": "^2.0.3", "uuid": "^9.0.1", "vitest": "^3.2.4" } diff --git a/packages/core/src/cluster/unit.test.ts b/packages/test/src/cluster/mock.test.ts similarity index 98% rename from packages/core/src/cluster/unit.test.ts rename to packages/test/src/cluster/mock.test.ts index a4ae8f5a..757d0bbe 100644 --- a/packages/core/src/cluster/unit.test.ts +++ b/packages/test/src/cluster/mock.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { IConnection } from '../connection/index.js'; -import cluster from './index.js'; +import { IConnection } from '@weaviate/core'; +import cluster from '@weaviate/core/cluster'; // These tests do not validate the response from Weaviate. This is because the server responses are not mapped at all by the client so are assumed to be correct. // Instead, these tests validate that the client sends the correct requests to the server and that the responses are handled correctly. diff --git a/packages/core/src/config/unit.test.ts b/packages/test/src/config/unit.test.ts similarity index 97% rename from packages/core/src/config/unit.test.ts rename to packages/test/src/config/unit.test.ts index cfbf44b3..fa756daf 100644 --- a/packages/core/src/config/unit.test.ts +++ b/packages/test/src/config/unit.test.ts @@ -1,14 +1,14 @@ import { describe, expect, it } from 'vitest'; -import { configure } from '../configure/index.js'; +import { configure } from '@weaviate/core/configure'; import { WeaviateInvertedIndexConfig, WeaviateModuleConfig, WeaviateMultiTenancyConfig, WeaviateVectorsConfig, -} from '../openapi/types'; -import { MergeWithExisting } from './classes'; -import { GenerativeCohereConfig, RerankerCohereConfig } from './types'; -import { makeVectorsConfig } from './utils.js'; +} from '@weaviate/core/openapi/types.js'; +import { MergeWithExisting } from '@weaviate/core/config/classes.js'; +import { GenerativeCohereConfig, RerankerCohereConfig } from '@weaviate/core/config/types'; +import { makeVectorsConfig } from '@weaviate/core/config/utils.js'; describe('Unit testing of the MergeWithExisting class', () => { const deepCopy = (config: any) => JSON.parse(JSON.stringify(config)); diff --git a/packages/test/src/connection/mock.test.ts b/packages/test/src/connection/mock.test.ts index 0951a922..09c94e2b 100644 --- a/packages/test/src/connection/mock.test.ts +++ b/packages/test/src/connection/mock.test.ts @@ -32,6 +32,9 @@ import weaviate, { Collection, WeaviateClient } from '@weaviate/node'; describe('mock server auth tests', () => { const server = testServer(); + + afterAll(() => server.close()); + describe('OIDC auth flows', () => { it('should login with client_credentials grant', async () => { const conn = new Connection({ diff --git a/packages/test/src/connection/unit.test.ts b/packages/test/src/connection/unit.test.ts deleted file mode 100644 index c6758406..00000000 --- a/packages/test/src/connection/unit.test.ts +++ /dev/null @@ -1,370 +0,0 @@ -import express from 'express'; -import { Server as HttpServer } from 'http'; - -import Connection from '@weaviate/core/connection'; -import { - ApiKey, - AuthAccessTokenCredentials, - AuthClientCredentials, - AuthUserPasswordCredentials, -} from '@weaviate/core/connection/auth'; -import { testServer } from '../server'; - -import { - HealthCheckRequest, - HealthCheckResponse, - HealthCheckResponse_ServingStatus, - HealthDefinition, - HealthServiceImplementation, -} from '@weaviate/core/proto/google/health/v1/health'; -import { TenantsGetReply } from '@weaviate/core/proto/v1/tenants'; -import { WeaviateDefinition, WeaviateServiceImplementation } from '@weaviate/core/proto/v1/weaviate'; -import { createServer, Server as GrpcServer } from 'nice-grpc'; - -import { WeaviateRequestTimeoutError } from '@weaviate/core/errors'; -import { AggregateReply } from '@weaviate/core/proto/v1/aggregate'; -import { BatchObjectsReply } from '@weaviate/core/proto/v1/batch'; -import { BatchDeleteReply } from '@weaviate/core/proto/v1/batch_delete'; -import { SearchReply } from '@weaviate/core/proto/v1/search_get'; -import weaviate, { Collection, WeaviateClient } from '@weaviate/node'; -import { afterAll, beforeAll, describe, expect, it, vitest } from 'vitest'; - -import { WEAVIATE_CLIENT_VERSION } from '@weaviate/core/version.js'; - -describe('mock server auth tests', () => { - const server = testServer(); - describe('OIDC auth flows', () => { - it('should login with client_credentials grant', async () => { - const conn = new Connection({ - scheme: 'http', - host: 'localhost:' + server.port, - authClientSecret: new AuthClientCredentials({ - clientSecret: 'supersecret', - scopes: ['some_scope'], - silentRefresh: false, - }), - }); - - await conn - .login() - .then((token) => { - expect(token).toEqual('access_token_000'); - expect((conn as any).oidcAuth?.refreshToken).toEqual('refresh_token_000'); - expect((conn as any).oidcAuth?.expiresAt).toBeGreaterThan(Date.now()); - }) - .catch((e) => { - throw new Error('it should not have failed: ' + e); - }); - - const request = server.lastRequest(); - - expect(request.body).toEqual({ - client_id: 'client123', - client_secret: 'supersecret', - grant_type: 'client_credentials', - scope: 'some_scope', - }); - }); - - it('should login with password grant', async () => { - const conn = new Connection({ - scheme: 'http', - host: 'localhost:' + server.port, - authClientSecret: new AuthUserPasswordCredentials({ - username: 'user123', - password: 'secure_password', - scopes: ['custom_scope'], - }), - }); - - await conn - .login() - .then((token) => { - expect(token).toEqual('access_token_000'); - expect((conn as any).oidcAuth?.refreshToken).toEqual('refresh_token_000'); - expect((conn as any).oidcAuth?.expiresAt).toBeGreaterThan(Date.now()); - conn.oidcAuth?.stopTokenRefresh(); - }) - .catch((e) => { - throw new Error('it should not have failed: ' + e); - }); - - const request = server.lastRequest(); - - expect(request.body).toEqual({ - username: 'user123', - password: 'secure_password', - grant_type: 'password', - client_id: 'client123', - scope: 'custom_scope offline_access', - }); - }); - - it('should login with refresh_token grant', async () => { - const conn = new Connection({ - scheme: 'http', - host: 'localhost:' + server.port, - authClientSecret: new AuthAccessTokenCredentials({ - accessToken: 'old-access-token', - expiresIn: 1, - refreshToken: 'old-refresh-token', - }), - }); - - // force the use of refreshToken - (conn as any).oidcAuth?.resetExpiresAt(); - - await conn - .login() - .then((token) => { - expect(token).toEqual('access_token_000'); - expect((conn as any).oidcAuth?.refreshToken).toEqual('refresh_token_000'); - expect((conn as any).oidcAuth?.expiresAt).toBeGreaterThan(Date.now()); - conn.oidcAuth?.stopTokenRefresh(); - }) - .catch((e) => { - throw new Error('it should not have failed: ' + e); - }); - - const request = server.lastRequest(); - - expect(request.body).toEqual({ - client_id: 'client123', - grant_type: 'refresh_token', - refresh_token: 'old-refresh-token', - }); - }); - }); - - it('should login with API key', async () => { - const apiKey = 'abcd123'; - - const conn = new Connection({ - scheme: 'http', - host: 'localhost:' + server.port, - apiKey: new ApiKey(apiKey), - }); - - await conn.login().then((key) => expect(key).toEqual(apiKey)); - }); - - it('should construct the correct url when host contains scheme', () => { - const apiKey = 'abcd123'; - - const conn = new Connection({ - scheme: 'http', - host: 'http://localhost:' + server.port, - apiKey: new ApiKey(apiKey), - }); - const expectedPath = 'http://localhost:' + server.port; - - expect(conn.host).toEqual(expectedPath); - }); - - it('should construct the correct url when scheme specified and host does not contain scheme', () => { - const apiKey = 'abcd123'; - - const conn = new Connection({ - scheme: 'http', - host: 'localhost:' + server.port, - apiKey: new ApiKey(apiKey), - }); - const expectedPath = 'http://localhost:' + server.port; - - expect(conn.host).toEqual(expectedPath); - }); - - it('should construct the correct url when no scheme is specified but host contains scheme', () => { - const apiKey = 'abcd123'; - - const conn = new Connection({ - host: 'http://localhost:' + server.port, - apiKey: new ApiKey(apiKey), - }); - const expectedPath = 'http://localhost:' + server.port; - - expect(conn.host).toEqual(expectedPath); - }); - - it('should throw error when host contains different scheme than specified', () => { - const apiKey = 'abcd123'; - - const createConnection = () => { - return new Connection({ - scheme: 'https', - host: 'http://localhost:' + server.port, - apiKey: new ApiKey(apiKey), - }); - }; - - expect(createConnection).toThrow( - 'The host contains a different protocol than specified in the scheme (scheme: https != host: http)' - ); - }); - - it('should throw error when scheme not specified and included in host', () => { - const apiKey = 'abcd123'; - - const createConnection = () => { - return new Connection({ - host: 'localhost:' + server.port, - apiKey: new ApiKey(apiKey), - }); - }; - - expect(createConnection).toThrow( - 'The host must start with a recognized protocol (e.g., http or https) if no scheme is provided.' - ); - }); - - it('shuts down the server', () => { - return server.close(); - }); -}); - -const COLLECTION_NAME = 'TestCollectionTimeouts'; - -const makeRestApp = (version: string) => { - const httpApp = express(); - httpApp.get(`/v1/schema/${COLLECTION_NAME}`, (req, res) => - new Promise((r) => setTimeout(r, 2000)).then(() => res.send({ class: COLLECTION_NAME })) - ); - httpApp.get('/v1/meta', (req, res) => res.send({ version })); - return httpApp; -}; - -const makeGrpcApp = () => { - const weaviateMockImpl: WeaviateServiceImplementation = { - aggregate: (): Promise => - new Promise((r) => { - setTimeout(r, 2000); - }).then(() => { - return { - took: 5000, - }; - }), - tenantsGet: (): Promise => - new Promise((r) => { - setTimeout(r, 2000); - }).then(() => { - return { - took: 5000, - tenants: [], - }; - }), - search: (): Promise => - new Promise((r) => { - setTimeout(r, 2000); - }).then(() => { - return { - results: [], - took: 5000, - groupByResults: [], - }; - }), - batchDelete: (): Promise => - new Promise((r) => { - setTimeout(r, 2000); - }).then(() => { - return { - took: 5000, - status: 'SUCCESS', - failed: 0, - matches: 0, - successful: 0, - objects: [], - }; - }), - batchObjects: (): Promise => - new Promise((r) => { - setTimeout(r, 2000); - }).then(() => { - return { - took: 5000, - errors: [], - }; - }), - batchReferences: vitest.fn(), - batchStream: vitest.fn(), - }; - const healthMockImpl: HealthServiceImplementation = { - check: (request: HealthCheckRequest): Promise => - Promise.resolve(HealthCheckResponse.create({ status: HealthCheckResponse_ServingStatus.SERVING })), - watch: vitest.fn(), - }; - - const grpcApp = createServer(); - grpcApp.add(WeaviateDefinition, weaviateMockImpl); - grpcApp.add(HealthDefinition, healthMockImpl); - - return grpcApp; -}; - -const makeMockServers = async (weaviateVersion: string, httpPort: number, grpcAddress: string) => { - const rest = makeRestApp(weaviateVersion); - const grpc = makeGrpcApp(); - const server = await rest.listen(httpPort); - await grpc.listen(grpcAddress); - return { rest: server, grpc, express }; -}; - -describe('Mock testing of timeout behaviour', () => { - let servers: { - rest: HttpServer; - grpc: GrpcServer; - }; - let client: WeaviateClient; - let collection: Collection; - - beforeAll(async () => { - servers = await makeMockServers('1.29.0', 8954, 'localhost:8955'); - client = await weaviate.connectToLocal({ port: 8954, grpcPort: 8955, timeout: { query: 1, insert: 1 } }); - collection = client.collections.use(COLLECTION_NAME); - }); - - it('should timeout when calling REST GET v1/schema', () => - expect(collection.config.get()).rejects.toThrow(WeaviateRequestTimeoutError)); - - it('should timeout when calling gRPC TenantsGet', () => - expect(collection.tenants.get()).rejects.toThrow(WeaviateRequestTimeoutError)); - - it('should timeout when calling gRPC Search', () => - expect(collection.query.fetchObjects()).rejects.toThrow(WeaviateRequestTimeoutError)); - - it('should timeout when calling gRPC BatchObjects', () => - expect(collection.data.insertMany([{ thing: 'what' }])).rejects.toThrow(WeaviateRequestTimeoutError)); - - it('should timeout when calling gRPC BatchDelete', () => - expect(collection.data.deleteMany(collection.filter.byId().equal('123' as any))).rejects.toThrow( - WeaviateRequestTimeoutError - )); - it('should timeout when calling gRPC Aggregate', () => - expect(collection.aggregate.overAll()).rejects.toThrow(WeaviateRequestTimeoutError)); - - afterAll(() => Promise.all([servers.rest.close(), servers.grpc.shutdown()])); -}); - -describe('client version header', () => { - const app = express(); - let lastRequest: any = null; - app.use((req, res, next) => { - lastRequest = req; - next(); - }); - app.get('/v1/test', (req, res) => res.json({ message: 'ok' })); - const port = 8960; - const server = app.listen(port); - beforeAll(() => server); - afterAll(() => server.close()); - it('should send the correct X-Weaviate-Client header', async () => { - const conn = new Connection({ - scheme: 'http', - host: 'localhost:' + port, - }); - // Make a request that triggers an HTTP call - await conn.http.get('/test'); - expect(lastRequest.headers['x-weaviate-client']).toBe( - `weaviate-client-typescript/${WEAVIATE_CLIENT_VERSION}` - ); - }); -}); diff --git a/packages/test/src/data/mock.test.ts b/packages/test/src/data/mock.test.ts index e0201f15..d8350706 100644 --- a/packages/test/src/data/mock.test.ts +++ b/packages/test/src/data/mock.test.ts @@ -4,45 +4,41 @@ import { ServerError, Status } from 'nice-grpc-common'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; import { listen, makeGrpcApp, makeRestApp } from '../mocks.js'; -// describe('Mock testing of batch streaming when the server errors', () => { -// let closeFn: () => Promise; - -// const serverErr = new ServerError(Status.INTERNAL, 'Simulated server error'); -// const clientErr = new WeaviateBatchStreamError( -// '/weaviate.v1.Weaviate/BatchStream INTERNAL: Simulated server error' -// ); - -// beforeAll(async () => { -// const restApp = makeRestApp('1.36.0'); -// const grpcApp = makeGrpcApp({ -// async *batchStream(request: any, context: any) { -// yield { started: {} }; -// throw serverErr; -// }, -// }); -// const { close } = await listen(restApp, grpcApp, 8976, 'localhost:8977'); -// closeFn = close; -// }); - -// afterAll(() => closeFn()); - -// it('should handle server errors in batch streaming', async () => { -// const client = await weaviate.connectToLocal({ port: 8976, grpcPort: 8977 }); -// const batching = await client.batch.stream(); - -// // give time for the server to throw the expected error -// await new Promise((resolve) => setTimeout(resolve, 1000)); - -// // errors are thrown at the creation of the promise and not as part of the promise rejection -// expect(() => batching.addObject({ collection: 'Test Object' })).toThrowError(clientErr); - -// // verify that error is still thrown if the promise is awaited instead -// // eslint-disable-next-line no-return-await -// await expect(async () => await batching.addObject({ collection: 'Test Object' })).rejects.toThrow( -// clientErr -// ); - -// // ensure that error is thrown when stopping the batch too in case users aren't calling .addObject -// expect(() => batching.stop()).toThrowError(clientErr); -// }); -// }); +describe('Mock testing of batch streaming when the server errors', () => { + let closeFn: () => Promise; + + const serverErr = new ServerError(Status.INTERNAL, 'Simulated server error'); + const clientErr = new WeaviateBatchStreamError( + '/weaviate.v1.Weaviate/BatchStream INTERNAL: Simulated server error' + ); + + beforeAll(async () => { + const restApp = makeRestApp('1.36.0'); + const grpcApp = makeGrpcApp({ + async *batchStream(request: any, context: any) { + yield { started: {} }; + throw serverErr; + }, + }); + const { close } = await listen(restApp, grpcApp, 8976, 'localhost:8977'); + closeFn = close; + }); + + afterAll(() => closeFn()); + + it.skip('should handle server errors in batch streaming', async () => { + // const client = await weaviate.connectToLocal({ port: 8976, grpcPort: 8977 }); + // const batching = await client.batch.stream(); + // // give time for the server to throw the expected error + // await new Promise((resolve) => setTimeout(resolve, 1000)); + // // errors are thrown at the creation of the promise and not as part of the promise rejection + // expect(() => batching.addObject({ collection: 'Test Object' })).toThrowError(clientErr); + // // verify that error is still thrown if the promise is awaited instead + // // eslint-disable-next-line no-return-await + // await expect(async () => await batching.addObject({ collection: 'Test Object' })).rejects.toThrow( + // clientErr + // ); + // // ensure that error is thrown when stopping the batch too in case users aren't calling .addObject + // expect(() => batching.stop()).toThrowError(clientErr); + }); +}); diff --git a/packages/core/src/data/unit.test.ts b/packages/test/src/data/unit.test.ts similarity index 97% rename from packages/core/src/data/unit.test.ts rename to packages/test/src/data/unit.test.ts index 99bec5ee..e8d79241 100644 --- a/packages/core/src/data/unit.test.ts +++ b/packages/test/src/data/unit.test.ts @@ -1,6 +1,6 @@ /* eslint-disable no-await-in-loop */ import { describe, expect, it } from 'vitest'; -import { Queue } from './batch.js'; +import { Queue } from '@weaviate/core/data/batch.js'; describe('Unit testing of the Queue class', () => { it('should push and pull items in FIFO order', async () => { diff --git a/packages/core/src/filters/unit.test.ts b/packages/test/src/filters/unit.test.ts similarity index 98% rename from packages/core/src/filters/unit.test.ts rename to packages/test/src/filters/unit.test.ts index c46c0d95..38d68b6b 100644 --- a/packages/core/src/filters/unit.test.ts +++ b/packages/test/src/filters/unit.test.ts @@ -1,9 +1,9 @@ import { describe, expect, it } from 'vitest'; -import { WhereFilter } from '../openapi/types.js'; -import { CrossReference } from '../references/index.js'; -import { Serialize } from '../serialize/index.js'; -import maker, { FilterValue, Filters } from './index.js'; -import { GeoRangeFilter } from './types.js'; +import { WhereFilter } from '@weaviate/core/src/openapi/types.js'; +import { CrossReference } from '@weaviate/core/src/references/index.js'; +import { Serialize } from '@weaviate/core/src/serialize/index.js'; +import maker, { FilterValue, Filters } from '@weaviate/core/src/filters/index.js'; +import { GeoRangeFilter } from '@weaviate/core/src/filters/types.js'; describe('Unit testing of filters', () => { type Person = { diff --git a/packages/test/src/tenants/integration.test.ts b/packages/test/src/tenants/integration.test.ts index 37375085..f4eb7f05 100644 --- a/packages/test/src/tenants/integration.test.ts +++ b/packages/test/src/tenants/integration.test.ts @@ -8,12 +8,12 @@ describe('Testing of the collection.tenants methods', () => { let collection: Collection; const collectionName = 'TestCollectionTenants'; - afterAll(() => { - return client.collections.delete(collectionName).catch((err) => { + afterAll(() => + client.collections.delete(collectionName).catch((err) => { console.error(err); throw err; - }); - }); + }) + ); beforeAll(async () => { client = await weaviate.connectToLocal(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 15dcab22..a99d21f1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -69,8 +69,8 @@ importers: specifier: ^5.3.2 version: 5.3.2 nice-grpc-common: - specifier: ^2.0.2 - version: 2.0.2 + specifier: ^2.0.3 + version: 2.0.3 uuid: specifier: ^14.0.0 version: 14.0.1 @@ -100,10 +100,10 @@ importers: specifier: workspace:^1.0.0 version: link:../core nice-grpc: - specifier: ^2.1.14 + specifier: ^2.1.16 version: 2.1.16 nice-grpc-client-middleware-retry: - specifier: ^3.1.13 + specifier: ^3.1.15 version: 3.1.15 devDependencies: '@types/node': @@ -145,12 +145,18 @@ importers: '@weaviate/node': specifier: workspace:^1.0.0 version: link:../node + abort-controller-x: + specifier: ^0.5.0 + version: 0.5.0 express: specifier: ^4.21.2 version: 4.21.2 nice-grpc: specifier: ^2.1.12 version: 2.1.12 + nice-grpc-common: + specifier: ^2.0.3 + version: 2.0.3 uuid: specifier: ^9.0.1 version: 9.0.1 @@ -1836,9 +1842,6 @@ packages: nice-grpc-client-middleware-retry@3.1.15: resolution: {integrity: sha512-fXfNNdtjCQzc3O/w3WsK1AOU+xdE1V7FCm4FEQWS/UUVsV1616S2oryvWqsZAF8aOvuMir8lFtNmgH3DeP+PBg==} - nice-grpc-common@2.0.2: - resolution: {integrity: sha512-7RNWbls5kAL1QVUOXvBsv1uO0wPQK3lHv+cY1gwkTzirnG1Nop4cBJZubpgziNbaVc/bl9QJcyvsf/NQxa3rjQ==} - nice-grpc-common@2.0.3: resolution: {integrity: sha512-MEhnD3JMah0mgyivpb9hpRDbOBuXBxI/TVO+OK1h6rC97WM42HsPMR+zzRNQ0C5BqYJTw1nyWiQRD0DucO+pjQ==} @@ -2434,6 +2437,7 @@ packages: uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true vary@1.1.2: @@ -4290,10 +4294,6 @@ snapshots: abort-controller-x: 0.5.0 nice-grpc-common: 2.0.3 - nice-grpc-common@2.0.2: - dependencies: - ts-error: 1.0.6 - nice-grpc-common@2.0.3: dependencies: ts-error: 1.0.6 @@ -4311,7 +4311,7 @@ snapshots: dependencies: '@grpc/grpc-js': 1.13.4 abort-controller-x: 0.4.3 - nice-grpc-common: 2.0.2 + nice-grpc-common: 2.0.3 nice-grpc@2.1.16: dependencies: From e3c57f52542f8c8eb9d2a6fb094cdde507f88114 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Wed, 24 Jun 2026 13:59:49 +0100 Subject: [PATCH 23/62] Fix more tests --- packages/test/package.json | 2 +- .../test/src/aggregate/integration.test.ts | 9 +- packages/test/src/filters/unit.test.ts | 10 +- pnpm-lock.yaml | 158 +++++++++++------- 4 files changed, 105 insertions(+), 74 deletions(-) diff --git a/packages/test/package.json b/packages/test/package.json index 49b4f715..a30a1fc0 100644 --- a/packages/test/package.json +++ b/packages/test/package.json @@ -9,7 +9,7 @@ "@curveball/bodyparser": "0.5.0", "@curveball/core": "^1.0.2", "@curveball/kernel": "^1.0.0", - "@testcontainers/weaviate": "^10.28.0", + "@testcontainers/weaviate": "^11.14.0", "@types/express": "^4.17.23", "@types/uuid": "^9.0.8", "@weaviate/core": "workspace:^1.0.0", diff --git a/packages/test/src/aggregate/integration.test.ts b/packages/test/src/aggregate/integration.test.ts index de10def4..cba9690c 100644 --- a/packages/test/src/aggregate/integration.test.ts +++ b/packages/test/src/aggregate/integration.test.ts @@ -31,8 +31,8 @@ describe('Testing of the collection.aggregate methods', () => { const date2 = '2023-01-02T00:00:00Z'; const dateMid = '2023-01-01T12:00:00Z'; - afterAll(async () => { - return (await client).collections.delete(collectionName).catch((err) => { + afterAll(() => { + return client.collections.delete(collectionName).catch((err) => { console.error(err); throw err; }); @@ -94,7 +94,7 @@ describe('Testing of the collection.aggregate methods', () => { vectorIndexConfig: weaviate.configure.vectorIndex.hnsw({ maxConnections: 64 }), }), }) - .then(async () => { + .then(() => { const data: DataObject[] = []; for (let i = 0; i < 100; i++) { data.push({ @@ -112,8 +112,7 @@ describe('Testing of the collection.aggregate methods', () => { }, }); } - const res = (await collection).data.insertMany(data); - return res; + return collection.data.insertMany(data); }); // .then(async (res) => { // const uuid1 = res.uuids[0]; diff --git a/packages/test/src/filters/unit.test.ts b/packages/test/src/filters/unit.test.ts index 38d68b6b..f3e1ad57 100644 --- a/packages/test/src/filters/unit.test.ts +++ b/packages/test/src/filters/unit.test.ts @@ -1,9 +1,9 @@ import { describe, expect, it } from 'vitest'; -import { WhereFilter } from '@weaviate/core/src/openapi/types.js'; -import { CrossReference } from '@weaviate/core/src/references/index.js'; -import { Serialize } from '@weaviate/core/src/serialize/index.js'; -import maker, { FilterValue, Filters } from '@weaviate/core/src/filters/index.js'; -import { GeoRangeFilter } from '@weaviate/core/src/filters/types.js'; +import { WhereFilter } from '@weaviate/core/openapi/types.js'; +import { CrossReference } from '@weaviate/core/references'; +import { Serialize } from '@weaviate/core/serialize'; +import maker, { FilterValue, Filters } from '@weaviate/core/filters'; +import { GeoRangeFilter } from '@weaviate/core/filters/types.js'; describe('Unit testing of filters', () => { type Person = { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a99d21f1..6ee210b2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -131,8 +131,8 @@ importers: specifier: ^1.0.0 version: 1.0.0 '@testcontainers/weaviate': - specifier: ^10.28.0 - version: 10.28.0 + specifier: ^11.14.0 + version: 11.14.0 '@types/express': specifier: ^4.17.23 version: 4.17.23 @@ -425,6 +425,9 @@ packages: '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + '@kwsites/file-exists@1.1.1': + resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} + '@mapbox/node-pre-gyp@1.0.11': resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true @@ -605,8 +608,8 @@ packages: '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@testcontainers/weaviate@10.28.0': - resolution: {integrity: sha512-SR4JWacoJwaoD6P6O7CwInG/xjDfIDTUqtunxJPzent4JiDF86jpC1HjLGhp0dciemJWoa1hRR5/REgIcAyBow==} + '@testcontainers/weaviate@11.14.0': + resolution: {integrity: sha512-Nt4cqZaq7FB1f1P3QKHrhbP2NkOFrN33p7ZwZxdaBPzCVHHhe2Rffsm3+sU+vgJuRiPcWxr87QS22cPVsDZ28w==} '@types/body-parser@1.19.6': resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} @@ -623,8 +626,8 @@ packages: '@types/docker-modem@3.0.6': resolution: {integrity: sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==} - '@types/dockerode@3.3.41': - resolution: {integrity: sha512-5kOi6bcnEjqfJ68ZNV/bBvSMLNIucc0XbRmBO4hg5OoFCoP99eSRcbMysjkzV7ZxQEmmc/zMnv4A7odwuKFzDA==} + '@types/dockerode@4.0.1': + resolution: {integrity: sha512-cmUpB+dPN955PxBEuXE3f6lKO1hHiIGYJA46IVF3BJpNsZGvtBDcRnlrHYHtOH/B6vtDOyl2kZ2ShAu3mgc27Q==} '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -1141,6 +1144,15 @@ packages: supports-color: optional: true + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} @@ -1172,16 +1184,16 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - docker-compose@0.24.8: - resolution: {integrity: sha512-plizRs/Vf15H+GCVxq2EUvyPK7ei9b/cVesHvjnX4xaXjM9spHe2Ytq0BitndFgvTJ3E3NljPNUEl7BAN43iZw==} + docker-compose@1.4.2: + resolution: {integrity: sha512-rPHigTKGaEHpkUmfd69QgaOp+Os5vGJwG/Ry8lcr8W/382AmI+z/D7qoa9BybKIkqNppaIbs8RYeHSevdQjWww==} engines: {node: '>= 6.0.0'} - docker-modem@5.0.6: - resolution: {integrity: sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==} + docker-modem@5.0.7: + resolution: {integrity: sha512-XJgGhoR/CLpqshm4d3L7rzH6t8NgDFUIIpztYlLHIApeJjMZKYJMz2zxPsYxnejq5h3ELYSw/RBsi3t5h7gNTA==} engines: {node: '>= 8.0'} - dockerode@4.0.7: - resolution: {integrity: sha512-R+rgrSRTRdU5mH14PZTCPZtW/zw3HDWNTS/1ZAQpL/5Upe/ye5K9WQkIysu4wBoiMwKynsz0a8qWuGsHgEvSAA==} + dockerode@4.0.12: + resolution: {integrity: sha512-/bCZd6KlGcjZO8Buqmi/vXuqEGVEZ0PNjx/biBNqJD3MhK9DmdiAuKxqfNhflgDESDIiBz3qF+0e55+CpnrUcw==} engines: {node: '>= 8.0'} doctrine@3.0.0: @@ -1446,8 +1458,8 @@ packages: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} - get-port@7.1.0: - resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} + get-port@7.2.0: + resolution: {integrity: sha512-afP4W205ONCuMoPBqcR6PSXnzX35KTcJygfJfcp+QY+uwm3p20p1YczWXhlICIzGMCxYBQcySEcOgsJcrkyobg==} engines: {node: '>=16'} get-proto@1.0.1: @@ -1468,6 +1480,7 @@ packages: glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@7.2.3: @@ -1815,6 +1828,11 @@ packages: engines: {node: '>=10'} hasBin: true + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -2029,9 +2047,9 @@ packages: proper-lockfile@4.1.2: resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} - properties-reader@2.3.0: - resolution: {integrity: sha512-z597WicA7nDZxK12kZqHr2TcvwNU1GCfA5UwfDY/HDp3hXPoPlb5rlEx9bwGTiJnc0OqbBTkU975jDToth8Gxw==} - engines: {node: '>=14'} + properties-reader@3.0.1: + resolution: {integrity: sha512-WPn+h9RGEExOKdu4bsF4HksG/uzd3cFq3MFtq8PsFeExPse5Ha/VOjQNyHhjboBFwGXGev6muJYTSPAOkROq2g==} + engines: {node: '>=18'} protobufjs@7.5.3: resolution: {integrity: sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==} @@ -2266,11 +2284,11 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - tar-fs@2.1.3: - resolution: {integrity: sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==} + tar-fs@2.1.4: + resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} - tar-fs@3.0.10: - resolution: {integrity: sha512-C1SwlQGNLe/jPNqapK8epDsXME7CAJR5RL3GcE6KWx1d9OUByzoHVcbu1VPI8tevg9H8Alae0AApHHFGzrD5zA==} + tar-fs@3.1.2: + resolution: {integrity: sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw==} tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} @@ -2283,8 +2301,8 @@ packages: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} - testcontainers@10.28.0: - resolution: {integrity: sha512-1fKrRRCsgAQNkarjHCMKzBKXSJFmzNTiTbhb5E/j5hflRXChEtHvkefjaHlgkNUjfw92/Dq8LTgwQn6RDBFbMg==} + testcontainers@11.14.0: + resolution: {integrity: sha512-r9pniwv/iwzyHaI7gwAvAm4Y+IvjJg3vBWdjrUCaDMc2AXIr4jKbq7jJO18Mw2ybs73pZy1Aj7p/4RVBGMRWjg==} text-decoder@1.2.3: resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} @@ -2329,8 +2347,8 @@ packages: resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} engines: {node: '>=14.0.0'} - tmp@0.2.3: - resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + tmp@0.2.7: + resolution: {integrity: sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==} engines: {node: '>=14.14'} to-regex-range@5.0.1: @@ -2412,6 +2430,10 @@ packages: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} engines: {node: '>=14.0'} + undici@7.28.0: + resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==} + engines: {node: '>=20.18.1'} + unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} @@ -2606,11 +2628,6 @@ packages: resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} engines: {node: '>= 14'} - yaml@2.8.0: - resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} - engines: {node: '>= 14.6'} - hasBin: true - yaml@2.9.0: resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} engines: {node: '>= 14.6'} @@ -2822,6 +2839,12 @@ snapshots: '@js-sdsl/ordered-map@4.4.2': {} + '@kwsites/file-exists@1.1.1': + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + '@mapbox/node-pre-gyp@1.0.11': dependencies: detect-libc: 2.0.4 @@ -2967,9 +2990,9 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@testcontainers/weaviate@10.28.0': + '@testcontainers/weaviate@11.14.0': dependencies: - testcontainers: 10.28.0 + testcontainers: 11.14.0 transitivePeerDependencies: - bare-buffer - supports-color @@ -2991,13 +3014,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 18.19.112 + '@types/node': 25.9.4 '@types/ssh2': 1.15.5 - '@types/dockerode@3.3.41': + '@types/dockerode@4.0.1': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 18.19.112 + '@types/node': 25.9.4 '@types/ssh2': 1.15.5 '@types/estree@1.0.8': {} @@ -3053,11 +3076,11 @@ snapshots: '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 18.19.112 + '@types/node': 25.9.4 '@types/ssh2@0.5.52': dependencies: - '@types/node': 18.19.112 + '@types/node': 25.9.4 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.5': @@ -3559,6 +3582,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.4.3: + dependencies: + ms: 2.1.3 + deep-eql@5.0.2: {} deep-is@0.1.4: {} @@ -3577,27 +3604,27 @@ snapshots: dependencies: path-type: 4.0.0 - docker-compose@0.24.8: + docker-compose@1.4.2: dependencies: - yaml: 2.8.0 + yaml: 2.9.0 - docker-modem@5.0.6: + docker-modem@5.0.7: dependencies: - debug: 4.4.1 + debug: 4.4.3 readable-stream: 3.6.2 split-ca: 1.0.1 ssh2: 1.16.0 transitivePeerDependencies: - supports-color - dockerode@4.0.7: + dockerode@4.0.12: dependencies: '@balena/dockerignore': 1.0.2 - '@grpc/grpc-js': 1.13.4 + '@grpc/grpc-js': 1.14.4 '@grpc/proto-loader': 0.7.15 - docker-modem: 5.0.6 + docker-modem: 5.0.7 protobufjs: 7.6.4 - tar-fs: 2.1.3 + tar-fs: 2.1.4 uuid: 10.0.0 transitivePeerDependencies: - supports-color @@ -3934,7 +3961,7 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 - get-port@7.1.0: {} + get-port@7.2.0: {} get-proto@1.0.1: dependencies: @@ -4274,6 +4301,8 @@ snapshots: mkdirp@1.0.4: {} + mkdirp@3.0.1: {} + ms@2.0.0: {} ms@2.1.2: {} @@ -4456,9 +4485,12 @@ snapshots: retry: 0.12.0 signal-exit: 3.0.7 - properties-reader@2.3.0: + properties-reader@3.0.1: dependencies: - mkdirp: 1.0.4 + '@kwsites/file-exists': 1.1.1 + mkdirp: 3.0.1 + transitivePeerDependencies: + - supports-color protobufjs@7.5.3: dependencies: @@ -4757,14 +4789,14 @@ snapshots: dependencies: has-flag: 4.0.0 - tar-fs@2.1.3: + tar-fs@2.1.4: dependencies: chownr: 1.1.4 mkdirp-classic: 0.5.3 pump: 3.0.3 tar-stream: 2.2.0 - tar-fs@3.0.10: + tar-fs@3.1.2: dependencies: pump: 3.0.3 tar-stream: 3.1.7 @@ -4797,23 +4829,23 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - testcontainers@10.28.0: + testcontainers@11.14.0: dependencies: '@balena/dockerignore': 1.0.2 - '@types/dockerode': 3.3.41 + '@types/dockerode': 4.0.1 archiver: 7.0.1 async-lock: 1.4.1 byline: 5.0.0 - debug: 4.4.1 - docker-compose: 0.24.8 - dockerode: 4.0.7 - get-port: 7.1.0 + debug: 4.4.3 + docker-compose: 1.4.2 + dockerode: 4.0.12 + get-port: 7.2.0 proper-lockfile: 4.1.2 - properties-reader: 2.3.0 + properties-reader: 3.0.1 ssh-remote-port-forward: 1.0.4 - tar-fs: 3.0.10 - tmp: 0.2.3 - undici: 5.29.0 + tar-fs: 3.1.2 + tmp: 0.2.7 + undici: 7.28.0 transitivePeerDependencies: - bare-buffer - supports-color @@ -4853,7 +4885,7 @@ snapshots: tinyspy@4.0.3: {} - tmp@0.2.3: {} + tmp@0.2.7: {} to-regex-range@5.0.1: dependencies: @@ -4925,6 +4957,8 @@ snapshots: dependencies: '@fastify/busboy': 2.1.1 + undici@7.28.0: {} + unpipe@1.0.0: {} uri-js@4.4.1: @@ -5088,8 +5122,6 @@ snapshots: yaml@2.3.1: {} - yaml@2.8.0: {} - yaml@2.9.0: {} yargs-parser@21.1.1: {} From 1ff4dbadeb1a87e0166b5c1bb819fee21109f146 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Wed, 24 Jun 2026 14:16:08 +0100 Subject: [PATCH 24/62] Change tests to delete collections specific to theirs rather than all in the schema --- .../test/src/aggregate/integration.test.ts | 4 +++ packages/test/src/backup/integration.test.ts | 9 ++++++- .../test/src/collections/integration.test.ts | 27 ++++++++++++------- packages/test/src/config/integration.test.ts | 26 +++++++++++++++++- packages/test/src/data/integration.test.ts | 4 ++- 5 files changed, 58 insertions(+), 12 deletions(-) diff --git a/packages/test/src/aggregate/integration.test.ts b/packages/test/src/aggregate/integration.test.ts index cba9690c..d34198ff 100644 --- a/packages/test/src/aggregate/integration.test.ts +++ b/packages/test/src/aggregate/integration.test.ts @@ -113,6 +113,10 @@ describe('Testing of the collection.aggregate methods', () => { }); } return collection.data.insertMany(data); + }) + .then((res) => { + Object.values(res.errors).map((e) => console.error(e.message)); + expect(res.hasErrors).toBe(false); }); // .then(async (res) => { // const uuid1 = res.uuids[0]; diff --git a/packages/test/src/backup/integration.test.ts b/packages/test/src/backup/integration.test.ts index 11d31308..39f8656d 100644 --- a/packages/test/src/backup/integration.test.ts +++ b/packages/test/src/backup/integration.test.ts @@ -25,7 +25,14 @@ describe('Integration testing of backups', () => { ) ); - afterAll(() => clientPromise.then((client) => client.collections.deleteAll())); + afterAll(() => + clientPromise.then((client) => + Promise.all([ + client.collections.delete('TestBackupClient'), + client.collections.delete('TestBackupCollection'), + ]) + ) + ); const testClientWaitForCompletion = async (client: WeaviateClient) => { const res = await client.backup.create({ diff --git a/packages/test/src/collections/integration.test.ts b/packages/test/src/collections/integration.test.ts index 0bf8af18..50fa6a20 100644 --- a/packages/test/src/collections/integration.test.ts +++ b/packages/test/src/collections/integration.test.ts @@ -37,16 +37,13 @@ describe('Testing of the collections.create method', () => { : 'hnsw'; }); - afterAll(() => - Promise.all([ - cluster.collections.deleteAll(), - contextionary.collections.deleteAll(), - openai.collections.deleteAll(), - ]) - ); + const afters: (() => Promise)[] = []; + + afterAll(() => Promise.all(afters)); it('should be able to create a simple collection with a generic', async () => { const collectionName = 'TestCollectionSimpleGeneric'; + afters.push(() => contextionary.collections.delete(collectionName)); type TestCollectionSimple = { testProp: string; }; @@ -72,6 +69,7 @@ describe('Testing of the collections.create method', () => { it('should be able to create a simple collection without a generic', async () => { const collectionName = 'TestCollectionSimpleNonGeneric'; + afters.push(() => contextionary.collections.delete(collectionName)); const response = await contextionary.collections .create({ name: collectionName, @@ -130,9 +128,11 @@ describe('Testing of the collections.create method', () => { }); it('should be able to create a collection with one fully customised int property', () => { + const collectionName = 'TestCollectionIntProperty'; + afters.push(() => contextionary.collections.delete(collectionName)); return contextionary.collections .create({ - name: 'TestCollectionIntProperty', + name: collectionName, properties: [ { name: 'int', @@ -167,6 +167,7 @@ describe('Testing of the collections.create method', () => { it('should be able to create a simple collection without a generic and no properties', async () => { const collectionName = 'TestCollectionSimpleNonGenericNoProperties'; + afters.push(() => contextionary.collections.delete(collectionName)); const response = await contextionary.collections .create({ name: collectionName, @@ -195,6 +196,7 @@ describe('Testing of the collections.create method', () => { it('should be able to create a simple collection without a generic using a schema var', async () => { const collectionName = 'TestCollectionSimpleNonGenericVar'; + afters.push(() => contextionary.collections.delete(collectionName)); const schema = { name: collectionName, properties: [ @@ -219,6 +221,7 @@ describe('Testing of the collections.create method', () => { it('should be able to create a simple collection with a generic using a schema var with const', async () => { const collectionName = 'TestCollectionSimpleGenericVarConst'; + afters.push(() => contextionary.collections.delete(collectionName)); type TestCollectionSimple = { testProp: string; }; @@ -246,6 +249,7 @@ describe('Testing of the collections.create method', () => { it('should be able to create a simple collection with a generic using a schema var with type', async () => { const collectionName = 'TestCollectionSimpleGenericVarType'; + afters.push(() => contextionary.collections.delete(collectionName)); type TestCollectionSimple = { testProp: string; }; @@ -273,6 +277,7 @@ describe('Testing of the collections.create method', () => { it('should be able to create a nested collection', async () => { const collectionName = 'TestCollectionNested'; + afters.push(() => contextionary.collections.delete(collectionName)); type TestCollectionNested = { testProp: { nestedProp: string; @@ -309,7 +314,7 @@ describe('Testing of the collections.create method', () => { it('should be able to create a collection with generic properties', () => { const collectionName = 'TestCollectionGenericProperties'; - + afters.push(() => cluster.collections.delete(collectionName)); type TestCollectionGenericProperties = { text: string; texts: string[]; @@ -413,6 +418,7 @@ describe('Testing of the collections.create method', () => { it('should be able to create a complex collection', async () => { const collectionName = 'TestCollectionSimple'; + afters.push(() => cluster.collections.delete(collectionName)); const response = await cluster.collections .create({ name: collectionName, @@ -633,6 +639,7 @@ describe('Testing of the collections.create method', () => { it('should be able to create a collection with the contextionary vectorizer using configure.vectors', async () => { const collectionName = 'ThisOneIsATest'; // must include words in contextionary's vocabulary to pass since vectorizeCollectionName will be true + afters.push(() => contextionary.collections.delete(collectionName)); const response = await contextionary.collections .create({ name: collectionName, @@ -667,6 +674,7 @@ describe('Testing of the collections.create method', () => { it('should be able to create a collection with an openai vectorizer with configure.vectors', async () => { const collectionName = 'TestCollectionOpenAIVectorizerWithConfigureVectorizer'; + afters.push(() => openai.collections.delete(collectionName)); const response = await openai.collections .create({ name: collectionName, @@ -701,6 +709,7 @@ describe('Testing of the collections.create method', () => { it('should be able to create a collection with the openai generative with configure.Generative', async () => { const collectionName = 'TestCollectionOpenAIGenerativeWithConfigureGenerative'; + afters.push(() => openai.collections.delete(collectionName)); const response = await openai.collections .create({ name: collectionName, diff --git a/packages/test/src/config/integration.test.ts b/packages/test/src/config/integration.test.ts index 0347cb8e..fdda4d9e 100644 --- a/packages/test/src/config/integration.test.ts +++ b/packages/test/src/config/integration.test.ts @@ -22,10 +22,13 @@ describe('Testing of the collection.config namespace', () => { client = await weaviate.connectToLocal(); }); - afterAll(() => client.collections.deleteAll()); + const afters: (() => Promise)[] = []; + + afterAll(() => Promise.all(afters)); it('should be able to get the config of a collection without generics', async () => { const collectionName = 'TestCollectionConfigGetWithGenerics'; + afters.push(() => client.collections.delete(collectionName)); type TestCollectionConfigGet = { testProp: string; }; @@ -67,6 +70,7 @@ describe('Testing of the collection.config namespace', () => { it('should be able get the config of a collection with generics', async () => { const collectionName = 'TestCollectionConfigGetWithoutGenerics'; + afters.push(() => client.collections.delete(collectionName)); type TestCollectionConfigGet = { testProp: string; }; @@ -108,6 +112,7 @@ describe('Testing of the collection.config namespace', () => { it('should be able to get a collection with named vectors', async () => { const collectionName = 'TestCollectionConfigGetVectors'; + afters.push(() => client.collections.delete(collectionName)); const query = () => client.collections.create({ name: collectionName, @@ -161,6 +166,7 @@ describe('Testing of the collection.config namespace', () => { it('should be able to get the config of a collection with hnsw-pq', async () => { const collectionName = 'TestCollectionConfigGetHNSWPlusPQ'; + afters.push(() => client.collections.delete(collectionName)); const collection = await client.collections.create({ name: collectionName, vectorizers: weaviate.configure.vectors.none({ @@ -185,6 +191,7 @@ describe('Testing of the collection.config namespace', () => { requireAtLeast(1, 32, 0).it('should be able to get the config of a collection with hnsw-rq', async () => { const collectionName = 'TestCollectionConfigGetHNSWPlusRQ'; + afters.push(() => client.collections.delete(collectionName)); const collection = await client.collections.create({ name: collectionName, vectorizers: weaviate.configure.vectorizer.none({ @@ -267,6 +274,7 @@ describe('Testing of the collection.config namespace', () => { requireAtLeast(1, 36, 0).it('should create a collection with hfresh index', async () => { const collectionName = 'TestCollectionConfigGetHFresh'; await client.collections.delete(collectionName); + afters.push(() => client.collections.delete(collectionName)); const collection = await client.collections.create({ name: collectionName, vectorizers: weaviate.configure.vectorizer.none({ @@ -318,6 +326,7 @@ describe('Testing of the collection.config namespace', () => { requireAtLeast(1, 26, 0).it('should be able to get the config of a collection with hnsw-sq', async () => { const collectionName = 'TestCollectionConfigGetHNSWPlusSQ'; + afters.push(() => client.collections.delete(collectionName)); const collection = await client.collections.create({ name: collectionName, vectorizers: weaviate.configure.vectors.none({ @@ -342,6 +351,7 @@ describe('Testing of the collection.config namespace', () => { it('should be able to get the config of a collection with flat-bq', async () => { const collectionName = 'TestCollectionConfigGetFlatPlusBQ'; + afters.push(() => client.collections.delete(collectionName)); const collection = await client.collections.create({ name: collectionName, vectorizers: weaviate.configure.vectors.none({ @@ -488,6 +498,7 @@ describe('Testing of the collection.config namespace', () => { it('should be able to add a property to a collection', async () => { const collectionName = 'TestCollectionConfigAddProperty'; + afters.push(() => client.collections.delete(collectionName)); const collection = await client.collections.create({ name: collectionName, vectorizers: weaviate.configure.vectors.none(), @@ -516,6 +527,7 @@ describe('Testing of the collection.config namespace', () => { it('should be able to add a reference to a collection', async () => { const collectionName = 'TestCollectionConfigAddReference' as const; + afters.push(() => client.collections.delete(collectionName)); const collection = await client.collections.create({ name: collectionName, vectorizers: weaviate.configure.vectors.none(), @@ -538,6 +550,7 @@ describe('Testing of the collection.config namespace', () => { requireAtLeast(1, 31, 0).describe('Mutable named vectors', () => { it('should be able to add named vectors to a collection', async () => { const collectionName = 'TestCollectionConfigAddVector' as const; + afters.push(() => client.collections.delete(collectionName)); const collection = await client.collections.create({ name: collectionName, vectorizers: weaviate.configure.vectors.none(), @@ -633,6 +646,7 @@ describe('Testing of the collection.config namespace', () => { it('should be able update the config of a collection', async () => { const collectionName = 'TestCollectionConfigUpdate'; + afters.push(() => client.collections.delete(collectionName)); const collection = await client.collections.create({ name: collectionName, properties: [ @@ -733,6 +747,7 @@ describe('Testing of the collection.config namespace', () => { it('should be able to create and get a collection with multi-tenancy enabled', async () => { const collectionName = 'TestCollectionConfigCreateGetMultiTenancy'; + afters.push(() => client.collections.delete(collectionName)); const collection = await client.collections.create({ name: collectionName, multiTenancy: weaviate.configure.multiTenancy({ @@ -754,6 +769,7 @@ describe('Testing of the collection.config namespace', () => { it('should be able to create and update a collection with multi-tenancy enabled', async () => { const collectionName = 'TestCollectionConfigCreateUpdateMultiTenancy'; + afters.push(() => client.collections.delete(collectionName)); const collection = await client.collections.create({ name: collectionName, multiTenancy: weaviate.configure.multiTenancy(), @@ -898,6 +914,7 @@ describe('Testing of the collection.config namespace', () => { 'should be able to create and get a multi-vector collection with encoding', async () => { const collectionName = 'TestCollectionConfigCreateWithMuveraEncoding'; + afters.push(() => client.collections.delete(collectionName)); const collection = await client.collections.create({ name: collectionName, vectorizers: weaviate.configure.vectorizer.none({ @@ -923,6 +940,7 @@ describe('Testing of the collection.config namespace', () => { 'should be able to create and get a multi-vector collection without encoding', async () => { const collectionName = 'TestCollectionConfigCreateWithoutMuveraEncoding'; + afters.push(() => client.collections.delete(collectionName)); const collection = await client.collections.create({ name: collectionName, vectorizers: weaviate.configure.vectorizer.none({ @@ -944,6 +962,7 @@ describe('Testing of the collection.config namespace', () => { requireAtLeast(1, 32, 4).describe('uncompressed quantizer', () => { it('should be able to create a collection with an uncompressed quantizer', async () => { const collectionName = 'TestCollectionUncompressedVector'; + afters.push(() => client.collections.delete(collectionName)); const collection = await client.collections.create({ name: collectionName, vectorizers: weaviate.configure.vectors.selfProvided({ @@ -964,6 +983,7 @@ describe('Testing of the collection.config namespace', () => { it('should be able to create a collection with uncompressed named vector', async () => { const collectionName = 'TestCollectionUncompressedVectorNamed'; + afters.push(() => client.collections.delete(collectionName)); const collection = await client.collections.create({ name: collectionName, vectorizers: weaviate.configure.vectors.selfProvided({ @@ -988,6 +1008,7 @@ describe('Testing of the collection.config namespace', () => { 'should be able to create a collection with RQ quantizer bits=8 option', async () => { const collectionName = 'TestCollectionRQQuantizer8Bits'; + afters.push(() => client.collections.delete(collectionName)); const collection = await client.collections.create({ name: collectionName, vectorizers: weaviate.configure.vectors.selfProvided({ @@ -1008,6 +1029,7 @@ describe('Testing of the collection.config namespace', () => { 'should be able to create a collection with RQ quantizer bits=1 option', async () => { const collectionName = 'TestCollectionRQQuantizer1Bits'; + afters.push(() => client.collections.delete(collectionName)); const collection = await client.collections.create({ name: collectionName, vectorizers: weaviate.configure.vectors.selfProvided({ @@ -1027,6 +1049,7 @@ describe('Testing of the collection.config namespace', () => { requireAtLeast(1, 36, 0).describe('dropInvertedIndex', () => { it('should drop indices from a property', async () => { const collectionName = 'TestDropInvertedIndices'; + afters.push(() => client.collections.delete(collectionName)); const collection = await client.collections.create({ name: collectionName, properties: [ @@ -1061,6 +1084,7 @@ describe('Testing of the collection.config namespace', () => { requireAtLeast(1, 35, 0).it('should create and update Object TTL configuration', async () => { const collectionName = 'TestObjectTTL'; + afters.push(() => client.collections.delete(collectionName)); const collection = await client.collections.create({ name: collectionName, objectTTL: weaviate.configure.objectTTL.deleteByCreationTime({ defaultTTLSeconds: 120 }), diff --git a/packages/test/src/data/integration.test.ts b/packages/test/src/data/integration.test.ts index e27a0a7c..9e33fe0b 100644 --- a/packages/test/src/data/integration.test.ts +++ b/packages/test/src/data/integration.test.ts @@ -578,7 +578,9 @@ describe('Testing of the collection.data methods with a multi target reference', .then(() => collectionTwo.data.insert({ two: 'two' })); }); - afterAll(() => client.collections.deleteAll()); + afterAll(() => + Promise.all([client.collections.delete(classNameOne), client.collections.delete(classNameTwo)]) + ); it('should be able to insert an object with a multi target reference', async () => { const id = await collectionTwo.data.insert({ From 603d773680b20e649ff668b5719b644f1d8579e4 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Wed, 24 Jun 2026 14:26:45 +0100 Subject: [PATCH 25/62] Fix more tests --- packages/test/package.json | 3 ++- packages/test/src/data/integration.test.ts | 8 ++++---- pnpm-lock.yaml | 11 +++++++---- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/packages/test/package.json b/packages/test/package.json index a30a1fc0..a91c6542 100644 --- a/packages/test/package.json +++ b/packages/test/package.json @@ -9,7 +9,8 @@ "@curveball/bodyparser": "0.5.0", "@curveball/core": "^1.0.2", "@curveball/kernel": "^1.0.0", - "@testcontainers/weaviate": "^11.14.0", + "@testcontainers/weaviate": "11.14.0", + "testcontainers": "11.14.0", "@types/express": "^4.17.23", "@types/uuid": "^9.0.8", "@weaviate/core": "workspace:^1.0.0", diff --git a/packages/test/src/data/integration.test.ts b/packages/test/src/data/integration.test.ts index 9e33fe0b..97462b38 100644 --- a/packages/test/src/data/integration.test.ts +++ b/packages/test/src/data/integration.test.ts @@ -25,8 +25,8 @@ type TestCollectionData = { describe('Testing of the collection.data methods with a single target reference', () => { let client: WeaviateClient; - let collection: Collection; - const collectionName = 'TestCollectionData'; + let collection: Collection; + const collectionName = 'TestCollectionDataSTRef'; const existingID = v4(); const toBeReplacedID = v4(); @@ -614,8 +614,8 @@ describe('Testing of the collection.data methods with a multi target reference', describe('Testing of the collection.data.insertMany method with all possible types', () => { let client: WeaviateClient; - let collection: Collection; - const collectionName = 'TestCollectionData'; + let collection: Collection; + const collectionName = 'TestCollectionDataAll'; let id: string; type Primitives = { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6ee210b2..6dbfbb1d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -131,7 +131,7 @@ importers: specifier: ^1.0.0 version: 1.0.0 '@testcontainers/weaviate': - specifier: ^11.14.0 + specifier: 11.14.0 version: 11.14.0 '@types/express': specifier: ^4.17.23 @@ -157,6 +157,9 @@ importers: nice-grpc-common: specifier: ^2.0.3 version: 2.0.3 + testcontainers: + specifier: 11.14.0 + version: 11.14.0 uuid: specifier: ^9.0.1 version: 9.0.1 @@ -1485,7 +1488,7 @@ packages: glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} @@ -3289,7 +3292,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -4057,7 +4060,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color From e59c05ae79f50e0d886e87c744f55a59cb28a8aa Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Wed, 24 Jun 2026 15:14:35 +0100 Subject: [PATCH 26/62] Fix more tests --- packages/test/src/connection/integration.test.ts | 4 +--- packages/test/src/tokenize/integration.test.ts | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/test/src/connection/integration.test.ts b/packages/test/src/connection/integration.test.ts index a3fe5eda..a0c9a2b9 100644 --- a/packages/test/src/connection/integration.test.ts +++ b/packages/test/src/connection/integration.test.ts @@ -38,9 +38,7 @@ describe('Integration testing of the ConnectionGRPC class', () => { expect(dbVersion.isLowerThan(1, 27, 1)).toBe(true); } catch (err) { expect(err).toBeInstanceOf(WeaviateStartUpError); - expect((err as WeaviateStartUpError).message).toContain( - 'RESOURCE_EXHAUSTED: Attempted to send message with a size larger than 1' - ); + expect((err as WeaviateStartUpError).message).toContain('RESOURCE_EXHAUSTED'); expect(dbVersion.isAtLeast(1, 27, 1)).toBe(true); } }); diff --git a/packages/test/src/tokenize/integration.test.ts b/packages/test/src/tokenize/integration.test.ts index ab6b5cf8..ef5fa1ec 100644 --- a/packages/test/src/tokenize/integration.test.ts +++ b/packages/test/src/tokenize/integration.test.ts @@ -155,7 +155,7 @@ requireAtLeast(1, 37, 2).describe('tokenize stopwords / stopwordPresets', () => }); }); -describe('collection tokenization: schema config round-trip', () => { +requireAtLeast(1, 37, 0).describe('collection tokenization: schema config round-trip', () => { let client: WeaviateClient; beforeAll(async () => { From 12ec0af112a87e8fdd098bff3cd0104a3268153a Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Wed, 24 Jun 2026 16:05:07 +0100 Subject: [PATCH 27/62] Change connection helpers to allow grpc-web over the same host/port as rest --- packages/core/src/connection/helpers.ts | 5 ++- packages/node/src/index.ts | 6 +-- packages/web/src/index.ts | 54 ++++++------------------- 3 files changed, 20 insertions(+), 45 deletions(-) diff --git a/packages/core/src/connection/helpers.ts b/packages/core/src/connection/helpers.ts index ae5a2614..9a3b9f72 100644 --- a/packages/core/src/connection/helpers.ts +++ b/packages/core/src/connection/helpers.ts @@ -74,6 +74,7 @@ export function connectToWeaviateCloud, TMedia>( clusterURL: string, clientMaker: (context: C, params: ClientParams) => Promise>, context: C, + isGrpcWeb: boolean, options?: ConnectToWeaviateCloudOptions ): Promise> { // check if the URL is set @@ -85,7 +86,9 @@ export function connectToWeaviateCloud, TMedia>( const url = new URL(clusterURL); let grpcHost: string; - if (url.hostname.endsWith('.weaviate.network')) { + if (isGrpcWeb) { + grpcHost = url.hostname; + } else if (url.hostname.endsWith('.weaviate.network')) { const [ident, ...rest] = url.hostname.split('.'); grpcHost = `${ident}.grpc.${rest.join('.')}`; } else { diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index 1d6c4d77..71a940f1 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -61,7 +61,7 @@ export function connectToWCD(clusterURL: string, options?: ConnectToWCDOptions): console.warn( 'The `connectToWCD` method is deprecated. Please use `connectToWeaviateCloud` instead. This method will be removed in a future release.' ); - return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, options); + return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, false, options); } /** @@ -77,7 +77,7 @@ export function connectToWCS(clusterURL: string, options?: ConnectToWCSOptions): console.warn( 'The `connectToWCS` method is deprecated. Please use `connectToWeaviateCloud` instead. This method will be removed in a future release.' ); - return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, options); + return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, false, options); } /** @@ -91,7 +91,7 @@ export function connectToWeaviateCloud( clusterURL: string, options?: ConnectToWeaviateCloudOptions ): Promise { - return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, options); + return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, false, options); } const app = { diff --git a/packages/web/src/index.ts b/packages/web/src/index.ts index 0dcec7c1..35666737 100644 --- a/packages/web/src/index.ts +++ b/packages/web/src/index.ts @@ -6,10 +6,8 @@ import weaviate, { ClientParams, configGuards, configure, - ConnectToCustomOptions, - ConnectToLocalOptions, - ConnectToWCDOptions, - ConnectToWCSOptions, + ConnectToCustomOptions as ConnectToCustomOptionsCore, + ConnectToLocalOptions as ConnectToLocalOptionsCore, ConnectToWeaviateCloudOptions, Context, filter, @@ -28,6 +26,9 @@ const context: Context = { toBase64FromMedia, }; +export type ConnectToLocalOptions = Omit; +export type ConnectToCustomOptions = Omit; + /** * Connect to a custom Weaviate deployment, e.g. your own self-hosted Kubernetes cluster. * @@ -35,7 +36,12 @@ const context: Context = { * @returns {Promise} A Promise that resolves to a client connected to your custom Weaviate deployment. */ export function connectToCustom(options: ConnectToCustomOptions): Promise { - return helpers.connectToCustom(weaviate, context, options); + return helpers.connectToCustom(weaviate, context, { + ...options, + grpcHost: options.httpHost, + grpcPort: options.httpPort, + grpcSecure: options.httpSecure, + }); } /** @@ -45,39 +51,7 @@ export function connectToCustom(options: ConnectToCustomOptions): Promise} A Promise that resolves to a client connected to your local Weaviate instance. */ export function connectToLocal(options?: ConnectToLocalOptions): Promise { - return helpers.connectToLocal(weaviate, context, options); -} - -/** - * Connect to your own Weaviate Cloud (WCD) instance. - * - * @deprecated Use `connectToWeaviateCloud` instead. - * - * @param {string} clusterURL The URL of your WCD instance. E.g., `https://example.weaviate.network`. - * @param {ConnectToWCDOptions} [options] Additional options for the connection. - * @returns {Promise} A Promise that resolves to a client connected to your WCD instance. - */ -export function connectToWCD(clusterURL: string, options?: ConnectToWCDOptions): Promise { - console.warn( - 'The `connectToWCD` method is deprecated. Please use `connectToWeaviateCloud` instead. This method will be removed in a future release.' - ); - return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, options); -} - -/** - * Connect to your own Weaviate Cloud Service (WCS) instance. - * - * @deprecated Use `connectToWeaviateCloud` instead. - * - * @param {string} clusterURL The URL of your WCD instance. E.g., `https://example.weaviate.network`. - * @param {ConnectToWCSOptions} [options] Additional options for the connection. - * @returns {Promise} A Promise that resolves to a client connected to your WCS instance. - */ -export function connectToWCS(clusterURL: string, options?: ConnectToWCSOptions): Promise { - console.warn( - 'The `connectToWCS` method is deprecated. Please use `connectToWeaviateCloud` instead. This method will be removed in a future release.' - ); - return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, options); + return helpers.connectToLocal(weaviate, context, { ...options, grpcPort: options?.port }); } /** @@ -91,14 +65,12 @@ export function connectToWeaviateCloud( clusterURL: string, options?: ConnectToWeaviateCloudOptions ): Promise { - return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, options); + return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, true, options); } const app = { connectToCustom, connectToLocal, - connectToWCD, - connectToWCS, connectToWeaviateCloud, client: (params: ClientParams) => weaviate(context, params), ApiKey, From b6993f4dfd9d02337f4108269ac81fa9dffbaacf Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 26 Jun 2026 13:25:07 +0100 Subject: [PATCH 28/62] Add simple test of grpc-web working with proposed server impl --- .github/workflows/main.yaml | 14 +++++++---- ci/docker-compose.yml | 1 + package.json | 2 +- packages/core/src/connection/helpers.ts | 5 +--- packages/core/src/index.ts | 9 ++++--- packages/node/src/index.ts | 6 ++--- .../aggregate/integration.test.ts | 0 .../test/{src => node}/alias/journey.test.ts | 1 - .../{src => node}/backup/integration.test.ts | 0 .../test/{src => node}/backup/unit.test.ts | 0 .../{src => node}/client/integration.test.ts | 0 .../{src => node}/cluster/integration.test.ts | 0 .../test/{src => node}/cluster/mock.test.ts | 0 .../collections/integration.test.ts | 0 .../{src => node}/collections/mock.test.ts | 0 .../{src => node}/config/integration.test.ts | 0 .../test/{src => node}/config/unit.test.ts | 0 .../test/{src => node}/configure/unit.test.ts | 0 .../{src => node}/connection/helpers.test.ts | 0 .../connection/integration.test.ts | 0 .../{src => node}/connection/journey.test.ts | 0 .../{src => node}/connection/mock.test.ts | 0 .../{src => node}/connection/proxy.test.ts | 0 .../{src => node}/data/integration.test.ts | 0 packages/test/{src => node}/data/mock.test.ts | 0 packages/test/{src => node}/data/unit.test.ts | 0 .../test/{src => node}/dbVersionProvider.ts | 0 .../{src => node}/filters/integration.test.ts | 0 .../test/{src => node}/filters/unit.test.ts | 0 .../generate/integration.test.ts | 0 .../test/{src => node}/generate/mock.test.ts | 0 .../test/{src => node}/generate/unit.test.ts | 0 .../{src => node}/groups/integration.test.ts | 0 .../test/{src => node}/integration.test.ts | 0 .../iterator/integration.test.ts | 0 packages/test/{src => node}/journey.test.ts | 0 packages/test/{src => node}/mocks.ts | 0 .../{src => node}/query/integration.test.ts | 0 .../{src => node}/roles/integration.test.ts | 0 .../test/{src => node}/serialize/unit.test.ts | 0 packages/test/{src => node}/server.ts | 0 .../{src => node}/sort/integration.test.ts | 0 .../{src => node}/tenants/integration.test.ts | 0 .../test/{src => node}/tenants/mock.test.ts | 0 .../tokenize/integration.test.ts | 0 .../{src => node}/users/integration.test.ts | 0 .../test/{src => node}/utils/journey.test.ts | 0 .../{src => node}/vectors/integration.test.ts | 0 packages/test/{src => node}/version.ts | 10 ++++---- packages/test/package.json | 1 + packages/test/tsconfig.json | 2 +- packages/test/web/connect.test.ts | 10 ++++++++ packages/web/src/index.ts | 24 ++++++++++++------- pnpm-lock.yaml | 3 +++ 54 files changed, 58 insertions(+), 30 deletions(-) rename packages/test/{src => node}/aggregate/integration.test.ts (100%) rename packages/test/{src => node}/alias/journey.test.ts (95%) rename packages/test/{src => node}/backup/integration.test.ts (100%) rename packages/test/{src => node}/backup/unit.test.ts (100%) rename packages/test/{src => node}/client/integration.test.ts (100%) rename packages/test/{src => node}/cluster/integration.test.ts (100%) rename packages/test/{src => node}/cluster/mock.test.ts (100%) rename packages/test/{src => node}/collections/integration.test.ts (100%) rename packages/test/{src => node}/collections/mock.test.ts (100%) rename packages/test/{src => node}/config/integration.test.ts (100%) rename packages/test/{src => node}/config/unit.test.ts (100%) rename packages/test/{src => node}/configure/unit.test.ts (100%) rename packages/test/{src => node}/connection/helpers.test.ts (100%) rename packages/test/{src => node}/connection/integration.test.ts (100%) rename packages/test/{src => node}/connection/journey.test.ts (100%) rename packages/test/{src => node}/connection/mock.test.ts (100%) rename packages/test/{src => node}/connection/proxy.test.ts (100%) rename packages/test/{src => node}/data/integration.test.ts (100%) rename packages/test/{src => node}/data/mock.test.ts (100%) rename packages/test/{src => node}/data/unit.test.ts (100%) rename packages/test/{src => node}/dbVersionProvider.ts (100%) rename packages/test/{src => node}/filters/integration.test.ts (100%) rename packages/test/{src => node}/filters/unit.test.ts (100%) rename packages/test/{src => node}/generate/integration.test.ts (100%) rename packages/test/{src => node}/generate/mock.test.ts (100%) rename packages/test/{src => node}/generate/unit.test.ts (100%) rename packages/test/{src => node}/groups/integration.test.ts (100%) rename packages/test/{src => node}/integration.test.ts (100%) rename packages/test/{src => node}/iterator/integration.test.ts (100%) rename packages/test/{src => node}/journey.test.ts (100%) rename packages/test/{src => node}/mocks.ts (100%) rename packages/test/{src => node}/query/integration.test.ts (100%) rename packages/test/{src => node}/roles/integration.test.ts (100%) rename packages/test/{src => node}/serialize/unit.test.ts (100%) rename packages/test/{src => node}/server.ts (100%) rename packages/test/{src => node}/sort/integration.test.ts (100%) rename packages/test/{src => node}/tenants/integration.test.ts (100%) rename packages/test/{src => node}/tenants/mock.test.ts (100%) rename packages/test/{src => node}/tokenize/integration.test.ts (100%) rename packages/test/{src => node}/users/integration.test.ts (100%) rename packages/test/{src => node}/utils/journey.test.ts (100%) rename packages/test/{src => node}/vectors/integration.test.ts (100%) rename packages/test/{src => node}/version.ts (61%) create mode 100644 packages/test/web/connect.test.ts diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index b316740f..b58bbe60 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -9,9 +9,11 @@ on: env: WEAVIATE_133: 1.33.18 WEAVIATE_134: 1.34.20 - WEAVIATE_135: 1.35.16 - WEAVIATE_136: 1.36.10 - WEAVIATE_137: 1.37.5 + WEAVIATE_135: 1.35.23 + WEAVIATE_136: 1.36.19 + WEAVIATE_137: 1.37.10 + WEAVIATE_138: 1.38.2 + WEAVIATE_139: 1.39.0-dev-45692cd.amd64 concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} @@ -49,8 +51,10 @@ jobs: { node: "24.x", weaviate: $WEAVIATE_134 }, { node: "24.x", weaviate: $WEAVIATE_135 }, { node: "24.x", weaviate: $WEAVIATE_136 }, - { node: "22.x", weaviate: $WEAVIATE_137 }, { node: "24.x", weaviate: $WEAVIATE_137 }, + { node: "22.x", weaviate: $WEAVIATE_138 }, + { node: "24.x", weaviate: $WEAVIATE_138 }, + { node: "24.x", weaviate: $WEAVIATE_139 }, ] steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 @@ -82,7 +86,7 @@ jobs: strategy: fail-fast: false matrix: - versions: [{ node: "24.x", weaviate: $WEAVIATE_137 }] + versions: [{ node: "24.x", weaviate: $WEAVIATE_138 }] steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 diff --git a/ci/docker-compose.yml b/ci/docker-compose.yml index 305e2e8c..82acd435 100644 --- a/ci/docker-compose.yml +++ b/ci/docker-compose.yml @@ -31,6 +31,7 @@ services: DISABLE_TELEMETRY: "true" DEFAULT_VECTOR_INDEX: "hfresh" OBJECTS_TTL_DELETE_SCHEDULE: "@hourly" + GRPC_WEB_ENABLED: "true" contextionary: environment: OCCURRENCE_WEIGHT_LINEAR_FACTOR: 0.75 diff --git a/package.json b/package.json index d2d4de69..91d2c28b 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "build:web": "pnpm --filter @weaviate/web... run build", "build": "npm run build:core && npm run build:node && npm run build:web", "ci:checks": "npm run install:core && npm run build:core && npm run install:node && npm run install:web", - "ci:test": "npm run ci:checks && npm run build:core && npm run build:node && npm run install:test", + "ci:test": "npm run ci:checks && npm run build:core && npm run build:node && npm run build:web && npm run install:test", "ci:publish": "npm run ci:checks" }, "repository": { diff --git a/packages/core/src/connection/helpers.ts b/packages/core/src/connection/helpers.ts index 9a3b9f72..ae5a2614 100644 --- a/packages/core/src/connection/helpers.ts +++ b/packages/core/src/connection/helpers.ts @@ -74,7 +74,6 @@ export function connectToWeaviateCloud, TMedia>( clusterURL: string, clientMaker: (context: C, params: ClientParams) => Promise>, context: C, - isGrpcWeb: boolean, options?: ConnectToWeaviateCloudOptions ): Promise> { // check if the URL is set @@ -86,9 +85,7 @@ export function connectToWeaviateCloud, TMedia>( const url = new URL(clusterURL); let grpcHost: string; - if (isGrpcWeb) { - grpcHost = url.hostname; - } else if (url.hostname.endsWith('.weaviate.network')) { + if (url.hostname.endsWith('.weaviate.network')) { const [ident, ...rest] = url.hostname.split('.'); grpcHost = `${ident}.grpc.${rest.join('.')}`; } else { diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index f51fdd74..f58863a3 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -137,12 +137,13 @@ export type Context = { const client = async ( context: Context, - params: ClientParams + params: ClientParams, + isGrpcWeb: boolean = false ): Promise> => { let { host: httpHost } = params.connectionParams.http; let { host: grpcHost } = params.connectionParams.grpc; const { port: httpPort, secure: httpSecure, path: httpPath } = params.connectionParams.http; - const { port: grpcPort, secure: grpcSecure } = params.connectionParams.grpc; + const { port: grpcPort, secure: grpcSecure, path: grpcPath } = params.connectionParams.grpc; httpHost = cleanHost(httpHost, 'rest'); grpcHost = cleanHost(grpcHost, 'grpc'); @@ -158,7 +159,9 @@ const client = async ( host: `${scheme}://${httpHost}:${httpPort}${httpPath || ''}`, scheme: scheme, headers: params.headers, - grpcAddress: `${grpcHost}:${grpcPort}`, + grpcAddress: `${isGrpcWeb ? (grpcSecure ? 'https' : 'http') : ''}://${grpcHost}:${grpcPort}${ + grpcPath || '' + }`, grpcSecure: grpcSecure, grpcProxyUrl: params.proxies?.grpc, apiKey: isApiKey(params.auth) ? mapApiKey(params.auth) : undefined, diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index 71a940f1..1d6c4d77 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -61,7 +61,7 @@ export function connectToWCD(clusterURL: string, options?: ConnectToWCDOptions): console.warn( 'The `connectToWCD` method is deprecated. Please use `connectToWeaviateCloud` instead. This method will be removed in a future release.' ); - return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, false, options); + return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, options); } /** @@ -77,7 +77,7 @@ export function connectToWCS(clusterURL: string, options?: ConnectToWCSOptions): console.warn( 'The `connectToWCS` method is deprecated. Please use `connectToWeaviateCloud` instead. This method will be removed in a future release.' ); - return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, false, options); + return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, options); } /** @@ -91,7 +91,7 @@ export function connectToWeaviateCloud( clusterURL: string, options?: ConnectToWeaviateCloudOptions ): Promise { - return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, false, options); + return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, options); } const app = { diff --git a/packages/test/src/aggregate/integration.test.ts b/packages/test/node/aggregate/integration.test.ts similarity index 100% rename from packages/test/src/aggregate/integration.test.ts rename to packages/test/node/aggregate/integration.test.ts diff --git a/packages/test/src/alias/journey.test.ts b/packages/test/node/alias/journey.test.ts similarity index 95% rename from packages/test/src/alias/journey.test.ts rename to packages/test/node/alias/journey.test.ts index 6a26becb..aaa9e24c 100644 --- a/packages/test/src/alias/journey.test.ts +++ b/packages/test/node/alias/journey.test.ts @@ -10,7 +10,6 @@ requireAtLeast(1, 32, 0).describe('manages collection aliases', () => { beforeAll(async () => { client = await weaviate.connectToLocal(); await Promise.all(collectionsWithAliases.map(client.collections.delete)); - await Promise.all(collectionsWithAliases.map((name) => client.collections.create({ name }))); }); it('should create alias', () => { diff --git a/packages/test/src/backup/integration.test.ts b/packages/test/node/backup/integration.test.ts similarity index 100% rename from packages/test/src/backup/integration.test.ts rename to packages/test/node/backup/integration.test.ts diff --git a/packages/test/src/backup/unit.test.ts b/packages/test/node/backup/unit.test.ts similarity index 100% rename from packages/test/src/backup/unit.test.ts rename to packages/test/node/backup/unit.test.ts diff --git a/packages/test/src/client/integration.test.ts b/packages/test/node/client/integration.test.ts similarity index 100% rename from packages/test/src/client/integration.test.ts rename to packages/test/node/client/integration.test.ts diff --git a/packages/test/src/cluster/integration.test.ts b/packages/test/node/cluster/integration.test.ts similarity index 100% rename from packages/test/src/cluster/integration.test.ts rename to packages/test/node/cluster/integration.test.ts diff --git a/packages/test/src/cluster/mock.test.ts b/packages/test/node/cluster/mock.test.ts similarity index 100% rename from packages/test/src/cluster/mock.test.ts rename to packages/test/node/cluster/mock.test.ts diff --git a/packages/test/src/collections/integration.test.ts b/packages/test/node/collections/integration.test.ts similarity index 100% rename from packages/test/src/collections/integration.test.ts rename to packages/test/node/collections/integration.test.ts diff --git a/packages/test/src/collections/mock.test.ts b/packages/test/node/collections/mock.test.ts similarity index 100% rename from packages/test/src/collections/mock.test.ts rename to packages/test/node/collections/mock.test.ts diff --git a/packages/test/src/config/integration.test.ts b/packages/test/node/config/integration.test.ts similarity index 100% rename from packages/test/src/config/integration.test.ts rename to packages/test/node/config/integration.test.ts diff --git a/packages/test/src/config/unit.test.ts b/packages/test/node/config/unit.test.ts similarity index 100% rename from packages/test/src/config/unit.test.ts rename to packages/test/node/config/unit.test.ts diff --git a/packages/test/src/configure/unit.test.ts b/packages/test/node/configure/unit.test.ts similarity index 100% rename from packages/test/src/configure/unit.test.ts rename to packages/test/node/configure/unit.test.ts diff --git a/packages/test/src/connection/helpers.test.ts b/packages/test/node/connection/helpers.test.ts similarity index 100% rename from packages/test/src/connection/helpers.test.ts rename to packages/test/node/connection/helpers.test.ts diff --git a/packages/test/src/connection/integration.test.ts b/packages/test/node/connection/integration.test.ts similarity index 100% rename from packages/test/src/connection/integration.test.ts rename to packages/test/node/connection/integration.test.ts diff --git a/packages/test/src/connection/journey.test.ts b/packages/test/node/connection/journey.test.ts similarity index 100% rename from packages/test/src/connection/journey.test.ts rename to packages/test/node/connection/journey.test.ts diff --git a/packages/test/src/connection/mock.test.ts b/packages/test/node/connection/mock.test.ts similarity index 100% rename from packages/test/src/connection/mock.test.ts rename to packages/test/node/connection/mock.test.ts diff --git a/packages/test/src/connection/proxy.test.ts b/packages/test/node/connection/proxy.test.ts similarity index 100% rename from packages/test/src/connection/proxy.test.ts rename to packages/test/node/connection/proxy.test.ts diff --git a/packages/test/src/data/integration.test.ts b/packages/test/node/data/integration.test.ts similarity index 100% rename from packages/test/src/data/integration.test.ts rename to packages/test/node/data/integration.test.ts diff --git a/packages/test/src/data/mock.test.ts b/packages/test/node/data/mock.test.ts similarity index 100% rename from packages/test/src/data/mock.test.ts rename to packages/test/node/data/mock.test.ts diff --git a/packages/test/src/data/unit.test.ts b/packages/test/node/data/unit.test.ts similarity index 100% rename from packages/test/src/data/unit.test.ts rename to packages/test/node/data/unit.test.ts diff --git a/packages/test/src/dbVersionProvider.ts b/packages/test/node/dbVersionProvider.ts similarity index 100% rename from packages/test/src/dbVersionProvider.ts rename to packages/test/node/dbVersionProvider.ts diff --git a/packages/test/src/filters/integration.test.ts b/packages/test/node/filters/integration.test.ts similarity index 100% rename from packages/test/src/filters/integration.test.ts rename to packages/test/node/filters/integration.test.ts diff --git a/packages/test/src/filters/unit.test.ts b/packages/test/node/filters/unit.test.ts similarity index 100% rename from packages/test/src/filters/unit.test.ts rename to packages/test/node/filters/unit.test.ts diff --git a/packages/test/src/generate/integration.test.ts b/packages/test/node/generate/integration.test.ts similarity index 100% rename from packages/test/src/generate/integration.test.ts rename to packages/test/node/generate/integration.test.ts diff --git a/packages/test/src/generate/mock.test.ts b/packages/test/node/generate/mock.test.ts similarity index 100% rename from packages/test/src/generate/mock.test.ts rename to packages/test/node/generate/mock.test.ts diff --git a/packages/test/src/generate/unit.test.ts b/packages/test/node/generate/unit.test.ts similarity index 100% rename from packages/test/src/generate/unit.test.ts rename to packages/test/node/generate/unit.test.ts diff --git a/packages/test/src/groups/integration.test.ts b/packages/test/node/groups/integration.test.ts similarity index 100% rename from packages/test/src/groups/integration.test.ts rename to packages/test/node/groups/integration.test.ts diff --git a/packages/test/src/integration.test.ts b/packages/test/node/integration.test.ts similarity index 100% rename from packages/test/src/integration.test.ts rename to packages/test/node/integration.test.ts diff --git a/packages/test/src/iterator/integration.test.ts b/packages/test/node/iterator/integration.test.ts similarity index 100% rename from packages/test/src/iterator/integration.test.ts rename to packages/test/node/iterator/integration.test.ts diff --git a/packages/test/src/journey.test.ts b/packages/test/node/journey.test.ts similarity index 100% rename from packages/test/src/journey.test.ts rename to packages/test/node/journey.test.ts diff --git a/packages/test/src/mocks.ts b/packages/test/node/mocks.ts similarity index 100% rename from packages/test/src/mocks.ts rename to packages/test/node/mocks.ts diff --git a/packages/test/src/query/integration.test.ts b/packages/test/node/query/integration.test.ts similarity index 100% rename from packages/test/src/query/integration.test.ts rename to packages/test/node/query/integration.test.ts diff --git a/packages/test/src/roles/integration.test.ts b/packages/test/node/roles/integration.test.ts similarity index 100% rename from packages/test/src/roles/integration.test.ts rename to packages/test/node/roles/integration.test.ts diff --git a/packages/test/src/serialize/unit.test.ts b/packages/test/node/serialize/unit.test.ts similarity index 100% rename from packages/test/src/serialize/unit.test.ts rename to packages/test/node/serialize/unit.test.ts diff --git a/packages/test/src/server.ts b/packages/test/node/server.ts similarity index 100% rename from packages/test/src/server.ts rename to packages/test/node/server.ts diff --git a/packages/test/src/sort/integration.test.ts b/packages/test/node/sort/integration.test.ts similarity index 100% rename from packages/test/src/sort/integration.test.ts rename to packages/test/node/sort/integration.test.ts diff --git a/packages/test/src/tenants/integration.test.ts b/packages/test/node/tenants/integration.test.ts similarity index 100% rename from packages/test/src/tenants/integration.test.ts rename to packages/test/node/tenants/integration.test.ts diff --git a/packages/test/src/tenants/mock.test.ts b/packages/test/node/tenants/mock.test.ts similarity index 100% rename from packages/test/src/tenants/mock.test.ts rename to packages/test/node/tenants/mock.test.ts diff --git a/packages/test/src/tokenize/integration.test.ts b/packages/test/node/tokenize/integration.test.ts similarity index 100% rename from packages/test/src/tokenize/integration.test.ts rename to packages/test/node/tokenize/integration.test.ts diff --git a/packages/test/src/users/integration.test.ts b/packages/test/node/users/integration.test.ts similarity index 100% rename from packages/test/src/users/integration.test.ts rename to packages/test/node/users/integration.test.ts diff --git a/packages/test/src/utils/journey.test.ts b/packages/test/node/utils/journey.test.ts similarity index 100% rename from packages/test/src/utils/journey.test.ts rename to packages/test/node/utils/journey.test.ts diff --git a/packages/test/src/vectors/integration.test.ts b/packages/test/node/vectors/integration.test.ts similarity index 100% rename from packages/test/src/vectors/integration.test.ts rename to packages/test/node/vectors/integration.test.ts diff --git a/packages/test/src/version.ts b/packages/test/node/version.ts similarity index 61% rename from packages/test/src/version.ts rename to packages/test/node/version.ts index 6cb23388..3d25a3f1 100644 --- a/packages/test/src/version.ts +++ b/packages/test/node/version.ts @@ -1,16 +1,18 @@ import { DbVersion } from '@weaviate/core/utils/dbVersion'; -import { describe, it } from 'vitest'; +import { describe, it, SuiteAPI, TestAPI } from 'vitest'; const version = DbVersion.fromString(`v${process.env.WEAVIATE_VERSION!}`); /** Run the suite / test only for Weaviate version above this. */ -export const requireAtLeast = (...semver: [...Parameters]): any => +export const requireAtLeast = ( + ...semver: [...Parameters] +): { describe: SuiteAPI; it: TestAPI } => version.isAtLeast(...semver) ? { describe, it, } - : { + : ({ describe: describe.skip, it: it.skip, - }; + } as any); diff --git a/packages/test/package.json b/packages/test/package.json index a91c6542..5fb958f7 100644 --- a/packages/test/package.json +++ b/packages/test/package.json @@ -15,6 +15,7 @@ "@types/uuid": "^9.0.8", "@weaviate/core": "workspace:^1.0.0", "@weaviate/node": "workspace:^1.0.0", + "@weaviate/web": "workspace:^1.0.0", "abort-controller-x": "^0.5.0", "express": "^4.21.2", "nice-grpc": "^2.1.12", diff --git a/packages/test/tsconfig.json b/packages/test/tsconfig.json index 658aaa3e..a2203d4b 100644 --- a/packages/test/tsconfig.json +++ b/packages/test/tsconfig.json @@ -10,7 +10,7 @@ "@weaviate/node": ["../node/src"] } }, - "include": ["src"], + "include": ["node", "web"], "references": [{ "path": "../core" }, { "path": "../node" }] } diff --git a/packages/test/web/connect.test.ts b/packages/test/web/connect.test.ts new file mode 100644 index 00000000..584cfd0f --- /dev/null +++ b/packages/test/web/connect.test.ts @@ -0,0 +1,10 @@ +import { describe, it, expect } from 'vitest'; +import weaviate from '@weaviate/web'; + +describe('connectToLocal', () => { + it('should connect to a local Weaviate instance using grpc-web', async () => { + const client = await weaviate.connectToLocal(); + const response = await client.getMeta(); + expect(response).toHaveProperty('version'); + }); +}); diff --git a/packages/web/src/index.ts b/packages/web/src/index.ts index 35666737..21143387 100644 --- a/packages/web/src/index.ts +++ b/packages/web/src/index.ts @@ -29,6 +29,19 @@ const context: Context = { export type ConnectToLocalOptions = Omit; export type ConnectToCustomOptions = Omit; +const webify = ( + context: Context, + params: ClientParams +): Promise> => { + params.connectionParams.grpc = { + host: params.connectionParams.http.host, + port: params.connectionParams.http.port, + secure: params.connectionParams.http.secure, + path: '/grpc-web', + }; + return weaviate(context, params, true); +}; + /** * Connect to a custom Weaviate deployment, e.g. your own self-hosted Kubernetes cluster. * @@ -36,12 +49,7 @@ export type ConnectToCustomOptions = Omit} A Promise that resolves to a client connected to your custom Weaviate deployment. */ export function connectToCustom(options: ConnectToCustomOptions): Promise { - return helpers.connectToCustom(weaviate, context, { - ...options, - grpcHost: options.httpHost, - grpcPort: options.httpPort, - grpcSecure: options.httpSecure, - }); + return helpers.connectToCustom(webify, context, options); } /** @@ -51,7 +59,7 @@ export function connectToCustom(options: ConnectToCustomOptions): Promise} A Promise that resolves to a client connected to your local Weaviate instance. */ export function connectToLocal(options?: ConnectToLocalOptions): Promise { - return helpers.connectToLocal(weaviate, context, { ...options, grpcPort: options?.port }); + return helpers.connectToLocal(webify, context, options); } /** @@ -65,7 +73,7 @@ export function connectToWeaviateCloud( clusterURL: string, options?: ConnectToWeaviateCloudOptions ): Promise { - return helpers.connectToWeaviateCloud(clusterURL, weaviate, context, true, options); + return helpers.connectToWeaviateCloud(clusterURL, webify, context, options); } const app = { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6dbfbb1d..7882fed8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -145,6 +145,9 @@ importers: '@weaviate/node': specifier: workspace:^1.0.0 version: link:../node + '@weaviate/web': + specifier: workspace:^1.0.0 + version: link:../web abort-controller-x: specifier: ^0.5.0 version: 0.5.0 From cdb992872890576b8d42921d0d58f69a972c499e Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 26 Jun 2026 13:34:55 +0100 Subject: [PATCH 29/62] Fix protocl prefix in grpcAddress for !isGrpcWeb --- packages/core/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index f58863a3..078b5bbb 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -159,7 +159,7 @@ const client = async ( host: `${scheme}://${httpHost}:${httpPort}${httpPath || ''}`, scheme: scheme, headers: params.headers, - grpcAddress: `${isGrpcWeb ? (grpcSecure ? 'https' : 'http') : ''}://${grpcHost}:${grpcPort}${ + grpcAddress: `${isGrpcWeb ? (grpcSecure ? 'https://' : 'http://') : ''}${grpcHost}:${grpcPort}${ grpcPath || '' }`, grpcSecure: grpcSecure, From cada8640df98acba547b9f2fa02d645751783cc0 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 26 Jun 2026 13:44:43 +0100 Subject: [PATCH 30/62] Only run web tests with >=1.39.0 --- packages/test/node/aggregate/integration.test.ts | 2 +- packages/test/node/alias/journey.test.ts | 2 +- packages/test/node/backup/integration.test.ts | 2 +- packages/test/node/config/integration.test.ts | 2 +- packages/test/node/configure/unit.test.ts | 2 +- packages/test/node/data/integration.test.ts | 2 +- packages/test/node/filters/integration.test.ts | 2 +- packages/test/node/groups/integration.test.ts | 2 +- packages/test/node/query/integration.test.ts | 2 +- packages/test/node/roles/integration.test.ts | 2 +- packages/test/node/tokenize/integration.test.ts | 2 +- packages/test/node/users/integration.test.ts | 2 +- packages/test/node/vectors/integration.test.ts | 2 +- packages/test/tsconfig.json | 2 +- packages/test/{node => }/version.ts | 0 packages/test/web/connect.test.ts | 3 ++- 16 files changed, 16 insertions(+), 15 deletions(-) rename packages/test/{node => }/version.ts (100%) diff --git a/packages/test/node/aggregate/integration.test.ts b/packages/test/node/aggregate/integration.test.ts index d34198ff..b50695e2 100644 --- a/packages/test/node/aggregate/integration.test.ts +++ b/packages/test/node/aggregate/integration.test.ts @@ -5,7 +5,7 @@ import { CrossReference } from '@weaviate/core/references'; import { DataObject } from '@weaviate/core/types'; import weaviate, { AggregateText, Bm25Operator, Collection, WeaviateClient } from '@weaviate/node'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; -import { requireAtLeast } from '../version'; +import { requireAtLeast } from '../../version'; describe('Testing of the collection.aggregate methods', () => { type TestCollectionAggregate = { diff --git a/packages/test/node/alias/journey.test.ts b/packages/test/node/alias/journey.test.ts index aaa9e24c..128c1792 100644 --- a/packages/test/node/alias/journey.test.ts +++ b/packages/test/node/alias/journey.test.ts @@ -1,7 +1,7 @@ import { Alias } from '@weaviate/core/alias'; import weaviate, { WeaviateClient } from '@weaviate/node'; import { beforeAll, expect, it } from 'vitest'; -import { requireAtLeast } from '../version.js'; +import { requireAtLeast } from '../../version.js'; requireAtLeast(1, 32, 0).describe('manages collection aliases', () => { let client: WeaviateClient; diff --git a/packages/test/node/backup/integration.test.ts b/packages/test/node/backup/integration.test.ts index 39f8656d..66f55764 100644 --- a/packages/test/node/backup/integration.test.ts +++ b/packages/test/node/backup/integration.test.ts @@ -5,7 +5,7 @@ import { WeaviateBackupFailed } from '@weaviate/core/errors'; import { Backend } from '@weaviate/core/v2/backup'; import weaviate, { Collection, WeaviateClient } from '@weaviate/node'; import { afterAll, beforeAll, describe, expect, it, test } from 'vitest'; -import { requireAtLeast } from '../version'; +import { requireAtLeast } from '../../version'; // These must run sequentially because Weaviate is not capable of running multiple backups at the same time describe('Integration testing of backups', () => { diff --git a/packages/test/node/config/integration.test.ts b/packages/test/node/config/integration.test.ts index fdda4d9e..3626cae1 100644 --- a/packages/test/node/config/integration.test.ts +++ b/packages/test/node/config/integration.test.ts @@ -13,7 +13,7 @@ import { import { WeaviateUnsupportedFeatureError } from '@weaviate/core/errors'; import weaviate, { WeaviateClass, WeaviateClient, weaviateV2 } from '@weaviate/node'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; -import { requireAtLeast } from '../version.js'; +import { requireAtLeast } from '../../version.js'; describe('Testing of the collection.config namespace', () => { let client: WeaviateClient; diff --git a/packages/test/node/configure/unit.test.ts b/packages/test/node/configure/unit.test.ts index baedf6fc..c69a29a2 100644 --- a/packages/test/node/configure/unit.test.ts +++ b/packages/test/node/configure/unit.test.ts @@ -31,7 +31,7 @@ import { VectorIndexConfigHNSWCreate, } from '@weaviate/core/types'; import { describe, expect, it } from 'vitest'; -import { requireAtLeast } from '../version.js'; +import { requireAtLeast } from '../../version.js'; describe('Unit testing of the configure & reconfigure factory classes', () => { it('should create the correct InvertedIndexConfig type with defaults', () => { diff --git a/packages/test/node/data/integration.test.ts b/packages/test/node/data/integration.test.ts index 97462b38..f6fffa8b 100644 --- a/packages/test/node/data/integration.test.ts +++ b/packages/test/node/data/integration.test.ts @@ -9,7 +9,7 @@ import { CrossReference, CrossReferences, Reference } from '@weaviate/core/refer import { DataObject, WeaviateObject } from '@weaviate/core/types'; import weaviate, { Collection, WeaviateClient, weaviateV2 } from '@weaviate/node'; import { v4 } from 'uuid'; -import { requireAtLeast } from '../version.js'; +import { requireAtLeast } from '../../version.js'; type TestCollectionData = { testProp: string; diff --git a/packages/test/node/filters/integration.test.ts b/packages/test/node/filters/integration.test.ts index ee9bac17..070e5c5f 100644 --- a/packages/test/node/filters/integration.test.ts +++ b/packages/test/node/filters/integration.test.ts @@ -5,7 +5,7 @@ import { CrossReference, Reference } from '@weaviate/core/references'; import { GeoCoordinate } from '@weaviate/core/types'; import weaviate, { Collection, WeaviateClient } from '@weaviate/node'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; -import { requireAtLeast } from '../version.js'; +import { requireAtLeast } from '../../version.js'; describe('Testing of the filter class with a simple collection', () => { let client: WeaviateClient; diff --git a/packages/test/node/groups/integration.test.ts b/packages/test/node/groups/integration.test.ts index 07ef7aab..12f8b26e 100644 --- a/packages/test/node/groups/integration.test.ts +++ b/packages/test/node/groups/integration.test.ts @@ -1,6 +1,6 @@ import weaviate, { ApiKey, GroupAssignment } from '@weaviate/node'; import { expect, it } from 'vitest'; -import { requireAtLeast } from '../version.js'; +import { requireAtLeast } from '../../version.js'; requireAtLeast(1, 32, 5).describe('Integration testing of the OIDC groups', () => { const makeClient = (key: string = 'admin-key') => diff --git a/packages/test/node/query/integration.test.ts b/packages/test/node/query/integration.test.ts index a482f11b..2dec35b6 100644 --- a/packages/test/node/query/integration.test.ts +++ b/packages/test/node/query/integration.test.ts @@ -7,7 +7,7 @@ import { GroupByOptions } from '@weaviate/core/types'; import weaviate, { Collection, WeaviateClient } from '@weaviate/node'; import { AbortError } from 'abort-controller-x'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; -import { requireAtLeast } from '../version.js'; +import { requireAtLeast } from '../../version.js'; describe('Testing of the collection.query methods with a simple collection', () => { let client: WeaviateClient; diff --git a/packages/test/node/roles/integration.test.ts b/packages/test/node/roles/integration.test.ts index 71e50c22..7563ce4c 100644 --- a/packages/test/node/roles/integration.test.ts +++ b/packages/test/node/roles/integration.test.ts @@ -11,7 +11,7 @@ import weaviate, { WeaviateClient, } from '@weaviate/node'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; -import { requireAtLeast } from '../version'; +import { requireAtLeast } from '../../version'; type TestCase = { roleName: string; diff --git a/packages/test/node/tokenize/integration.test.ts b/packages/test/node/tokenize/integration.test.ts index ef5fa1ec..c7bdb950 100644 --- a/packages/test/node/tokenize/integration.test.ts +++ b/packages/test/node/tokenize/integration.test.ts @@ -2,7 +2,7 @@ import { WeaviateInvalidInputError } from '@weaviate/core/errors.js'; import { TokenizeResult } from '@weaviate/core/tokenize/types.js'; import weaviate, { WeaviateClient } from '@weaviate/node'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; -import { requireAtLeast } from '../version.js'; +import { requireAtLeast } from '../../version.js'; requireAtLeast(1, 37, 0).describe('client tokenize integration test', () => { let client: WeaviateClient; diff --git a/packages/test/node/users/integration.test.ts b/packages/test/node/users/integration.test.ts index 83bdbc6e..70f6b2bc 100644 --- a/packages/test/node/users/integration.test.ts +++ b/packages/test/node/users/integration.test.ts @@ -2,7 +2,7 @@ import { WeaviateUserTypeDB } from '@weaviate/core/openapi/types'; import { GetUserOptions, UserDB } from '@weaviate/core/users/types'; import weaviate, { ApiKey, WeaviateClient } from '@weaviate/node'; import { afterAll, beforeAll, expect, it } from 'vitest'; -import { requireAtLeast } from '../version.js'; +import { requireAtLeast } from '../../version.js'; requireAtLeast(1, 29, 0).describe('Integration testing of the users namespace', () => { const makeClient = (key: string) => diff --git a/packages/test/node/vectors/integration.test.ts b/packages/test/node/vectors/integration.test.ts index 58cb59c4..f1a6874b 100644 --- a/packages/test/node/vectors/integration.test.ts +++ b/packages/test/node/vectors/integration.test.ts @@ -8,7 +8,7 @@ import weaviate, { WeaviateClient, } from '@weaviate/node'; import { afterAll, beforeAll, expect, it } from 'vitest'; -import { requireAtLeast } from '../version.js'; +import { requireAtLeast } from '../../version.js'; requireAtLeast(1, 29, 0).describe( 'Testing of the collection.query methods with a collection with multvectors', diff --git a/packages/test/tsconfig.json b/packages/test/tsconfig.json index a2203d4b..a7a83bf2 100644 --- a/packages/test/tsconfig.json +++ b/packages/test/tsconfig.json @@ -10,7 +10,7 @@ "@weaviate/node": ["../node/src"] } }, - "include": ["node", "web"], + "include": ["node", "web", "version.ts"], "references": [{ "path": "../core" }, { "path": "../node" }] } diff --git a/packages/test/node/version.ts b/packages/test/version.ts similarity index 100% rename from packages/test/node/version.ts rename to packages/test/version.ts diff --git a/packages/test/web/connect.test.ts b/packages/test/web/connect.test.ts index 584cfd0f..f5b1be7c 100644 --- a/packages/test/web/connect.test.ts +++ b/packages/test/web/connect.test.ts @@ -1,7 +1,8 @@ import { describe, it, expect } from 'vitest'; import weaviate from '@weaviate/web'; +import { requireAtLeast } from '../version'; -describe('connectToLocal', () => { +requireAtLeast(1, 39, 0).describe('connectToLocal', () => { it('should connect to a local Weaviate instance using grpc-web', async () => { const client = await weaviate.connectToLocal(); const response = await client.getMeta(); From 39c322a475ea4c3f4d6464b1b1d09a6b7bc4b247 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 26 Jun 2026 14:10:57 +0100 Subject: [PATCH 31/62] Fix mistaken imports in tests --- packages/test/node/alias/journey.test.ts | 3 ++- packages/test/node/config/integration.test.ts | 2 +- packages/test/node/configure/unit.test.ts | 2 +- packages/test/node/data/integration.test.ts | 2 +- packages/test/node/filters/integration.test.ts | 2 +- packages/test/node/groups/integration.test.ts | 2 +- packages/test/node/query/integration.test.ts | 2 +- packages/test/node/tokenize/integration.test.ts | 2 +- packages/test/node/users/integration.test.ts | 2 +- packages/test/node/vectors/integration.test.ts | 2 +- packages/test/web/connect.test.ts | 2 +- 11 files changed, 12 insertions(+), 11 deletions(-) diff --git a/packages/test/node/alias/journey.test.ts b/packages/test/node/alias/journey.test.ts index 128c1792..80f039f7 100644 --- a/packages/test/node/alias/journey.test.ts +++ b/packages/test/node/alias/journey.test.ts @@ -1,7 +1,7 @@ import { Alias } from '@weaviate/core/alias'; import weaviate, { WeaviateClient } from '@weaviate/node'; import { beforeAll, expect, it } from 'vitest'; -import { requireAtLeast } from '../../version.js'; +import { requireAtLeast } from '../../version'; requireAtLeast(1, 32, 0).describe('manages collection aliases', () => { let client: WeaviateClient; @@ -10,6 +10,7 @@ requireAtLeast(1, 32, 0).describe('manages collection aliases', () => { beforeAll(async () => { client = await weaviate.connectToLocal(); await Promise.all(collectionsWithAliases.map(client.collections.delete)); + await Promise.all(collectionsWithAliases.map((name) => client.collections.create({ name }))); }); it('should create alias', () => { diff --git a/packages/test/node/config/integration.test.ts b/packages/test/node/config/integration.test.ts index 3626cae1..9ffd9806 100644 --- a/packages/test/node/config/integration.test.ts +++ b/packages/test/node/config/integration.test.ts @@ -13,7 +13,7 @@ import { import { WeaviateUnsupportedFeatureError } from '@weaviate/core/errors'; import weaviate, { WeaviateClass, WeaviateClient, weaviateV2 } from '@weaviate/node'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; -import { requireAtLeast } from '../../version.js'; +import { requireAtLeast } from '../../version'; describe('Testing of the collection.config namespace', () => { let client: WeaviateClient; diff --git a/packages/test/node/configure/unit.test.ts b/packages/test/node/configure/unit.test.ts index c69a29a2..95b3cf4d 100644 --- a/packages/test/node/configure/unit.test.ts +++ b/packages/test/node/configure/unit.test.ts @@ -31,7 +31,7 @@ import { VectorIndexConfigHNSWCreate, } from '@weaviate/core/types'; import { describe, expect, it } from 'vitest'; -import { requireAtLeast } from '../../version.js'; +import { requireAtLeast } from '../../version'; describe('Unit testing of the configure & reconfigure factory classes', () => { it('should create the correct InvertedIndexConfig type with defaults', () => { diff --git a/packages/test/node/data/integration.test.ts b/packages/test/node/data/integration.test.ts index f6fffa8b..9bc1d1f8 100644 --- a/packages/test/node/data/integration.test.ts +++ b/packages/test/node/data/integration.test.ts @@ -9,7 +9,7 @@ import { CrossReference, CrossReferences, Reference } from '@weaviate/core/refer import { DataObject, WeaviateObject } from '@weaviate/core/types'; import weaviate, { Collection, WeaviateClient, weaviateV2 } from '@weaviate/node'; import { v4 } from 'uuid'; -import { requireAtLeast } from '../../version.js'; +import { requireAtLeast } from '../../version'; type TestCollectionData = { testProp: string; diff --git a/packages/test/node/filters/integration.test.ts b/packages/test/node/filters/integration.test.ts index 070e5c5f..e378f7e8 100644 --- a/packages/test/node/filters/integration.test.ts +++ b/packages/test/node/filters/integration.test.ts @@ -5,7 +5,7 @@ import { CrossReference, Reference } from '@weaviate/core/references'; import { GeoCoordinate } from '@weaviate/core/types'; import weaviate, { Collection, WeaviateClient } from '@weaviate/node'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; -import { requireAtLeast } from '../../version.js'; +import { requireAtLeast } from '../../version'; describe('Testing of the filter class with a simple collection', () => { let client: WeaviateClient; diff --git a/packages/test/node/groups/integration.test.ts b/packages/test/node/groups/integration.test.ts index 12f8b26e..bc7ddb80 100644 --- a/packages/test/node/groups/integration.test.ts +++ b/packages/test/node/groups/integration.test.ts @@ -1,6 +1,6 @@ import weaviate, { ApiKey, GroupAssignment } from '@weaviate/node'; import { expect, it } from 'vitest'; -import { requireAtLeast } from '../../version.js'; +import { requireAtLeast } from '../../version'; requireAtLeast(1, 32, 5).describe('Integration testing of the OIDC groups', () => { const makeClient = (key: string = 'admin-key') => diff --git a/packages/test/node/query/integration.test.ts b/packages/test/node/query/integration.test.ts index 2dec35b6..f40e69f9 100644 --- a/packages/test/node/query/integration.test.ts +++ b/packages/test/node/query/integration.test.ts @@ -7,7 +7,7 @@ import { GroupByOptions } from '@weaviate/core/types'; import weaviate, { Collection, WeaviateClient } from '@weaviate/node'; import { AbortError } from 'abort-controller-x'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; -import { requireAtLeast } from '../../version.js'; +import { requireAtLeast } from '../../version'; describe('Testing of the collection.query methods with a simple collection', () => { let client: WeaviateClient; diff --git a/packages/test/node/tokenize/integration.test.ts b/packages/test/node/tokenize/integration.test.ts index c7bdb950..7d07744b 100644 --- a/packages/test/node/tokenize/integration.test.ts +++ b/packages/test/node/tokenize/integration.test.ts @@ -2,7 +2,7 @@ import { WeaviateInvalidInputError } from '@weaviate/core/errors.js'; import { TokenizeResult } from '@weaviate/core/tokenize/types.js'; import weaviate, { WeaviateClient } from '@weaviate/node'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; -import { requireAtLeast } from '../../version.js'; +import { requireAtLeast } from '../../version'; requireAtLeast(1, 37, 0).describe('client tokenize integration test', () => { let client: WeaviateClient; diff --git a/packages/test/node/users/integration.test.ts b/packages/test/node/users/integration.test.ts index 70f6b2bc..c0746ae7 100644 --- a/packages/test/node/users/integration.test.ts +++ b/packages/test/node/users/integration.test.ts @@ -2,7 +2,7 @@ import { WeaviateUserTypeDB } from '@weaviate/core/openapi/types'; import { GetUserOptions, UserDB } from '@weaviate/core/users/types'; import weaviate, { ApiKey, WeaviateClient } from '@weaviate/node'; import { afterAll, beforeAll, expect, it } from 'vitest'; -import { requireAtLeast } from '../../version.js'; +import { requireAtLeast } from '../../version'; requireAtLeast(1, 29, 0).describe('Integration testing of the users namespace', () => { const makeClient = (key: string) => diff --git a/packages/test/node/vectors/integration.test.ts b/packages/test/node/vectors/integration.test.ts index f1a6874b..5c4e5019 100644 --- a/packages/test/node/vectors/integration.test.ts +++ b/packages/test/node/vectors/integration.test.ts @@ -8,7 +8,7 @@ import weaviate, { WeaviateClient, } from '@weaviate/node'; import { afterAll, beforeAll, expect, it } from 'vitest'; -import { requireAtLeast } from '../../version.js'; +import { requireAtLeast } from '../../version'; requireAtLeast(1, 29, 0).describe( 'Testing of the collection.query methods with a collection with multvectors', diff --git a/packages/test/web/connect.test.ts b/packages/test/web/connect.test.ts index f5b1be7c..c633b1d0 100644 --- a/packages/test/web/connect.test.ts +++ b/packages/test/web/connect.test.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest'; import weaviate from '@weaviate/web'; -import { requireAtLeast } from '../version'; +import { requireAtLeast } from '../../version'; requireAtLeast(1, 39, 0).describe('connectToLocal', () => { it('should connect to a local Weaviate instance using grpc-web', async () => { From adbcca57a43b7c8a941a45dc9553c04f034c1b92 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 26 Jun 2026 14:38:18 +0100 Subject: [PATCH 32/62] Fix import in web tests --- packages/test/web/connect.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test/web/connect.test.ts b/packages/test/web/connect.test.ts index c633b1d0..f5b1be7c 100644 --- a/packages/test/web/connect.test.ts +++ b/packages/test/web/connect.test.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest'; import weaviate from '@weaviate/web'; -import { requireAtLeast } from '../../version'; +import { requireAtLeast } from '../version'; requireAtLeast(1, 39, 0).describe('connectToLocal', () => { it('should connect to a local Weaviate instance using grpc-web', async () => { From c9ae47338e2a540ca1fc15f7b7ca5e71c3856f23 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Fri, 26 Jun 2026 14:38:33 +0100 Subject: [PATCH 33/62] Fix asyncEnabled assertion in >=1.38.0 --- packages/test/node/collections/integration.test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/test/node/collections/integration.test.ts b/packages/test/node/collections/integration.test.ts index 50fa6a20..9679fbfa 100644 --- a/packages/test/node/collections/integration.test.ts +++ b/packages/test/node/collections/integration.test.ts @@ -605,7 +605,9 @@ describe('Testing of the collections.create method', () => { expect(response.multiTenancy.enabled).toEqual(true); - expect(response.replication.asyncEnabled).toEqual(false); + expect(response.replication.asyncEnabled).toEqual( + await cluster.getWeaviateVersion().then((ver) => ver.isAtLeast(1, 38, 0)) + ); expect(response.replication.deletionStrategy).toBeDefined(); expect(response.replication.factor).toEqual(2); From c01511bfe4c491f9ccc86d6aafcd09215fea486a Mon Sep 17 00:00:00 2001 From: ian Date: Mon, 29 Jun 2026 16:40:34 +0100 Subject: [PATCH 34/62] chore(agent): remove node https module from web bundle --- packages/core/src/connection/http.ts | 2 +- packages/core/src/index.ts | 11 ++++++++--- packages/node/src/index.ts | 4 ++++ packages/web/src/index.ts | 2 ++ 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/core/src/connection/http.ts b/packages/core/src/connection/http.ts index 66275d59..5d805ab3 100644 --- a/packages/core/src/connection/http.ts +++ b/packages/core/src/connection/http.ts @@ -1,7 +1,7 @@ import OpenidConfigurationGetter from '../v2/misc/openidConfigurationGetter.js'; import { isAbortError } from 'abort-controller-x'; -import { Agent } from 'http'; +import type { Agent } from 'http'; import { WeaviateInsufficientPermissionsError, WeaviateInvalidInputError, diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 078b5bbb..2e213636 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -23,8 +23,7 @@ import { DbVersion } from './utils/dbVersion.js'; import { Backend, BackupCompressionLevel, BackupStatus } from './v2/backup/index.js'; import MetaGetter from './v2/misc/metaGetter.js'; -import { Agent as HttpAgent } from 'http'; -import { Agent as HttpsAgent } from 'https'; +import type { Agent } from 'http'; import { LiveChecker, OpenidConfigurationGetter, ReadyChecker } from './v2/misc/index.js'; import weaviateV2 from './v2/index.js'; @@ -133,6 +132,12 @@ export const cleanHost = (host: string, protocol: 'rest' | 'grpc') => { export type Context = { transportsMaker: TransportsMaker; toBase64FromMedia: ToBase64FromMedia; + /** + * Creates the HTTP(S) keep-alive agent for the REST/GraphQL connection. Supplied by the Node shim + * (`@weaviate/node`); omitted by the browser shim (`@weaviate/web`) so no Node `http`/`https` + * builtins are pulled into the browser bundle. When undefined, `fetch` runs without a custom agent. + */ + agentMaker?: (secure: boolean) => Agent | undefined; }; const client = async ( @@ -151,7 +156,7 @@ const client = async ( if (!params.headers) params.headers = {}; const scheme = httpSecure ? 'https' : 'http'; - const agent = httpSecure ? new HttpsAgent({ keepAlive: true }) : new HttpAgent({ keepAlive: true }); + const agent = context.agentMaker?.(httpSecure); const { connection, dbVersionProvider, dbVersionSupport } = await ConnectionGRPC.use( context.transportsMaker, diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index 1d6c4d77..ecb9fe41 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -20,12 +20,16 @@ import weaviate, { permissions, reconfigure, } from '@weaviate/core'; +import { Agent as HttpAgent } from 'http'; +import { Agent as HttpsAgent } from 'https'; import { toBase64FromMedia } from './base64.js'; import { transportsMaker } from './transports.js'; const context: Context = { transportsMaker, toBase64FromMedia, + agentMaker: (secure) => + secure ? new HttpsAgent({ keepAlive: true }) : new HttpAgent({ keepAlive: true }), }; /** diff --git a/packages/web/src/index.ts b/packages/web/src/index.ts index 21143387..29b6cb6b 100644 --- a/packages/web/src/index.ts +++ b/packages/web/src/index.ts @@ -24,6 +24,8 @@ import { transportsMaker } from './transports.js'; const context: Context = { transportsMaker, toBase64FromMedia, + // No `agentMaker` on purpose: the browser uses fetch-based gRPC-Web (and fetch for REST), so no Node + // `http`/`https` Agent is needed. Omitting it keeps those Node builtins out of the browser bundle. }; export type ConnectToLocalOptions = Omit; From f03327164b618f01e862f63fe87900f5ffd9cd70 Mon Sep 17 00:00:00 2001 From: ian Date: Mon, 29 Jun 2026 16:46:21 +0100 Subject: [PATCH 35/62] chore(): appease the linter --- packages/node/src/index.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index ecb9fe41..2de6b77f 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -28,8 +28,7 @@ import { transportsMaker } from './transports.js'; const context: Context = { transportsMaker, toBase64FromMedia, - agentMaker: (secure) => - secure ? new HttpsAgent({ keepAlive: true }) : new HttpAgent({ keepAlive: true }), + agentMaker: (secure) => (secure ? new HttpsAgent({ keepAlive: true }) : new HttpAgent({ keepAlive: true })), }; /** From 848dc23fef91ddd68ef875a945a573a13e21a8ee Mon Sep 17 00:00:00 2001 From: ian Date: Mon, 29 Jun 2026 23:39:21 +0100 Subject: [PATCH 36/62] chore(): fix version import --- packages/test/web/connect.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/test/web/connect.test.ts b/packages/test/web/connect.test.ts index c633b1d0..f5b1be7c 100644 --- a/packages/test/web/connect.test.ts +++ b/packages/test/web/connect.test.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest'; import weaviate from '@weaviate/web'; -import { requireAtLeast } from '../../version'; +import { requireAtLeast } from '../version'; requireAtLeast(1, 39, 0).describe('connectToLocal', () => { it('should connect to a local Weaviate instance using grpc-web', async () => { From df2c91fe5c770c4e4bfff9c68a902d5a25bca31a Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Tue, 30 Jun 2026 11:35:55 +0100 Subject: [PATCH 37/62] Remove outdated openId validation --- packages/core/src/connection/auth.ts | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/packages/core/src/connection/auth.ts b/packages/core/src/connection/auth.ts index 2cb71cbe..f6773bc5 100644 --- a/packages/core/src/connection/auth.ts +++ b/packages/core/src/connection/auth.ts @@ -183,7 +183,6 @@ class UserPasswordAuthenticator implements OidcAuthFlow { } refresh = () => { - this.validateOpenidConfig(); return this.requestAccessToken() .then((tokenResp: RequestAccessTokenResponse) => { return { @@ -197,22 +196,6 @@ class UserPasswordAuthenticator implements OidcAuthFlow { }); }; - validateOpenidConfig = () => { - if ( - this.openidConfig.provider.grant_types_supported !== undefined && - !this.openidConfig.provider.grant_types_supported.includes('password') - ) { - throw new Error('grant_type password not supported'); - } - if (this.openidConfig.provider.token_endpoint.includes('https://login.microsoftonline.com')) { - throw new Error( - 'microsoft/azure recommends to avoid authentication using ' + - 'username and password, so this method is not supported by this client' - ); - } - this.openidConfig.scopes.push('offline_access'); - }; - requestAccessToken = () => { const url = this.openidConfig.provider.token_endpoint; const params = new URLSearchParams({ From f3886196b9e66f5a6fe7afbb6ed5a51ce9f4c674 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Tue, 30 Jun 2026 11:53:17 +0100 Subject: [PATCH 38/62] Add back missing `offline_access` scope to `AuthUserPasswordCredentials` --- packages/core/src/connection/auth.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/core/src/connection/auth.ts b/packages/core/src/connection/auth.ts index f6773bc5..c99d3c18 100644 --- a/packages/core/src/connection/auth.ts +++ b/packages/core/src/connection/auth.ts @@ -183,6 +183,7 @@ class UserPasswordAuthenticator implements OidcAuthFlow { } refresh = () => { + this.openidConfig.scopes.push('offline_access'); return this.requestAccessToken() .then((tokenResp: RequestAccessTokenResponse) => { return { From 96d4c6004cbe32a32e7380eb7de70f5132ccdab4 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Tue, 14 Jul 2026 10:58:08 +0100 Subject: [PATCH 39/62] Add check to web pkg using esbuild to verify no node-deps accidentally imported --- package.json | 3 +- packages/web/package.json | 8 +- packages/web/scripts/check.mjs | 25 +++ pnpm-lock.yaml | 271 +++++++++++++++++++++++++++++++++ 4 files changed, 303 insertions(+), 4 deletions(-) create mode 100644 packages/web/scripts/check.mjs diff --git a/package.json b/package.json index 91d2c28b..26902b94 100644 --- a/package.json +++ b/package.json @@ -28,8 +28,9 @@ "build:core": "pnpm --filter @weaviate/core... run build", "build:node": "pnpm --filter @weaviate/node... run build", "build:web": "pnpm --filter @weaviate/web... run build", + "check:web": "pnpm --filter @weaviate/web... run check", "build": "npm run build:core && npm run build:node && npm run build:web", - "ci:checks": "npm run install:core && npm run build:core && npm run install:node && npm run install:web", + "ci:checks": "npm run install:core && npm run build:core && npm run install:node && npm run install:web && npm run check:web", "ci:test": "npm run ci:checks && npm run build:core && npm run build:node && npm run build:web && npm run install:test", "ci:publish": "npm run ci:checks" }, diff --git a/packages/web/package.json b/packages/web/package.json index 85439b8d..fa7a833f 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -26,7 +26,8 @@ "scripts": { "build:cjs": "tsc --module commonjs --moduleResolution node10 --outDir dist/cjs && touch dist/cjs/package.json && echo '{\"type\": \"commonjs\"}' > dist/cjs/package.json", "build:esm": "tsc --outDir dist/esm && touch dist/esm/package.json && echo '{\"type\": \"module\"}' > dist/esm/package.json", - "build": "npm run build:cjs && npm run build:esm" + "build": "npm run build:cjs && npm run build:esm", + "check": "node scripts/check.mjs" }, "repository": { "type": "git", @@ -48,7 +49,8 @@ "devDependencies": { "@types/node": "^18.14.0", "@types/uuid": "^9.0.1", - "vitest": "^4.0.16", - "typescript": "^5.9.3" + "esbuild": "^0.28.1", + "typescript": "^5.9.3", + "vitest": "^4.0.16" } } diff --git a/packages/web/scripts/check.mjs b/packages/web/scripts/check.mjs new file mode 100644 index 00000000..1a1a70db --- /dev/null +++ b/packages/web/scripts/check.mjs @@ -0,0 +1,25 @@ +// checks that all public entry points are browser-safe, i.e. don't import Node-only modules +import * as esbuild from 'esbuild' +import pkg from '../package.json' with { type: 'json' } + +// every public entry point, not just "." +const entries = Object.keys(pkg.exports ?? { '.': {} }) + .map((sub) => (sub === '.' ? pkg.name : `${pkg.name}/${sub.slice(2)}`)) + +try { + await esbuild.build({ + stdin: { + contents: entries.map((e, i) => `import * as m${i} from '${e}'; console.log(m${i})`).join('\n'), + resolveDir: process.cwd(), // run this from the fixture dir + loader: 'js', + }, + bundle: true, + platform: 'browser', + format: 'esm', + write: false, // nothing hits disk + logLevel: 'info', + }) + console.log('✓ browser-safe') +} catch { + process.exit(1) // esbuild already printed the offending file:line +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7882fed8..55d664be 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -185,6 +185,9 @@ importers: '@types/uuid': specifier: ^9.0.1 version: 9.0.8 + esbuild: + specifier: ^0.28.1 + version: 0.28.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -225,138 +228,294 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.7.0': resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1263,6 +1422,11 @@ packages: engines: {node: '>=12'} hasBin: true + esbuild@0.28.1: + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -2691,72 +2855,150 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true + '@esbuild/aix-ppc64@0.28.1': + optional: true + '@esbuild/android-arm64@0.21.5': optional: true + '@esbuild/android-arm64@0.28.1': + optional: true + '@esbuild/android-arm@0.21.5': optional: true + '@esbuild/android-arm@0.28.1': + optional: true + '@esbuild/android-x64@0.21.5': optional: true + '@esbuild/android-x64@0.28.1': + optional: true + '@esbuild/darwin-arm64@0.21.5': optional: true + '@esbuild/darwin-arm64@0.28.1': + optional: true + '@esbuild/darwin-x64@0.21.5': optional: true + '@esbuild/darwin-x64@0.28.1': + optional: true + '@esbuild/freebsd-arm64@0.21.5': optional: true + '@esbuild/freebsd-arm64@0.28.1': + optional: true + '@esbuild/freebsd-x64@0.21.5': optional: true + '@esbuild/freebsd-x64@0.28.1': + optional: true + '@esbuild/linux-arm64@0.21.5': optional: true + '@esbuild/linux-arm64@0.28.1': + optional: true + '@esbuild/linux-arm@0.21.5': optional: true + '@esbuild/linux-arm@0.28.1': + optional: true + '@esbuild/linux-ia32@0.21.5': optional: true + '@esbuild/linux-ia32@0.28.1': + optional: true + '@esbuild/linux-loong64@0.21.5': optional: true + '@esbuild/linux-loong64@0.28.1': + optional: true + '@esbuild/linux-mips64el@0.21.5': optional: true + '@esbuild/linux-mips64el@0.28.1': + optional: true + '@esbuild/linux-ppc64@0.21.5': optional: true + '@esbuild/linux-ppc64@0.28.1': + optional: true + '@esbuild/linux-riscv64@0.21.5': optional: true + '@esbuild/linux-riscv64@0.28.1': + optional: true + '@esbuild/linux-s390x@0.21.5': optional: true + '@esbuild/linux-s390x@0.28.1': + optional: true + '@esbuild/linux-x64@0.21.5': optional: true + '@esbuild/linux-x64@0.28.1': + optional: true + + '@esbuild/netbsd-arm64@0.28.1': + optional: true + '@esbuild/netbsd-x64@0.21.5': optional: true + '@esbuild/netbsd-x64@0.28.1': + optional: true + + '@esbuild/openbsd-arm64@0.28.1': + optional: true + '@esbuild/openbsd-x64@0.21.5': optional: true + '@esbuild/openbsd-x64@0.28.1': + optional: true + + '@esbuild/openharmony-arm64@0.28.1': + optional: true + '@esbuild/sunos-x64@0.21.5': optional: true + '@esbuild/sunos-x64@0.28.1': + optional: true + '@esbuild/win32-arm64@0.21.5': optional: true + '@esbuild/win32-arm64@0.28.1': + optional: true + '@esbuild/win32-ia32@0.21.5': optional: true + '@esbuild/win32-ia32@0.28.1': + optional: true + '@esbuild/win32-x64@0.21.5': optional: true + '@esbuild/win32-x64@0.28.1': + optional: true + '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': dependencies: eslint: 8.57.1 @@ -3705,6 +3947,35 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 + esbuild@0.28.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 + escalade@3.2.0: {} escape-html@1.0.3: {} From aae2a6cd7adbabb9ef275d540eae8526288bf2df Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Tue, 14 Jul 2026 11:25:22 +0100 Subject: [PATCH 40/62] Move browser-compat check into build script so that dist is available --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 26902b94..b3e1209e 100644 --- a/package.json +++ b/package.json @@ -29,8 +29,8 @@ "build:node": "pnpm --filter @weaviate/node... run build", "build:web": "pnpm --filter @weaviate/web... run build", "check:web": "pnpm --filter @weaviate/web... run check", - "build": "npm run build:core && npm run build:node && npm run build:web", - "ci:checks": "npm run install:core && npm run build:core && npm run install:node && npm run install:web && npm run check:web", + "build": "npm run build:core && npm run build:node && npm run build:web && npm run check:web", + "ci:checks": "npm run install:core && npm run build:core && npm run install:node && npm run install:web", "ci:test": "npm run ci:checks && npm run build:core && npm run build:node && npm run build:web && npm run install:test", "ci:publish": "npm run ci:checks" }, From fb2075cad62efbe5d900ca37e4f8c12557632101 Mon Sep 17 00:00:00 2001 From: ian Date: Thu, 23 Jul 2026 10:07:50 +0100 Subject: [PATCH 41/62] chore(web): add /v1 path prefix --- packages/web/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web/src/index.ts b/packages/web/src/index.ts index 29b6cb6b..9b44be56 100644 --- a/packages/web/src/index.ts +++ b/packages/web/src/index.ts @@ -39,7 +39,7 @@ const webify = ( host: params.connectionParams.http.host, port: params.connectionParams.http.port, secure: params.connectionParams.http.secure, - path: '/grpc-web', + path: '/v1/grpc-web', }; return weaviate(context, params, true); }; From 6448fe6202d3a8d3f61c8289e8c8d960f372695c Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Thu, 23 Jul 2026 10:55:03 +0100 Subject: [PATCH 42/62] Bump CI image to latest 1.39-rc --- .github/workflows/main.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index b58bbe60..158ce120 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -13,7 +13,7 @@ env: WEAVIATE_136: 1.36.19 WEAVIATE_137: 1.37.10 WEAVIATE_138: 1.38.2 - WEAVIATE_139: 1.39.0-dev-45692cd.amd64 + WEAVIATE_139: 1.39.0-rc.0 concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} From 0409ef67b5dec8ec590e85a6a989de48684517d5 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Thu, 23 Jul 2026 10:55:41 +0100 Subject: [PATCH 43/62] Fix generic defaults in published web types --- packages/web/src/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/web/src/index.ts b/packages/web/src/index.ts index 9b44be56..1d033fd4 100644 --- a/packages/web/src/index.ts +++ b/packages/web/src/index.ts @@ -96,7 +96,8 @@ const app = { export interface WeaviateClient extends IWeaviateClient {} export interface Collections extends ICollections {} -export interface Collection extends ICollection {} +export interface Collection + extends ICollection {} export default app; From 7572c6030231a19e42e4654fffd6c5a2b7ba015d Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Thu, 23 Jul 2026 10:55:57 +0100 Subject: [PATCH 44/62] Add simple search test of web pkg verifying usage --- packages/test/web/search.test.ts | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 packages/test/web/search.test.ts diff --git a/packages/test/web/search.test.ts b/packages/test/web/search.test.ts new file mode 100644 index 00000000..243bfb18 --- /dev/null +++ b/packages/test/web/search.test.ts @@ -0,0 +1,26 @@ +import { describe, it, expect, beforeAll, afterAll } from 'vitest'; +import weaviate, { WeaviateClient, Collection } from '@weaviate/web'; +import { requireAtLeast } from '../version'; + +requireAtLeast(1, 39, 0).describe('search', () => { + let client: WeaviateClient; + let collection: Collection; + + beforeAll(async () => { + client = await weaviate.connectToLocal({ skipInitChecks: true }); + collection = await client.collections.create({ + name: 'TestWebSearch', + properties: [{ name: 'title', dataType: 'text' }], + }); + await collection.data.insert({ title: 'Test' }); + }); + + afterAll(async () => { + await client.collections.delete(collection.name); + }); + + it('should perform a search query', async () => { + const res = await collection.query.fetchObjects(); + expect(res.objects.length).toBe(1); + }); +}); From e5a9fc59426a161be81aa992221129ba9fa481df Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Thu, 27 Aug 2026 09:54:03 +0100 Subject: [PATCH 45/62] Fix test of WCD usage given new behaviour --- packages/test/node/journey.test.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/test/node/journey.test.ts b/packages/test/node/journey.test.ts index 72fae31f..f4645cda 100644 --- a/packages/test/node/journey.test.ts +++ b/packages/test/node/journey.test.ts @@ -202,7 +202,11 @@ describe('Journey testing of the client using a WCD cluster', () => { multiVector: undefined, skip: false, vectorCacheMaxObjects: 1000000000000, - quantizer: undefined, + quantizer: { + bits: 8, + rescoreLimit: 20, + type: 'rq', + }, type: 'hnsw', }, indexType: 'hnsw', From 5860c858b295d70242a39670131304d86c78d66a Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Thu, 27 Aug 2026 09:54:29 +0100 Subject: [PATCH 46/62] Add script to publish weaviate-client alpha as bundle of core + node --- .github/workflows/main.yaml | 4 +- .gitignore | 4 +- package.json | 5 ++- packages/core/src/version.ts | 2 +- packages/node/tsconfig.json | 1 + packages/web/tsconfig.json | 1 + scripts/gen-version.mjs | 11 ++++-- scripts/stage-client.mjs | 75 ++++++++++++++++++++++++++++++++++++ 8 files changed, 95 insertions(+), 8 deletions(-) create mode 100644 scripts/stage-client.mjs diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 158ce120..907df383 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -136,8 +136,8 @@ jobs: cache: 'pnpm' registry-url: "https://registry.npmjs.org" - run: npm run ci:publish - - run: npm run build - - run: npm publish + - run: npm run build:client + - run: npm publish ./stage/weaviate-client - run: npm run docs - name: "Upload docs as pages artifact" uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3 diff --git a/.gitignore b/.gitignore index 46011bc7..9eb4dc8b 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,6 @@ weaviate-data/ test.sh scratch/ docs/ -dist/ \ No newline at end of file +dist/ +stage/ +**/dist diff --git a/package.json b/package.json index 2443face..3de85bf3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "weaviate-client", - "version": "3.14.0", + "version": "3.15.0-alpha.0", "description": "JS/TS client for Weaviate", "type": "module", "engines": { @@ -30,6 +30,9 @@ "build:web": "pnpm --filter @weaviate/web... run build", "check:web": "pnpm --filter @weaviate/web... run check", "build": "npm run build:core && npm run build:node && npm run build:web && npm run check:web", + "generate:version": "node ./scripts/gen-version.mjs", + "stage:client": "node ./scripts/stage-client.mjs", + "build:client": "npm run generate:version && npm run build:core && npm run build:node && npm run stage:client", "ci:checks": "npm run install:core && npm run build:core && npm run install:node && npm run install:web", "ci:test": "npm run ci:checks && npm run build:core && npm run build:node && npm run build:web && npm run install:test", "ci:publish": "npm run ci:checks" diff --git a/packages/core/src/version.ts b/packages/core/src/version.ts index 856b2d96..b538136c 100644 --- a/packages/core/src/version.ts +++ b/packages/core/src/version.ts @@ -1 +1 @@ -export const WEAVIATE_CLIENT_VERSION = '3.14.0'; +export const WEAVIATE_CLIENT_VERSION = '3.15.0-alpha.0'; diff --git a/packages/node/tsconfig.json b/packages/node/tsconfig.json index 37675826..5f913e5f 100644 --- a/packages/node/tsconfig.json +++ b/packages/node/tsconfig.json @@ -24,5 +24,6 @@ } }, "include": ["src"], + "exclude": ["src/**/*.test.ts"], "references": [{ "path": "../core" }] } diff --git a/packages/web/tsconfig.json b/packages/web/tsconfig.json index be968e24..6c0f00f4 100644 --- a/packages/web/tsconfig.json +++ b/packages/web/tsconfig.json @@ -26,5 +26,6 @@ } }, "include": ["src"], + "exclude": ["src/**/*.test.ts"], "references": [{ "path": "../core" }] } diff --git a/scripts/gen-version.mjs b/scripts/gen-version.mjs index 72695ec9..67aac3f3 100644 --- a/scripts/gen-version.mjs +++ b/scripts/gen-version.mjs @@ -1,5 +1,9 @@ import fs from 'fs'; -import pkg from '../package.json' with { type: 'json' }; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const root = path.dirname(path.dirname(fileURLToPath(import.meta.url))); +const pkg = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf8')); let version; const args = process.argv.slice(2); @@ -10,7 +14,8 @@ else { process.exit(1); } +// WEAVIATE_CLIENT_VERSION is read by core's HTTP connection for the X-Weaviate-Client header. fs.writeFileSync( - 'src/version.ts', + path.join(root, 'packages/core/src/version.ts'), `export const WEAVIATE_CLIENT_VERSION = '${version.replace('v', '')}';\n` -); \ No newline at end of file +); diff --git a/scripts/stage-client.mjs b/scripts/stage-client.mjs new file mode 100644 index 00000000..a3f3d169 --- /dev/null +++ b/scripts/stage-client.mjs @@ -0,0 +1,75 @@ +// Assembles a publishable `weaviate-client` package at stage/weaviate-client from the +// built @weaviate/node and @weaviate/core workspace packages. +// +// Interim shape until @weaviate/core is on npm: core is shipped inside the tarball as a +// bundled dependency. Node's emitted JS and .d.ts import the bare specifier +// `@weaviate/core`, which resolves to the nested node_modules copy at runtime and in tsc. +// +// npm facts this script depends on (verified against npm 11): +// - a name is only bundled if it appears in both `dependencies` and `bundleDependencies`; +// - npm bundles only what is on disk under node_modules at pack time, so core's own runtime +// dependencies must be hoisted into the outer `dependencies` to be installed; +// - `pnpm pack` must not be used here: pnpm 10 rejects bundleDependencies outside the +// hoisted linker and ignores workspace packages even then. +// +// Requires `npm run build:core && npm run build:node` to have run first. +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const root = path.dirname(path.dirname(fileURLToPath(import.meta.url))); +const readJson = (p) => JSON.parse(fs.readFileSync(p, 'utf8')); + +const rootPkg = readJson(path.join(root, 'package.json')); +const nodeDir = path.join(root, 'packages/node'); +const coreDir = path.join(root, 'packages/core'); +const nodePkg = readJson(path.join(nodeDir, 'package.json')); +const corePkg = readJson(path.join(coreDir, 'package.json')); + +for (const dir of [path.join(nodeDir, 'dist'), path.join(coreDir, 'dist')]) { + if (!fs.existsSync(dir)) { + console.error(`missing ${dir}: run build:core and build:node first`); + process.exit(1); + } +} + +const stage = path.join(root, 'stage/weaviate-client'); +fs.rmSync(stage, { recursive: true, force: true }); +fs.mkdirSync(stage, { recursive: true }); + +fs.cpSync(path.join(nodeDir, 'dist'), path.join(stage, 'dist'), { recursive: true }); +const coreStage = path.join(stage, 'node_modules/@weaviate/core'); +fs.mkdirSync(coreStage, { recursive: true }); +fs.cpSync(path.join(coreDir, 'dist'), path.join(coreStage, 'dist'), { recursive: true }); +fs.copyFileSync(path.join(coreDir, 'package.json'), path.join(coreStage, 'package.json')); +for (const f of ['LICENSE', 'README.md']) fs.copyFileSync(path.join(root, f), path.join(stage, f)); + +const { ['@weaviate/core']: _workspaceSpec, ...nodeDeps } = nodePkg.dependencies; +const prerelease = rootPkg.version.split('-')[1]?.split('.')[0]; + +const manifest = { + name: rootPkg.name, + version: rootPkg.version, + description: rootPkg.description, + main: nodePkg.main, + type: nodePkg.type, + exports: nodePkg.exports, + files: nodePkg.files, + engines: nodePkg.engines, + repository: rootPkg.repository, + keywords: rootPkg.keywords, + author: rootPkg.author, + license: rootPkg.license, + bugs: rootPkg.bugs, + homepage: rootPkg.homepage, + dependencies: { + '@weaviate/core': corePkg.version, + ...corePkg.dependencies, + ...nodeDeps, + }, + bundleDependencies: ['@weaviate/core'], + publishConfig: { tag: prerelease ?? 'latest' }, +}; + +fs.writeFileSync(path.join(stage, 'package.json'), JSON.stringify(manifest, null, 2) + '\n'); +console.log(`staged ${manifest.name}@${manifest.version} (tag: ${manifest.publishConfig.tag}) at ${stage}`); From 4f9a950bd2d484b049e90b8e95a32b15f366c08f Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Thu, 27 Aug 2026 10:01:45 +0100 Subject: [PATCH 47/62] Attempt flake avoidance by spreading out createdAt times in boost test --- packages/test/node/query/integration.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/test/node/query/integration.test.ts b/packages/test/node/query/integration.test.ts index 7a4e5c01..f48ba23f 100644 --- a/packages/test/node/query/integration.test.ts +++ b/packages/test/node/query/integration.test.ts @@ -367,7 +367,7 @@ requireAtLeast(1, 38, 0).describe('Testing of collection.query methods with boos { properties: { category: 'red', - createdAt: new Date(Date.now()), + createdAt: new Date(Date.now() - 1000 * 60 * 60 * 24 * 14), // 14 days ago position: 12523, }, vectors: [4, 5, 6], @@ -375,7 +375,7 @@ requireAtLeast(1, 38, 0).describe('Testing of collection.query methods with boos { properties: { category: 'blue', - createdAt: new Date(Date.now()), + createdAt: new Date(Date.now() - 1000 * 60 * 60 * 24 * 7), // 7 days ago position: 3242, }, vectors: [1, 2, 3], From 6ae000d17db19bab2d16541c214a50d926204e75 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Thu, 27 Aug 2026 10:54:13 +0100 Subject: [PATCH 48/62] Make tag explicit in publish step --- .github/workflows/main.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 907df383..58101136 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -137,7 +137,7 @@ jobs: registry-url: "https://registry.npmjs.org" - run: npm run ci:publish - run: npm run build:client - - run: npm publish ./stage/weaviate-client + - run: npm publish ./stage/weaviate-client --tag "$(node -p "require('./stage/weaviate-client/package.json').publishConfig.tag")" - run: npm run docs - name: "Upload docs as pages artifact" uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3 From 065e88485cb153001c36a92ef054e14d0f5c106a Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Wed, 16 Sep 2026 13:47:49 +0100 Subject: [PATCH 49/62] chore: prepare release v3.15.0-alpha.1 --- .github/workflows/main.yaml | 58 +++++++++--- package.json | 8 +- packages/core/package.json | 2 +- packages/core/src/version.ts | 2 +- packages/node/package.json | 4 +- packages/test/package.json | 6 +- packages/web/package.json | 4 +- pnpm-lock.yaml | 10 +-- scripts/check-release.mjs | 21 +++++ scripts/packages.test.mjs | 167 +++++++++++++++++++++++++++++++++++ scripts/stage-client.mjs | 37 ++------ tools/prepare_release.sh | 8 +- 12 files changed, 263 insertions(+), 64 deletions(-) create mode 100644 scripts/check-release.mjs create mode 100644 scripts/packages.test.mjs diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 58101136..791ad457 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -33,11 +33,26 @@ jobs: cache: 'pnpm' - name: "Run checks" run: | + npm run generate:version npm run ci:checks npm run lint npm run format:check npm run docs npm run build + npm run stage:client + npm run release:pack + - name: "Upload tested release tarballs" + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: release-tarballs + path: ./stage/tarballs/*.tgz + if-no-files-found: error + - name: "Upload docs as pages artifact" + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3 + with: + path: ./docs tests-without-auth: needs: checks @@ -116,33 +131,47 @@ jobs: - name: "Stop Weaviate" run: ci/stop_dependencies.sh ${{ matrix.versions.weaviate }} + release-tag: + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + runs-on: ubuntu-latest + outputs: + version: ${{ steps.validate.outputs.version }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - uses: actions/setup-node@3235b876344d2a9aa001b8d1453c930bba69e610 # v3 + with: + node-version: 24 + - name: "Validate alpha release tag" + id: validate + run: npm run release:check + publish: - needs: [tests-with-auth, tests-without-auth] - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') + needs: [checks, tests-with-auth, tests-without-auth, release-tag] + if: needs.release-tag.outputs.version != '' runs-on: ubuntu-latest + env: + RELEASE_VERSION: ${{ needs.release-tag.outputs.version }} permissions: contents: write # to upload the release pages: write # to deploy to Pages id-token: write # to authenticate with OIDC when publishing to npm steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - # Setup .npmrc file to publish to npm - - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 - with: - version: 10 - uses: actions/setup-node@3235b876344d2a9aa001b8d1453c930bba69e610 # v3 with: node-version: 24 - cache: 'pnpm' registry-url: "https://registry.npmjs.org" - - run: npm run ci:publish - - run: npm run build:client - - run: npm publish ./stage/weaviate-client --tag "$(node -p "require('./stage/weaviate-client/package.json').publishConfig.tag")" - - run: npm run docs - - name: "Upload docs as pages artifact" - uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3 + - name: "Install npm with trusted publishing support" + run: npm install --global npm@11.8.0 + - name: "Download tested release tarballs" + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 with: - path: ./docs + name: release-tarballs + path: ./stage/tarballs + - name: "Dry-run publication" + run: npm run release:publish:dry-run + - name: "Publish release tarballs" + run: npm run release:publish - name: "Deploy the uploaded pages artifact" uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4 - name: "Create a GitHub release" @@ -150,3 +179,4 @@ jobs: with: generate_release_notes: true draft: true + prerelease: true diff --git a/package.json b/package.json index 3de85bf3..81f85d45 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "weaviate-client", - "version": "3.15.0-alpha.0", + "version": "3.15.0-alpha.1", "description": "JS/TS client for Weaviate", "type": "module", "engines": { @@ -35,7 +35,11 @@ "build:client": "npm run generate:version && npm run build:core && npm run build:node && npm run stage:client", "ci:checks": "npm run install:core && npm run build:core && npm run install:node && npm run install:web", "ci:test": "npm run ci:checks && npm run build:core && npm run build:node && npm run build:web && npm run install:test", - "ci:publish": "npm run ci:checks" + "ci:publish": "npm run ci:checks", + "release:check": "node ./scripts/check-release.mjs", + "release:pack": "mkdir -p stage/tarballs && pnpm --dir packages/core pack --pack-destination ../../stage/tarballs && pnpm --dir packages/node pack --pack-destination ../../stage/tarballs && pnpm --dir packages/web pack --pack-destination ../../stage/tarballs && npm pack ./stage/weaviate-client --pack-destination ./stage/tarballs", + "release:publish:dry-run": "set -eu; for package in weaviate-core weaviate-node weaviate-web weaviate-client; do npm publish \"./stage/tarballs/$package-$RELEASE_VERSION.tgz\" --tag alpha --dry-run; done", + "release:publish": "set -eu; for package in weaviate-core weaviate-node weaviate-web weaviate-client; do npm publish \"./stage/tarballs/$package-$RELEASE_VERSION.tgz\" --tag alpha; done" }, "repository": { "type": "git", diff --git a/packages/core/package.json b/packages/core/package.json index 7252ba68..1f3abff7 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/core", - "version": "1.0.0", + "version": "3.15.0-alpha.1", "description": "JS/TS client for Weaviate", "main": "dist/src/index.js", "type": "module", diff --git a/packages/core/src/version.ts b/packages/core/src/version.ts index b538136c..bb9111bf 100644 --- a/packages/core/src/version.ts +++ b/packages/core/src/version.ts @@ -1 +1 @@ -export const WEAVIATE_CLIENT_VERSION = '3.15.0-alpha.0'; +export const WEAVIATE_CLIENT_VERSION = '3.15.0-alpha.1'; diff --git a/packages/node/package.json b/packages/node/package.json index f0989668..7d8e73cf 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/node", - "version": "1.0.0", + "version": "3.15.0-alpha.1", "description": "JS/TS node client for Weaviate", "main": "dist/cjs/src/index.js", "type": "module", @@ -42,7 +42,7 @@ }, "homepage": "https://github.com/weaviate/typescript-client#readme", "dependencies": { - "@weaviate/core": "workspace:^1.0.0", + "@weaviate/core": "workspace:*", "nice-grpc": "^2.1.16", "nice-grpc-client-middleware-retry": "^3.1.15" }, diff --git a/packages/test/package.json b/packages/test/package.json index 5fb958f7..c42fd5f2 100644 --- a/packages/test/package.json +++ b/packages/test/package.json @@ -13,9 +13,9 @@ "testcontainers": "11.14.0", "@types/express": "^4.17.23", "@types/uuid": "^9.0.8", - "@weaviate/core": "workspace:^1.0.0", - "@weaviate/node": "workspace:^1.0.0", - "@weaviate/web": "workspace:^1.0.0", + "@weaviate/core": "workspace:*", + "@weaviate/node": "workspace:*", + "@weaviate/web": "workspace:*", "abort-controller-x": "^0.5.0", "express": "^4.21.2", "nice-grpc": "^2.1.12", diff --git a/packages/web/package.json b/packages/web/package.json index fa7a833f..d561592c 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/web", - "version": "1.0.0", + "version": "3.15.0-alpha.1", "description": "JS/TS web client for Weaviate", "main": "dist/cjs/src/index.js", "type": "module", @@ -43,7 +43,7 @@ }, "homepage": "https://github.com/weaviate/typescript-client#readme", "dependencies": { - "@weaviate/core": "workspace:^1.0.0", + "@weaviate/core": "workspace:*", "nice-grpc-web": "^3.3.10" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 55d664be..4c141265 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -97,7 +97,7 @@ importers: packages/node: dependencies: '@weaviate/core': - specifier: workspace:^1.0.0 + specifier: workspace:* version: link:../core nice-grpc: specifier: ^2.1.16 @@ -140,13 +140,13 @@ importers: specifier: ^9.0.8 version: 9.0.8 '@weaviate/core': - specifier: workspace:^1.0.0 + specifier: workspace:* version: link:../core '@weaviate/node': - specifier: workspace:^1.0.0 + specifier: workspace:* version: link:../node '@weaviate/web': - specifier: workspace:^1.0.0 + specifier: workspace:* version: link:../web abort-controller-x: specifier: ^0.5.0 @@ -173,7 +173,7 @@ importers: packages/web: dependencies: '@weaviate/core': - specifier: workspace:^1.0.0 + specifier: workspace:* version: link:../core nice-grpc-web: specifier: ^3.3.10 diff --git a/scripts/check-release.mjs b/scripts/check-release.mjs new file mode 100644 index 00000000..cdf87618 --- /dev/null +++ b/scripts/check-release.mjs @@ -0,0 +1,21 @@ +import assert from 'node:assert/strict'; +import { appendFile, readFile } from 'node:fs/promises'; + +const tag = process.env.GITHUB_REF_NAME ?? ''; + +if (/^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)-alpha\.(0|[1-9]\d*)$/.test(tag)) { + const { version } = JSON.parse(await readFile('package.json', 'utf8')); + assert.equal(tag.slice(1), version, 'Release tag must match the root package version'); + await Promise.all( + ['core', 'node', 'web'].map(async (name) => { + const pkg = JSON.parse(await readFile(`packages/${name}/package.json`, 'utf8')); + assert.equal(pkg.version, version, `@weaviate/${name}: run tools/prepare_release.sh before tagging`); + }) + ); + if (process.env.GITHUB_OUTPUT) { + await appendFile(process.env.GITHUB_OUTPUT, `version=${version}\n`); + } + console.log(`Ready to release ${version}`); +} else { + console.log(`Skipping non-alpha release tag: ${tag}`); +} diff --git a/scripts/packages.test.mjs b/scripts/packages.test.mjs new file mode 100644 index 00000000..e392faf4 --- /dev/null +++ b/scripts/packages.test.mjs @@ -0,0 +1,167 @@ +import { execFile } from 'node:child_process'; +import { mkdir, mkdtemp, rm } from 'node:fs/promises'; +import os from 'node:os'; +import path from 'node:path'; +import { promisify } from 'node:util'; + +const exec = promisify(execFile); +const usage = 'Usage: node scripts/packages.test.mjs '; +const options = { maxBuffer: 16 * 1024 * 1024 }; + +async function download(name, ref, dir) { + await mkdir(dir); + const spec = `${name}@${ref}`; + console.error(`Downloading ${spec}...`); + const { stdout } = await exec('npm', ['pack', '--json', '--ignore-scripts', '--', spec], { + ...options, + cwd: dir, + }); + const [packed] = JSON.parse(stdout); + const tarball = path.join(dir, packed.filename); + const [{ stdout: manifest }, { stdout: listing }] = await Promise.all([ + exec('tar', ['-xOf', tarball, 'package/package.json'], options), + exec('tar', ['-tzf', tarball], options), + ]); + const pkg = JSON.parse(manifest); + if (pkg.name !== name) { + throw new Error(`Expected ${name}, received ${pkg.name} from ${spec}`); + } + const files = new Set( + listing + .trim() + .split('\n') + .filter((file) => !file.endsWith('/')) + .map((file) => file.replace(/^package\//, '')) + ); + return { pkg, files }; +} + +function reportFiles(label, files) { + console.log(`\n${label} (${files.length})`); + for (const file of files.sort()) { + console.log(` ${file}`); + } +} + +function reportChanges(label, before = {}, after = {}) { + const changes = []; + for (const key of [...new Set([...Object.keys(before), ...Object.keys(after)])].sort()) { + if (!Object.hasOwn(after, key)) { + changes.push(`- ${key}: ${JSON.stringify(before[key])}`); + } else if (!Object.hasOwn(before, key)) { + changes.push(`+ ${key}: ${JSON.stringify(after[key])}`); + } else if (JSON.stringify(before[key]) !== JSON.stringify(after[key])) { + changes.push(`~ ${key}: ${JSON.stringify(before[key])} -> ${JSON.stringify(after[key])}`); + } + } + console.log(`\n${label}: ${changes.length ? `${changes.length} changes` : 'unchanged'}`); + for (const change of changes) { + console.log(` ${change}`); + } +} + +function exportsMap(pkg) { + const value = pkg.exports; + if (value === undefined) { + return {}; + } + if (value && !Array.isArray(value) && typeof value === 'object') { + if (Object.keys(value).some((key) => key.startsWith('.'))) { + return value; + } + } + return { '.': value }; +} + +function missingExportTargets(pkg, files) { + const missing = []; + function visit(value, location) { + if (typeof value === 'string' && value.startsWith('./')) { + const target = value.slice(2); + const pattern = new RegExp( + `^${target + .split('*') + .map((part) => part.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')) + .join('.*')}$` + ); + if (![...files].some((file) => pattern.test(file))) { + missing.push(`${location}: ${value}`); + } + } else if (value && typeof value === 'object') { + for (const [key, target] of Object.entries(value)) { + visit(target, `${location}[${JSON.stringify(key)}]`); + } + } + } + visit(exportsMap(pkg), 'exports'); + return missing; +} + +async function compare(name, oldRef, newRef) { + const temp = await mkdtemp(path.join(os.tmpdir(), 'compare-packages-')); + try { + const before = await download(name, oldRef, path.join(temp, 'old')); + const after = await download(name, newRef, path.join(temp, 'new')); + console.log(`\n${name}: ${before.pkg.version} (${oldRef}) -> ${after.pkg.version} (${newRef})`); + console.log(`Tarball files: ${before.files.size} -> ${after.files.size}`); + console.log('Legend: - removed, + added, ~ changed'); + + reportFiles( + 'Missing files in the new tarball', + [...before.files].filter((file) => !after.files.has(file)) + ); + reportFiles( + 'Added files in the new tarball', + [...after.files].filter((file) => !before.files.has(file)) + ); + for (const field of [ + 'dependencies', + 'optionalDependencies', + 'peerDependencies', + 'peerDependenciesMeta', + ]) { + reportChanges(field, before.pkg[field], after.pkg[field]); + } + const fields = [ + 'main', + 'module', + 'types', + 'typings', + 'type', + 'browser', + 'bin', + 'bundleDependencies', + 'bundledDependencies', + ]; + const entryFields = (pkg) => + Object.fromEntries(fields.filter((key) => Object.hasOwn(pkg, key)).map((key) => [key, pkg[key]])); + reportChanges('Entry points and bundled dependencies', entryFields(before.pkg), entryFields(after.pkg)); + reportChanges('Exports', exportsMap(before.pkg), exportsMap(after.pkg)); + reportFiles('Export targets absent from the new tarball', missingExportTargets(after.pkg, after.files)); + if (before.pkg.exports === undefined && after.pkg.exports !== undefined) { + console.log('\nThe new exports map restricts subpath imports that were previously unrestricted.'); + } + console.log('\nThis compares file paths and manifests, not exported symbols or runtime compatibility.'); + console.log('Files supplied by dependencies are not included; removals and moves may be intentional.'); + } finally { + await rm(temp, { recursive: true, force: true }); + } +} + +const args = process.argv.slice(2); +if (args.length === 1 && ['--help', '-h'].includes(args[0])) { + console.log(usage); + console.log( + 'Versions and npm dist-tags are accepted. Differences are informational; errors exit with code 1.' + ); +} else if (args.length !== 3 || args.some((arg) => !arg || arg.startsWith('-'))) { + console.error(usage); + process.exitCode = 1; +} else { + try { + await compare(...args); + } catch (error) { + console.error(`Package comparison failed: ${error.stderr?.trim() || error.message}`); + process.exitCode = 1; + } +} diff --git a/scripts/stage-client.mjs b/scripts/stage-client.mjs index a3f3d169..a05001ca 100644 --- a/scripts/stage-client.mjs +++ b/scripts/stage-client.mjs @@ -1,18 +1,4 @@ -// Assembles a publishable `weaviate-client` package at stage/weaviate-client from the -// built @weaviate/node and @weaviate/core workspace packages. -// -// Interim shape until @weaviate/core is on npm: core is shipped inside the tarball as a -// bundled dependency. Node's emitted JS and .d.ts import the bare specifier -// `@weaviate/core`, which resolves to the nested node_modules copy at runtime and in tsc. -// -// npm facts this script depends on (verified against npm 11): -// - a name is only bundled if it appears in both `dependencies` and `bundleDependencies`; -// - npm bundles only what is on disk under node_modules at pack time, so core's own runtime -// dependencies must be hoisted into the outer `dependencies` to be installed; -// - `pnpm pack` must not be used here: pnpm 10 rejects bundleDependencies outside the -// hoisted linker and ignores workspace packages even then. -// -// Requires `npm run build:core && npm run build:node` to have run first. +// The client shares Node's compiled output and depends on the published core package. import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; @@ -22,15 +8,11 @@ const readJson = (p) => JSON.parse(fs.readFileSync(p, 'utf8')); const rootPkg = readJson(path.join(root, 'package.json')); const nodeDir = path.join(root, 'packages/node'); -const coreDir = path.join(root, 'packages/core'); const nodePkg = readJson(path.join(nodeDir, 'package.json')); -const corePkg = readJson(path.join(coreDir, 'package.json')); -for (const dir of [path.join(nodeDir, 'dist'), path.join(coreDir, 'dist')]) { - if (!fs.existsSync(dir)) { - console.error(`missing ${dir}: run build:core and build:node first`); - process.exit(1); - } +if (!fs.existsSync(path.join(nodeDir, 'dist'))) { + console.error('missing packages/node/dist: run build:core and build:node first'); + process.exit(1); } const stage = path.join(root, 'stage/weaviate-client'); @@ -38,13 +20,8 @@ fs.rmSync(stage, { recursive: true, force: true }); fs.mkdirSync(stage, { recursive: true }); fs.cpSync(path.join(nodeDir, 'dist'), path.join(stage, 'dist'), { recursive: true }); -const coreStage = path.join(stage, 'node_modules/@weaviate/core'); -fs.mkdirSync(coreStage, { recursive: true }); -fs.cpSync(path.join(coreDir, 'dist'), path.join(coreStage, 'dist'), { recursive: true }); -fs.copyFileSync(path.join(coreDir, 'package.json'), path.join(coreStage, 'package.json')); for (const f of ['LICENSE', 'README.md']) fs.copyFileSync(path.join(root, f), path.join(stage, f)); -const { ['@weaviate/core']: _workspaceSpec, ...nodeDeps } = nodePkg.dependencies; const prerelease = rootPkg.version.split('-')[1]?.split('.')[0]; const manifest = { @@ -63,11 +40,9 @@ const manifest = { bugs: rootPkg.bugs, homepage: rootPkg.homepage, dependencies: { - '@weaviate/core': corePkg.version, - ...corePkg.dependencies, - ...nodeDeps, + ...nodePkg.dependencies, + '@weaviate/core': rootPkg.version, }, - bundleDependencies: ['@weaviate/core'], publishConfig: { tag: prerelease ?? 'latest' }, }; diff --git a/tools/prepare_release.sh b/tools/prepare_release.sh index ff80b5f7..864ebd17 100755 --- a/tools/prepare_release.sh +++ b/tools/prepare_release.sh @@ -3,7 +3,7 @@ set -euo pipefail VERSION=${1-} -REQUIRED_TOOLS="jq git" +REQUIRED_TOOLS="npm git" if test -z "$VERSION"; then echo "Missing version parameter. Usage: $0 VERSION" @@ -26,8 +26,10 @@ if git rev-parse "$VERSION" >/dev/null 2>&1; then exit 1 fi -npm run generate:version $VERSION +npm version "${VERSION#v}" --no-git-tag-version --no-workspaces-update \ + --include-workspace-root --workspace @weaviate/core --workspace @weaviate/node --workspace @weaviate/web +npm run generate:version git add . git commit -m "chore: prepare release $VERSION" git push -npm version "${VERSION/v}" +git tag -a "$VERSION" -m "$VERSION" From 53c3972b9dbbaa331d7315b930e5f9cdeb3ec709 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Wed, 16 Sep 2026 13:48:29 +0100 Subject: [PATCH 50/62] chore: prepare release v3.15.0-alpha.1 --- .github/workflows/main.yaml | 58 +++++++++--- package.json | 8 +- packages/core/package.json | 2 +- packages/core/src/version.ts | 2 +- packages/node/package.json | 4 +- packages/test/package.json | 6 +- packages/web/package.json | 4 +- pnpm-lock.yaml | 10 +-- scripts/check-release.mjs | 21 +++++ scripts/packages.test.mjs | 167 +++++++++++++++++++++++++++++++++++ scripts/stage-client.mjs | 37 ++------ tools/prepare_release.sh | 8 +- 12 files changed, 263 insertions(+), 64 deletions(-) create mode 100644 scripts/check-release.mjs create mode 100644 scripts/packages.test.mjs diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 58101136..791ad457 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -33,11 +33,26 @@ jobs: cache: 'pnpm' - name: "Run checks" run: | + npm run generate:version npm run ci:checks npm run lint npm run format:check npm run docs npm run build + npm run stage:client + npm run release:pack + - name: "Upload tested release tarballs" + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: release-tarballs + path: ./stage/tarballs/*.tgz + if-no-files-found: error + - name: "Upload docs as pages artifact" + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3 + with: + path: ./docs tests-without-auth: needs: checks @@ -116,33 +131,47 @@ jobs: - name: "Stop Weaviate" run: ci/stop_dependencies.sh ${{ matrix.versions.weaviate }} + release-tag: + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + runs-on: ubuntu-latest + outputs: + version: ${{ steps.validate.outputs.version }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - uses: actions/setup-node@3235b876344d2a9aa001b8d1453c930bba69e610 # v3 + with: + node-version: 24 + - name: "Validate alpha release tag" + id: validate + run: npm run release:check + publish: - needs: [tests-with-auth, tests-without-auth] - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') + needs: [checks, tests-with-auth, tests-without-auth, release-tag] + if: needs.release-tag.outputs.version != '' runs-on: ubuntu-latest + env: + RELEASE_VERSION: ${{ needs.release-tag.outputs.version }} permissions: contents: write # to upload the release pages: write # to deploy to Pages id-token: write # to authenticate with OIDC when publishing to npm steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - # Setup .npmrc file to publish to npm - - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 - with: - version: 10 - uses: actions/setup-node@3235b876344d2a9aa001b8d1453c930bba69e610 # v3 with: node-version: 24 - cache: 'pnpm' registry-url: "https://registry.npmjs.org" - - run: npm run ci:publish - - run: npm run build:client - - run: npm publish ./stage/weaviate-client --tag "$(node -p "require('./stage/weaviate-client/package.json').publishConfig.tag")" - - run: npm run docs - - name: "Upload docs as pages artifact" - uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3 + - name: "Install npm with trusted publishing support" + run: npm install --global npm@11.8.0 + - name: "Download tested release tarballs" + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 with: - path: ./docs + name: release-tarballs + path: ./stage/tarballs + - name: "Dry-run publication" + run: npm run release:publish:dry-run + - name: "Publish release tarballs" + run: npm run release:publish - name: "Deploy the uploaded pages artifact" uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4 - name: "Create a GitHub release" @@ -150,3 +179,4 @@ jobs: with: generate_release_notes: true draft: true + prerelease: true diff --git a/package.json b/package.json index 3de85bf3..81f85d45 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "weaviate-client", - "version": "3.15.0-alpha.0", + "version": "3.15.0-alpha.1", "description": "JS/TS client for Weaviate", "type": "module", "engines": { @@ -35,7 +35,11 @@ "build:client": "npm run generate:version && npm run build:core && npm run build:node && npm run stage:client", "ci:checks": "npm run install:core && npm run build:core && npm run install:node && npm run install:web", "ci:test": "npm run ci:checks && npm run build:core && npm run build:node && npm run build:web && npm run install:test", - "ci:publish": "npm run ci:checks" + "ci:publish": "npm run ci:checks", + "release:check": "node ./scripts/check-release.mjs", + "release:pack": "mkdir -p stage/tarballs && pnpm --dir packages/core pack --pack-destination ../../stage/tarballs && pnpm --dir packages/node pack --pack-destination ../../stage/tarballs && pnpm --dir packages/web pack --pack-destination ../../stage/tarballs && npm pack ./stage/weaviate-client --pack-destination ./stage/tarballs", + "release:publish:dry-run": "set -eu; for package in weaviate-core weaviate-node weaviate-web weaviate-client; do npm publish \"./stage/tarballs/$package-$RELEASE_VERSION.tgz\" --tag alpha --dry-run; done", + "release:publish": "set -eu; for package in weaviate-core weaviate-node weaviate-web weaviate-client; do npm publish \"./stage/tarballs/$package-$RELEASE_VERSION.tgz\" --tag alpha; done" }, "repository": { "type": "git", diff --git a/packages/core/package.json b/packages/core/package.json index 7252ba68..1f3abff7 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/core", - "version": "1.0.0", + "version": "3.15.0-alpha.1", "description": "JS/TS client for Weaviate", "main": "dist/src/index.js", "type": "module", diff --git a/packages/core/src/version.ts b/packages/core/src/version.ts index b538136c..bb9111bf 100644 --- a/packages/core/src/version.ts +++ b/packages/core/src/version.ts @@ -1 +1 @@ -export const WEAVIATE_CLIENT_VERSION = '3.15.0-alpha.0'; +export const WEAVIATE_CLIENT_VERSION = '3.15.0-alpha.1'; diff --git a/packages/node/package.json b/packages/node/package.json index f0989668..7d8e73cf 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/node", - "version": "1.0.0", + "version": "3.15.0-alpha.1", "description": "JS/TS node client for Weaviate", "main": "dist/cjs/src/index.js", "type": "module", @@ -42,7 +42,7 @@ }, "homepage": "https://github.com/weaviate/typescript-client#readme", "dependencies": { - "@weaviate/core": "workspace:^1.0.0", + "@weaviate/core": "workspace:*", "nice-grpc": "^2.1.16", "nice-grpc-client-middleware-retry": "^3.1.15" }, diff --git a/packages/test/package.json b/packages/test/package.json index 5fb958f7..c42fd5f2 100644 --- a/packages/test/package.json +++ b/packages/test/package.json @@ -13,9 +13,9 @@ "testcontainers": "11.14.0", "@types/express": "^4.17.23", "@types/uuid": "^9.0.8", - "@weaviate/core": "workspace:^1.0.0", - "@weaviate/node": "workspace:^1.0.0", - "@weaviate/web": "workspace:^1.0.0", + "@weaviate/core": "workspace:*", + "@weaviate/node": "workspace:*", + "@weaviate/web": "workspace:*", "abort-controller-x": "^0.5.0", "express": "^4.21.2", "nice-grpc": "^2.1.12", diff --git a/packages/web/package.json b/packages/web/package.json index fa7a833f..d561592c 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/web", - "version": "1.0.0", + "version": "3.15.0-alpha.1", "description": "JS/TS web client for Weaviate", "main": "dist/cjs/src/index.js", "type": "module", @@ -43,7 +43,7 @@ }, "homepage": "https://github.com/weaviate/typescript-client#readme", "dependencies": { - "@weaviate/core": "workspace:^1.0.0", + "@weaviate/core": "workspace:*", "nice-grpc-web": "^3.3.10" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 55d664be..4c141265 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -97,7 +97,7 @@ importers: packages/node: dependencies: '@weaviate/core': - specifier: workspace:^1.0.0 + specifier: workspace:* version: link:../core nice-grpc: specifier: ^2.1.16 @@ -140,13 +140,13 @@ importers: specifier: ^9.0.8 version: 9.0.8 '@weaviate/core': - specifier: workspace:^1.0.0 + specifier: workspace:* version: link:../core '@weaviate/node': - specifier: workspace:^1.0.0 + specifier: workspace:* version: link:../node '@weaviate/web': - specifier: workspace:^1.0.0 + specifier: workspace:* version: link:../web abort-controller-x: specifier: ^0.5.0 @@ -173,7 +173,7 @@ importers: packages/web: dependencies: '@weaviate/core': - specifier: workspace:^1.0.0 + specifier: workspace:* version: link:../core nice-grpc-web: specifier: ^3.3.10 diff --git a/scripts/check-release.mjs b/scripts/check-release.mjs new file mode 100644 index 00000000..cdf87618 --- /dev/null +++ b/scripts/check-release.mjs @@ -0,0 +1,21 @@ +import assert from 'node:assert/strict'; +import { appendFile, readFile } from 'node:fs/promises'; + +const tag = process.env.GITHUB_REF_NAME ?? ''; + +if (/^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)-alpha\.(0|[1-9]\d*)$/.test(tag)) { + const { version } = JSON.parse(await readFile('package.json', 'utf8')); + assert.equal(tag.slice(1), version, 'Release tag must match the root package version'); + await Promise.all( + ['core', 'node', 'web'].map(async (name) => { + const pkg = JSON.parse(await readFile(`packages/${name}/package.json`, 'utf8')); + assert.equal(pkg.version, version, `@weaviate/${name}: run tools/prepare_release.sh before tagging`); + }) + ); + if (process.env.GITHUB_OUTPUT) { + await appendFile(process.env.GITHUB_OUTPUT, `version=${version}\n`); + } + console.log(`Ready to release ${version}`); +} else { + console.log(`Skipping non-alpha release tag: ${tag}`); +} diff --git a/scripts/packages.test.mjs b/scripts/packages.test.mjs new file mode 100644 index 00000000..e392faf4 --- /dev/null +++ b/scripts/packages.test.mjs @@ -0,0 +1,167 @@ +import { execFile } from 'node:child_process'; +import { mkdir, mkdtemp, rm } from 'node:fs/promises'; +import os from 'node:os'; +import path from 'node:path'; +import { promisify } from 'node:util'; + +const exec = promisify(execFile); +const usage = 'Usage: node scripts/packages.test.mjs '; +const options = { maxBuffer: 16 * 1024 * 1024 }; + +async function download(name, ref, dir) { + await mkdir(dir); + const spec = `${name}@${ref}`; + console.error(`Downloading ${spec}...`); + const { stdout } = await exec('npm', ['pack', '--json', '--ignore-scripts', '--', spec], { + ...options, + cwd: dir, + }); + const [packed] = JSON.parse(stdout); + const tarball = path.join(dir, packed.filename); + const [{ stdout: manifest }, { stdout: listing }] = await Promise.all([ + exec('tar', ['-xOf', tarball, 'package/package.json'], options), + exec('tar', ['-tzf', tarball], options), + ]); + const pkg = JSON.parse(manifest); + if (pkg.name !== name) { + throw new Error(`Expected ${name}, received ${pkg.name} from ${spec}`); + } + const files = new Set( + listing + .trim() + .split('\n') + .filter((file) => !file.endsWith('/')) + .map((file) => file.replace(/^package\//, '')) + ); + return { pkg, files }; +} + +function reportFiles(label, files) { + console.log(`\n${label} (${files.length})`); + for (const file of files.sort()) { + console.log(` ${file}`); + } +} + +function reportChanges(label, before = {}, after = {}) { + const changes = []; + for (const key of [...new Set([...Object.keys(before), ...Object.keys(after)])].sort()) { + if (!Object.hasOwn(after, key)) { + changes.push(`- ${key}: ${JSON.stringify(before[key])}`); + } else if (!Object.hasOwn(before, key)) { + changes.push(`+ ${key}: ${JSON.stringify(after[key])}`); + } else if (JSON.stringify(before[key]) !== JSON.stringify(after[key])) { + changes.push(`~ ${key}: ${JSON.stringify(before[key])} -> ${JSON.stringify(after[key])}`); + } + } + console.log(`\n${label}: ${changes.length ? `${changes.length} changes` : 'unchanged'}`); + for (const change of changes) { + console.log(` ${change}`); + } +} + +function exportsMap(pkg) { + const value = pkg.exports; + if (value === undefined) { + return {}; + } + if (value && !Array.isArray(value) && typeof value === 'object') { + if (Object.keys(value).some((key) => key.startsWith('.'))) { + return value; + } + } + return { '.': value }; +} + +function missingExportTargets(pkg, files) { + const missing = []; + function visit(value, location) { + if (typeof value === 'string' && value.startsWith('./')) { + const target = value.slice(2); + const pattern = new RegExp( + `^${target + .split('*') + .map((part) => part.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')) + .join('.*')}$` + ); + if (![...files].some((file) => pattern.test(file))) { + missing.push(`${location}: ${value}`); + } + } else if (value && typeof value === 'object') { + for (const [key, target] of Object.entries(value)) { + visit(target, `${location}[${JSON.stringify(key)}]`); + } + } + } + visit(exportsMap(pkg), 'exports'); + return missing; +} + +async function compare(name, oldRef, newRef) { + const temp = await mkdtemp(path.join(os.tmpdir(), 'compare-packages-')); + try { + const before = await download(name, oldRef, path.join(temp, 'old')); + const after = await download(name, newRef, path.join(temp, 'new')); + console.log(`\n${name}: ${before.pkg.version} (${oldRef}) -> ${after.pkg.version} (${newRef})`); + console.log(`Tarball files: ${before.files.size} -> ${after.files.size}`); + console.log('Legend: - removed, + added, ~ changed'); + + reportFiles( + 'Missing files in the new tarball', + [...before.files].filter((file) => !after.files.has(file)) + ); + reportFiles( + 'Added files in the new tarball', + [...after.files].filter((file) => !before.files.has(file)) + ); + for (const field of [ + 'dependencies', + 'optionalDependencies', + 'peerDependencies', + 'peerDependenciesMeta', + ]) { + reportChanges(field, before.pkg[field], after.pkg[field]); + } + const fields = [ + 'main', + 'module', + 'types', + 'typings', + 'type', + 'browser', + 'bin', + 'bundleDependencies', + 'bundledDependencies', + ]; + const entryFields = (pkg) => + Object.fromEntries(fields.filter((key) => Object.hasOwn(pkg, key)).map((key) => [key, pkg[key]])); + reportChanges('Entry points and bundled dependencies', entryFields(before.pkg), entryFields(after.pkg)); + reportChanges('Exports', exportsMap(before.pkg), exportsMap(after.pkg)); + reportFiles('Export targets absent from the new tarball', missingExportTargets(after.pkg, after.files)); + if (before.pkg.exports === undefined && after.pkg.exports !== undefined) { + console.log('\nThe new exports map restricts subpath imports that were previously unrestricted.'); + } + console.log('\nThis compares file paths and manifests, not exported symbols or runtime compatibility.'); + console.log('Files supplied by dependencies are not included; removals and moves may be intentional.'); + } finally { + await rm(temp, { recursive: true, force: true }); + } +} + +const args = process.argv.slice(2); +if (args.length === 1 && ['--help', '-h'].includes(args[0])) { + console.log(usage); + console.log( + 'Versions and npm dist-tags are accepted. Differences are informational; errors exit with code 1.' + ); +} else if (args.length !== 3 || args.some((arg) => !arg || arg.startsWith('-'))) { + console.error(usage); + process.exitCode = 1; +} else { + try { + await compare(...args); + } catch (error) { + console.error(`Package comparison failed: ${error.stderr?.trim() || error.message}`); + process.exitCode = 1; + } +} diff --git a/scripts/stage-client.mjs b/scripts/stage-client.mjs index a3f3d169..a05001ca 100644 --- a/scripts/stage-client.mjs +++ b/scripts/stage-client.mjs @@ -1,18 +1,4 @@ -// Assembles a publishable `weaviate-client` package at stage/weaviate-client from the -// built @weaviate/node and @weaviate/core workspace packages. -// -// Interim shape until @weaviate/core is on npm: core is shipped inside the tarball as a -// bundled dependency. Node's emitted JS and .d.ts import the bare specifier -// `@weaviate/core`, which resolves to the nested node_modules copy at runtime and in tsc. -// -// npm facts this script depends on (verified against npm 11): -// - a name is only bundled if it appears in both `dependencies` and `bundleDependencies`; -// - npm bundles only what is on disk under node_modules at pack time, so core's own runtime -// dependencies must be hoisted into the outer `dependencies` to be installed; -// - `pnpm pack` must not be used here: pnpm 10 rejects bundleDependencies outside the -// hoisted linker and ignores workspace packages even then. -// -// Requires `npm run build:core && npm run build:node` to have run first. +// The client shares Node's compiled output and depends on the published core package. import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; @@ -22,15 +8,11 @@ const readJson = (p) => JSON.parse(fs.readFileSync(p, 'utf8')); const rootPkg = readJson(path.join(root, 'package.json')); const nodeDir = path.join(root, 'packages/node'); -const coreDir = path.join(root, 'packages/core'); const nodePkg = readJson(path.join(nodeDir, 'package.json')); -const corePkg = readJson(path.join(coreDir, 'package.json')); -for (const dir of [path.join(nodeDir, 'dist'), path.join(coreDir, 'dist')]) { - if (!fs.existsSync(dir)) { - console.error(`missing ${dir}: run build:core and build:node first`); - process.exit(1); - } +if (!fs.existsSync(path.join(nodeDir, 'dist'))) { + console.error('missing packages/node/dist: run build:core and build:node first'); + process.exit(1); } const stage = path.join(root, 'stage/weaviate-client'); @@ -38,13 +20,8 @@ fs.rmSync(stage, { recursive: true, force: true }); fs.mkdirSync(stage, { recursive: true }); fs.cpSync(path.join(nodeDir, 'dist'), path.join(stage, 'dist'), { recursive: true }); -const coreStage = path.join(stage, 'node_modules/@weaviate/core'); -fs.mkdirSync(coreStage, { recursive: true }); -fs.cpSync(path.join(coreDir, 'dist'), path.join(coreStage, 'dist'), { recursive: true }); -fs.copyFileSync(path.join(coreDir, 'package.json'), path.join(coreStage, 'package.json')); for (const f of ['LICENSE', 'README.md']) fs.copyFileSync(path.join(root, f), path.join(stage, f)); -const { ['@weaviate/core']: _workspaceSpec, ...nodeDeps } = nodePkg.dependencies; const prerelease = rootPkg.version.split('-')[1]?.split('.')[0]; const manifest = { @@ -63,11 +40,9 @@ const manifest = { bugs: rootPkg.bugs, homepage: rootPkg.homepage, dependencies: { - '@weaviate/core': corePkg.version, - ...corePkg.dependencies, - ...nodeDeps, + ...nodePkg.dependencies, + '@weaviate/core': rootPkg.version, }, - bundleDependencies: ['@weaviate/core'], publishConfig: { tag: prerelease ?? 'latest' }, }; diff --git a/tools/prepare_release.sh b/tools/prepare_release.sh index ff80b5f7..864ebd17 100755 --- a/tools/prepare_release.sh +++ b/tools/prepare_release.sh @@ -3,7 +3,7 @@ set -euo pipefail VERSION=${1-} -REQUIRED_TOOLS="jq git" +REQUIRED_TOOLS="npm git" if test -z "$VERSION"; then echo "Missing version parameter. Usage: $0 VERSION" @@ -26,8 +26,10 @@ if git rev-parse "$VERSION" >/dev/null 2>&1; then exit 1 fi -npm run generate:version $VERSION +npm version "${VERSION#v}" --no-git-tag-version --no-workspaces-update \ + --include-workspace-root --workspace @weaviate/core --workspace @weaviate/node --workspace @weaviate/web +npm run generate:version git add . git commit -m "chore: prepare release $VERSION" git push -npm version "${VERSION/v}" +git tag -a "$VERSION" -m "$VERSION" From 10bf534f9b0a7cc17c01609d2fd39e738728d408 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Wed, 16 Sep 2026 14:43:28 +0100 Subject: [PATCH 51/62] chore: prepare release v3.15.0-alpha.2 --- package.json | 2 +- packages/core/package.json | 2 +- packages/core/src/version.ts | 2 +- packages/node/package.json | 2 +- packages/web/package.json | 2 +- scripts/packages.test.mjs | 403 +++++++++++++++++++++++++---------- 6 files changed, 293 insertions(+), 120 deletions(-) diff --git a/package.json b/package.json index 81f85d45..03edbe10 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "weaviate-client", - "version": "3.15.0-alpha.1", + "version": "3.15.0-alpha.2", "description": "JS/TS client for Weaviate", "type": "module", "engines": { diff --git a/packages/core/package.json b/packages/core/package.json index 1f3abff7..67d121bd 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/core", - "version": "3.15.0-alpha.1", + "version": "3.15.0-alpha.2", "description": "JS/TS client for Weaviate", "main": "dist/src/index.js", "type": "module", diff --git a/packages/core/src/version.ts b/packages/core/src/version.ts index bb9111bf..112a5267 100644 --- a/packages/core/src/version.ts +++ b/packages/core/src/version.ts @@ -1 +1 @@ -export const WEAVIATE_CLIENT_VERSION = '3.15.0-alpha.1'; +export const WEAVIATE_CLIENT_VERSION = '3.15.0-alpha.2'; diff --git a/packages/node/package.json b/packages/node/package.json index 7d8e73cf..acffa913 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/node", - "version": "3.15.0-alpha.1", + "version": "3.15.0-alpha.2", "description": "JS/TS node client for Weaviate", "main": "dist/cjs/src/index.js", "type": "module", diff --git a/packages/web/package.json b/packages/web/package.json index d561592c..34639d2b 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/web", - "version": "3.15.0-alpha.1", + "version": "3.15.0-alpha.2", "description": "JS/TS web client for Weaviate", "main": "dist/cjs/src/index.js", "type": "module", diff --git a/scripts/packages.test.mjs b/scripts/packages.test.mjs index e392faf4..cbdf0ce7 100644 --- a/scripts/packages.test.mjs +++ b/scripts/packages.test.mjs @@ -1,148 +1,322 @@ import { execFile } from 'node:child_process'; -import { mkdir, mkdtemp, rm } from 'node:fs/promises'; +import { mkdir, mkdtemp, readFile, readdir, rm, writeFile } from 'node:fs/promises'; import os from 'node:os'; import path from 'node:path'; import { promisify } from 'node:util'; +import { Application, ReflectionKind } from 'typedoc'; +import ts from 'typescript'; const exec = promisify(execFile); const usage = 'Usage: node scripts/packages.test.mjs '; -const options = { maxBuffer: 16 * 1024 * 1024 }; -async function download(name, ref, dir) { +async function install(name, ref, dir) { await mkdir(dir); - const spec = `${name}@${ref}`; - console.error(`Downloading ${spec}...`); - const { stdout } = await exec('npm', ['pack', '--json', '--ignore-scripts', '--', spec], { - ...options, - cwd: dir, - }); - const [packed] = JSON.parse(stdout); - const tarball = path.join(dir, packed.filename); - const [{ stdout: manifest }, { stdout: listing }] = await Promise.all([ - exec('tar', ['-xOf', tarball, 'package/package.json'], options), - exec('tar', ['-tzf', tarball], options), - ]); - const pkg = JSON.parse(manifest); + await writeFile(path.join(dir, 'package.json'), JSON.stringify({ private: true, type: 'module' })); + console.error(`Installing ${name}@${ref} and its dependencies...`); + await exec( + 'npm', + [ + 'install', + '--ignore-scripts', + '--no-audit', + '--no-fund', + '--package-lock=false', + '--', + `${name}@${ref}`, + '@types/node', + ], + { + cwd: dir, + maxBuffer: 16 * 1024 * 1024, + } + ); + const packageDir = path.join(dir, 'node_modules', name); + const pkg = JSON.parse(await readFile(path.join(packageDir, 'package.json'), 'utf8')); if (pkg.name !== name) { - throw new Error(`Expected ${name}, received ${pkg.name} from ${spec}`); + throw new Error(`Expected ${name}, received ${pkg.name}`); } - const files = new Set( - listing - .trim() - .split('\n') - .filter((file) => !file.endsWith('/')) - .map((file) => file.replace(/^package\//, '')) - ); - return { pkg, files }; + return { dir, packageDir, pkg }; +} + +function exportTargets(value) { + if (typeof value === 'string') return [value]; + return value && typeof value === 'object' ? Object.values(value).flatMap(exportTargets) : []; } -function reportFiles(label, files) { - console.log(`\n${label} (${files.length})`); - for (const file of files.sort()) { - console.log(` ${file}`); +async function publicPaths({ pkg, packageDir }) { + if (pkg.exports === undefined) return ['.']; + const exports = pkg.exports; + const map = + exports && typeof exports === 'object' && Object.keys(exports).some((key) => key.startsWith('.')) + ? exports + : { '.': exports }; + const paths = new Set(); + const files = Object.keys(map).some((key) => key.includes('*')) + ? await readdir(packageDir, { recursive: true }) + : []; + for (const [subpath, target] of Object.entries(map)) { + if (target === null || subpath.endsWith('.json')) continue; + if (!subpath.includes('*')) { + paths.add(subpath); + continue; + } + for (const pattern of exportTargets(target)) { + const regex = new RegExp( + `^${pattern + .replace(/^\.\//, '') + .split('*') + .map((part) => part.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')) + .join('(.+)')}$` + ); + for (const file of files) { + const match = file.match(regex); + if (match?.[1]) paths.add(subpath.replace('*', match[1])); + } + } } + return [...paths].sort(); } -function reportChanges(label, before = {}, after = {}) { - const changes = []; - for (const key of [...new Set([...Object.keys(before), ...Object.keys(after)])].sort()) { - if (!Object.hasOwn(after, key)) { - changes.push(`- ${key}: ${JSON.stringify(before[key])}`); - } else if (!Object.hasOwn(before, key)) { - changes.push(`+ ${key}: ${JSON.stringify(after[key])}`); - } else if (JSON.stringify(before[key]) !== JSON.stringify(after[key])) { - changes.push(`~ ${key}: ${JSON.stringify(before[key])} -> ${JSON.stringify(after[key])}`); +async function documentPackage(installed, name) { + const { dir } = installed; + const compilerOptions = { + module: ts.ModuleKind.NodeNext, + moduleResolution: ts.ModuleResolutionKind.NodeNext, + target: ts.ScriptTarget.ESNext, + strict: true, + skipLibCheck: false, + types: ['node'], + }; + const wrappers = []; + for (const subpath of await publicPaths(installed)) { + const spec = subpath === '.' ? name : `${name}/${subpath.slice(2)}`; + for (const [mode, extension, resolutionMode] of [ + ['import', 'mts', ts.ModuleKind.ESNext], + ['require', 'cts', ts.ModuleKind.CommonJS], + ]) { + const file = path.join(dir, `${mode}-${wrappers.length}.${extension}`); + const resolved = ts.resolveModuleName( + spec, + file, + compilerOptions, + ts.sys, + undefined, + undefined, + resolutionMode + ).resolvedModule; + if (!resolved) continue; + if (!/\.d\.[cm]?ts$/.test(resolved.resolvedFileName)) { + throw new Error(`${spec} (${mode}) has no resolvable TypeScript declarations`); + } + wrappers.push({ file, spec, mode }); } } - console.log(`\n${label}: ${changes.length ? `${changes.length} changes` : 'unchanged'}`); - for (const change of changes) { - console.log(` ${change}`); + if (!wrappers.length) throw new Error(`No public declaration entry points found for ${name}`); + await Promise.all( + wrappers.map(({ file, spec }) => writeFile(file, `export * from ${JSON.stringify(spec)};\n`)) + ); + const program = ts.createProgram( + wrappers.map(({ file }) => file), + compilerOptions + ); + const checker = program.getTypeChecker(); + await Promise.all( + wrappers.map(async ({ file, spec }) => { + const source = program.getSourceFile(file); + const module = checker.getSymbolAtLocation(source.statements[0].moduleSpecifier); + if (!module) throw new Error(`Cannot resolve exports of ${spec}`); + if (checker.getExportsOfModule(module).some((symbol) => symbol.name === 'default')) { + await writeFile( + file, + `export * from ${JSON.stringify(spec)};\nexport { default } from ${JSON.stringify(spec)};\n` + ); + } + }) + ); + const config = path.join(dir, 'tsconfig.json'); + await writeFile( + config, + JSON.stringify({ + compilerOptions: { + module: 'NodeNext', + moduleResolution: 'NodeNext', + target: 'ESNext', + strict: true, + skipLibCheck: false, + types: ['node'], + }, + files: wrappers.map(({ file }) => file), + }) + ); + const app = await Application.bootstrap({ + entryPoints: wrappers.map(({ file }) => file), + tsconfig: config, + alwaysCreateEntryPointModule: true, + excludeExternals: false, + excludeReferences: false, + excludeNotDocumented: false, + excludeInternal: false, + disableSources: true, + readme: 'none', + logLevel: 'Error', + }); + const project = await app.convert(); + if (!project || app.logger.hasErrors()) + throw new Error(`TypeDoc could not describe ${name}@${installed.pkg.version}`); + const json = app.serializer.projectToObject(project, dir); + const labels = new Map( + wrappers.map(({ file, spec, mode }) => [ + path.basename(file).replace(/\.[cm]ts$/, ''), + `${spec} [${mode}]`, + ]) + ); + return apiSnapshot(json, labels); +} + +const metadata = new Set([ + 'id', + 'sources', + 'comment', + 'groups', + 'categories', + 'readme', + 'documents', + 'variant', + 'package', + 'packageVersion', + 'source', + 'qualifiedName', + 'externalUrl', + 'inheritedFrom', + 'overwrites', + 'implementationOf', + 'implementedBy', + 'extendedBy', + 'isExternal', + 'isInherited', +]); + +function normalize(value, key = '') { + if (Array.isArray(value)) { + const items = value.map((item) => normalize(item)); + return key === 'children' ? items.sort((a, b) => a.name.localeCompare(b.name)) : items; } + if (!value || typeof value !== 'object') return value; + return Object.fromEntries( + Object.keys(value) + .sort() + .filter((name) => !metadata.has(name) && !(value.type === 'reference' && name === 'target')) + .map((name) => [name, normalize(value[name], name)]) + ); } -function exportsMap(pkg) { - const value = pkg.exports; - if (value === undefined) { - return {}; +function apiSnapshot(project, labels) { + const byId = new Map(); + function index(value) { + if (!value || typeof value !== 'object') return; + if (typeof value.id === 'number') byId.set(value.id, value); + Object.values(value).forEach(index); + } + index(project); + const api = new Map(); + function members(node, seen = new Set()) { + if (!node || seen.has(node)) return []; + const visited = new Set([...seen, node]); + if (node.children) return node.children; + if (node.type && typeof node.type === 'object') return members(node.type, visited); + if (node.type === 'reflection') return members(node.declaration, visited); + if (node.type === 'reference') return members(byId.get(node.target), visited); + if (node.type === 'query') return members(node.queryType, visited); + if (node.type === 'intersection') { + return [ + ...new Map( + node.types.flatMap((type) => members(type, visited)).map((child) => [child.name, child]) + ).values(), + ]; + } + return []; } - if (value && !Array.isArray(value) && typeof value === 'object') { - if (Object.keys(value).some((key) => key.startsWith('.'))) { - return value; + function visit(original, label, ancestors = new Set()) { + let node = original; + const references = new Set(); + while (node.variant === 'reference') { + if (references.has(node.id)) throw new Error(`Cyclic export reference at ${label}`); + references.add(node.id); + node = byId.get(node.target); + if (!node) throw new Error(`Unresolved export reference at ${label}`); } + if (ancestors.has(node.id)) return; + const seen = new Set([...ancestors, node.id]); + const body = node.type?.type === 'reflection' ? node.type.declaration : node; + const shape = {}; + for (const field of [ + 'kind', + 'flags', + 'type', + 'typeParameters', + 'signatures', + 'indexSignatures', + 'getSignature', + 'setSignature', + 'defaultValue', + 'extendedTypes', + 'implementedTypes', + ]) { + if (node[field] !== undefined) shape[field] = node[field]; + } + if (body !== node) { + const { children, ...declaration } = body; + shape.type = { type: 'reflection', declaration }; + } + api.set(label, JSON.stringify(normalize(shape))); + for (const child of members(node)) { + if (!child.flags?.isPrivate) + visit(child, `${label}.${child.flags?.isStatic ? 'static ' : ''}${child.name}`, seen); + } + } + for (const module of project.children ?? []) { + const label = labels.get(module.name); + if (!label) throw new Error(`Unexpected TypeDoc entry point: ${module.name}`); + api.set(label, JSON.stringify({ kind: ReflectionKind.Module })); + for (const child of module.children ?? []) visit(child, `${label}::${child.name}`); } - return { '.': value }; + return api; } -function missingExportTargets(pkg, files) { - const missing = []; - function visit(value, location) { - if (typeof value === 'string' && value.startsWith('./')) { - const target = value.slice(2); - const pattern = new RegExp( - `^${target - .split('*') - .map((part) => part.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')) - .join('.*')}$` - ); - if (![...files].some((file) => pattern.test(file))) { - missing.push(`${location}: ${value}`); - } - } else if (value && typeof value === 'object') { - for (const [key, target] of Object.entries(value)) { - visit(target, `${location}[${JSON.stringify(key)}]`); +function report(before, after) { + const removed = [...before.keys()].filter((key) => !after.has(key)).sort(); + const added = [...after.keys()].filter((key) => !before.has(key)).sort(); + const changed = [...before.keys()] + .filter((key) => after.has(key) && before.get(key) !== after.get(key)) + .sort(); + for (const [title, symbols] of [ + ['Removed', removed], + ['Added', added], + ['Changed', changed], + ]) { + console.log(`\n${title} API items (${symbols.length})`); + for (const symbol of symbols) { + console.log(` ${symbol}`); + if (title === 'Changed') { + console.log(` before: ${before.get(symbol)}`); + console.log(` after: ${after.get(symbol)}`); } } } - visit(exportsMap(pkg), 'exports'); - return missing; + console.log('\nChanges describe declared APIs, not runtime behavior or a proof of type compatibility.'); + console.log('Packages without an exports map are compared at their root entry point only.'); } async function compare(name, oldRef, newRef) { - const temp = await mkdtemp(path.join(os.tmpdir(), 'compare-packages-')); + const temp = await mkdtemp(path.join(os.tmpdir(), 'compare-package-api-')); try { - const before = await download(name, oldRef, path.join(temp, 'old')); - const after = await download(name, newRef, path.join(temp, 'new')); + const before = await install(name, oldRef, path.join(temp, 'old')); + const after = await install(name, newRef, path.join(temp, 'new')); + console.error('Reading public APIs with TypeDoc...'); + const oldApi = await documentPackage(before, name); + const newApi = await documentPackage(after, name); console.log(`\n${name}: ${before.pkg.version} (${oldRef}) -> ${after.pkg.version} (${newRef})`); - console.log(`Tarball files: ${before.files.size} -> ${after.files.size}`); - console.log('Legend: - removed, + added, ~ changed'); - - reportFiles( - 'Missing files in the new tarball', - [...before.files].filter((file) => !after.files.has(file)) - ); - reportFiles( - 'Added files in the new tarball', - [...after.files].filter((file) => !before.files.has(file)) - ); - for (const field of [ - 'dependencies', - 'optionalDependencies', - 'peerDependencies', - 'peerDependenciesMeta', - ]) { - reportChanges(field, before.pkg[field], after.pkg[field]); - } - const fields = [ - 'main', - 'module', - 'types', - 'typings', - 'type', - 'browser', - 'bin', - 'bundleDependencies', - 'bundledDependencies', - ]; - const entryFields = (pkg) => - Object.fromEntries(fields.filter((key) => Object.hasOwn(pkg, key)).map((key) => [key, pkg[key]])); - reportChanges('Entry points and bundled dependencies', entryFields(before.pkg), entryFields(after.pkg)); - reportChanges('Exports', exportsMap(before.pkg), exportsMap(after.pkg)); - reportFiles('Export targets absent from the new tarball', missingExportTargets(after.pkg, after.files)); - if (before.pkg.exports === undefined && after.pkg.exports !== undefined) { - console.log('\nThe new exports map restricts subpath imports that were previously unrestricted.'); - } - console.log('\nThis compares file paths and manifests, not exported symbols or runtime compatibility.'); - console.log('Files supplied by dependencies are not included; removals and moves may be intentional.'); + report(oldApi, newApi); } finally { await rm(temp, { recursive: true, force: true }); } @@ -151,9 +325,8 @@ async function compare(name, oldRef, newRef) { const args = process.argv.slice(2); if (args.length === 1 && ['--help', '-h'].includes(args[0])) { console.log(usage); - console.log( - 'Versions and npm dist-tags are accepted. Differences are informational; errors exit with code 1.' - ); + console.log('Compares published declarations, including re-exports, for Node import and require.'); + console.log('Differences are informational; installation or analysis errors exit with code 1.'); } else if (args.length !== 3 || args.some((arg) => !arg || arg.startsWith('-'))) { console.error(usage); process.exitCode = 1; @@ -161,7 +334,7 @@ if (args.length === 1 && ['--help', '-h'].includes(args[0])) { try { await compare(...args); } catch (error) { - console.error(`Package comparison failed: ${error.stderr?.trim() || error.message}`); + console.error(`API comparison failed: ${error.stderr?.trim() || error.message}`); process.exitCode = 1; } } From 1baa14a9df56dcacba636bffc61b3f1128d9c035 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Tue, 22 Sep 2026 15:41:33 +0100 Subject: [PATCH 52/62] Publish only an esm.js package in @weaviate/web --- packages/web/package.json | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/packages/web/package.json b/packages/web/package.json index 34639d2b..c2a2d5ce 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -2,31 +2,24 @@ "name": "@weaviate/web", "version": "3.15.0-alpha.2", "description": "JS/TS web client for Weaviate", - "main": "dist/cjs/src/index.js", "type": "module", + "main": "./dist/src/index.js", + "types": "./dist/src/index.d.ts", "exports": { ".": { - "types": { - "require": "./dist/cjs/src/index.d.ts", - "default": "./dist/esm/src/index.d.ts" - }, - "default": { - "require": "./dist/cjs/src/index.js", - "default": "./dist/esm/src/index.js" - } + "types": "./dist/src/index.d.ts", + "import": "./dist/src/index.js", + "default": "./dist/src/index.js" } }, "engines": { "node": ">=22.0.0" }, "files": [ - "dist/cjs", - "dist/esm" + "dist" ], "scripts": { - "build:cjs": "tsc --module commonjs --moduleResolution node10 --outDir dist/cjs && touch dist/cjs/package.json && echo '{\"type\": \"commonjs\"}' > dist/cjs/package.json", - "build:esm": "tsc --outDir dist/esm && touch dist/esm/package.json && echo '{\"type\": \"module\"}' > dist/esm/package.json", - "build": "npm run build:cjs && npm run build:esm", + "build": "tsc --outDir dist", "check": "node scripts/check.mjs" }, "repository": { From ed3d2282fb5984640772ef4565cd817ab57d071d Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Tue, 22 Sep 2026 15:42:04 +0100 Subject: [PATCH 53/62] chore: prepare release v3.15.0-alpha.3 --- package.json | 2 +- packages/core/package.json | 2 +- packages/core/src/version.ts | 2 +- packages/node/package.json | 2 +- packages/web/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 03edbe10..bc5f75b3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "weaviate-client", - "version": "3.15.0-alpha.2", + "version": "3.15.0-alpha.3", "description": "JS/TS client for Weaviate", "type": "module", "engines": { diff --git a/packages/core/package.json b/packages/core/package.json index 67d121bd..dc46696e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/core", - "version": "3.15.0-alpha.2", + "version": "3.15.0-alpha.3", "description": "JS/TS client for Weaviate", "main": "dist/src/index.js", "type": "module", diff --git a/packages/core/src/version.ts b/packages/core/src/version.ts index 112a5267..f12658e6 100644 --- a/packages/core/src/version.ts +++ b/packages/core/src/version.ts @@ -1 +1 @@ -export const WEAVIATE_CLIENT_VERSION = '3.15.0-alpha.2'; +export const WEAVIATE_CLIENT_VERSION = '3.15.0-alpha.3'; diff --git a/packages/node/package.json b/packages/node/package.json index acffa913..b8ca04ae 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/node", - "version": "3.15.0-alpha.2", + "version": "3.15.0-alpha.3", "description": "JS/TS node client for Weaviate", "main": "dist/cjs/src/index.js", "type": "module", diff --git a/packages/web/package.json b/packages/web/package.json index c2a2d5ce..0c7492f5 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/web", - "version": "3.15.0-alpha.2", + "version": "3.15.0-alpha.3", "description": "JS/TS web client for Weaviate", "type": "module", "main": "./dist/src/index.js", From 6dd245753dd3139b046e8cd6352061e51ffd605d Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Tue, 22 Sep 2026 16:20:53 +0100 Subject: [PATCH 54/62] Update protobufjs deps and ensure `refresh_protos.sh` is working as intended --- package.json | 1 + packages/core/package.json | 3 +- .../core/src/proto/google/health/v1/health.ts | 4 +- .../core/src/proto/google/protobuf/struct.ts | 2 +- packages/core/src/proto/v1/aggregate.ts | 5 +- packages/core/src/proto/v1/base.ts | 5 +- packages/core/src/proto/v1/base_search.ts | 2 +- packages/core/src/proto/v1/batch.ts | 2 +- packages/core/src/proto/v1/batch_delete.ts | 5 +- packages/core/src/proto/v1/generative.ts | 1960 ++++++++++++----- packages/core/src/proto/v1/health_weaviate.ts | 2 +- packages/core/src/proto/v1/properties.ts | 5 +- packages/core/src/proto/v1/search_get.ts | 5 +- packages/core/src/proto/v1/tenants.ts | 2 +- packages/core/src/proto/v1/weaviate.ts | 4 +- pnpm-lock.yaml | 84 +- pnpm-workspace.yaml | 5 +- tools/refresh_protos.sh | 74 +- 18 files changed, 1499 insertions(+), 671 deletions(-) diff --git a/package.json b/package.json index bc5f75b3..a257f313 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "eslint": "^8.57.1", "eslint-config-prettier": "^8.10.0", "eslint-plugin-prettier": "^4.2.1", + "grpc-tools": "^1.13.0", "husky": "^8.0.3", "lint-staged": "^13.3.0", "openapi-typescript": "^5.4.2", diff --git a/packages/core/package.json b/packages/core/package.json index dc46696e..d5e3a93b 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -46,15 +46,14 @@ "graphql": "^16.12.0", "graphql-request": "^7.4.0", "long": "^5.3.2", + "protobufjs": "^7.5.5", "nice-grpc-common": "^2.0.3", "uuid": "^14.0.0" }, "devDependencies": { "@types/node": "^25.0.3", "@types/uuid": "^9.0.1", - "grpc-tools": "^1.12.4", "openapi-typescript": "^5.4.1", - "protobufjs": "^7.5.5", "typescript": "^5.9.3" }, "lint-staged": { diff --git a/packages/core/src/proto/google/health/v1/health.ts b/packages/core/src/proto/google/health/v1/health.ts index f9144464..7721fb44 100644 --- a/packages/core/src/proto/google/health/v1/health.ts +++ b/packages/core/src/proto/google/health/v1/health.ts @@ -1,11 +1,11 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v1.176.0 +// protoc-gen-ts_proto v1.181.2 // protoc v3.19.1 // source: health.proto /* eslint-disable */ -import { type CallContext, type CallOptions } from "nice-grpc-common"; +import type { CallContext, CallOptions } from "nice-grpc-common"; import _m0 from "protobufjs/minimal.js"; export const protobufPackage = "grpc.health.v1"; diff --git a/packages/core/src/proto/google/protobuf/struct.ts b/packages/core/src/proto/google/protobuf/struct.ts index bd64f230..e50bff7d 100644 --- a/packages/core/src/proto/google/protobuf/struct.ts +++ b/packages/core/src/proto/google/protobuf/struct.ts @@ -1,6 +1,6 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v1.176.0 +// protoc-gen-ts_proto v1.181.2 // protoc v3.19.1 // source: google/protobuf/struct.proto diff --git a/packages/core/src/proto/v1/aggregate.ts b/packages/core/src/proto/v1/aggregate.ts index 9caf8d16..7f23e570 100644 --- a/packages/core/src/proto/v1/aggregate.ts +++ b/packages/core/src/proto/v1/aggregate.ts @@ -1,6 +1,6 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v1.176.0 +// protoc-gen-ts_proto v1.181.2 // protoc v3.19.1 // source: v1/aggregate.proto @@ -3420,6 +3420,9 @@ function longToNumber(long: Long): number { if (long.gt(globalThis.Number.MAX_SAFE_INTEGER)) { throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); } + if (long.lt(globalThis.Number.MIN_SAFE_INTEGER)) { + throw new globalThis.Error("Value is smaller than Number.MIN_SAFE_INTEGER"); + } return long.toNumber(); } diff --git a/packages/core/src/proto/v1/base.ts b/packages/core/src/proto/v1/base.ts index 96bef64a..78a6748e 100644 --- a/packages/core/src/proto/v1/base.ts +++ b/packages/core/src/proto/v1/base.ts @@ -1,6 +1,6 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v1.176.0 +// protoc-gen-ts_proto v1.181.2 // protoc v3.19.1 // source: v1/base.proto @@ -2130,6 +2130,9 @@ function longToNumber(long: Long): number { if (long.gt(globalThis.Number.MAX_SAFE_INTEGER)) { throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); } + if (long.lt(globalThis.Number.MIN_SAFE_INTEGER)) { + throw new globalThis.Error("Value is smaller than Number.MIN_SAFE_INTEGER"); + } return long.toNumber(); } diff --git a/packages/core/src/proto/v1/base_search.ts b/packages/core/src/proto/v1/base_search.ts index 3ca51c27..e51c4c02 100644 --- a/packages/core/src/proto/v1/base_search.ts +++ b/packages/core/src/proto/v1/base_search.ts @@ -1,6 +1,6 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v1.176.0 +// protoc-gen-ts_proto v1.181.2 // protoc v3.19.1 // source: v1/base_search.proto diff --git a/packages/core/src/proto/v1/batch.ts b/packages/core/src/proto/v1/batch.ts index 85949b16..b1f12abd 100644 --- a/packages/core/src/proto/v1/batch.ts +++ b/packages/core/src/proto/v1/batch.ts @@ -1,6 +1,6 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v1.176.0 +// protoc-gen-ts_proto v1.181.2 // protoc v3.19.1 // source: v1/batch.proto diff --git a/packages/core/src/proto/v1/batch_delete.ts b/packages/core/src/proto/v1/batch_delete.ts index 83c219ae..d374faf9 100644 --- a/packages/core/src/proto/v1/batch_delete.ts +++ b/packages/core/src/proto/v1/batch_delete.ts @@ -1,6 +1,6 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v1.176.0 +// protoc-gen-ts_proto v1.181.2 // protoc v3.19.1 // source: v1/batch_delete.proto @@ -425,6 +425,9 @@ function longToNumber(long: Long): number { if (long.gt(globalThis.Number.MAX_SAFE_INTEGER)) { throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); } + if (long.lt(globalThis.Number.MIN_SAFE_INTEGER)) { + throw new globalThis.Error("Value is smaller than Number.MIN_SAFE_INTEGER"); + } return long.toNumber(); } diff --git a/packages/core/src/proto/v1/generative.ts b/packages/core/src/proto/v1/generative.ts index bd228463..103319ea 100644 --- a/packages/core/src/proto/v1/generative.ts +++ b/packages/core/src/proto/v1/generative.ts @@ -1,6 +1,6 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v1.176.0 +// protoc-gen-ts_proto v1.181.2 // protoc v3.19.1 // source: v1/generative.proto @@ -56,6 +56,8 @@ export interface GenerativeProvider { xai?: GenerativeXAI | undefined; contextualai?: GenerativeContextualAI | undefined; deepseek?: GenerativeDeepseek | undefined; + digitalocean?: GenerativeDigitalOcean | undefined; + meta?: GenerativeMeta | undefined; } export interface GenerativeAnthropic { @@ -319,6 +321,93 @@ export interface GenerativeDeepseek { stop?: TextArray | undefined; } +export interface GenerativeDigitalOcean { + baseUrl?: string | undefined; + model?: string | undefined; + temperature?: number | undefined; + topP?: number | undefined; + maxTokens?: number | undefined; + frequencyPenalty?: number | undefined; + presencePenalty?: number | undefined; + stop?: TextArray | undefined; +} + +export interface GenerativeMeta { + baseUrl?: string | undefined; + model?: string | undefined; + temperature?: number | undefined; + topP?: number | undefined; + maxTokens?: number | undefined; + frequencyPenalty?: number | undefined; + presencePenalty?: number | undefined; + reasoningEffort?: GenerativeMeta_ReasoningEffort | undefined; + images?: TextArray | undefined; + imageProperties?: TextArray | undefined; +} + +export enum GenerativeMeta_ReasoningEffort { + REASONING_EFFORT_UNSPECIFIED = 0, + REASONING_EFFORT_NONE = 1, + REASONING_EFFORT_MINIMAL = 2, + REASONING_EFFORT_LOW = 3, + REASONING_EFFORT_MEDIUM = 4, + REASONING_EFFORT_HIGH = 5, + REASONING_EFFORT_XHIGH = 6, + UNRECOGNIZED = -1, +} + +export function generativeMeta_ReasoningEffortFromJSON(object: any): GenerativeMeta_ReasoningEffort { + switch (object) { + case 0: + case "REASONING_EFFORT_UNSPECIFIED": + return GenerativeMeta_ReasoningEffort.REASONING_EFFORT_UNSPECIFIED; + case 1: + case "REASONING_EFFORT_NONE": + return GenerativeMeta_ReasoningEffort.REASONING_EFFORT_NONE; + case 2: + case "REASONING_EFFORT_MINIMAL": + return GenerativeMeta_ReasoningEffort.REASONING_EFFORT_MINIMAL; + case 3: + case "REASONING_EFFORT_LOW": + return GenerativeMeta_ReasoningEffort.REASONING_EFFORT_LOW; + case 4: + case "REASONING_EFFORT_MEDIUM": + return GenerativeMeta_ReasoningEffort.REASONING_EFFORT_MEDIUM; + case 5: + case "REASONING_EFFORT_HIGH": + return GenerativeMeta_ReasoningEffort.REASONING_EFFORT_HIGH; + case 6: + case "REASONING_EFFORT_XHIGH": + return GenerativeMeta_ReasoningEffort.REASONING_EFFORT_XHIGH; + case -1: + case "UNRECOGNIZED": + default: + return GenerativeMeta_ReasoningEffort.UNRECOGNIZED; + } +} + +export function generativeMeta_ReasoningEffortToJSON(object: GenerativeMeta_ReasoningEffort): string { + switch (object) { + case GenerativeMeta_ReasoningEffort.REASONING_EFFORT_UNSPECIFIED: + return "REASONING_EFFORT_UNSPECIFIED"; + case GenerativeMeta_ReasoningEffort.REASONING_EFFORT_NONE: + return "REASONING_EFFORT_NONE"; + case GenerativeMeta_ReasoningEffort.REASONING_EFFORT_MINIMAL: + return "REASONING_EFFORT_MINIMAL"; + case GenerativeMeta_ReasoningEffort.REASONING_EFFORT_LOW: + return "REASONING_EFFORT_LOW"; + case GenerativeMeta_ReasoningEffort.REASONING_EFFORT_MEDIUM: + return "REASONING_EFFORT_MEDIUM"; + case GenerativeMeta_ReasoningEffort.REASONING_EFFORT_HIGH: + return "REASONING_EFFORT_HIGH"; + case GenerativeMeta_ReasoningEffort.REASONING_EFFORT_XHIGH: + return "REASONING_EFFORT_XHIGH"; + case GenerativeMeta_ReasoningEffort.UNRECOGNIZED: + default: + return "UNRECOGNIZED"; + } +} + export interface GenerativeAnthropicMetadata { usage: GenerativeAnthropicMetadata_Usage | undefined; } @@ -460,6 +549,26 @@ export interface GenerativeDeepseekMetadata_Usage { totalTokens?: number | undefined; } +export interface GenerativeDigitalOceanMetadata { + usage?: GenerativeDigitalOceanMetadata_Usage | undefined; +} + +export interface GenerativeDigitalOceanMetadata_Usage { + promptTokens?: number | undefined; + completionTokens?: number | undefined; + totalTokens?: number | undefined; +} + +export interface GenerativeMetaMetadata { + usage?: GenerativeMetaMetadata_Usage | undefined; +} + +export interface GenerativeMetaMetadata_Usage { + promptTokens?: number | undefined; + completionTokens?: number | undefined; + totalTokens?: number | undefined; +} + export interface GenerativeMetadata { anthropic?: GenerativeAnthropicMetadata | undefined; anyscale?: GenerativeAnyscaleMetadata | undefined; @@ -475,6 +584,8 @@ export interface GenerativeMetadata { nvidia?: GenerativeNvidiaMetadata | undefined; xai?: GenerativeXAIMetadata | undefined; deepseek?: GenerativeDeepseekMetadata | undefined; + digitalocean?: GenerativeDigitalOceanMetadata | undefined; + meta?: GenerativeMetaMetadata | undefined; } export interface GenerativeReply { @@ -839,6 +950,8 @@ function createBaseGenerativeProvider(): GenerativeProvider { xai: undefined, contextualai: undefined, deepseek: undefined, + digitalocean: undefined, + meta: undefined, }; } @@ -892,6 +1005,12 @@ export const GenerativeProvider = { if (message.deepseek !== undefined) { GenerativeDeepseek.encode(message.deepseek, writer.uint32(130).fork()).ldelim(); } + if (message.digitalocean !== undefined) { + GenerativeDigitalOcean.encode(message.digitalocean, writer.uint32(138).fork()).ldelim(); + } + if (message.meta !== undefined) { + GenerativeMeta.encode(message.meta, writer.uint32(146).fork()).ldelim(); + } return writer; }, @@ -1014,6 +1133,20 @@ export const GenerativeProvider = { message.deepseek = GenerativeDeepseek.decode(reader, reader.uint32()); continue; + case 17: + if (tag !== 138) { + break; + } + + message.digitalocean = GenerativeDigitalOcean.decode(reader, reader.uint32()); + continue; + case 18: + if (tag !== 146) { + break; + } + + message.meta = GenerativeMeta.decode(reader, reader.uint32()); + continue; } if ((tag & 7) === 4 || tag === 0) { break; @@ -1041,6 +1174,8 @@ export const GenerativeProvider = { xai: isSet(object.xai) ? GenerativeXAI.fromJSON(object.xai) : undefined, contextualai: isSet(object.contextualai) ? GenerativeContextualAI.fromJSON(object.contextualai) : undefined, deepseek: isSet(object.deepseek) ? GenerativeDeepseek.fromJSON(object.deepseek) : undefined, + digitalocean: isSet(object.digitalocean) ? GenerativeDigitalOcean.fromJSON(object.digitalocean) : undefined, + meta: isSet(object.meta) ? GenerativeMeta.fromJSON(object.meta) : undefined, }; }, @@ -1094,6 +1229,12 @@ export const GenerativeProvider = { if (message.deepseek !== undefined) { obj.deepseek = GenerativeDeepseek.toJSON(message.deepseek); } + if (message.digitalocean !== undefined) { + obj.digitalocean = GenerativeDigitalOcean.toJSON(message.digitalocean); + } + if (message.meta !== undefined) { + obj.meta = GenerativeMeta.toJSON(message.meta); + } return obj; }, @@ -1144,6 +1285,12 @@ export const GenerativeProvider = { message.deepseek = (object.deepseek !== undefined && object.deepseek !== null) ? GenerativeDeepseek.fromPartial(object.deepseek) : undefined; + message.digitalocean = (object.digitalocean !== undefined && object.digitalocean !== null) + ? GenerativeDigitalOcean.fromPartial(object.digitalocean) + : undefined; + message.meta = (object.meta !== undefined && object.meta !== null) + ? GenerativeMeta.fromPartial(object.meta) + : undefined; return message; }, }; @@ -3765,22 +3912,52 @@ export const GenerativeDeepseek = { }, }; -function createBaseGenerativeAnthropicMetadata(): GenerativeAnthropicMetadata { - return { usage: undefined }; +function createBaseGenerativeDigitalOcean(): GenerativeDigitalOcean { + return { + baseUrl: undefined, + model: undefined, + temperature: undefined, + topP: undefined, + maxTokens: undefined, + frequencyPenalty: undefined, + presencePenalty: undefined, + stop: undefined, + }; } -export const GenerativeAnthropicMetadata = { - encode(message: GenerativeAnthropicMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.usage !== undefined) { - GenerativeAnthropicMetadata_Usage.encode(message.usage, writer.uint32(10).fork()).ldelim(); +export const GenerativeDigitalOcean = { + encode(message: GenerativeDigitalOcean, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.baseUrl !== undefined) { + writer.uint32(10).string(message.baseUrl); + } + if (message.model !== undefined) { + writer.uint32(18).string(message.model); + } + if (message.temperature !== undefined) { + writer.uint32(25).double(message.temperature); + } + if (message.topP !== undefined) { + writer.uint32(33).double(message.topP); + } + if (message.maxTokens !== undefined) { + writer.uint32(40).int64(message.maxTokens); + } + if (message.frequencyPenalty !== undefined) { + writer.uint32(49).double(message.frequencyPenalty); + } + if (message.presencePenalty !== undefined) { + writer.uint32(57).double(message.presencePenalty); + } + if (message.stop !== undefined) { + TextArray.encode(message.stop, writer.uint32(66).fork()).ldelim(); } return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeAnthropicMetadata { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeDigitalOcean { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeAnthropicMetadata(); + const message = createBaseGenerativeDigitalOcean(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -3789,76 +3966,56 @@ export const GenerativeAnthropicMetadata = { break; } - message.usage = GenerativeAnthropicMetadata_Usage.decode(reader, reader.uint32()); + message.baseUrl = reader.string(); continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): GenerativeAnthropicMetadata { - return { usage: isSet(object.usage) ? GenerativeAnthropicMetadata_Usage.fromJSON(object.usage) : undefined }; - }, + case 2: + if (tag !== 18) { + break; + } - toJSON(message: GenerativeAnthropicMetadata): unknown { - const obj: any = {}; - if (message.usage !== undefined) { - obj.usage = GenerativeAnthropicMetadata_Usage.toJSON(message.usage); - } - return obj; - }, + message.model = reader.string(); + continue; + case 3: + if (tag !== 25) { + break; + } - create(base?: DeepPartial): GenerativeAnthropicMetadata { - return GenerativeAnthropicMetadata.fromPartial(base ?? {}); - }, - fromPartial(object: DeepPartial): GenerativeAnthropicMetadata { - const message = createBaseGenerativeAnthropicMetadata(); - message.usage = (object.usage !== undefined && object.usage !== null) - ? GenerativeAnthropicMetadata_Usage.fromPartial(object.usage) - : undefined; - return message; - }, -}; + message.temperature = reader.double(); + continue; + case 4: + if (tag !== 33) { + break; + } -function createBaseGenerativeAnthropicMetadata_Usage(): GenerativeAnthropicMetadata_Usage { - return { inputTokens: 0, outputTokens: 0 }; -} + message.topP = reader.double(); + continue; + case 5: + if (tag !== 40) { + break; + } -export const GenerativeAnthropicMetadata_Usage = { - encode(message: GenerativeAnthropicMetadata_Usage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.inputTokens !== 0) { - writer.uint32(8).int64(message.inputTokens); - } - if (message.outputTokens !== 0) { - writer.uint32(16).int64(message.outputTokens); - } - return writer; - }, + message.maxTokens = longToNumber(reader.int64() as Long); + continue; + case 6: + if (tag !== 49) { + break; + } - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeAnthropicMetadata_Usage { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeAnthropicMetadata_Usage(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { + message.frequencyPenalty = reader.double(); + continue; + case 7: + if (tag !== 57) { break; } - message.inputTokens = longToNumber(reader.int64() as Long); + message.presencePenalty = reader.double(); continue; - case 2: - if (tag !== 16) { + case 8: + if (tag !== 66) { break; } - message.outputTokens = longToNumber(reader.int64() as Long); + message.stop = TextArray.decode(reader, reader.uint32()); continue; } if ((tag & 7) === 4 || tag === 0) { @@ -3869,25 +4026,399 @@ export const GenerativeAnthropicMetadata_Usage = { return message; }, - fromJSON(object: any): GenerativeAnthropicMetadata_Usage { + fromJSON(object: any): GenerativeDigitalOcean { return { - inputTokens: isSet(object.inputTokens) ? globalThis.Number(object.inputTokens) : 0, - outputTokens: isSet(object.outputTokens) ? globalThis.Number(object.outputTokens) : 0, + baseUrl: isSet(object.baseUrl) ? globalThis.String(object.baseUrl) : undefined, + model: isSet(object.model) ? globalThis.String(object.model) : undefined, + temperature: isSet(object.temperature) ? globalThis.Number(object.temperature) : undefined, + topP: isSet(object.topP) ? globalThis.Number(object.topP) : undefined, + maxTokens: isSet(object.maxTokens) ? globalThis.Number(object.maxTokens) : undefined, + frequencyPenalty: isSet(object.frequencyPenalty) ? globalThis.Number(object.frequencyPenalty) : undefined, + presencePenalty: isSet(object.presencePenalty) ? globalThis.Number(object.presencePenalty) : undefined, + stop: isSet(object.stop) ? TextArray.fromJSON(object.stop) : undefined, }; }, - toJSON(message: GenerativeAnthropicMetadata_Usage): unknown { + toJSON(message: GenerativeDigitalOcean): unknown { const obj: any = {}; - if (message.inputTokens !== 0) { - obj.inputTokens = Math.round(message.inputTokens); + if (message.baseUrl !== undefined) { + obj.baseUrl = message.baseUrl; } - if (message.outputTokens !== 0) { - obj.outputTokens = Math.round(message.outputTokens); + if (message.model !== undefined) { + obj.model = message.model; + } + if (message.temperature !== undefined) { + obj.temperature = message.temperature; + } + if (message.topP !== undefined) { + obj.topP = message.topP; + } + if (message.maxTokens !== undefined) { + obj.maxTokens = Math.round(message.maxTokens); + } + if (message.frequencyPenalty !== undefined) { + obj.frequencyPenalty = message.frequencyPenalty; + } + if (message.presencePenalty !== undefined) { + obj.presencePenalty = message.presencePenalty; + } + if (message.stop !== undefined) { + obj.stop = TextArray.toJSON(message.stop); } return obj; }, - create(base?: DeepPartial): GenerativeAnthropicMetadata_Usage { + create(base?: DeepPartial): GenerativeDigitalOcean { + return GenerativeDigitalOcean.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GenerativeDigitalOcean { + const message = createBaseGenerativeDigitalOcean(); + message.baseUrl = object.baseUrl ?? undefined; + message.model = object.model ?? undefined; + message.temperature = object.temperature ?? undefined; + message.topP = object.topP ?? undefined; + message.maxTokens = object.maxTokens ?? undefined; + message.frequencyPenalty = object.frequencyPenalty ?? undefined; + message.presencePenalty = object.presencePenalty ?? undefined; + message.stop = (object.stop !== undefined && object.stop !== null) ? TextArray.fromPartial(object.stop) : undefined; + return message; + }, +}; + +function createBaseGenerativeMeta(): GenerativeMeta { + return { + baseUrl: undefined, + model: undefined, + temperature: undefined, + topP: undefined, + maxTokens: undefined, + frequencyPenalty: undefined, + presencePenalty: undefined, + reasoningEffort: undefined, + images: undefined, + imageProperties: undefined, + }; +} + +export const GenerativeMeta = { + encode(message: GenerativeMeta, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.baseUrl !== undefined) { + writer.uint32(10).string(message.baseUrl); + } + if (message.model !== undefined) { + writer.uint32(18).string(message.model); + } + if (message.temperature !== undefined) { + writer.uint32(25).double(message.temperature); + } + if (message.topP !== undefined) { + writer.uint32(33).double(message.topP); + } + if (message.maxTokens !== undefined) { + writer.uint32(40).int64(message.maxTokens); + } + if (message.frequencyPenalty !== undefined) { + writer.uint32(49).double(message.frequencyPenalty); + } + if (message.presencePenalty !== undefined) { + writer.uint32(57).double(message.presencePenalty); + } + if (message.reasoningEffort !== undefined) { + writer.uint32(64).int32(message.reasoningEffort); + } + if (message.images !== undefined) { + TextArray.encode(message.images, writer.uint32(74).fork()).ldelim(); + } + if (message.imageProperties !== undefined) { + TextArray.encode(message.imageProperties, writer.uint32(82).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeMeta { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGenerativeMeta(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.baseUrl = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.model = reader.string(); + continue; + case 3: + if (tag !== 25) { + break; + } + + message.temperature = reader.double(); + continue; + case 4: + if (tag !== 33) { + break; + } + + message.topP = reader.double(); + continue; + case 5: + if (tag !== 40) { + break; + } + + message.maxTokens = longToNumber(reader.int64() as Long); + continue; + case 6: + if (tag !== 49) { + break; + } + + message.frequencyPenalty = reader.double(); + continue; + case 7: + if (tag !== 57) { + break; + } + + message.presencePenalty = reader.double(); + continue; + case 8: + if (tag !== 64) { + break; + } + + message.reasoningEffort = reader.int32() as any; + continue; + case 9: + if (tag !== 74) { + break; + } + + message.images = TextArray.decode(reader, reader.uint32()); + continue; + case 10: + if (tag !== 82) { + break; + } + + message.imageProperties = TextArray.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + fromJSON(object: any): GenerativeMeta { + return { + baseUrl: isSet(object.baseUrl) ? globalThis.String(object.baseUrl) : undefined, + model: isSet(object.model) ? globalThis.String(object.model) : undefined, + temperature: isSet(object.temperature) ? globalThis.Number(object.temperature) : undefined, + topP: isSet(object.topP) ? globalThis.Number(object.topP) : undefined, + maxTokens: isSet(object.maxTokens) ? globalThis.Number(object.maxTokens) : undefined, + frequencyPenalty: isSet(object.frequencyPenalty) ? globalThis.Number(object.frequencyPenalty) : undefined, + presencePenalty: isSet(object.presencePenalty) ? globalThis.Number(object.presencePenalty) : undefined, + reasoningEffort: isSet(object.reasoningEffort) + ? generativeMeta_ReasoningEffortFromJSON(object.reasoningEffort) + : undefined, + images: isSet(object.images) ? TextArray.fromJSON(object.images) : undefined, + imageProperties: isSet(object.imageProperties) ? TextArray.fromJSON(object.imageProperties) : undefined, + }; + }, + + toJSON(message: GenerativeMeta): unknown { + const obj: any = {}; + if (message.baseUrl !== undefined) { + obj.baseUrl = message.baseUrl; + } + if (message.model !== undefined) { + obj.model = message.model; + } + if (message.temperature !== undefined) { + obj.temperature = message.temperature; + } + if (message.topP !== undefined) { + obj.topP = message.topP; + } + if (message.maxTokens !== undefined) { + obj.maxTokens = Math.round(message.maxTokens); + } + if (message.frequencyPenalty !== undefined) { + obj.frequencyPenalty = message.frequencyPenalty; + } + if (message.presencePenalty !== undefined) { + obj.presencePenalty = message.presencePenalty; + } + if (message.reasoningEffort !== undefined) { + obj.reasoningEffort = generativeMeta_ReasoningEffortToJSON(message.reasoningEffort); + } + if (message.images !== undefined) { + obj.images = TextArray.toJSON(message.images); + } + if (message.imageProperties !== undefined) { + obj.imageProperties = TextArray.toJSON(message.imageProperties); + } + return obj; + }, + + create(base?: DeepPartial): GenerativeMeta { + return GenerativeMeta.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GenerativeMeta { + const message = createBaseGenerativeMeta(); + message.baseUrl = object.baseUrl ?? undefined; + message.model = object.model ?? undefined; + message.temperature = object.temperature ?? undefined; + message.topP = object.topP ?? undefined; + message.maxTokens = object.maxTokens ?? undefined; + message.frequencyPenalty = object.frequencyPenalty ?? undefined; + message.presencePenalty = object.presencePenalty ?? undefined; + message.reasoningEffort = object.reasoningEffort ?? undefined; + message.images = (object.images !== undefined && object.images !== null) + ? TextArray.fromPartial(object.images) + : undefined; + message.imageProperties = (object.imageProperties !== undefined && object.imageProperties !== null) + ? TextArray.fromPartial(object.imageProperties) + : undefined; + return message; + }, +}; + +function createBaseGenerativeAnthropicMetadata(): GenerativeAnthropicMetadata { + return { usage: undefined }; +} + +export const GenerativeAnthropicMetadata = { + encode(message: GenerativeAnthropicMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.usage !== undefined) { + GenerativeAnthropicMetadata_Usage.encode(message.usage, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeAnthropicMetadata { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGenerativeAnthropicMetadata(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.usage = GenerativeAnthropicMetadata_Usage.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + fromJSON(object: any): GenerativeAnthropicMetadata { + return { usage: isSet(object.usage) ? GenerativeAnthropicMetadata_Usage.fromJSON(object.usage) : undefined }; + }, + + toJSON(message: GenerativeAnthropicMetadata): unknown { + const obj: any = {}; + if (message.usage !== undefined) { + obj.usage = GenerativeAnthropicMetadata_Usage.toJSON(message.usage); + } + return obj; + }, + + create(base?: DeepPartial): GenerativeAnthropicMetadata { + return GenerativeAnthropicMetadata.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GenerativeAnthropicMetadata { + const message = createBaseGenerativeAnthropicMetadata(); + message.usage = (object.usage !== undefined && object.usage !== null) + ? GenerativeAnthropicMetadata_Usage.fromPartial(object.usage) + : undefined; + return message; + }, +}; + +function createBaseGenerativeAnthropicMetadata_Usage(): GenerativeAnthropicMetadata_Usage { + return { inputTokens: 0, outputTokens: 0 }; +} + +export const GenerativeAnthropicMetadata_Usage = { + encode(message: GenerativeAnthropicMetadata_Usage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.inputTokens !== 0) { + writer.uint32(8).int64(message.inputTokens); + } + if (message.outputTokens !== 0) { + writer.uint32(16).int64(message.outputTokens); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeAnthropicMetadata_Usage { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGenerativeAnthropicMetadata_Usage(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.inputTokens = longToNumber(reader.int64() as Long); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.outputTokens = longToNumber(reader.int64() as Long); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + fromJSON(object: any): GenerativeAnthropicMetadata_Usage { + return { + inputTokens: isSet(object.inputTokens) ? globalThis.Number(object.inputTokens) : 0, + outputTokens: isSet(object.outputTokens) ? globalThis.Number(object.outputTokens) : 0, + }; + }, + + toJSON(message: GenerativeAnthropicMetadata_Usage): unknown { + const obj: any = {}; + if (message.inputTokens !== 0) { + obj.inputTokens = Math.round(message.inputTokens); + } + if (message.outputTokens !== 0) { + obj.outputTokens = Math.round(message.outputTokens); + } + return obj; + }, + + create(base?: DeepPartial): GenerativeAnthropicMetadata_Usage { return GenerativeAnthropicMetadata_Usage.fromPartial(base ?? {}); }, fromPartial(object: DeepPartial): GenerativeAnthropicMetadata_Usage { @@ -4263,71 +4794,257 @@ export const GenerativeCohereMetadata_BilledUnits = { }; }, - toJSON(message: GenerativeCohereMetadata_BilledUnits): unknown { + toJSON(message: GenerativeCohereMetadata_BilledUnits): unknown { + const obj: any = {}; + if (message.inputTokens !== undefined) { + obj.inputTokens = message.inputTokens; + } + if (message.outputTokens !== undefined) { + obj.outputTokens = message.outputTokens; + } + if (message.searchUnits !== undefined) { + obj.searchUnits = message.searchUnits; + } + if (message.classifications !== undefined) { + obj.classifications = message.classifications; + } + return obj; + }, + + create(base?: DeepPartial): GenerativeCohereMetadata_BilledUnits { + return GenerativeCohereMetadata_BilledUnits.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GenerativeCohereMetadata_BilledUnits { + const message = createBaseGenerativeCohereMetadata_BilledUnits(); + message.inputTokens = object.inputTokens ?? undefined; + message.outputTokens = object.outputTokens ?? undefined; + message.searchUnits = object.searchUnits ?? undefined; + message.classifications = object.classifications ?? undefined; + return message; + }, +}; + +function createBaseGenerativeCohereMetadata_Tokens(): GenerativeCohereMetadata_Tokens { + return { inputTokens: undefined, outputTokens: undefined }; +} + +export const GenerativeCohereMetadata_Tokens = { + encode(message: GenerativeCohereMetadata_Tokens, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.inputTokens !== undefined) { + writer.uint32(9).double(message.inputTokens); + } + if (message.outputTokens !== undefined) { + writer.uint32(17).double(message.outputTokens); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeCohereMetadata_Tokens { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGenerativeCohereMetadata_Tokens(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 9) { + break; + } + + message.inputTokens = reader.double(); + continue; + case 2: + if (tag !== 17) { + break; + } + + message.outputTokens = reader.double(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + fromJSON(object: any): GenerativeCohereMetadata_Tokens { + return { + inputTokens: isSet(object.inputTokens) ? globalThis.Number(object.inputTokens) : undefined, + outputTokens: isSet(object.outputTokens) ? globalThis.Number(object.outputTokens) : undefined, + }; + }, + + toJSON(message: GenerativeCohereMetadata_Tokens): unknown { + const obj: any = {}; + if (message.inputTokens !== undefined) { + obj.inputTokens = message.inputTokens; + } + if (message.outputTokens !== undefined) { + obj.outputTokens = message.outputTokens; + } + return obj; + }, + + create(base?: DeepPartial): GenerativeCohereMetadata_Tokens { + return GenerativeCohereMetadata_Tokens.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GenerativeCohereMetadata_Tokens { + const message = createBaseGenerativeCohereMetadata_Tokens(); + message.inputTokens = object.inputTokens ?? undefined; + message.outputTokens = object.outputTokens ?? undefined; + return message; + }, +}; + +function createBaseGenerativeDummyMetadata(): GenerativeDummyMetadata { + return {}; +} + +export const GenerativeDummyMetadata = { + encode(_: GenerativeDummyMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeDummyMetadata { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGenerativeDummyMetadata(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + fromJSON(_: any): GenerativeDummyMetadata { + return {}; + }, + + toJSON(_: GenerativeDummyMetadata): unknown { + const obj: any = {}; + return obj; + }, + + create(base?: DeepPartial): GenerativeDummyMetadata { + return GenerativeDummyMetadata.fromPartial(base ?? {}); + }, + fromPartial(_: DeepPartial): GenerativeDummyMetadata { + const message = createBaseGenerativeDummyMetadata(); + return message; + }, +}; + +function createBaseGenerativeMistralMetadata(): GenerativeMistralMetadata { + return { usage: undefined }; +} + +export const GenerativeMistralMetadata = { + encode(message: GenerativeMistralMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.usage !== undefined) { + GenerativeMistralMetadata_Usage.encode(message.usage, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeMistralMetadata { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGenerativeMistralMetadata(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.usage = GenerativeMistralMetadata_Usage.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + fromJSON(object: any): GenerativeMistralMetadata { + return { usage: isSet(object.usage) ? GenerativeMistralMetadata_Usage.fromJSON(object.usage) : undefined }; + }, + + toJSON(message: GenerativeMistralMetadata): unknown { const obj: any = {}; - if (message.inputTokens !== undefined) { - obj.inputTokens = message.inputTokens; - } - if (message.outputTokens !== undefined) { - obj.outputTokens = message.outputTokens; - } - if (message.searchUnits !== undefined) { - obj.searchUnits = message.searchUnits; - } - if (message.classifications !== undefined) { - obj.classifications = message.classifications; + if (message.usage !== undefined) { + obj.usage = GenerativeMistralMetadata_Usage.toJSON(message.usage); } return obj; }, - create(base?: DeepPartial): GenerativeCohereMetadata_BilledUnits { - return GenerativeCohereMetadata_BilledUnits.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeMistralMetadata { + return GenerativeMistralMetadata.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeCohereMetadata_BilledUnits { - const message = createBaseGenerativeCohereMetadata_BilledUnits(); - message.inputTokens = object.inputTokens ?? undefined; - message.outputTokens = object.outputTokens ?? undefined; - message.searchUnits = object.searchUnits ?? undefined; - message.classifications = object.classifications ?? undefined; + fromPartial(object: DeepPartial): GenerativeMistralMetadata { + const message = createBaseGenerativeMistralMetadata(); + message.usage = (object.usage !== undefined && object.usage !== null) + ? GenerativeMistralMetadata_Usage.fromPartial(object.usage) + : undefined; return message; }, }; -function createBaseGenerativeCohereMetadata_Tokens(): GenerativeCohereMetadata_Tokens { - return { inputTokens: undefined, outputTokens: undefined }; +function createBaseGenerativeMistralMetadata_Usage(): GenerativeMistralMetadata_Usage { + return { promptTokens: undefined, completionTokens: undefined, totalTokens: undefined }; } -export const GenerativeCohereMetadata_Tokens = { - encode(message: GenerativeCohereMetadata_Tokens, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.inputTokens !== undefined) { - writer.uint32(9).double(message.inputTokens); +export const GenerativeMistralMetadata_Usage = { + encode(message: GenerativeMistralMetadata_Usage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.promptTokens !== undefined) { + writer.uint32(8).int64(message.promptTokens); } - if (message.outputTokens !== undefined) { - writer.uint32(17).double(message.outputTokens); + if (message.completionTokens !== undefined) { + writer.uint32(16).int64(message.completionTokens); + } + if (message.totalTokens !== undefined) { + writer.uint32(24).int64(message.totalTokens); } return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeCohereMetadata_Tokens { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeMistralMetadata_Usage { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeCohereMetadata_Tokens(); + const message = createBaseGenerativeMistralMetadata_Usage(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: - if (tag !== 9) { + if (tag !== 8) { break; } - message.inputTokens = reader.double(); + message.promptTokens = longToNumber(reader.int64() as Long); continue; case 2: - if (tag !== 17) { + if (tag !== 16) { break; } - message.outputTokens = reader.double(); + message.completionTokens = longToNumber(reader.int64() as Long); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.totalTokens = longToNumber(reader.int64() as Long); continue; } if ((tag & 7) === 4 || tag === 0) { @@ -4338,48 +5055,53 @@ export const GenerativeCohereMetadata_Tokens = { return message; }, - fromJSON(object: any): GenerativeCohereMetadata_Tokens { + fromJSON(object: any): GenerativeMistralMetadata_Usage { return { - inputTokens: isSet(object.inputTokens) ? globalThis.Number(object.inputTokens) : undefined, - outputTokens: isSet(object.outputTokens) ? globalThis.Number(object.outputTokens) : undefined, + promptTokens: isSet(object.promptTokens) ? globalThis.Number(object.promptTokens) : undefined, + completionTokens: isSet(object.completionTokens) ? globalThis.Number(object.completionTokens) : undefined, + totalTokens: isSet(object.totalTokens) ? globalThis.Number(object.totalTokens) : undefined, }; }, - toJSON(message: GenerativeCohereMetadata_Tokens): unknown { + toJSON(message: GenerativeMistralMetadata_Usage): unknown { const obj: any = {}; - if (message.inputTokens !== undefined) { - obj.inputTokens = message.inputTokens; + if (message.promptTokens !== undefined) { + obj.promptTokens = Math.round(message.promptTokens); } - if (message.outputTokens !== undefined) { - obj.outputTokens = message.outputTokens; + if (message.completionTokens !== undefined) { + obj.completionTokens = Math.round(message.completionTokens); + } + if (message.totalTokens !== undefined) { + obj.totalTokens = Math.round(message.totalTokens); } return obj; }, - create(base?: DeepPartial): GenerativeCohereMetadata_Tokens { - return GenerativeCohereMetadata_Tokens.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeMistralMetadata_Usage { + return GenerativeMistralMetadata_Usage.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeCohereMetadata_Tokens { - const message = createBaseGenerativeCohereMetadata_Tokens(); - message.inputTokens = object.inputTokens ?? undefined; - message.outputTokens = object.outputTokens ?? undefined; + fromPartial(object: DeepPartial): GenerativeMistralMetadata_Usage { + const message = createBaseGenerativeMistralMetadata_Usage(); + message.promptTokens = object.promptTokens ?? undefined; + message.completionTokens = object.completionTokens ?? undefined; + message.totalTokens = object.totalTokens ?? undefined; return message; }, }; -function createBaseGenerativeDummyMetadata(): GenerativeDummyMetadata { +function createBaseGenerativeOllamaMetadata(): GenerativeOllamaMetadata { return {}; } -export const GenerativeDummyMetadata = { - encode(_: GenerativeDummyMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { +export const GenerativeOllamaMetadata = { + encode(_: GenerativeOllamaMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeDummyMetadata { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeOllamaMetadata { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeDummyMetadata(); + const message = createBaseGenerativeOllamaMetadata(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -4392,40 +5114,40 @@ export const GenerativeDummyMetadata = { return message; }, - fromJSON(_: any): GenerativeDummyMetadata { + fromJSON(_: any): GenerativeOllamaMetadata { return {}; }, - toJSON(_: GenerativeDummyMetadata): unknown { + toJSON(_: GenerativeOllamaMetadata): unknown { const obj: any = {}; return obj; }, - create(base?: DeepPartial): GenerativeDummyMetadata { - return GenerativeDummyMetadata.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeOllamaMetadata { + return GenerativeOllamaMetadata.fromPartial(base ?? {}); }, - fromPartial(_: DeepPartial): GenerativeDummyMetadata { - const message = createBaseGenerativeDummyMetadata(); + fromPartial(_: DeepPartial): GenerativeOllamaMetadata { + const message = createBaseGenerativeOllamaMetadata(); return message; }, }; -function createBaseGenerativeMistralMetadata(): GenerativeMistralMetadata { +function createBaseGenerativeOpenAIMetadata(): GenerativeOpenAIMetadata { return { usage: undefined }; } -export const GenerativeMistralMetadata = { - encode(message: GenerativeMistralMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { +export const GenerativeOpenAIMetadata = { + encode(message: GenerativeOpenAIMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.usage !== undefined) { - GenerativeMistralMetadata_Usage.encode(message.usage, writer.uint32(10).fork()).ldelim(); + GenerativeOpenAIMetadata_Usage.encode(message.usage, writer.uint32(10).fork()).ldelim(); } return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeMistralMetadata { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeOpenAIMetadata { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeMistralMetadata(); + const message = createBaseGenerativeOpenAIMetadata(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -4434,7 +5156,7 @@ export const GenerativeMistralMetadata = { break; } - message.usage = GenerativeMistralMetadata_Usage.decode(reader, reader.uint32()); + message.usage = GenerativeOpenAIMetadata_Usage.decode(reader, reader.uint32()); continue; } if ((tag & 7) === 4 || tag === 0) { @@ -4445,36 +5167,36 @@ export const GenerativeMistralMetadata = { return message; }, - fromJSON(object: any): GenerativeMistralMetadata { - return { usage: isSet(object.usage) ? GenerativeMistralMetadata_Usage.fromJSON(object.usage) : undefined }; + fromJSON(object: any): GenerativeOpenAIMetadata { + return { usage: isSet(object.usage) ? GenerativeOpenAIMetadata_Usage.fromJSON(object.usage) : undefined }; }, - toJSON(message: GenerativeMistralMetadata): unknown { + toJSON(message: GenerativeOpenAIMetadata): unknown { const obj: any = {}; if (message.usage !== undefined) { - obj.usage = GenerativeMistralMetadata_Usage.toJSON(message.usage); + obj.usage = GenerativeOpenAIMetadata_Usage.toJSON(message.usage); } return obj; }, - create(base?: DeepPartial): GenerativeMistralMetadata { - return GenerativeMistralMetadata.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeOpenAIMetadata { + return GenerativeOpenAIMetadata.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeMistralMetadata { - const message = createBaseGenerativeMistralMetadata(); + fromPartial(object: DeepPartial): GenerativeOpenAIMetadata { + const message = createBaseGenerativeOpenAIMetadata(); message.usage = (object.usage !== undefined && object.usage !== null) - ? GenerativeMistralMetadata_Usage.fromPartial(object.usage) + ? GenerativeOpenAIMetadata_Usage.fromPartial(object.usage) : undefined; return message; }, }; -function createBaseGenerativeMistralMetadata_Usage(): GenerativeMistralMetadata_Usage { +function createBaseGenerativeOpenAIMetadata_Usage(): GenerativeOpenAIMetadata_Usage { return { promptTokens: undefined, completionTokens: undefined, totalTokens: undefined }; } -export const GenerativeMistralMetadata_Usage = { - encode(message: GenerativeMistralMetadata_Usage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { +export const GenerativeOpenAIMetadata_Usage = { + encode(message: GenerativeOpenAIMetadata_Usage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.promptTokens !== undefined) { writer.uint32(8).int64(message.promptTokens); } @@ -4487,10 +5209,10 @@ export const GenerativeMistralMetadata_Usage = { return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeMistralMetadata_Usage { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeOpenAIMetadata_Usage { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeMistralMetadata_Usage(); + const message = createBaseGenerativeOpenAIMetadata_Usage(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -4524,7 +5246,7 @@ export const GenerativeMistralMetadata_Usage = { return message; }, - fromJSON(object: any): GenerativeMistralMetadata_Usage { + fromJSON(object: any): GenerativeOpenAIMetadata_Usage { return { promptTokens: isSet(object.promptTokens) ? globalThis.Number(object.promptTokens) : undefined, completionTokens: isSet(object.completionTokens) ? globalThis.Number(object.completionTokens) : undefined, @@ -4532,7 +5254,7 @@ export const GenerativeMistralMetadata_Usage = { }; }, - toJSON(message: GenerativeMistralMetadata_Usage): unknown { + toJSON(message: GenerativeOpenAIMetadata_Usage): unknown { const obj: any = {}; if (message.promptTokens !== undefined) { obj.promptTokens = Math.round(message.promptTokens); @@ -4546,11 +5268,11 @@ export const GenerativeMistralMetadata_Usage = { return obj; }, - create(base?: DeepPartial): GenerativeMistralMetadata_Usage { - return GenerativeMistralMetadata_Usage.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeOpenAIMetadata_Usage { + return GenerativeOpenAIMetadata_Usage.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeMistralMetadata_Usage { - const message = createBaseGenerativeMistralMetadata_Usage(); + fromPartial(object: DeepPartial): GenerativeOpenAIMetadata_Usage { + const message = createBaseGenerativeOpenAIMetadata_Usage(); message.promptTokens = object.promptTokens ?? undefined; message.completionTokens = object.completionTokens ?? undefined; message.totalTokens = object.totalTokens ?? undefined; @@ -4558,22 +5280,122 @@ export const GenerativeMistralMetadata_Usage = { }, }; -function createBaseGenerativeOllamaMetadata(): GenerativeOllamaMetadata { - return {}; +function createBaseGenerativeGoogleMetadata(): GenerativeGoogleMetadata { + return { metadata: undefined, usageMetadata: undefined }; +} + +export const GenerativeGoogleMetadata = { + encode(message: GenerativeGoogleMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.metadata !== undefined) { + GenerativeGoogleMetadata_Metadata.encode(message.metadata, writer.uint32(10).fork()).ldelim(); + } + if (message.usageMetadata !== undefined) { + GenerativeGoogleMetadata_UsageMetadata.encode(message.usageMetadata, writer.uint32(18).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeGoogleMetadata { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGenerativeGoogleMetadata(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.metadata = GenerativeGoogleMetadata_Metadata.decode(reader, reader.uint32()); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.usageMetadata = GenerativeGoogleMetadata_UsageMetadata.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + fromJSON(object: any): GenerativeGoogleMetadata { + return { + metadata: isSet(object.metadata) ? GenerativeGoogleMetadata_Metadata.fromJSON(object.metadata) : undefined, + usageMetadata: isSet(object.usageMetadata) + ? GenerativeGoogleMetadata_UsageMetadata.fromJSON(object.usageMetadata) + : undefined, + }; + }, + + toJSON(message: GenerativeGoogleMetadata): unknown { + const obj: any = {}; + if (message.metadata !== undefined) { + obj.metadata = GenerativeGoogleMetadata_Metadata.toJSON(message.metadata); + } + if (message.usageMetadata !== undefined) { + obj.usageMetadata = GenerativeGoogleMetadata_UsageMetadata.toJSON(message.usageMetadata); + } + return obj; + }, + + create(base?: DeepPartial): GenerativeGoogleMetadata { + return GenerativeGoogleMetadata.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GenerativeGoogleMetadata { + const message = createBaseGenerativeGoogleMetadata(); + message.metadata = (object.metadata !== undefined && object.metadata !== null) + ? GenerativeGoogleMetadata_Metadata.fromPartial(object.metadata) + : undefined; + message.usageMetadata = (object.usageMetadata !== undefined && object.usageMetadata !== null) + ? GenerativeGoogleMetadata_UsageMetadata.fromPartial(object.usageMetadata) + : undefined; + return message; + }, +}; + +function createBaseGenerativeGoogleMetadata_TokenCount(): GenerativeGoogleMetadata_TokenCount { + return { totalBillableCharacters: undefined, totalTokens: undefined }; } -export const GenerativeOllamaMetadata = { - encode(_: GenerativeOllamaMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { +export const GenerativeGoogleMetadata_TokenCount = { + encode(message: GenerativeGoogleMetadata_TokenCount, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.totalBillableCharacters !== undefined) { + writer.uint32(8).int64(message.totalBillableCharacters); + } + if (message.totalTokens !== undefined) { + writer.uint32(16).int64(message.totalTokens); + } return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeOllamaMetadata { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeGoogleMetadata_TokenCount { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeOllamaMetadata(); + const message = createBaseGenerativeGoogleMetadata_TokenCount(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.totalBillableCharacters = longToNumber(reader.int64() as Long); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.totalTokens = longToNumber(reader.int64() as Long); + continue; } if ((tag & 7) === 4 || tag === 0) { break; @@ -4583,40 +5405,56 @@ export const GenerativeOllamaMetadata = { return message; }, - fromJSON(_: any): GenerativeOllamaMetadata { - return {}; + fromJSON(object: any): GenerativeGoogleMetadata_TokenCount { + return { + totalBillableCharacters: isSet(object.totalBillableCharacters) + ? globalThis.Number(object.totalBillableCharacters) + : undefined, + totalTokens: isSet(object.totalTokens) ? globalThis.Number(object.totalTokens) : undefined, + }; }, - toJSON(_: GenerativeOllamaMetadata): unknown { + toJSON(message: GenerativeGoogleMetadata_TokenCount): unknown { const obj: any = {}; + if (message.totalBillableCharacters !== undefined) { + obj.totalBillableCharacters = Math.round(message.totalBillableCharacters); + } + if (message.totalTokens !== undefined) { + obj.totalTokens = Math.round(message.totalTokens); + } return obj; }, - create(base?: DeepPartial): GenerativeOllamaMetadata { - return GenerativeOllamaMetadata.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeGoogleMetadata_TokenCount { + return GenerativeGoogleMetadata_TokenCount.fromPartial(base ?? {}); }, - fromPartial(_: DeepPartial): GenerativeOllamaMetadata { - const message = createBaseGenerativeOllamaMetadata(); + fromPartial(object: DeepPartial): GenerativeGoogleMetadata_TokenCount { + const message = createBaseGenerativeGoogleMetadata_TokenCount(); + message.totalBillableCharacters = object.totalBillableCharacters ?? undefined; + message.totalTokens = object.totalTokens ?? undefined; return message; }, }; -function createBaseGenerativeOpenAIMetadata(): GenerativeOpenAIMetadata { - return { usage: undefined }; +function createBaseGenerativeGoogleMetadata_TokenMetadata(): GenerativeGoogleMetadata_TokenMetadata { + return { inputTokenCount: undefined, outputTokenCount: undefined }; } -export const GenerativeOpenAIMetadata = { - encode(message: GenerativeOpenAIMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.usage !== undefined) { - GenerativeOpenAIMetadata_Usage.encode(message.usage, writer.uint32(10).fork()).ldelim(); +export const GenerativeGoogleMetadata_TokenMetadata = { + encode(message: GenerativeGoogleMetadata_TokenMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.inputTokenCount !== undefined) { + GenerativeGoogleMetadata_TokenCount.encode(message.inputTokenCount, writer.uint32(10).fork()).ldelim(); + } + if (message.outputTokenCount !== undefined) { + GenerativeGoogleMetadata_TokenCount.encode(message.outputTokenCount, writer.uint32(18).fork()).ldelim(); } return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeOpenAIMetadata { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeGoogleMetadata_TokenMetadata { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeOpenAIMetadata(); + const message = createBaseGenerativeGoogleMetadata_TokenMetadata(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -4625,7 +5463,14 @@ export const GenerativeOpenAIMetadata = { break; } - message.usage = GenerativeOpenAIMetadata_Usage.decode(reader, reader.uint32()); + message.inputTokenCount = GenerativeGoogleMetadata_TokenCount.decode(reader, reader.uint32()); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.outputTokenCount = GenerativeGoogleMetadata_TokenCount.decode(reader, reader.uint32()); continue; } if ((tag & 7) === 4 || tag === 0) { @@ -4636,75 +5481,68 @@ export const GenerativeOpenAIMetadata = { return message; }, - fromJSON(object: any): GenerativeOpenAIMetadata { - return { usage: isSet(object.usage) ? GenerativeOpenAIMetadata_Usage.fromJSON(object.usage) : undefined }; + fromJSON(object: any): GenerativeGoogleMetadata_TokenMetadata { + return { + inputTokenCount: isSet(object.inputTokenCount) + ? GenerativeGoogleMetadata_TokenCount.fromJSON(object.inputTokenCount) + : undefined, + outputTokenCount: isSet(object.outputTokenCount) + ? GenerativeGoogleMetadata_TokenCount.fromJSON(object.outputTokenCount) + : undefined, + }; }, - toJSON(message: GenerativeOpenAIMetadata): unknown { + toJSON(message: GenerativeGoogleMetadata_TokenMetadata): unknown { const obj: any = {}; - if (message.usage !== undefined) { - obj.usage = GenerativeOpenAIMetadata_Usage.toJSON(message.usage); + if (message.inputTokenCount !== undefined) { + obj.inputTokenCount = GenerativeGoogleMetadata_TokenCount.toJSON(message.inputTokenCount); + } + if (message.outputTokenCount !== undefined) { + obj.outputTokenCount = GenerativeGoogleMetadata_TokenCount.toJSON(message.outputTokenCount); } return obj; }, - create(base?: DeepPartial): GenerativeOpenAIMetadata { - return GenerativeOpenAIMetadata.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeGoogleMetadata_TokenMetadata { + return GenerativeGoogleMetadata_TokenMetadata.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeOpenAIMetadata { - const message = createBaseGenerativeOpenAIMetadata(); - message.usage = (object.usage !== undefined && object.usage !== null) - ? GenerativeOpenAIMetadata_Usage.fromPartial(object.usage) + fromPartial(object: DeepPartial): GenerativeGoogleMetadata_TokenMetadata { + const message = createBaseGenerativeGoogleMetadata_TokenMetadata(); + message.inputTokenCount = (object.inputTokenCount !== undefined && object.inputTokenCount !== null) + ? GenerativeGoogleMetadata_TokenCount.fromPartial(object.inputTokenCount) + : undefined; + message.outputTokenCount = (object.outputTokenCount !== undefined && object.outputTokenCount !== null) + ? GenerativeGoogleMetadata_TokenCount.fromPartial(object.outputTokenCount) : undefined; return message; }, }; -function createBaseGenerativeOpenAIMetadata_Usage(): GenerativeOpenAIMetadata_Usage { - return { promptTokens: undefined, completionTokens: undefined, totalTokens: undefined }; +function createBaseGenerativeGoogleMetadata_Metadata(): GenerativeGoogleMetadata_Metadata { + return { tokenMetadata: undefined }; } -export const GenerativeOpenAIMetadata_Usage = { - encode(message: GenerativeOpenAIMetadata_Usage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.promptTokens !== undefined) { - writer.uint32(8).int64(message.promptTokens); - } - if (message.completionTokens !== undefined) { - writer.uint32(16).int64(message.completionTokens); - } - if (message.totalTokens !== undefined) { - writer.uint32(24).int64(message.totalTokens); +export const GenerativeGoogleMetadata_Metadata = { + encode(message: GenerativeGoogleMetadata_Metadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.tokenMetadata !== undefined) { + GenerativeGoogleMetadata_TokenMetadata.encode(message.tokenMetadata, writer.uint32(10).fork()).ldelim(); } return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeOpenAIMetadata_Usage { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeGoogleMetadata_Metadata { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeOpenAIMetadata_Usage(); + const message = createBaseGenerativeGoogleMetadata_Metadata(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: - if (tag !== 8) { - break; - } - - message.promptTokens = longToNumber(reader.int64() as Long); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.completionTokens = longToNumber(reader.int64() as Long); - continue; - case 3: - if (tag !== 24) { + if (tag !== 10) { break; } - message.totalTokens = longToNumber(reader.int64() as Long); + message.tokenMetadata = GenerativeGoogleMetadata_TokenMetadata.decode(reader, reader.uint32()); continue; } if ((tag & 7) === 4 || tag === 0) { @@ -4715,75 +5553,79 @@ export const GenerativeOpenAIMetadata_Usage = { return message; }, - fromJSON(object: any): GenerativeOpenAIMetadata_Usage { + fromJSON(object: any): GenerativeGoogleMetadata_Metadata { return { - promptTokens: isSet(object.promptTokens) ? globalThis.Number(object.promptTokens) : undefined, - completionTokens: isSet(object.completionTokens) ? globalThis.Number(object.completionTokens) : undefined, - totalTokens: isSet(object.totalTokens) ? globalThis.Number(object.totalTokens) : undefined, + tokenMetadata: isSet(object.tokenMetadata) + ? GenerativeGoogleMetadata_TokenMetadata.fromJSON(object.tokenMetadata) + : undefined, }; }, - toJSON(message: GenerativeOpenAIMetadata_Usage): unknown { + toJSON(message: GenerativeGoogleMetadata_Metadata): unknown { const obj: any = {}; - if (message.promptTokens !== undefined) { - obj.promptTokens = Math.round(message.promptTokens); - } - if (message.completionTokens !== undefined) { - obj.completionTokens = Math.round(message.completionTokens); - } - if (message.totalTokens !== undefined) { - obj.totalTokens = Math.round(message.totalTokens); + if (message.tokenMetadata !== undefined) { + obj.tokenMetadata = GenerativeGoogleMetadata_TokenMetadata.toJSON(message.tokenMetadata); } return obj; }, - create(base?: DeepPartial): GenerativeOpenAIMetadata_Usage { - return GenerativeOpenAIMetadata_Usage.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeGoogleMetadata_Metadata { + return GenerativeGoogleMetadata_Metadata.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeOpenAIMetadata_Usage { - const message = createBaseGenerativeOpenAIMetadata_Usage(); - message.promptTokens = object.promptTokens ?? undefined; - message.completionTokens = object.completionTokens ?? undefined; - message.totalTokens = object.totalTokens ?? undefined; + fromPartial(object: DeepPartial): GenerativeGoogleMetadata_Metadata { + const message = createBaseGenerativeGoogleMetadata_Metadata(); + message.tokenMetadata = (object.tokenMetadata !== undefined && object.tokenMetadata !== null) + ? GenerativeGoogleMetadata_TokenMetadata.fromPartial(object.tokenMetadata) + : undefined; return message; }, }; -function createBaseGenerativeGoogleMetadata(): GenerativeGoogleMetadata { - return { metadata: undefined, usageMetadata: undefined }; +function createBaseGenerativeGoogleMetadata_UsageMetadata(): GenerativeGoogleMetadata_UsageMetadata { + return { promptTokenCount: undefined, candidatesTokenCount: undefined, totalTokenCount: undefined }; } -export const GenerativeGoogleMetadata = { - encode(message: GenerativeGoogleMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.metadata !== undefined) { - GenerativeGoogleMetadata_Metadata.encode(message.metadata, writer.uint32(10).fork()).ldelim(); +export const GenerativeGoogleMetadata_UsageMetadata = { + encode(message: GenerativeGoogleMetadata_UsageMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.promptTokenCount !== undefined) { + writer.uint32(8).int64(message.promptTokenCount); } - if (message.usageMetadata !== undefined) { - GenerativeGoogleMetadata_UsageMetadata.encode(message.usageMetadata, writer.uint32(18).fork()).ldelim(); + if (message.candidatesTokenCount !== undefined) { + writer.uint32(16).int64(message.candidatesTokenCount); + } + if (message.totalTokenCount !== undefined) { + writer.uint32(24).int64(message.totalTokenCount); } return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeGoogleMetadata { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeGoogleMetadata_UsageMetadata { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeGoogleMetadata(); + const message = createBaseGenerativeGoogleMetadata_UsageMetadata(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: - if (tag !== 10) { + if (tag !== 8) { break; } - message.metadata = GenerativeGoogleMetadata_Metadata.decode(reader, reader.uint32()); + message.promptTokenCount = longToNumber(reader.int64() as Long); continue; case 2: - if (tag !== 18) { + if (tag !== 16) { break; } - message.usageMetadata = GenerativeGoogleMetadata_UsageMetadata.decode(reader, reader.uint32()); + message.candidatesTokenCount = longToNumber(reader.int64() as Long); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.totalTokenCount = longToNumber(reader.int64() as Long); continue; } if ((tag & 7) === 4 || tag === 0) { @@ -4794,76 +5636,67 @@ export const GenerativeGoogleMetadata = { return message; }, - fromJSON(object: any): GenerativeGoogleMetadata { + fromJSON(object: any): GenerativeGoogleMetadata_UsageMetadata { return { - metadata: isSet(object.metadata) ? GenerativeGoogleMetadata_Metadata.fromJSON(object.metadata) : undefined, - usageMetadata: isSet(object.usageMetadata) - ? GenerativeGoogleMetadata_UsageMetadata.fromJSON(object.usageMetadata) + promptTokenCount: isSet(object.promptTokenCount) ? globalThis.Number(object.promptTokenCount) : undefined, + candidatesTokenCount: isSet(object.candidatesTokenCount) + ? globalThis.Number(object.candidatesTokenCount) : undefined, + totalTokenCount: isSet(object.totalTokenCount) ? globalThis.Number(object.totalTokenCount) : undefined, }; }, - toJSON(message: GenerativeGoogleMetadata): unknown { + toJSON(message: GenerativeGoogleMetadata_UsageMetadata): unknown { const obj: any = {}; - if (message.metadata !== undefined) { - obj.metadata = GenerativeGoogleMetadata_Metadata.toJSON(message.metadata); + if (message.promptTokenCount !== undefined) { + obj.promptTokenCount = Math.round(message.promptTokenCount); } - if (message.usageMetadata !== undefined) { - obj.usageMetadata = GenerativeGoogleMetadata_UsageMetadata.toJSON(message.usageMetadata); + if (message.candidatesTokenCount !== undefined) { + obj.candidatesTokenCount = Math.round(message.candidatesTokenCount); + } + if (message.totalTokenCount !== undefined) { + obj.totalTokenCount = Math.round(message.totalTokenCount); } return obj; }, - create(base?: DeepPartial): GenerativeGoogleMetadata { - return GenerativeGoogleMetadata.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeGoogleMetadata_UsageMetadata { + return GenerativeGoogleMetadata_UsageMetadata.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeGoogleMetadata { - const message = createBaseGenerativeGoogleMetadata(); - message.metadata = (object.metadata !== undefined && object.metadata !== null) - ? GenerativeGoogleMetadata_Metadata.fromPartial(object.metadata) - : undefined; - message.usageMetadata = (object.usageMetadata !== undefined && object.usageMetadata !== null) - ? GenerativeGoogleMetadata_UsageMetadata.fromPartial(object.usageMetadata) - : undefined; + fromPartial(object: DeepPartial): GenerativeGoogleMetadata_UsageMetadata { + const message = createBaseGenerativeGoogleMetadata_UsageMetadata(); + message.promptTokenCount = object.promptTokenCount ?? undefined; + message.candidatesTokenCount = object.candidatesTokenCount ?? undefined; + message.totalTokenCount = object.totalTokenCount ?? undefined; return message; }, }; -function createBaseGenerativeGoogleMetadata_TokenCount(): GenerativeGoogleMetadata_TokenCount { - return { totalBillableCharacters: undefined, totalTokens: undefined }; +function createBaseGenerativeDatabricksMetadata(): GenerativeDatabricksMetadata { + return { usage: undefined }; } -export const GenerativeGoogleMetadata_TokenCount = { - encode(message: GenerativeGoogleMetadata_TokenCount, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.totalBillableCharacters !== undefined) { - writer.uint32(8).int64(message.totalBillableCharacters); - } - if (message.totalTokens !== undefined) { - writer.uint32(16).int64(message.totalTokens); +export const GenerativeDatabricksMetadata = { + encode(message: GenerativeDatabricksMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.usage !== undefined) { + GenerativeDatabricksMetadata_Usage.encode(message.usage, writer.uint32(10).fork()).ldelim(); } return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeGoogleMetadata_TokenCount { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeDatabricksMetadata { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeGoogleMetadata_TokenCount(); + const message = createBaseGenerativeDatabricksMetadata(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: - if (tag !== 8) { - break; - } - - message.totalBillableCharacters = longToNumber(reader.int64() as Long); - continue; - case 2: - if (tag !== 16) { + if (tag !== 10) { break; } - message.totalTokens = longToNumber(reader.int64() as Long); + message.usage = GenerativeDatabricksMetadata_Usage.decode(reader, reader.uint32()); continue; } if ((tag & 7) === 4 || tag === 0) { @@ -4874,72 +5707,75 @@ export const GenerativeGoogleMetadata_TokenCount = { return message; }, - fromJSON(object: any): GenerativeGoogleMetadata_TokenCount { - return { - totalBillableCharacters: isSet(object.totalBillableCharacters) - ? globalThis.Number(object.totalBillableCharacters) - : undefined, - totalTokens: isSet(object.totalTokens) ? globalThis.Number(object.totalTokens) : undefined, - }; + fromJSON(object: any): GenerativeDatabricksMetadata { + return { usage: isSet(object.usage) ? GenerativeDatabricksMetadata_Usage.fromJSON(object.usage) : undefined }; }, - toJSON(message: GenerativeGoogleMetadata_TokenCount): unknown { + toJSON(message: GenerativeDatabricksMetadata): unknown { const obj: any = {}; - if (message.totalBillableCharacters !== undefined) { - obj.totalBillableCharacters = Math.round(message.totalBillableCharacters); - } - if (message.totalTokens !== undefined) { - obj.totalTokens = Math.round(message.totalTokens); + if (message.usage !== undefined) { + obj.usage = GenerativeDatabricksMetadata_Usage.toJSON(message.usage); } return obj; }, - create(base?: DeepPartial): GenerativeGoogleMetadata_TokenCount { - return GenerativeGoogleMetadata_TokenCount.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeDatabricksMetadata { + return GenerativeDatabricksMetadata.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeGoogleMetadata_TokenCount { - const message = createBaseGenerativeGoogleMetadata_TokenCount(); - message.totalBillableCharacters = object.totalBillableCharacters ?? undefined; - message.totalTokens = object.totalTokens ?? undefined; + fromPartial(object: DeepPartial): GenerativeDatabricksMetadata { + const message = createBaseGenerativeDatabricksMetadata(); + message.usage = (object.usage !== undefined && object.usage !== null) + ? GenerativeDatabricksMetadata_Usage.fromPartial(object.usage) + : undefined; return message; }, }; -function createBaseGenerativeGoogleMetadata_TokenMetadata(): GenerativeGoogleMetadata_TokenMetadata { - return { inputTokenCount: undefined, outputTokenCount: undefined }; +function createBaseGenerativeDatabricksMetadata_Usage(): GenerativeDatabricksMetadata_Usage { + return { promptTokens: undefined, completionTokens: undefined, totalTokens: undefined }; } -export const GenerativeGoogleMetadata_TokenMetadata = { - encode(message: GenerativeGoogleMetadata_TokenMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.inputTokenCount !== undefined) { - GenerativeGoogleMetadata_TokenCount.encode(message.inputTokenCount, writer.uint32(10).fork()).ldelim(); +export const GenerativeDatabricksMetadata_Usage = { + encode(message: GenerativeDatabricksMetadata_Usage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.promptTokens !== undefined) { + writer.uint32(8).int64(message.promptTokens); } - if (message.outputTokenCount !== undefined) { - GenerativeGoogleMetadata_TokenCount.encode(message.outputTokenCount, writer.uint32(18).fork()).ldelim(); + if (message.completionTokens !== undefined) { + writer.uint32(16).int64(message.completionTokens); + } + if (message.totalTokens !== undefined) { + writer.uint32(24).int64(message.totalTokens); } return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeGoogleMetadata_TokenMetadata { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeDatabricksMetadata_Usage { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeGoogleMetadata_TokenMetadata(); + const message = createBaseGenerativeDatabricksMetadata_Usage(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: - if (tag !== 10) { + if (tag !== 8) { break; } - message.inputTokenCount = GenerativeGoogleMetadata_TokenCount.decode(reader, reader.uint32()); + message.promptTokens = longToNumber(reader.int64() as Long); continue; case 2: - if (tag !== 18) { + if (tag !== 16) { break; } - message.outputTokenCount = GenerativeGoogleMetadata_TokenCount.decode(reader, reader.uint32()); + message.completionTokens = longToNumber(reader.int64() as Long); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.totalTokens = longToNumber(reader.int64() as Long); continue; } if ((tag & 7) === 4 || tag === 0) { @@ -4950,59 +5786,56 @@ export const GenerativeGoogleMetadata_TokenMetadata = { return message; }, - fromJSON(object: any): GenerativeGoogleMetadata_TokenMetadata { + fromJSON(object: any): GenerativeDatabricksMetadata_Usage { return { - inputTokenCount: isSet(object.inputTokenCount) - ? GenerativeGoogleMetadata_TokenCount.fromJSON(object.inputTokenCount) - : undefined, - outputTokenCount: isSet(object.outputTokenCount) - ? GenerativeGoogleMetadata_TokenCount.fromJSON(object.outputTokenCount) - : undefined, + promptTokens: isSet(object.promptTokens) ? globalThis.Number(object.promptTokens) : undefined, + completionTokens: isSet(object.completionTokens) ? globalThis.Number(object.completionTokens) : undefined, + totalTokens: isSet(object.totalTokens) ? globalThis.Number(object.totalTokens) : undefined, }; }, - toJSON(message: GenerativeGoogleMetadata_TokenMetadata): unknown { + toJSON(message: GenerativeDatabricksMetadata_Usage): unknown { const obj: any = {}; - if (message.inputTokenCount !== undefined) { - obj.inputTokenCount = GenerativeGoogleMetadata_TokenCount.toJSON(message.inputTokenCount); + if (message.promptTokens !== undefined) { + obj.promptTokens = Math.round(message.promptTokens); } - if (message.outputTokenCount !== undefined) { - obj.outputTokenCount = GenerativeGoogleMetadata_TokenCount.toJSON(message.outputTokenCount); + if (message.completionTokens !== undefined) { + obj.completionTokens = Math.round(message.completionTokens); + } + if (message.totalTokens !== undefined) { + obj.totalTokens = Math.round(message.totalTokens); } return obj; }, - create(base?: DeepPartial): GenerativeGoogleMetadata_TokenMetadata { - return GenerativeGoogleMetadata_TokenMetadata.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeDatabricksMetadata_Usage { + return GenerativeDatabricksMetadata_Usage.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeGoogleMetadata_TokenMetadata { - const message = createBaseGenerativeGoogleMetadata_TokenMetadata(); - message.inputTokenCount = (object.inputTokenCount !== undefined && object.inputTokenCount !== null) - ? GenerativeGoogleMetadata_TokenCount.fromPartial(object.inputTokenCount) - : undefined; - message.outputTokenCount = (object.outputTokenCount !== undefined && object.outputTokenCount !== null) - ? GenerativeGoogleMetadata_TokenCount.fromPartial(object.outputTokenCount) - : undefined; + fromPartial(object: DeepPartial): GenerativeDatabricksMetadata_Usage { + const message = createBaseGenerativeDatabricksMetadata_Usage(); + message.promptTokens = object.promptTokens ?? undefined; + message.completionTokens = object.completionTokens ?? undefined; + message.totalTokens = object.totalTokens ?? undefined; return message; }, }; -function createBaseGenerativeGoogleMetadata_Metadata(): GenerativeGoogleMetadata_Metadata { - return { tokenMetadata: undefined }; +function createBaseGenerativeFriendliAIMetadata(): GenerativeFriendliAIMetadata { + return { usage: undefined }; } -export const GenerativeGoogleMetadata_Metadata = { - encode(message: GenerativeGoogleMetadata_Metadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.tokenMetadata !== undefined) { - GenerativeGoogleMetadata_TokenMetadata.encode(message.tokenMetadata, writer.uint32(10).fork()).ldelim(); +export const GenerativeFriendliAIMetadata = { + encode(message: GenerativeFriendliAIMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.usage !== undefined) { + GenerativeFriendliAIMetadata_Usage.encode(message.usage, writer.uint32(10).fork()).ldelim(); } return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeGoogleMetadata_Metadata { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeFriendliAIMetadata { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeGoogleMetadata_Metadata(); + const message = createBaseGenerativeFriendliAIMetadata(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -5011,7 +5844,7 @@ export const GenerativeGoogleMetadata_Metadata = { break; } - message.tokenMetadata = GenerativeGoogleMetadata_TokenMetadata.decode(reader, reader.uint32()); + message.usage = GenerativeFriendliAIMetadata_Usage.decode(reader, reader.uint32()); continue; } if ((tag & 7) === 4 || tag === 0) { @@ -5022,56 +5855,52 @@ export const GenerativeGoogleMetadata_Metadata = { return message; }, - fromJSON(object: any): GenerativeGoogleMetadata_Metadata { - return { - tokenMetadata: isSet(object.tokenMetadata) - ? GenerativeGoogleMetadata_TokenMetadata.fromJSON(object.tokenMetadata) - : undefined, - }; + fromJSON(object: any): GenerativeFriendliAIMetadata { + return { usage: isSet(object.usage) ? GenerativeFriendliAIMetadata_Usage.fromJSON(object.usage) : undefined }; }, - toJSON(message: GenerativeGoogleMetadata_Metadata): unknown { + toJSON(message: GenerativeFriendliAIMetadata): unknown { const obj: any = {}; - if (message.tokenMetadata !== undefined) { - obj.tokenMetadata = GenerativeGoogleMetadata_TokenMetadata.toJSON(message.tokenMetadata); + if (message.usage !== undefined) { + obj.usage = GenerativeFriendliAIMetadata_Usage.toJSON(message.usage); } return obj; }, - create(base?: DeepPartial): GenerativeGoogleMetadata_Metadata { - return GenerativeGoogleMetadata_Metadata.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeFriendliAIMetadata { + return GenerativeFriendliAIMetadata.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeGoogleMetadata_Metadata { - const message = createBaseGenerativeGoogleMetadata_Metadata(); - message.tokenMetadata = (object.tokenMetadata !== undefined && object.tokenMetadata !== null) - ? GenerativeGoogleMetadata_TokenMetadata.fromPartial(object.tokenMetadata) + fromPartial(object: DeepPartial): GenerativeFriendliAIMetadata { + const message = createBaseGenerativeFriendliAIMetadata(); + message.usage = (object.usage !== undefined && object.usage !== null) + ? GenerativeFriendliAIMetadata_Usage.fromPartial(object.usage) : undefined; return message; }, }; -function createBaseGenerativeGoogleMetadata_UsageMetadata(): GenerativeGoogleMetadata_UsageMetadata { - return { promptTokenCount: undefined, candidatesTokenCount: undefined, totalTokenCount: undefined }; +function createBaseGenerativeFriendliAIMetadata_Usage(): GenerativeFriendliAIMetadata_Usage { + return { promptTokens: undefined, completionTokens: undefined, totalTokens: undefined }; } -export const GenerativeGoogleMetadata_UsageMetadata = { - encode(message: GenerativeGoogleMetadata_UsageMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.promptTokenCount !== undefined) { - writer.uint32(8).int64(message.promptTokenCount); +export const GenerativeFriendliAIMetadata_Usage = { + encode(message: GenerativeFriendliAIMetadata_Usage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.promptTokens !== undefined) { + writer.uint32(8).int64(message.promptTokens); } - if (message.candidatesTokenCount !== undefined) { - writer.uint32(16).int64(message.candidatesTokenCount); + if (message.completionTokens !== undefined) { + writer.uint32(16).int64(message.completionTokens); } - if (message.totalTokenCount !== undefined) { - writer.uint32(24).int64(message.totalTokenCount); + if (message.totalTokens !== undefined) { + writer.uint32(24).int64(message.totalTokens); } return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeGoogleMetadata_UsageMetadata { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeFriendliAIMetadata_Usage { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeGoogleMetadata_UsageMetadata(); + const message = createBaseGenerativeFriendliAIMetadata_Usage(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -5080,21 +5909,21 @@ export const GenerativeGoogleMetadata_UsageMetadata = { break; } - message.promptTokenCount = longToNumber(reader.int64() as Long); + message.promptTokens = longToNumber(reader.int64() as Long); continue; case 2: if (tag !== 16) { break; } - message.candidatesTokenCount = longToNumber(reader.int64() as Long); + message.completionTokens = longToNumber(reader.int64() as Long); continue; case 3: if (tag !== 24) { break; } - message.totalTokenCount = longToNumber(reader.int64() as Long); + message.totalTokens = longToNumber(reader.int64() as Long); continue; } if ((tag & 7) === 4 || tag === 0) { @@ -5105,58 +5934,56 @@ export const GenerativeGoogleMetadata_UsageMetadata = { return message; }, - fromJSON(object: any): GenerativeGoogleMetadata_UsageMetadata { + fromJSON(object: any): GenerativeFriendliAIMetadata_Usage { return { - promptTokenCount: isSet(object.promptTokenCount) ? globalThis.Number(object.promptTokenCount) : undefined, - candidatesTokenCount: isSet(object.candidatesTokenCount) - ? globalThis.Number(object.candidatesTokenCount) - : undefined, - totalTokenCount: isSet(object.totalTokenCount) ? globalThis.Number(object.totalTokenCount) : undefined, + promptTokens: isSet(object.promptTokens) ? globalThis.Number(object.promptTokens) : undefined, + completionTokens: isSet(object.completionTokens) ? globalThis.Number(object.completionTokens) : undefined, + totalTokens: isSet(object.totalTokens) ? globalThis.Number(object.totalTokens) : undefined, }; }, - toJSON(message: GenerativeGoogleMetadata_UsageMetadata): unknown { + toJSON(message: GenerativeFriendliAIMetadata_Usage): unknown { const obj: any = {}; - if (message.promptTokenCount !== undefined) { - obj.promptTokenCount = Math.round(message.promptTokenCount); + if (message.promptTokens !== undefined) { + obj.promptTokens = Math.round(message.promptTokens); } - if (message.candidatesTokenCount !== undefined) { - obj.candidatesTokenCount = Math.round(message.candidatesTokenCount); + if (message.completionTokens !== undefined) { + obj.completionTokens = Math.round(message.completionTokens); } - if (message.totalTokenCount !== undefined) { - obj.totalTokenCount = Math.round(message.totalTokenCount); + if (message.totalTokens !== undefined) { + obj.totalTokens = Math.round(message.totalTokens); } return obj; }, - create(base?: DeepPartial): GenerativeGoogleMetadata_UsageMetadata { - return GenerativeGoogleMetadata_UsageMetadata.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeFriendliAIMetadata_Usage { + return GenerativeFriendliAIMetadata_Usage.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeGoogleMetadata_UsageMetadata { - const message = createBaseGenerativeGoogleMetadata_UsageMetadata(); - message.promptTokenCount = object.promptTokenCount ?? undefined; - message.candidatesTokenCount = object.candidatesTokenCount ?? undefined; - message.totalTokenCount = object.totalTokenCount ?? undefined; + fromPartial(object: DeepPartial): GenerativeFriendliAIMetadata_Usage { + const message = createBaseGenerativeFriendliAIMetadata_Usage(); + message.promptTokens = object.promptTokens ?? undefined; + message.completionTokens = object.completionTokens ?? undefined; + message.totalTokens = object.totalTokens ?? undefined; return message; }, }; -function createBaseGenerativeDatabricksMetadata(): GenerativeDatabricksMetadata { +function createBaseGenerativeNvidiaMetadata(): GenerativeNvidiaMetadata { return { usage: undefined }; } -export const GenerativeDatabricksMetadata = { - encode(message: GenerativeDatabricksMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { +export const GenerativeNvidiaMetadata = { + encode(message: GenerativeNvidiaMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.usage !== undefined) { - GenerativeDatabricksMetadata_Usage.encode(message.usage, writer.uint32(10).fork()).ldelim(); + GenerativeNvidiaMetadata_Usage.encode(message.usage, writer.uint32(10).fork()).ldelim(); } return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeDatabricksMetadata { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeNvidiaMetadata { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeDatabricksMetadata(); + const message = createBaseGenerativeNvidiaMetadata(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -5165,7 +5992,7 @@ export const GenerativeDatabricksMetadata = { break; } - message.usage = GenerativeDatabricksMetadata_Usage.decode(reader, reader.uint32()); + message.usage = GenerativeNvidiaMetadata_Usage.decode(reader, reader.uint32()); continue; } if ((tag & 7) === 4 || tag === 0) { @@ -5176,36 +6003,36 @@ export const GenerativeDatabricksMetadata = { return message; }, - fromJSON(object: any): GenerativeDatabricksMetadata { - return { usage: isSet(object.usage) ? GenerativeDatabricksMetadata_Usage.fromJSON(object.usage) : undefined }; + fromJSON(object: any): GenerativeNvidiaMetadata { + return { usage: isSet(object.usage) ? GenerativeNvidiaMetadata_Usage.fromJSON(object.usage) : undefined }; }, - toJSON(message: GenerativeDatabricksMetadata): unknown { + toJSON(message: GenerativeNvidiaMetadata): unknown { const obj: any = {}; if (message.usage !== undefined) { - obj.usage = GenerativeDatabricksMetadata_Usage.toJSON(message.usage); + obj.usage = GenerativeNvidiaMetadata_Usage.toJSON(message.usage); } return obj; }, - create(base?: DeepPartial): GenerativeDatabricksMetadata { - return GenerativeDatabricksMetadata.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeNvidiaMetadata { + return GenerativeNvidiaMetadata.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeDatabricksMetadata { - const message = createBaseGenerativeDatabricksMetadata(); + fromPartial(object: DeepPartial): GenerativeNvidiaMetadata { + const message = createBaseGenerativeNvidiaMetadata(); message.usage = (object.usage !== undefined && object.usage !== null) - ? GenerativeDatabricksMetadata_Usage.fromPartial(object.usage) + ? GenerativeNvidiaMetadata_Usage.fromPartial(object.usage) : undefined; return message; }, }; -function createBaseGenerativeDatabricksMetadata_Usage(): GenerativeDatabricksMetadata_Usage { +function createBaseGenerativeNvidiaMetadata_Usage(): GenerativeNvidiaMetadata_Usage { return { promptTokens: undefined, completionTokens: undefined, totalTokens: undefined }; } -export const GenerativeDatabricksMetadata_Usage = { - encode(message: GenerativeDatabricksMetadata_Usage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { +export const GenerativeNvidiaMetadata_Usage = { + encode(message: GenerativeNvidiaMetadata_Usage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.promptTokens !== undefined) { writer.uint32(8).int64(message.promptTokens); } @@ -5218,10 +6045,10 @@ export const GenerativeDatabricksMetadata_Usage = { return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeDatabricksMetadata_Usage { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeNvidiaMetadata_Usage { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeDatabricksMetadata_Usage(); + const message = createBaseGenerativeNvidiaMetadata_Usage(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -5255,7 +6082,7 @@ export const GenerativeDatabricksMetadata_Usage = { return message; }, - fromJSON(object: any): GenerativeDatabricksMetadata_Usage { + fromJSON(object: any): GenerativeNvidiaMetadata_Usage { return { promptTokens: isSet(object.promptTokens) ? globalThis.Number(object.promptTokens) : undefined, completionTokens: isSet(object.completionTokens) ? globalThis.Number(object.completionTokens) : undefined, @@ -5263,7 +6090,7 @@ export const GenerativeDatabricksMetadata_Usage = { }; }, - toJSON(message: GenerativeDatabricksMetadata_Usage): unknown { + toJSON(message: GenerativeNvidiaMetadata_Usage): unknown { const obj: any = {}; if (message.promptTokens !== undefined) { obj.promptTokens = Math.round(message.promptTokens); @@ -5277,11 +6104,11 @@ export const GenerativeDatabricksMetadata_Usage = { return obj; }, - create(base?: DeepPartial): GenerativeDatabricksMetadata_Usage { - return GenerativeDatabricksMetadata_Usage.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeNvidiaMetadata_Usage { + return GenerativeNvidiaMetadata_Usage.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeDatabricksMetadata_Usage { - const message = createBaseGenerativeDatabricksMetadata_Usage(); + fromPartial(object: DeepPartial): GenerativeNvidiaMetadata_Usage { + const message = createBaseGenerativeNvidiaMetadata_Usage(); message.promptTokens = object.promptTokens ?? undefined; message.completionTokens = object.completionTokens ?? undefined; message.totalTokens = object.totalTokens ?? undefined; @@ -5289,22 +6116,22 @@ export const GenerativeDatabricksMetadata_Usage = { }, }; -function createBaseGenerativeFriendliAIMetadata(): GenerativeFriendliAIMetadata { +function createBaseGenerativeXAIMetadata(): GenerativeXAIMetadata { return { usage: undefined }; } -export const GenerativeFriendliAIMetadata = { - encode(message: GenerativeFriendliAIMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { +export const GenerativeXAIMetadata = { + encode(message: GenerativeXAIMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.usage !== undefined) { - GenerativeFriendliAIMetadata_Usage.encode(message.usage, writer.uint32(10).fork()).ldelim(); + GenerativeXAIMetadata_Usage.encode(message.usage, writer.uint32(10).fork()).ldelim(); } return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeFriendliAIMetadata { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeXAIMetadata { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeFriendliAIMetadata(); + const message = createBaseGenerativeXAIMetadata(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -5313,7 +6140,7 @@ export const GenerativeFriendliAIMetadata = { break; } - message.usage = GenerativeFriendliAIMetadata_Usage.decode(reader, reader.uint32()); + message.usage = GenerativeXAIMetadata_Usage.decode(reader, reader.uint32()); continue; } if ((tag & 7) === 4 || tag === 0) { @@ -5324,36 +6151,36 @@ export const GenerativeFriendliAIMetadata = { return message; }, - fromJSON(object: any): GenerativeFriendliAIMetadata { - return { usage: isSet(object.usage) ? GenerativeFriendliAIMetadata_Usage.fromJSON(object.usage) : undefined }; + fromJSON(object: any): GenerativeXAIMetadata { + return { usage: isSet(object.usage) ? GenerativeXAIMetadata_Usage.fromJSON(object.usage) : undefined }; }, - toJSON(message: GenerativeFriendliAIMetadata): unknown { + toJSON(message: GenerativeXAIMetadata): unknown { const obj: any = {}; if (message.usage !== undefined) { - obj.usage = GenerativeFriendliAIMetadata_Usage.toJSON(message.usage); + obj.usage = GenerativeXAIMetadata_Usage.toJSON(message.usage); } return obj; }, - create(base?: DeepPartial): GenerativeFriendliAIMetadata { - return GenerativeFriendliAIMetadata.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeXAIMetadata { + return GenerativeXAIMetadata.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeFriendliAIMetadata { - const message = createBaseGenerativeFriendliAIMetadata(); + fromPartial(object: DeepPartial): GenerativeXAIMetadata { + const message = createBaseGenerativeXAIMetadata(); message.usage = (object.usage !== undefined && object.usage !== null) - ? GenerativeFriendliAIMetadata_Usage.fromPartial(object.usage) + ? GenerativeXAIMetadata_Usage.fromPartial(object.usage) : undefined; return message; }, }; -function createBaseGenerativeFriendliAIMetadata_Usage(): GenerativeFriendliAIMetadata_Usage { +function createBaseGenerativeXAIMetadata_Usage(): GenerativeXAIMetadata_Usage { return { promptTokens: undefined, completionTokens: undefined, totalTokens: undefined }; } -export const GenerativeFriendliAIMetadata_Usage = { - encode(message: GenerativeFriendliAIMetadata_Usage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { +export const GenerativeXAIMetadata_Usage = { + encode(message: GenerativeXAIMetadata_Usage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.promptTokens !== undefined) { writer.uint32(8).int64(message.promptTokens); } @@ -5366,10 +6193,10 @@ export const GenerativeFriendliAIMetadata_Usage = { return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeFriendliAIMetadata_Usage { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeXAIMetadata_Usage { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeFriendliAIMetadata_Usage(); + const message = createBaseGenerativeXAIMetadata_Usage(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -5403,7 +6230,7 @@ export const GenerativeFriendliAIMetadata_Usage = { return message; }, - fromJSON(object: any): GenerativeFriendliAIMetadata_Usage { + fromJSON(object: any): GenerativeXAIMetadata_Usage { return { promptTokens: isSet(object.promptTokens) ? globalThis.Number(object.promptTokens) : undefined, completionTokens: isSet(object.completionTokens) ? globalThis.Number(object.completionTokens) : undefined, @@ -5411,7 +6238,7 @@ export const GenerativeFriendliAIMetadata_Usage = { }; }, - toJSON(message: GenerativeFriendliAIMetadata_Usage): unknown { + toJSON(message: GenerativeXAIMetadata_Usage): unknown { const obj: any = {}; if (message.promptTokens !== undefined) { obj.promptTokens = Math.round(message.promptTokens); @@ -5425,11 +6252,11 @@ export const GenerativeFriendliAIMetadata_Usage = { return obj; }, - create(base?: DeepPartial): GenerativeFriendliAIMetadata_Usage { - return GenerativeFriendliAIMetadata_Usage.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeXAIMetadata_Usage { + return GenerativeXAIMetadata_Usage.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeFriendliAIMetadata_Usage { - const message = createBaseGenerativeFriendliAIMetadata_Usage(); + fromPartial(object: DeepPartial): GenerativeXAIMetadata_Usage { + const message = createBaseGenerativeXAIMetadata_Usage(); message.promptTokens = object.promptTokens ?? undefined; message.completionTokens = object.completionTokens ?? undefined; message.totalTokens = object.totalTokens ?? undefined; @@ -5437,22 +6264,22 @@ export const GenerativeFriendliAIMetadata_Usage = { }, }; -function createBaseGenerativeNvidiaMetadata(): GenerativeNvidiaMetadata { +function createBaseGenerativeDeepseekMetadata(): GenerativeDeepseekMetadata { return { usage: undefined }; } -export const GenerativeNvidiaMetadata = { - encode(message: GenerativeNvidiaMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { +export const GenerativeDeepseekMetadata = { + encode(message: GenerativeDeepseekMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.usage !== undefined) { - GenerativeNvidiaMetadata_Usage.encode(message.usage, writer.uint32(10).fork()).ldelim(); + GenerativeDeepseekMetadata_Usage.encode(message.usage, writer.uint32(10).fork()).ldelim(); } return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeNvidiaMetadata { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeDeepseekMetadata { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeNvidiaMetadata(); + const message = createBaseGenerativeDeepseekMetadata(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -5461,7 +6288,7 @@ export const GenerativeNvidiaMetadata = { break; } - message.usage = GenerativeNvidiaMetadata_Usage.decode(reader, reader.uint32()); + message.usage = GenerativeDeepseekMetadata_Usage.decode(reader, reader.uint32()); continue; } if ((tag & 7) === 4 || tag === 0) { @@ -5472,36 +6299,36 @@ export const GenerativeNvidiaMetadata = { return message; }, - fromJSON(object: any): GenerativeNvidiaMetadata { - return { usage: isSet(object.usage) ? GenerativeNvidiaMetadata_Usage.fromJSON(object.usage) : undefined }; + fromJSON(object: any): GenerativeDeepseekMetadata { + return { usage: isSet(object.usage) ? GenerativeDeepseekMetadata_Usage.fromJSON(object.usage) : undefined }; }, - toJSON(message: GenerativeNvidiaMetadata): unknown { + toJSON(message: GenerativeDeepseekMetadata): unknown { const obj: any = {}; if (message.usage !== undefined) { - obj.usage = GenerativeNvidiaMetadata_Usage.toJSON(message.usage); + obj.usage = GenerativeDeepseekMetadata_Usage.toJSON(message.usage); } return obj; }, - create(base?: DeepPartial): GenerativeNvidiaMetadata { - return GenerativeNvidiaMetadata.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeDeepseekMetadata { + return GenerativeDeepseekMetadata.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeNvidiaMetadata { - const message = createBaseGenerativeNvidiaMetadata(); + fromPartial(object: DeepPartial): GenerativeDeepseekMetadata { + const message = createBaseGenerativeDeepseekMetadata(); message.usage = (object.usage !== undefined && object.usage !== null) - ? GenerativeNvidiaMetadata_Usage.fromPartial(object.usage) + ? GenerativeDeepseekMetadata_Usage.fromPartial(object.usage) : undefined; return message; }, }; -function createBaseGenerativeNvidiaMetadata_Usage(): GenerativeNvidiaMetadata_Usage { +function createBaseGenerativeDeepseekMetadata_Usage(): GenerativeDeepseekMetadata_Usage { return { promptTokens: undefined, completionTokens: undefined, totalTokens: undefined }; } -export const GenerativeNvidiaMetadata_Usage = { - encode(message: GenerativeNvidiaMetadata_Usage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { +export const GenerativeDeepseekMetadata_Usage = { + encode(message: GenerativeDeepseekMetadata_Usage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.promptTokens !== undefined) { writer.uint32(8).int64(message.promptTokens); } @@ -5514,10 +6341,10 @@ export const GenerativeNvidiaMetadata_Usage = { return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeNvidiaMetadata_Usage { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeDeepseekMetadata_Usage { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeNvidiaMetadata_Usage(); + const message = createBaseGenerativeDeepseekMetadata_Usage(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -5551,7 +6378,7 @@ export const GenerativeNvidiaMetadata_Usage = { return message; }, - fromJSON(object: any): GenerativeNvidiaMetadata_Usage { + fromJSON(object: any): GenerativeDeepseekMetadata_Usage { return { promptTokens: isSet(object.promptTokens) ? globalThis.Number(object.promptTokens) : undefined, completionTokens: isSet(object.completionTokens) ? globalThis.Number(object.completionTokens) : undefined, @@ -5559,7 +6386,7 @@ export const GenerativeNvidiaMetadata_Usage = { }; }, - toJSON(message: GenerativeNvidiaMetadata_Usage): unknown { + toJSON(message: GenerativeDeepseekMetadata_Usage): unknown { const obj: any = {}; if (message.promptTokens !== undefined) { obj.promptTokens = Math.round(message.promptTokens); @@ -5573,11 +6400,11 @@ export const GenerativeNvidiaMetadata_Usage = { return obj; }, - create(base?: DeepPartial): GenerativeNvidiaMetadata_Usage { - return GenerativeNvidiaMetadata_Usage.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeDeepseekMetadata_Usage { + return GenerativeDeepseekMetadata_Usage.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeNvidiaMetadata_Usage { - const message = createBaseGenerativeNvidiaMetadata_Usage(); + fromPartial(object: DeepPartial): GenerativeDeepseekMetadata_Usage { + const message = createBaseGenerativeDeepseekMetadata_Usage(); message.promptTokens = object.promptTokens ?? undefined; message.completionTokens = object.completionTokens ?? undefined; message.totalTokens = object.totalTokens ?? undefined; @@ -5585,22 +6412,22 @@ export const GenerativeNvidiaMetadata_Usage = { }, }; -function createBaseGenerativeXAIMetadata(): GenerativeXAIMetadata { +function createBaseGenerativeDigitalOceanMetadata(): GenerativeDigitalOceanMetadata { return { usage: undefined }; } -export const GenerativeXAIMetadata = { - encode(message: GenerativeXAIMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { +export const GenerativeDigitalOceanMetadata = { + encode(message: GenerativeDigitalOceanMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.usage !== undefined) { - GenerativeXAIMetadata_Usage.encode(message.usage, writer.uint32(10).fork()).ldelim(); + GenerativeDigitalOceanMetadata_Usage.encode(message.usage, writer.uint32(10).fork()).ldelim(); } return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeXAIMetadata { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeDigitalOceanMetadata { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeXAIMetadata(); + const message = createBaseGenerativeDigitalOceanMetadata(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -5609,7 +6436,7 @@ export const GenerativeXAIMetadata = { break; } - message.usage = GenerativeXAIMetadata_Usage.decode(reader, reader.uint32()); + message.usage = GenerativeDigitalOceanMetadata_Usage.decode(reader, reader.uint32()); continue; } if ((tag & 7) === 4 || tag === 0) { @@ -5620,36 +6447,36 @@ export const GenerativeXAIMetadata = { return message; }, - fromJSON(object: any): GenerativeXAIMetadata { - return { usage: isSet(object.usage) ? GenerativeXAIMetadata_Usage.fromJSON(object.usage) : undefined }; + fromJSON(object: any): GenerativeDigitalOceanMetadata { + return { usage: isSet(object.usage) ? GenerativeDigitalOceanMetadata_Usage.fromJSON(object.usage) : undefined }; }, - toJSON(message: GenerativeXAIMetadata): unknown { + toJSON(message: GenerativeDigitalOceanMetadata): unknown { const obj: any = {}; if (message.usage !== undefined) { - obj.usage = GenerativeXAIMetadata_Usage.toJSON(message.usage); + obj.usage = GenerativeDigitalOceanMetadata_Usage.toJSON(message.usage); } return obj; }, - create(base?: DeepPartial): GenerativeXAIMetadata { - return GenerativeXAIMetadata.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeDigitalOceanMetadata { + return GenerativeDigitalOceanMetadata.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeXAIMetadata { - const message = createBaseGenerativeXAIMetadata(); + fromPartial(object: DeepPartial): GenerativeDigitalOceanMetadata { + const message = createBaseGenerativeDigitalOceanMetadata(); message.usage = (object.usage !== undefined && object.usage !== null) - ? GenerativeXAIMetadata_Usage.fromPartial(object.usage) + ? GenerativeDigitalOceanMetadata_Usage.fromPartial(object.usage) : undefined; return message; }, }; -function createBaseGenerativeXAIMetadata_Usage(): GenerativeXAIMetadata_Usage { +function createBaseGenerativeDigitalOceanMetadata_Usage(): GenerativeDigitalOceanMetadata_Usage { return { promptTokens: undefined, completionTokens: undefined, totalTokens: undefined }; } -export const GenerativeXAIMetadata_Usage = { - encode(message: GenerativeXAIMetadata_Usage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { +export const GenerativeDigitalOceanMetadata_Usage = { + encode(message: GenerativeDigitalOceanMetadata_Usage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.promptTokens !== undefined) { writer.uint32(8).int64(message.promptTokens); } @@ -5662,10 +6489,10 @@ export const GenerativeXAIMetadata_Usage = { return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeXAIMetadata_Usage { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeDigitalOceanMetadata_Usage { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeXAIMetadata_Usage(); + const message = createBaseGenerativeDigitalOceanMetadata_Usage(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -5699,7 +6526,7 @@ export const GenerativeXAIMetadata_Usage = { return message; }, - fromJSON(object: any): GenerativeXAIMetadata_Usage { + fromJSON(object: any): GenerativeDigitalOceanMetadata_Usage { return { promptTokens: isSet(object.promptTokens) ? globalThis.Number(object.promptTokens) : undefined, completionTokens: isSet(object.completionTokens) ? globalThis.Number(object.completionTokens) : undefined, @@ -5707,7 +6534,7 @@ export const GenerativeXAIMetadata_Usage = { }; }, - toJSON(message: GenerativeXAIMetadata_Usage): unknown { + toJSON(message: GenerativeDigitalOceanMetadata_Usage): unknown { const obj: any = {}; if (message.promptTokens !== undefined) { obj.promptTokens = Math.round(message.promptTokens); @@ -5721,11 +6548,11 @@ export const GenerativeXAIMetadata_Usage = { return obj; }, - create(base?: DeepPartial): GenerativeXAIMetadata_Usage { - return GenerativeXAIMetadata_Usage.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeDigitalOceanMetadata_Usage { + return GenerativeDigitalOceanMetadata_Usage.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeXAIMetadata_Usage { - const message = createBaseGenerativeXAIMetadata_Usage(); + fromPartial(object: DeepPartial): GenerativeDigitalOceanMetadata_Usage { + const message = createBaseGenerativeDigitalOceanMetadata_Usage(); message.promptTokens = object.promptTokens ?? undefined; message.completionTokens = object.completionTokens ?? undefined; message.totalTokens = object.totalTokens ?? undefined; @@ -5733,22 +6560,22 @@ export const GenerativeXAIMetadata_Usage = { }, }; -function createBaseGenerativeDeepseekMetadata(): GenerativeDeepseekMetadata { +function createBaseGenerativeMetaMetadata(): GenerativeMetaMetadata { return { usage: undefined }; } -export const GenerativeDeepseekMetadata = { - encode(message: GenerativeDeepseekMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { +export const GenerativeMetaMetadata = { + encode(message: GenerativeMetaMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.usage !== undefined) { - GenerativeDeepseekMetadata_Usage.encode(message.usage, writer.uint32(10).fork()).ldelim(); + GenerativeMetaMetadata_Usage.encode(message.usage, writer.uint32(10).fork()).ldelim(); } return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeDeepseekMetadata { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeMetaMetadata { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeDeepseekMetadata(); + const message = createBaseGenerativeMetaMetadata(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -5757,7 +6584,7 @@ export const GenerativeDeepseekMetadata = { break; } - message.usage = GenerativeDeepseekMetadata_Usage.decode(reader, reader.uint32()); + message.usage = GenerativeMetaMetadata_Usage.decode(reader, reader.uint32()); continue; } if ((tag & 7) === 4 || tag === 0) { @@ -5768,36 +6595,36 @@ export const GenerativeDeepseekMetadata = { return message; }, - fromJSON(object: any): GenerativeDeepseekMetadata { - return { usage: isSet(object.usage) ? GenerativeDeepseekMetadata_Usage.fromJSON(object.usage) : undefined }; + fromJSON(object: any): GenerativeMetaMetadata { + return { usage: isSet(object.usage) ? GenerativeMetaMetadata_Usage.fromJSON(object.usage) : undefined }; }, - toJSON(message: GenerativeDeepseekMetadata): unknown { + toJSON(message: GenerativeMetaMetadata): unknown { const obj: any = {}; if (message.usage !== undefined) { - obj.usage = GenerativeDeepseekMetadata_Usage.toJSON(message.usage); + obj.usage = GenerativeMetaMetadata_Usage.toJSON(message.usage); } return obj; }, - create(base?: DeepPartial): GenerativeDeepseekMetadata { - return GenerativeDeepseekMetadata.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeMetaMetadata { + return GenerativeMetaMetadata.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeDeepseekMetadata { - const message = createBaseGenerativeDeepseekMetadata(); + fromPartial(object: DeepPartial): GenerativeMetaMetadata { + const message = createBaseGenerativeMetaMetadata(); message.usage = (object.usage !== undefined && object.usage !== null) - ? GenerativeDeepseekMetadata_Usage.fromPartial(object.usage) + ? GenerativeMetaMetadata_Usage.fromPartial(object.usage) : undefined; return message; }, }; -function createBaseGenerativeDeepseekMetadata_Usage(): GenerativeDeepseekMetadata_Usage { +function createBaseGenerativeMetaMetadata_Usage(): GenerativeMetaMetadata_Usage { return { promptTokens: undefined, completionTokens: undefined, totalTokens: undefined }; } -export const GenerativeDeepseekMetadata_Usage = { - encode(message: GenerativeDeepseekMetadata_Usage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { +export const GenerativeMetaMetadata_Usage = { + encode(message: GenerativeMetaMetadata_Usage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.promptTokens !== undefined) { writer.uint32(8).int64(message.promptTokens); } @@ -5810,10 +6637,10 @@ export const GenerativeDeepseekMetadata_Usage = { return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeDeepseekMetadata_Usage { + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeMetaMetadata_Usage { const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGenerativeDeepseekMetadata_Usage(); + const message = createBaseGenerativeMetaMetadata_Usage(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -5847,7 +6674,7 @@ export const GenerativeDeepseekMetadata_Usage = { return message; }, - fromJSON(object: any): GenerativeDeepseekMetadata_Usage { + fromJSON(object: any): GenerativeMetaMetadata_Usage { return { promptTokens: isSet(object.promptTokens) ? globalThis.Number(object.promptTokens) : undefined, completionTokens: isSet(object.completionTokens) ? globalThis.Number(object.completionTokens) : undefined, @@ -5855,7 +6682,7 @@ export const GenerativeDeepseekMetadata_Usage = { }; }, - toJSON(message: GenerativeDeepseekMetadata_Usage): unknown { + toJSON(message: GenerativeMetaMetadata_Usage): unknown { const obj: any = {}; if (message.promptTokens !== undefined) { obj.promptTokens = Math.round(message.promptTokens); @@ -5869,11 +6696,11 @@ export const GenerativeDeepseekMetadata_Usage = { return obj; }, - create(base?: DeepPartial): GenerativeDeepseekMetadata_Usage { - return GenerativeDeepseekMetadata_Usage.fromPartial(base ?? {}); + create(base?: DeepPartial): GenerativeMetaMetadata_Usage { + return GenerativeMetaMetadata_Usage.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): GenerativeDeepseekMetadata_Usage { - const message = createBaseGenerativeDeepseekMetadata_Usage(); + fromPartial(object: DeepPartial): GenerativeMetaMetadata_Usage { + const message = createBaseGenerativeMetaMetadata_Usage(); message.promptTokens = object.promptTokens ?? undefined; message.completionTokens = object.completionTokens ?? undefined; message.totalTokens = object.totalTokens ?? undefined; @@ -5897,6 +6724,8 @@ function createBaseGenerativeMetadata(): GenerativeMetadata { nvidia: undefined, xai: undefined, deepseek: undefined, + digitalocean: undefined, + meta: undefined, }; } @@ -5944,6 +6773,12 @@ export const GenerativeMetadata = { if (message.deepseek !== undefined) { GenerativeDeepseekMetadata.encode(message.deepseek, writer.uint32(114).fork()).ldelim(); } + if (message.digitalocean !== undefined) { + GenerativeDigitalOceanMetadata.encode(message.digitalocean, writer.uint32(122).fork()).ldelim(); + } + if (message.meta !== undefined) { + GenerativeMetaMetadata.encode(message.meta, writer.uint32(130).fork()).ldelim(); + } return writer; }, @@ -6052,6 +6887,20 @@ export const GenerativeMetadata = { message.deepseek = GenerativeDeepseekMetadata.decode(reader, reader.uint32()); continue; + case 15: + if (tag !== 122) { + break; + } + + message.digitalocean = GenerativeDigitalOceanMetadata.decode(reader, reader.uint32()); + continue; + case 16: + if (tag !== 130) { + break; + } + + message.meta = GenerativeMetaMetadata.decode(reader, reader.uint32()); + continue; } if ((tag & 7) === 4 || tag === 0) { break; @@ -6077,6 +6926,10 @@ export const GenerativeMetadata = { nvidia: isSet(object.nvidia) ? GenerativeNvidiaMetadata.fromJSON(object.nvidia) : undefined, xai: isSet(object.xai) ? GenerativeXAIMetadata.fromJSON(object.xai) : undefined, deepseek: isSet(object.deepseek) ? GenerativeDeepseekMetadata.fromJSON(object.deepseek) : undefined, + digitalocean: isSet(object.digitalocean) + ? GenerativeDigitalOceanMetadata.fromJSON(object.digitalocean) + : undefined, + meta: isSet(object.meta) ? GenerativeMetaMetadata.fromJSON(object.meta) : undefined, }; }, @@ -6124,6 +6977,12 @@ export const GenerativeMetadata = { if (message.deepseek !== undefined) { obj.deepseek = GenerativeDeepseekMetadata.toJSON(message.deepseek); } + if (message.digitalocean !== undefined) { + obj.digitalocean = GenerativeDigitalOceanMetadata.toJSON(message.digitalocean); + } + if (message.meta !== undefined) { + obj.meta = GenerativeMetaMetadata.toJSON(message.meta); + } return obj; }, @@ -6174,6 +7033,12 @@ export const GenerativeMetadata = { message.deepseek = (object.deepseek !== undefined && object.deepseek !== null) ? GenerativeDeepseekMetadata.fromPartial(object.deepseek) : undefined; + message.digitalocean = (object.digitalocean !== undefined && object.digitalocean !== null) + ? GenerativeDigitalOceanMetadata.fromPartial(object.digitalocean) + : undefined; + message.meta = (object.meta !== undefined && object.meta !== null) + ? GenerativeMetaMetadata.fromPartial(object.meta) + : undefined; return message; }, }; @@ -6401,6 +7266,9 @@ function longToNumber(long: Long): number { if (long.gt(globalThis.Number.MAX_SAFE_INTEGER)) { throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); } + if (long.lt(globalThis.Number.MIN_SAFE_INTEGER)) { + throw new globalThis.Error("Value is smaller than Number.MIN_SAFE_INTEGER"); + } return long.toNumber(); } diff --git a/packages/core/src/proto/v1/health_weaviate.ts b/packages/core/src/proto/v1/health_weaviate.ts index ae92e40a..a0bb5644 100644 --- a/packages/core/src/proto/v1/health_weaviate.ts +++ b/packages/core/src/proto/v1/health_weaviate.ts @@ -1,6 +1,6 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v1.176.0 +// protoc-gen-ts_proto v1.181.2 // protoc v3.19.1 // source: v1/health_weaviate.proto diff --git a/packages/core/src/proto/v1/properties.ts b/packages/core/src/proto/v1/properties.ts index 2d04b558..820f4838 100644 --- a/packages/core/src/proto/v1/properties.ts +++ b/packages/core/src/proto/v1/properties.ts @@ -1,6 +1,6 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v1.176.0 +// protoc-gen-ts_proto v1.181.2 // protoc v3.19.1 // source: v1/properties.proto @@ -1358,6 +1358,9 @@ function longToNumber(long: Long): number { if (long.gt(globalThis.Number.MAX_SAFE_INTEGER)) { throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); } + if (long.lt(globalThis.Number.MIN_SAFE_INTEGER)) { + throw new globalThis.Error("Value is smaller than Number.MIN_SAFE_INTEGER"); + } return long.toNumber(); } diff --git a/packages/core/src/proto/v1/search_get.ts b/packages/core/src/proto/v1/search_get.ts index ede2069e..987c2753 100644 --- a/packages/core/src/proto/v1/search_get.ts +++ b/packages/core/src/proto/v1/search_get.ts @@ -1,6 +1,6 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v1.176.0 +// protoc-gen-ts_proto v1.181.2 // protoc v3.19.1 // source: v1/search_get.proto @@ -3810,6 +3810,9 @@ function longToNumber(long: Long): number { if (long.gt(globalThis.Number.MAX_SAFE_INTEGER)) { throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); } + if (long.lt(globalThis.Number.MIN_SAFE_INTEGER)) { + throw new globalThis.Error("Value is smaller than Number.MIN_SAFE_INTEGER"); + } return long.toNumber(); } diff --git a/packages/core/src/proto/v1/tenants.ts b/packages/core/src/proto/v1/tenants.ts index a369d0f9..adb788b6 100644 --- a/packages/core/src/proto/v1/tenants.ts +++ b/packages/core/src/proto/v1/tenants.ts @@ -1,6 +1,6 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v1.176.0 +// protoc-gen-ts_proto v1.181.2 // protoc v3.19.1 // source: v1/tenants.proto diff --git a/packages/core/src/proto/v1/weaviate.ts b/packages/core/src/proto/v1/weaviate.ts index 12e91fd1..d14023c9 100644 --- a/packages/core/src/proto/v1/weaviate.ts +++ b/packages/core/src/proto/v1/weaviate.ts @@ -1,11 +1,11 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v1.176.0 +// protoc-gen-ts_proto v1.181.2 // protoc v3.19.1 // source: v1/weaviate.proto /* eslint-disable */ -import { type CallContext, type CallOptions } from "nice-grpc-common"; +import type { CallContext, CallOptions } from "nice-grpc-common"; import { AggregateReply, AggregateRequest } from "./aggregate.js"; import { BatchObjectsReply, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4c141265..591cbdb0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,9 @@ importers: eslint-plugin-prettier: specifier: ^4.2.1 version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.1))(eslint@8.57.1)(prettier@2.8.8) + grpc-tools: + specifier: ^1.13.0 + version: 1.13.0 husky: specifier: ^8.0.3 version: 8.0.3 @@ -63,14 +66,17 @@ importers: specifier: ^16.12.0 version: 16.14.2 graphql-request: - specifier: ^6.1.0 - version: 6.1.0(graphql@16.14.2) + specifier: ^7.4.0 + version: 7.4.0(graphql@16.14.2) long: specifier: ^5.3.2 version: 5.3.2 nice-grpc-common: specifier: ^2.0.3 version: 2.0.3 + protobufjs: + specifier: ^7.5.5 + version: 7.6.4 uuid: specifier: ^14.0.0 version: 14.0.1 @@ -81,15 +87,9 @@ importers: '@types/uuid': specifier: ^9.0.1 version: 9.0.8 - grpc-tools: - specifier: ^1.12.4 - version: 1.13.0 openapi-typescript: specifier: ^5.4.1 version: 5.4.2 - protobufjs: - specifier: ^7.5.5 - version: 7.6.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -619,39 +619,24 @@ packages: '@protobufjs/base64@1.1.2': resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - '@protobufjs/codegen@2.0.4': - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - '@protobufjs/codegen@2.0.5': resolution: {integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==} - '@protobufjs/eventemitter@1.1.0': - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - '@protobufjs/eventemitter@1.1.1': resolution: {integrity: sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==} - '@protobufjs/fetch@1.1.0': - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} - '@protobufjs/fetch@1.1.1': resolution: {integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==} '@protobufjs/float@1.0.2': resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - '@protobufjs/inquire@1.1.0': - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - '@protobufjs/path@1.1.2': resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} '@protobufjs/pool@1.1.0': resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - '@protobufjs/utf8@1.1.0': - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@protobufjs/utf8@1.1.1': resolution: {integrity: sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==} @@ -1276,9 +1261,6 @@ packages: resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} engines: {node: '>= 14'} - cross-fetch@3.2.0: - resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -1681,8 +1663,8 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - graphql-request@6.1.0: - resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==} + graphql-request@7.4.0: + resolution: {integrity: sha512-xfr+zFb/QYbs4l4ty0dltqiXIp07U6sl+tOKAb0t50/EnQek6CVVBLjETXi+FghElytvgaAWtIOt3EV7zLzIAQ==} peerDependencies: graphql: 14 - 16 @@ -2221,10 +2203,6 @@ packages: resolution: {integrity: sha512-WPn+h9RGEExOKdu4bsF4HksG/uzd3cFq3MFtq8PsFeExPse5Ha/VOjQNyHhjboBFwGXGev6muJYTSPAOkROq2g==} engines: {node: '>=18'} - protobufjs@7.5.3: - resolution: {integrity: sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==} - engines: {node: '>=12.0.0'} - protobufjs@7.6.4: resolution: {integrity: sha512-RJJPTTpvFfHcWLkIa2JFWK4XvtSzS0yEWDmunqHXli1h3JlkbcQZXDZdcWxv+JK3Xsl5/UFDPZ0iGm7DAengYw==} engines: {node: '>=12.0.0'} @@ -2470,6 +2448,7 @@ packages: tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me testcontainers@11.14.0: resolution: {integrity: sha512-r9pniwv/iwzyHaI7gwAvAm4Y+IvjJg3vBWdjrUCaDMc2AXIr4jKbq7jJO18Mw2ybs73pZy1Aj7p/4RVBGMRWjg==} @@ -3127,33 +3106,20 @@ snapshots: '@protobufjs/base64@1.1.2': {} - '@protobufjs/codegen@2.0.4': {} - '@protobufjs/codegen@2.0.5': {} - '@protobufjs/eventemitter@1.1.0': {} - '@protobufjs/eventemitter@1.1.1': {} - '@protobufjs/fetch@1.1.0': - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/fetch@1.1.1': dependencies: '@protobufjs/aspromise': 1.1.2 '@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': {} - '@protobufjs/utf8@1.1.1': {} '@rollup/rollup-android-arm-eabi@4.44.0': @@ -3806,12 +3772,6 @@ snapshots: crc-32: 1.2.2 readable-stream: 4.7.0 - cross-fetch@3.2.0: - dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -4296,13 +4256,10 @@ snapshots: graphemer@1.4.0: {} - graphql-request@6.1.0(graphql@16.14.2): + graphql-request@7.4.0(graphql@16.14.2): dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.14.2) - cross-fetch: 3.2.0 graphql: 16.14.2 - transitivePeerDependencies: - - encoding graphql@16.14.2: {} @@ -4769,21 +4726,6 @@ snapshots: transitivePeerDependencies: - supports-color - protobufjs@7.5.3: - 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': 18.19.112 - long: 5.3.2 - protobufjs@7.6.4: dependencies: '@protobufjs/aspromise': 1.1.2 @@ -5190,7 +5132,7 @@ snapshots: ts-proto@1.181.2: dependencies: case-anything: 2.1.13 - protobufjs: 7.5.3 + protobufjs: 7.6.4 ts-poet: 6.12.0 ts-proto-descriptors: 1.16.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index ccdc80cd..6ca70041 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,2 +1,5 @@ packages: - - "packages/*" \ No newline at end of file + - "packages/*" + +onlyBuiltDependencies: + - grpc-tools diff --git a/tools/refresh_protos.sh b/tools/refresh_protos.sh index d6711fba..9ad379f0 100755 --- a/tools/refresh_protos.sh +++ b/tools/refresh_protos.sh @@ -1,42 +1,42 @@ #!/bin/bash -branchOrTag="${1:-main}" -dir="tools" -srcDir="./packages/core/src" -mkdir -p ${dir} -curl -LkSs https://api.github.com/repos/weaviate/weaviate/tarball/${branchOrTag} -o ${dir}/weaviate.tar.gz -tar --strip-components=3 -C ${dir} -xvf ${dir}/weaviate.tar.gz $(tar -tf ${dir}/weaviate.tar.gz | grep '^weaviate-weaviate-[^/]\+/grpc/proto/v1') - -./node_modules/.bin/grpc_tools_node_protoc -I ${dir} \ - --ts_proto_out=${srcDir}/proto \ - --ts_proto_opt=forceLong==bigint \ - --ts_proto_opt=esModuleInterop=true \ - --ts_proto_opt=outputServices=nice-grpc,outputServices=generic-definitions,useExactTypes=false \ - ${dir}/v1/*.proto - -./node_modules/.bin/grpc_tools_node_protoc -I ${dir} \ - --ts_proto_out=${srcDir}/proto/google/health/v1 \ - --ts_proto_opt=forceLong==bigint \ - --ts_proto_opt=esModuleInterop=true \ - --ts_proto_opt=outputServices=nice-grpc,outputServices=generic-definitions,useExactTypes=false \ - ${dir}/health.proto - -rm ${dir}/weaviate.tar.gz +set -euo pipefail +export LC_ALL=C +cd "$(dirname "$0")/.." -sed -i '' 's/\"protobufjs\/minimal\"/\"protobufjs\/minimal.js\"/g' src/proto/v1/*.ts -sed -i '' 's/\"protobufjs\/minimal\"/\"protobufjs\/minimal.js\"/g' src/proto/google/protobuf/struct.ts -sed -i '' 's/\"protobufjs\/minimal\"/\"protobufjs\/minimal.js\"/g' src/proto/google/health/v1/health.ts - -sed -i '' 's/google\/protobuf\/struct"/google\/protobuf\/struct.js"/g' src/proto/v1/*.ts - -# replace import paths -for filepath in ${dir}/v1/*; do # loops through known protos - filename=${filepath##*/} # extract filename from path - file=${filename%.*} # remove extension - sed -i '' "s/\".\/${file}\"/\".\/${file}.js\"/g" src/proto/v1/*.ts # replace import paths - # e.g. import { Vectors } from "./base"; => import { Vectors } from "./base.js"; -done - -rm -rf ${dir}/v1 +branchOrTag="${1:-main}" +protoc="./node_modules/.bin/grpc_tools_node_protoc" +plugin="./node_modules/.bin/protoc-gen-ts_proto" + +if [[ ! -x "$plugin" ]]; then + echo "Missing ts-proto: run pnpm install at the repository root." >&2 + exit 1 +fi +if ! "$protoc" --version >/dev/null 2>&1; then + echo "Missing protoc binary: run pnpm install, then pnpm rebuild grpc-tools." >&2 + exit 1 +fi + +tmpDir=$(mktemp -d) +trap 'rm -rf "$tmpDir"' EXIT +curl -fLSs "https://api.github.com/repos/weaviate/weaviate/tarball/${branchOrTag}" -o "$tmpDir/weaviate.tar.gz" +protoDir=$(tar -tf "$tmpDir/weaviate.tar.gz" | grep -E '^[^/]+/grpc/proto/v1/$') +tar --strip-components=3 -C "$tmpDir" -xf "$tmpDir/weaviate.tar.gz" "$protoDir" + +mkdir -p "$tmpDir/generated/google/health/v1" +options=( + "--plugin=protoc-gen-ts_proto=$plugin" + --ts_proto_opt=forceLong=number + --ts_proto_opt=esModuleInterop=true + --ts_proto_opt=importSuffix=.js + --ts_proto_opt=env=both,outputServices=nice-grpc,outputServices=generic-definitions,useExactTypes=false +) +"$protoc" -I "$tmpDir" "${options[@]}" \ + --ts_proto_out="$tmpDir/generated" "$tmpDir"/v1/*.proto +"$protoc" -I tools "${options[@]}" \ + --ts_proto_out="$tmpDir/generated/google/health/v1" tools/health.proto + +# Preserve the existing sources if either generator fails. +cp -R "$tmpDir/generated/." packages/core/src/proto/ echo "done" From 8e9c22ed847b15bb9ee9f8cb59f6a8b0ab78b150 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Tue, 22 Sep 2026 16:21:17 +0100 Subject: [PATCH 55/62] chore: prepare release v3.15.0-alpha.4 --- package.json | 2 +- packages/core/package.json | 2 +- packages/core/src/version.ts | 2 +- packages/node/package.json | 2 +- packages/web/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index a257f313..a63dde05 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "weaviate-client", - "version": "3.15.0-alpha.3", + "version": "3.15.0-alpha.4", "description": "JS/TS client for Weaviate", "type": "module", "engines": { diff --git a/packages/core/package.json b/packages/core/package.json index d5e3a93b..ef8b7863 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/core", - "version": "3.15.0-alpha.3", + "version": "3.15.0-alpha.4", "description": "JS/TS client for Weaviate", "main": "dist/src/index.js", "type": "module", diff --git a/packages/core/src/version.ts b/packages/core/src/version.ts index f12658e6..42be889d 100644 --- a/packages/core/src/version.ts +++ b/packages/core/src/version.ts @@ -1 +1 @@ -export const WEAVIATE_CLIENT_VERSION = '3.15.0-alpha.3'; +export const WEAVIATE_CLIENT_VERSION = '3.15.0-alpha.4'; diff --git a/packages/node/package.json b/packages/node/package.json index b8ca04ae..860b30f9 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/node", - "version": "3.15.0-alpha.3", + "version": "3.15.0-alpha.4", "description": "JS/TS node client for Weaviate", "main": "dist/cjs/src/index.js", "type": "module", diff --git a/packages/web/package.json b/packages/web/package.json index 0c7492f5..408b82fd 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/web", - "version": "3.15.0-alpha.3", + "version": "3.15.0-alpha.4", "description": "JS/TS web client for Weaviate", "type": "module", "main": "./dist/src/index.js", From 1c0b5652f7ba6f6a1857df94bcca8deda3a850f8 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Tue, 22 Sep 2026 16:23:54 +0100 Subject: [PATCH 56/62] Update test for new WCD configs --- packages/test/node/journey.test.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/test/node/journey.test.ts b/packages/test/node/journey.test.ts index f4645cda..a03086bc 100644 --- a/packages/test/node/journey.test.ts +++ b/packages/test/node/journey.test.ts @@ -156,7 +156,7 @@ describe('Journey testing of the client using a WCD cluster', () => { ], references: [], replication: { - asyncEnabled: false, + asyncEnabled: true, deletionStrategy: 'TimeBasedResolution', factor: 3, }, @@ -166,10 +166,10 @@ describe('Journey testing of the client using a WCD cluster', () => { }, sharding: { virtualPerPhysical: 128, - desiredCount: 3, - actualCount: 3, - desiredVirtualCount: 384, - actualVirtualCount: 384, + desiredCount: 2, + actualCount: 2, + desiredVirtualCount: 256, + actualVirtualCount: 256, key: '_id', strategy: 'hash', function: 'murmur3', From 327e87f6f64bcc3ddfa708e11d2446c937b2c3d7 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Tue, 22 Sep 2026 16:24:24 +0100 Subject: [PATCH 57/62] chore: prepare release v3.15.0-alpha.5 --- package.json | 2 +- packages/core/package.json | 2 +- packages/core/src/version.ts | 2 +- packages/node/package.json | 2 +- packages/web/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index a63dde05..532af358 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "weaviate-client", - "version": "3.15.0-alpha.4", + "version": "3.15.0-alpha.5", "description": "JS/TS client for Weaviate", "type": "module", "engines": { diff --git a/packages/core/package.json b/packages/core/package.json index ef8b7863..f8a2d30a 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/core", - "version": "3.15.0-alpha.4", + "version": "3.15.0-alpha.5", "description": "JS/TS client for Weaviate", "main": "dist/src/index.js", "type": "module", diff --git a/packages/core/src/version.ts b/packages/core/src/version.ts index 42be889d..155cf4bd 100644 --- a/packages/core/src/version.ts +++ b/packages/core/src/version.ts @@ -1 +1 @@ -export const WEAVIATE_CLIENT_VERSION = '3.15.0-alpha.4'; +export const WEAVIATE_CLIENT_VERSION = '3.15.0-alpha.5'; diff --git a/packages/node/package.json b/packages/node/package.json index 860b30f9..3db6a9bc 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/node", - "version": "3.15.0-alpha.4", + "version": "3.15.0-alpha.5", "description": "JS/TS node client for Weaviate", "main": "dist/cjs/src/index.js", "type": "module", diff --git a/packages/web/package.json b/packages/web/package.json index 408b82fd..1d76fc9d 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/web", - "version": "3.15.0-alpha.4", + "version": "3.15.0-alpha.5", "description": "JS/TS web client for Weaviate", "type": "module", "main": "./dist/src/index.js", From 784dcdacd9cfb8922af8ec579edd2d76546a2f4b Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Tue, 22 Sep 2026 16:46:11 +0100 Subject: [PATCH 58/62] Revert change to wcd test --- packages/test/node/journey.test.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/test/node/journey.test.ts b/packages/test/node/journey.test.ts index a03086bc..fd1be022 100644 --- a/packages/test/node/journey.test.ts +++ b/packages/test/node/journey.test.ts @@ -166,10 +166,10 @@ describe('Journey testing of the client using a WCD cluster', () => { }, sharding: { virtualPerPhysical: 128, - desiredCount: 2, - actualCount: 2, - desiredVirtualCount: 256, - actualVirtualCount: 256, + desiredCount: 3, + actualCount: 3, + desiredVirtualCount: 384, + actualVirtualCount: 384, key: '_id', strategy: 'hash', function: 'murmur3', From 032c348afa05de1a5535706531d28945c0912380 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Tue, 22 Sep 2026 17:01:27 +0100 Subject: [PATCH 59/62] chore: prepare release v3.15.0-alpha.6 --- package.json | 2 +- packages/core/package.json | 2 +- packages/core/src/version.ts | 2 +- packages/node/package.json | 2 +- packages/web/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 532af358..1d990113 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "weaviate-client", - "version": "3.15.0-alpha.5", + "version": "3.15.0-alpha.6", "description": "JS/TS client for Weaviate", "type": "module", "engines": { diff --git a/packages/core/package.json b/packages/core/package.json index f8a2d30a..0a695b99 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/core", - "version": "3.15.0-alpha.5", + "version": "3.15.0-alpha.6", "description": "JS/TS client for Weaviate", "main": "dist/src/index.js", "type": "module", diff --git a/packages/core/src/version.ts b/packages/core/src/version.ts index 155cf4bd..3ce99acb 100644 --- a/packages/core/src/version.ts +++ b/packages/core/src/version.ts @@ -1 +1 @@ -export const WEAVIATE_CLIENT_VERSION = '3.15.0-alpha.5'; +export const WEAVIATE_CLIENT_VERSION = '3.15.0-alpha.6'; diff --git a/packages/node/package.json b/packages/node/package.json index 3db6a9bc..84f1f403 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/node", - "version": "3.15.0-alpha.5", + "version": "3.15.0-alpha.6", "description": "JS/TS node client for Weaviate", "main": "dist/cjs/src/index.js", "type": "module", diff --git a/packages/web/package.json b/packages/web/package.json index 1d76fc9d..d9e71aea 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,6 +1,6 @@ { "name": "@weaviate/web", - "version": "3.15.0-alpha.5", + "version": "3.15.0-alpha.6", "description": "JS/TS web client for Weaviate", "type": "module", "main": "./dist/src/index.js", From 96dc1ca78fc78de5b096bef1f06e924d362fa9bc Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Wed, 23 Sep 2026 14:21:34 +0100 Subject: [PATCH 60/62] Fix incompatibilities introduced by file structure changes - re-export interfaces like Aggregate in node/web with their media types specified - ensure weaviateV2 is only accessible from weaviate-client - reintroduce client.batch and throw an error if accessed from @weaviate/web - ensure connection.close() does something in @weaviate/node - ensure connection.reconnect() uses new transports - ensure channelOptions are correctly set for @weaviate/node - add missing retryMiddleware to both pkgs --- packages/core/package.json | 4 +++ packages/core/src/aggregate/index.ts | 10 +++--- packages/core/src/collection/index.ts | 17 ++++++---- packages/core/src/collections.ts | 20 +++++++++-- packages/core/src/connection/grpc.ts | 26 ++++++++------ packages/core/src/data/batch.ts | 9 ++++- packages/core/src/data/index.ts | 3 +- packages/core/src/generate/index.ts | 6 ++-- packages/core/src/generate/types.ts | 2 +- packages/core/src/index.ts | 12 +++---- packages/core/src/query/index.ts | 32 ++--------------- packages/core/src/query/types.ts | 2 +- packages/node/src/index.ts | 21 +++++++++--- packages/node/src/transports.ts | 20 +++++++---- packages/test/node/config/integration.test.ts | 3 +- packages/test/node/data/integration.test.ts | 3 +- packages/web/package.json | 3 +- packages/web/src/index.ts | 26 ++++++++------ packages/web/src/transports.ts | 8 ++--- pnpm-lock.yaml | 3 ++ scripts/stage-client.mjs | 34 +++++++++++++++++-- 21 files changed, 164 insertions(+), 100 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 0a695b99..061e622d 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -16,6 +16,10 @@ "./errors": { "types": "./dist/src/errors.d.ts", "default": "./dist/src/errors.js" + }, + "./v2": { + "types": "./dist/src/v2/index.d.ts", + "default": "./dist/src/v2/index.js" } }, "files": [ diff --git a/packages/core/src/aggregate/index.ts b/packages/core/src/aggregate/index.ts index c4e076c6..e6d2d6c7 100644 --- a/packages/core/src/aggregate/index.ts +++ b/packages/core/src/aggregate/index.ts @@ -348,9 +348,9 @@ export type AggregateGroupByResult< }; }; -class AggregateManager implements Aggregate { +class AggregateManager implements IAggregate { connection: Connection; - groupBy: AggregateGroupBy; + groupBy: IAggregateGroupBy; name: string; private dbVersionSupport: DbVersionSupport; private toBase64FromMedia: ToBase64FromMedia; @@ -786,9 +786,9 @@ class AggregateManager implements Aggregate { }; } -export interface Aggregate { +export interface IAggregate { /** This namespace contains methods perform a group by search while aggregating metrics. */ - groupBy: AggregateGroupBy; + groupBy: IAggregateGroupBy; /** * Aggregate metrics over the objects returned by a hybrid search on this collection. * @@ -871,7 +871,7 @@ export interface Aggregate { overAll

>(opts?: AggregateOverAllOptions

): Promise>; } -export interface AggregateGroupBy { +export interface IAggregateGroupBy { /** * Aggregate metrics over the objects grouped by a specified property and returned by a hybrid search on this collection. * diff --git a/packages/core/src/collection/index.ts b/packages/core/src/collection/index.ts index c21ff245..2b930cc9 100644 --- a/packages/core/src/collection/index.ts +++ b/packages/core/src/collection/index.ts @@ -4,14 +4,14 @@ import { ConsistencyLevel } from '../replication.js'; import { DbVersionSupport } from '../utils/dbVersion.js'; import ClassExists from '../v2/schema/classExists.js'; -import aggregate, { Aggregate, Metrics, metrics } from '../aggregate/index.js'; +import aggregate, { IAggregate, Metrics, metrics } from '../aggregate/index.js'; import { BackupCollection, backupCollection } from '../backup/collection.js'; import config, { Config } from '../config/index.js'; import data, { Data } from '../data/index.js'; import filter, { Filter } from '../filters/index.js'; -import generate, { Generate } from '../generate/index.js'; +import generate, { IGenerate } from '../generate/index.js'; import { Iterator } from '../iterator/index.js'; -import query, { Query } from '../query/index.js'; +import query, { IQuery } from '../query/index.js'; import sort, { Sort } from '../sort/index.js'; import tenants, { TenantBase, Tenants } from '../tenants/index.js'; import { QueryMetadata, QueryProperty, QueryReference, ReturnVectors } from '../types/index.js'; @@ -21,7 +21,7 @@ import multiTargetVector, { MultiTargetVector } from '../vectors/multiTargetVect export interface ICollection { /** This namespace includes all the querying methods available to you when using Weaviate's standard aggregation capabilities. */ - aggregate: Aggregate; + aggregate: IAggregate; /** This namespace includes all the backup methods available to you when backing up a collection in Weaviate. */ backup: BackupCollection; /** This namespace includes all the CRUD methods available to you when modifying the configuration of the collection in Weaviate. */ @@ -31,13 +31,13 @@ export interface ICollection /** This namespace includes the methods by which you can create the `FilterValue` values for use when filtering queries over your collection. */ filter: Filter; /** This namespace includes all the querying methods available to you when using Weaviate's generative capabilities. */ - generate: Generate; + generate: IGenerate; /** This namespace includes the methods by which you can create the `MetricsX` values for use when aggregating over your collection. */ metrics: Metrics; /** The name of the collection. */ name: N; /** This namespace includes all the querying methods available to you when using Weaviate's standard query capabilities. */ - query: Query; + query: IQuery; /** This namespaces includes the methods by which you can create the `Sorting` values for use when sorting queries over your collection. */ sort: Sort; /** This namespace includes all the CRUD methods available to you when modifying the tenants of a multi-tenancy-enabled collection in Weaviate. */ @@ -116,6 +116,7 @@ const collection = ( connection: Connection, name: N, dbVersionSupport: DbVersionSupport, + isGrpcWeb: boolean, toBase64FromMedia: ToBase64FromMedia, consistencyLevel?: ConsistencyLevel, tenant?: string @@ -144,7 +145,7 @@ const collection = ( aggregate: aggregateCollection, backup: backupCollection(connection, capitalizedName), config: config(connection, capitalizedName, dbVersionSupport, tenant), - data: data(connection, capitalizedName, dbVersionSupport, consistencyLevel, tenant), + data: data(connection, capitalizedName, dbVersionSupport, isGrpcWeb, consistencyLevel, tenant), filter: filter(), generate: generate( connection, @@ -180,6 +181,7 @@ const collection = ( connection, capitalizedName, dbVersionSupport, + isGrpcWeb, toBase64FromMedia, consistencyLevel, tenant @@ -189,6 +191,7 @@ const collection = ( connection, capitalizedName, dbVersionSupport, + isGrpcWeb, toBase64FromMedia, consistencyLevel, typeof tenant === 'string' ? tenant : tenant.name diff --git a/packages/core/src/collections.ts b/packages/core/src/collections.ts index 1e6cd93c..4ede7a86 100644 --- a/packages/core/src/collections.ts +++ b/packages/core/src/collections.ts @@ -61,6 +61,7 @@ export type CollectionConfigCreate( connection: Connection, dbVersionSupport: DbVersionSupport, + isGrpcWeb: boolean, toBase64FromMedia: ToBase64FromMedia ) => { const listAll = () => @@ -132,6 +133,7 @@ const collections = ( connection, name, dbVersionSupport, + isGrpcWeb, toBase64FromMedia ); }, @@ -141,6 +143,7 @@ const collections = ( connection, name as string, dbVersionSupport, + isGrpcWeb, toBase64FromMedia ); }, @@ -150,6 +153,7 @@ const collections = ( connection, name as string, dbVersionSupport, + isGrpcWeb, toBase64FromMedia ); }, @@ -170,7 +174,13 @@ const collections = ( >( name: TName ) => - collection(connection, name, dbVersionSupport, toBase64FromMedia), + collection( + connection, + name, + dbVersionSupport, + isGrpcWeb, + toBase64FromMedia + ), use: < TProperties extends Properties | undefined = undefined, TName extends string = string, @@ -178,7 +188,13 @@ const collections = ( >( name: TName ) => - collection(connection, name, dbVersionSupport, toBase64FromMedia), + collection( + connection, + name, + dbVersionSupport, + isGrpcWeb, + toBase64FromMedia + ), }; }; diff --git a/packages/core/src/connection/grpc.ts b/packages/core/src/connection/grpc.ts index 94cc2255..a8b08c50 100644 --- a/packages/core/src/connection/grpc.ts +++ b/packages/core/src/connection/grpc.ts @@ -29,15 +29,15 @@ export default class ConnectionGRPC extends ConnectionGQL { private grpc: GrpcClient; public grpcMaxMessageLength: number; private params: GrpcConnectionParams & { grpcMaxMessageLength: number }; - private transports: Transports; + private transportsMaker: () => Transports; private constructor( - transports: Transports, + transportsMaker: () => Transports, params: GrpcConnectionParams & { grpcMaxMessageLength: number } ) { super(params); - this.transports = transports; - this.grpc = grpcClient(this.transports, params); + this.transportsMaker = transportsMaker; + this.grpc = grpcClient(this.transportsMaker(), params); this.grpcMaxMessageLength = params.grpcMaxMessageLength; this.params = params; } @@ -62,11 +62,13 @@ export default class ConnectionGRPC extends ConnectionGQL { ]).then(([grpcMaxMessageLength]) => grpcMaxMessageLength); } const connection = new ConnectionGRPC( - transportsMaker({ - grpcAddress: params.grpcAddress, - grpcSecure: params.grpcSecure, - grpcMaxMessageLength, - }), + () => + transportsMaker({ + grpcAddress: params.grpcAddress, + grpcSecure: params.grpcSecure, + grpcMaxMessageLength, + grpcProxyUrl: params.grpcProxyUrl, + }), { ...params, grpcMaxMessageLength } ); if (!params.skipInitChecks) { @@ -82,7 +84,7 @@ export default class ConnectionGRPC extends ConnectionGQL { public async reconnect() { // Only need to reconnect grpc by making a new channel as rest/gql are stateless this.grpc.close(); - this.grpc = grpcClient(this.transports, this.params); + this.grpc = grpcClient(this.transportsMaker(), this.params); const isHealthy = await this.grpc.health(); if (!isHealthy) { throw new WeaviateGRPCUnavailableError(this.params.grpcAddress); @@ -166,12 +168,14 @@ export interface GrpcClient { export type Transports = { weaviate: WeaviateClient; health: HealthClient; + close: () => void; }; export type TransportsParams = { grpcAddress: string; grpcSecure: boolean; grpcMaxMessageLength: number; + grpcProxyUrl?: string; }; export type TransportsMaker = (params: TransportsParams) => Transports; @@ -201,7 +205,7 @@ const grpcClient = (transports: Transports, config: GrpcConnectionParams) => { consistencyLevel, tenant ), - close: () => {}, + close: () => transports.close(), health: () => { const controller = new AbortController(); const timeoutId = setTimeout(() => controller.abort(), (config.timeout?.init || 2) * 1000); diff --git a/packages/core/src/data/batch.ts b/packages/core/src/data/batch.ts index 2aa690df..907820d9 100644 --- a/packages/core/src/data/batch.ts +++ b/packages/core/src/data/batch.ts @@ -62,9 +62,16 @@ export interface Batch { stream: (consistencyLevel?: ConsistencyLevel) => Promise; } -export default function (connection: Connection, dbVersionSupport: DbVersionSupport): Batch { +export default function ( + connection: Connection, + dbVersionSupport: DbVersionSupport, + isGrpcWeb: boolean +): Batch { return { stream: async (consistencyLevel) => { + if (isGrpcWeb) { + throw new Error('Server-side batching is not supported in gRPC-Web mode'); + } const { supports, message } = await dbVersionSupport.supportsServerSideBatching(); if (!supports) { throw new Error(message); diff --git a/packages/core/src/data/index.ts b/packages/core/src/data/index.ts index 3b453ca4..06a4ada1 100644 --- a/packages/core/src/data/index.ts +++ b/packages/core/src/data/index.ts @@ -184,6 +184,7 @@ const data = ( connection: Connection, name: string, dbVersionSupport: DbVersionSupport, + isGrpcWeb: boolean, consistencyLevel?: ConsistencyLevel, tenant?: string ): Data => { @@ -245,7 +246,7 @@ const data = ( ingest: async (objs) => { const allResponses: (string | ErrorObject)[] = []; - const batching = await batch(connection, dbVersionSupport).stream(consistencyLevel); + const batching = await batch(connection, dbVersionSupport, isGrpcWeb).stream(consistencyLevel); const start = Date.now(); for (const obj of objs) { diff --git a/packages/core/src/generate/index.ts b/packages/core/src/generate/index.ts index a23c90e9..5d57d8e7 100644 --- a/packages/core/src/generate/index.ts +++ b/packages/core/src/generate/index.ts @@ -37,9 +37,9 @@ import { } from '../types/index.js'; import { IncludeVector } from '../types/internal.js'; import { ToBase64FromMedia } from '../utils/base64.js'; -import { Generate } from './types.js'; +import { IGenerate } from './types.js'; -class GenerateManager implements Generate { +class GenerateManager implements IGenerate { private check: Check; private toBase64FromMedia: ToBase64FromMedia; @@ -504,4 +504,4 @@ class GenerateManager implements Generate { export default GenerateManager.use; export { generativeParameters } from './config.js'; -export { Generate } from './types.js'; +export { IGenerate } from './types.js'; diff --git a/packages/core/src/generate/types.ts b/packages/core/src/generate/types.ts index 35efc58a..3b21d8b2 100644 --- a/packages/core/src/generate/types.ts +++ b/packages/core/src/generate/types.ts @@ -476,7 +476,7 @@ interface NearVector { ): GenerateReturn; } -export interface Generate +export interface IGenerate extends Bm25, Hybrid, NearMedia, diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 2e213636..16c3edbd 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -26,11 +26,9 @@ import MetaGetter from './v2/misc/metaGetter.js'; import type { Agent } from 'http'; import { LiveChecker, OpenidConfigurationGetter, ReadyChecker } from './v2/misc/index.js'; -import weaviateV2 from './v2/index.js'; - import alias, { Aliases } from './alias/index.js'; import { TransportsMaker } from './connection/grpc.js'; -// import batch, { Batch } from './data/batch.js'; +import batch, { Batch } from './data/batch.js'; import filter from './filters/index.js'; import groups, { Groups } from './groups/index.js'; import { ConsistencyLevel } from './replication.js'; @@ -100,7 +98,7 @@ export type ClientParams = { export interface IWeaviateClient { alias: Aliases; backup: Backup; - // batch: Batch; + batch: Batch; cluster: Cluster; collections: ICollections; oidcAuth?: OidcAuthenticator; @@ -180,9 +178,9 @@ const client = async ( const ifc: IWeaviateClient = { alias: alias(connection), backup: backup(connection), - // batch: batch(connection, dbVersionSupport), + batch: batch(connection, dbVersionSupport, isGrpcWeb), cluster: cluster(connection), - collections: collections(connection, dbVersionSupport, context.toBase64FromMedia), + collections: collections(connection, dbVersionSupport, isGrpcWeb, context.toBase64FromMedia), groups: groups(connection), roles: roles(connection), tokenize: tokenize(connection, dbVersionSupport), @@ -205,7 +203,6 @@ export * from './collections.js'; export * from './connection/index.js'; export * from './errors.js'; export * from './roles/types.js'; -// export * from './utils/base64.js'; export * from './utils/uuid.js'; export { AccessTokenCredentialsInput, @@ -225,5 +222,4 @@ export { filter, helpers, permissions, - weaviateV2, }; diff --git a/packages/core/src/query/index.ts b/packages/core/src/query/index.ts index a677a5b3..0f34d566 100644 --- a/packages/core/src/query/index.ts +++ b/packages/core/src/query/index.ts @@ -35,12 +35,12 @@ import { NearOptions, NearTextOptions, NearVectorInputType, - Query, + IQuery, QueryReturn, SearchOptions, } from './types.js'; -class QueryManager implements Query { +class QueryManager implements IQuery { private check: Check; private toBase64FromMedia: ToBase64FromMedia; @@ -331,32 +331,6 @@ export type CallOptions = { export default QueryManager.use; export { queryFactory } from './factories.js'; -export { - BaseBm25Options, - BaseHybridOptions, - BaseNearOptions, - BaseNearTextOptions, - Bm25OperatorOptions, - Bm25Options, - FetchObjectByIdOptions, - FetchObjectsOptions, - GroupByBm25Options, - GroupByHybridOptions, - GroupByNearOptions, - GroupByNearTextOptions, - HybridNearTextSubSearch, - HybridNearVectorSubSearch, - HybridOptions, - HybridSubSearchBase, - MoveOptions, - MultiVectorType, - NearMediaType, - NearOptions, - NearTextOptions, - Query, - QueryReturn, - SearchOptions, - SingleVectorType, -} from './types.js'; +export * from './types.js'; export { Bm25Operator, Boost, Diversity } from './utils.js'; diff --git a/packages/core/src/query/types.ts b/packages/core/src/query/types.ts index e47e6d0d..fd2f801d 100644 --- a/packages/core/src/query/types.ts +++ b/packages/core/src/query/types.ts @@ -649,7 +649,7 @@ interface NearVector { } /** All the available methods on the `.query` namespace. */ -export interface Query +export interface IQuery extends Bm25, Hybrid, NearImage, diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index 2de6b77f..f3849a92 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -14,10 +14,15 @@ import weaviate, { Context, filter, helpers, + IAggregate, + IAggregateGroupBy, ICollection, ICollections, + IGenerate, + IQuery, IWeaviateClient, permissions, + queryFactory, reconfigure, } from '@weaviate/core'; import { Agent as HttpAgent } from 'http'; @@ -25,7 +30,9 @@ import { Agent as HttpsAgent } from 'https'; import { toBase64FromMedia } from './base64.js'; import { transportsMaker } from './transports.js'; -const context: Context = { +export type Media = string | Buffer; + +const context: Context = { transportsMaker, toBase64FromMedia, agentMaker: (secure) => (secure ? new HttpsAgent({ keepAlive: true }) : new HttpAgent({ keepAlive: true })), @@ -113,12 +120,16 @@ const app = { filter: filter(), reconfigure, permissions, + query: queryFactory, }; -export interface WeaviateClient extends IWeaviateClient {} -export interface Collections extends ICollections {} -export interface Collection - extends ICollection {} +export interface WeaviateClient extends IWeaviateClient {} +export interface Collections extends ICollections {} +export interface Collection extends ICollection {} +export interface Aggregate extends IAggregate {} +export interface AggregateGroupBy extends IAggregateGroupBy {} +export interface Query extends IQuery {} +export interface Generate extends IGenerate {} export default app; diff --git a/packages/node/src/transports.ts b/packages/node/src/transports.ts index 98c465e8..a302ff3c 100644 --- a/packages/node/src/transports.ts +++ b/packages/node/src/transports.ts @@ -1,21 +1,29 @@ import { ChannelCredentials, ChannelOptions, createChannel, createClientFactory } from 'nice-grpc'; - +import { retryMiddleware } from 'nice-grpc-client-middleware-retry'; import { HealthDefinition, WeaviateDefinition } from '@weaviate/core/proto'; - import { Transports, TransportsParams } from '@weaviate/core'; -const clientFactory = createClientFactory(); +const clientFactory = createClientFactory().use(retryMiddleware); export const transportsMaker = (params: TransportsParams): Transports => { + const channelOptions: ChannelOptions = { + 'grpc.max_send_message_length': params.grpcMaxMessageLength, + 'grpc.max_receive_message_length': params.grpcMaxMessageLength, + }; + if (params.grpcProxyUrl) { + // grpc.http_proxy is not used by grpc.js under-the-hood + // only uses the env var and whether http_proxy is enabled + process.env.grpc_proxy = params.grpcProxyUrl; + channelOptions['grpc.enabled_http_proxy'] = true; + } const channel = createChannel( params.grpcAddress, params.grpcSecure ? ChannelCredentials.createSsl() : ChannelCredentials.createInsecure(), - { - 'grpc.max_receive_message_length': params.grpcMaxMessageLength, - } as ChannelOptions + channelOptions ); return { weaviate: clientFactory.create(WeaviateDefinition, channel), health: clientFactory.create(HealthDefinition, channel), + close: () => channel.close(), }; }; diff --git a/packages/test/node/config/integration.test.ts b/packages/test/node/config/integration.test.ts index 9ffd9806..725f6b11 100644 --- a/packages/test/node/config/integration.test.ts +++ b/packages/test/node/config/integration.test.ts @@ -11,7 +11,8 @@ import { VectorIndexConfigHNSW, } from '@weaviate/core/config/types'; import { WeaviateUnsupportedFeatureError } from '@weaviate/core/errors'; -import weaviate, { WeaviateClass, WeaviateClient, weaviateV2 } from '@weaviate/node'; +import weaviateV2 from '@weaviate/core/v2'; +import weaviate, { WeaviateClass, WeaviateClient } from '@weaviate/node'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; import { requireAtLeast } from '../../version'; diff --git a/packages/test/node/data/integration.test.ts b/packages/test/node/data/integration.test.ts index 9bc1d1f8..7268827a 100644 --- a/packages/test/node/data/integration.test.ts +++ b/packages/test/node/data/integration.test.ts @@ -7,7 +7,8 @@ import { WeaviateUnsupportedFeatureError } from '@weaviate/core/errors'; import { GeoCoordinate, PhoneNumber } from '@weaviate/core/proto/v1/properties'; import { CrossReference, CrossReferences, Reference } from '@weaviate/core/references'; import { DataObject, WeaviateObject } from '@weaviate/core/types'; -import weaviate, { Collection, WeaviateClient, weaviateV2 } from '@weaviate/node'; +import weaviateV2 from '@weaviate/core/v2'; +import weaviate, { Collection, WeaviateClient } from '@weaviate/node'; import { v4 } from 'uuid'; import { requireAtLeast } from '../../version'; diff --git a/packages/web/package.json b/packages/web/package.json index d9e71aea..2567b17b 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -37,7 +37,8 @@ "homepage": "https://github.com/weaviate/typescript-client#readme", "dependencies": { "@weaviate/core": "workspace:*", - "nice-grpc-web": "^3.3.10" + "nice-grpc-web": "^3.3.10", + "nice-grpc-client-middleware-retry": "^3.1.15" }, "devDependencies": { "@types/node": "^18.14.0", diff --git a/packages/web/src/index.ts b/packages/web/src/index.ts index 1d033fd4..51dd4306 100644 --- a/packages/web/src/index.ts +++ b/packages/web/src/index.ts @@ -12,8 +12,12 @@ import weaviate, { Context, filter, helpers, + IAggregate, + IAggregateGroupBy, ICollection, ICollections, + IGenerate, + IQuery, IWeaviateClient, permissions, reconfigure, @@ -21,7 +25,9 @@ import weaviate, { import { toBase64FromMedia } from './base64.js'; import { transportsMaker } from './transports.js'; -const context: Context = { +export type Media = string | Blob; + +const context: Context = { transportsMaker, toBase64FromMedia, // No `agentMaker` on purpose: the browser uses fetch-based gRPC-Web (and fetch for REST), so no Node @@ -31,10 +37,7 @@ const context: Context = { export type ConnectToLocalOptions = Omit; export type ConnectToCustomOptions = Omit; -const webify = ( - context: Context, - params: ClientParams -): Promise> => { +const webify = (context: Context, params: ClientParams): Promise> => { params.connectionParams.grpc = { host: params.connectionParams.http.host, port: params.connectionParams.http.port, @@ -82,7 +85,7 @@ const app = { connectToCustom, connectToLocal, connectToWeaviateCloud, - client: (params: ClientParams) => weaviate(context, params), + client: (params: ClientParams) => webify(context, params), ApiKey, AuthUserPasswordCredentials, AuthAccessTokenCredentials, @@ -94,10 +97,13 @@ const app = { permissions, }; -export interface WeaviateClient extends IWeaviateClient {} -export interface Collections extends ICollections {} -export interface Collection - extends ICollection {} +export interface WeaviateClient extends IWeaviateClient {} +export interface Collections extends ICollections {} +export interface Collection extends ICollection {} +export interface Aggregate extends IAggregate {} +export interface AggregateGroupBy extends IAggregateGroupBy {} +export interface Query extends IQuery {} +export interface Generate extends IGenerate {} export default app; diff --git a/packages/web/src/transports.ts b/packages/web/src/transports.ts index 25aade5d..191627dd 100644 --- a/packages/web/src/transports.ts +++ b/packages/web/src/transports.ts @@ -1,15 +1,15 @@ -import { Transports, TransportsParams } from '@weaviate/core'; - import { createChannel, createClientFactory } from 'nice-grpc-web'; - +import { retryMiddleware } from 'nice-grpc-client-middleware-retry'; +import { Transports, TransportsParams } from '@weaviate/core'; import { HealthDefinition, WeaviateDefinition } from '@weaviate/core/proto'; -const clientFactory = createClientFactory(); +const clientFactory = createClientFactory().use(retryMiddleware); export const transportsMaker = (params: TransportsParams): Transports => { const channel = createChannel(params.grpcAddress); return { weaviate: clientFactory.create(WeaviateDefinition, channel), health: clientFactory.create(HealthDefinition, channel), + close: () => {}, }; }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 591cbdb0..bf7790c0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -175,6 +175,9 @@ importers: '@weaviate/core': specifier: workspace:* version: link:../core + nice-grpc-client-middleware-retry: + specifier: ^3.1.15 + version: 3.1.15 nice-grpc-web: specifier: ^3.3.10 version: 3.3.10(ws@8.18.2) diff --git a/scripts/stage-client.mjs b/scripts/stage-client.mjs index a05001ca..7ab7b2d7 100644 --- a/scripts/stage-client.mjs +++ b/scripts/stage-client.mjs @@ -1,7 +1,8 @@ -// The client shares Node's compiled output and depends on the published core package. +// The client adds the legacy v2 export to Node's compiled output. import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; +import ts from 'typescript'; const root = path.dirname(path.dirname(fileURLToPath(import.meta.url))); const readJson = (p) => JSON.parse(fs.readFileSync(p, 'utf8')); @@ -22,15 +23,42 @@ fs.mkdirSync(stage, { recursive: true }); fs.cpSync(path.join(nodeDir, 'dist'), path.join(stage, 'dist'), { recursive: true }); for (const f of ['LICENSE', 'README.md']) fs.copyFileSync(path.join(root, f), path.join(stage, f)); +const entry = `export { default } from './src/index.js'; +export * from './src/index.js'; +export { default as weaviateV2 } from '@weaviate/core/v2'; +`; +for (const [format, module] of [ + ['esm', ts.ModuleKind.ESNext], + ['cjs', ts.ModuleKind.CommonJS], +]) { + const dir = path.join(stage, 'dist', format); + const { outputText } = ts.transpileModule(entry, { + compilerOptions: { module, target: ts.ScriptTarget.ES2022 }, + }); + fs.writeFileSync(path.join(dir, 'client.js'), outputText); + fs.writeFileSync(path.join(dir, 'client.d.ts'), entry); +} + const prerelease = rootPkg.version.split('-')[1]?.split('.')[0]; const manifest = { name: rootPkg.name, version: rootPkg.version, description: rootPkg.description, - main: nodePkg.main, + main: 'dist/cjs/client.js', type: nodePkg.type, - exports: nodePkg.exports, + exports: { + '.': { + types: { + require: './dist/cjs/client.d.ts', + default: './dist/esm/client.d.ts', + }, + default: { + require: './dist/cjs/client.js', + default: './dist/esm/client.js', + }, + }, + }, files: nodePkg.files, engines: nodePkg.engines, repository: rootPkg.repository, From 40226357f934ff3eb5732392ce469bef1238f16c Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Wed, 23 Sep 2026 14:41:51 +0100 Subject: [PATCH 61/62] Simplify grpc connection init --- packages/core/src/connection/grpc.ts | 58 ++++++++++++++++------------ 1 file changed, 33 insertions(+), 25 deletions(-) diff --git a/packages/core/src/connection/grpc.ts b/packages/core/src/connection/grpc.ts index a8b08c50..71d280e9 100644 --- a/packages/core/src/connection/grpc.ts +++ b/packages/core/src/connection/grpc.ts @@ -16,10 +16,14 @@ import { Meta } from '../openapi/types.js'; import { HealthCheckResponse_ServingStatus, HealthClient } from '../proto/google/health/v1/health.js'; import { WeaviateClient } from '../proto/v1/weaviate.js'; -export interface GrpcConnectionParams extends InternalConnectionParams { +export type GrpcConnectionParams = InternalConnectionParams & { grpcAddress: string; grpcSecure: boolean; -} +}; + +type ResolvedGrpcConnectionParams = GrpcConnectionParams & { + grpcMaxMessageLength: number; +}; const MAX_GRPC_MESSAGE_LENGTH = 104858000; // 10mb, needs to be synchronized with GRPC server @@ -28,18 +32,15 @@ const MAX_GRPC_MESSAGE_LENGTH = 104858000; // 10mb, needs to be synchronized wit export default class ConnectionGRPC extends ConnectionGQL { private grpc: GrpcClient; public grpcMaxMessageLength: number; - private params: GrpcConnectionParams & { grpcMaxMessageLength: number }; - private transportsMaker: () => Transports; + private readonly params: ResolvedGrpcConnectionParams; + private readonly transportsMaker: TransportsMaker; - private constructor( - transportsMaker: () => Transports, - params: GrpcConnectionParams & { grpcMaxMessageLength: number } - ) { + private constructor(params: ResolvedGrpcConnectionParams, transportsMaker: TransportsMaker) { super(params); + this.params = params; this.transportsMaker = transportsMaker; - this.grpc = grpcClient(this.transportsMaker(), params); this.grpcMaxMessageLength = params.grpcMaxMessageLength; - this.params = params; + this.grpc = this.createGrpcClient(); } static use = async (transportsMaker: TransportsMaker, params: GrpcConnectionParams) => { @@ -61,30 +62,37 @@ export default class ConnectionGRPC extends ConnectionGQL { }), ]).then(([grpcMaxMessageLength]) => grpcMaxMessageLength); } - const connection = new ConnectionGRPC( - () => - transportsMaker({ - grpcAddress: params.grpcAddress, - grpcSecure: params.grpcSecure, - grpcMaxMessageLength, - grpcProxyUrl: params.grpcProxyUrl, - }), - { ...params, grpcMaxMessageLength } - ); + const resolvedParams: ResolvedGrpcConnectionParams = { ...params, grpcMaxMessageLength }; + const connection = new ConnectionGRPC(resolvedParams, transportsMaker); if (!params.skipInitChecks) { - const isHealthy = await connection.grpc.health(); - if (!isHealthy) { + try { + await connection.checkGrpcHealth(); + } catch (error) { await connection.close(); - throw new WeaviateGRPCUnavailableError(params.grpcAddress); + throw error; } } return { connection, dbVersionProvider, dbVersionSupport }; }; public async reconnect() { - // Only need to reconnect grpc by making a new channel as rest/gql are stateless this.grpc.close(); - this.grpc = grpcClient(this.transportsMaker(), this.params); + this.grpc = this.createGrpcClient(); + await this.checkGrpcHealth(); + } + + private createGrpcClient(): GrpcClient { + const { grpcAddress, grpcSecure, grpcMaxMessageLength, grpcProxyUrl } = this.params; + const transports = this.transportsMaker({ + grpcAddress, + grpcSecure, + grpcMaxMessageLength, + grpcProxyUrl, + }); + return grpcClient(transports, this.params); + } + + private async checkGrpcHealth(): Promise { const isHealthy = await this.grpc.health(); if (!isHealthy) { throw new WeaviateGRPCUnavailableError(this.params.grpcAddress); From 751d546be8c20e15b38b13a1d0e42d194f8ded14 Mon Sep 17 00:00:00 2001 From: Tommy Smith Date: Wed, 23 Sep 2026 14:52:54 +0100 Subject: [PATCH 62/62] Allow users to provide their own grpcMaxMessageLength explicitly --- packages/core/src/connection/grpc.ts | 3 ++- packages/core/src/index.ts | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/core/src/connection/grpc.ts b/packages/core/src/connection/grpc.ts index 71d280e9..b131ff2e 100644 --- a/packages/core/src/connection/grpc.ts +++ b/packages/core/src/connection/grpc.ts @@ -19,6 +19,7 @@ import { WeaviateClient } from '../proto/v1/weaviate.js'; export type GrpcConnectionParams = InternalConnectionParams & { grpcAddress: string; grpcSecure: boolean; + grpcMaxMessageLength?: number; }; type ResolvedGrpcConnectionParams = GrpcConnectionParams & { @@ -47,7 +48,7 @@ export default class ConnectionGRPC extends ConnectionGQL { const rest = new ConnectionGQL(params); const dbVersionProvider = initDbVersionProvider(rest); const dbVersionSupport = new DbVersionSupport(dbVersionProvider); - let grpcMaxMessageLength = MAX_GRPC_MESSAGE_LENGTH; + let grpcMaxMessageLength = params.grpcMaxMessageLength ?? MAX_GRPC_MESSAGE_LENGTH; if (!params.skipInitChecks) { grpcMaxMessageLength = await Promise.all([ (rest.get('/meta', true) as Promise).then( diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 16c3edbd..2dfa6e0c 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -66,6 +66,10 @@ export type ConnectionParams = { * The connection paramaters for the gRPC API (http/2). */ grpc: ProtocolParams; + /** + * The maximum message length for gRPC requests. If not specified, the server-specified default will be used. + */ + grpcMaxMessageLength?: number; }; export type ClientParams = { @@ -172,6 +176,7 @@ const client = async ( agent, timeout: params.timeout, skipInitChecks: params.skipInitChecks, + grpcMaxMessageLength: params.connectionParams.grpcMaxMessageLength, } );